diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore index 6daa997..d4704a1 100644 --- a/.openapi-generator-ignore +++ b/.openapi-generator-ignore @@ -1,21 +1,16 @@ docs/** .gitignore .travis.yml +appveyor.yml build.bat build.sh git_push.sh mono_nunit_test.sh README.md Regula.DocumentReader.WebClient.sln +api/openapi.yaml src/Regula.DocumentReader.WebClient.Test/** src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.csproj src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.nuspec src/Regula.DocumentReader.WebClient/packages.config -src/Regula.DocumentReader.WebClient/Properties/** - -# generator bugs, require manual change -src/Regula.DocumentReader.WebClient/Model/ContainerList.cs -src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs -src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs -**/*AllOf.cs -src/Regula.DocumentReader.WebClient/Model/ResultItem.cs +src/Regula.DocumentReader.WebClient/README.md \ No newline at end of file diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index cac2b82..e8cc603 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -1,22 +1,50 @@ -src/Regula.DocumentReader.WebClient/Api/DefaultApi.cs +src/Regula.DocumentReader.WebClient/Api/HealthcheckApi.cs src/Regula.DocumentReader.WebClient/Api/ProcessApi.cs +src/Regula.DocumentReader.WebClient/Api/TransactionApi.cs src/Regula.DocumentReader.WebClient/Client/ApiClient.cs src/Regula.DocumentReader.WebClient/Client/ApiException.cs src/Regula.DocumentReader.WebClient/Client/ApiResponse.cs +src/Regula.DocumentReader.WebClient/Client/ClientUtils.cs src/Regula.DocumentReader.WebClient/Client/Configuration.cs src/Regula.DocumentReader.WebClient/Client/ExceptionFactory.cs +src/Regula.DocumentReader.WebClient/Client/FileParameter.cs src/Regula.DocumentReader.WebClient/Client/GlobalConfiguration.cs src/Regula.DocumentReader.WebClient/Client/IApiAccessor.cs +src/Regula.DocumentReader.WebClient/Client/IAsynchronousClient.cs src/Regula.DocumentReader.WebClient/Client/IReadableConfiguration.cs +src/Regula.DocumentReader.WebClient/Client/ISynchronousClient.cs +src/Regula.DocumentReader.WebClient/Client/Multimap.cs src/Regula.DocumentReader.WebClient/Client/OpenAPIDateConverter.cs +src/Regula.DocumentReader.WebClient/Client/RequestOptions.cs +src/Regula.DocumentReader.WebClient/Client/RetryConfiguration.cs +src/Regula.DocumentReader.WebClient/Client/WebRequestPathBuilder.cs +src/Regula.DocumentReader.WebClient/Model/AbstractOpenAPISchema.cs src/Regula.DocumentReader.WebClient/Model/AreaArray.cs src/Regula.DocumentReader.WebClient/Model/AreaContainer.cs +src/Regula.DocumentReader.WebClient/Model/AuthParams.cs src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckList.cs +src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckListItem.cs +src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs +src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs +src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultListInner.cs src/Regula.DocumentReader.WebClient/Model/AuthenticityResult.cs +src/Regula.DocumentReader.WebClient/Model/AuthenticityResultType.cs +src/Regula.DocumentReader.WebClient/Model/BarCodeModuleType.cs +src/Regula.DocumentReader.WebClient/Model/BarcodeType.cs src/Regula.DocumentReader.WebClient/Model/BcPDF417INFO.cs src/Regula.DocumentReader.WebClient/Model/BcROIDETECT.cs +src/Regula.DocumentReader.WebClient/Model/BinaryData.cs +src/Regula.DocumentReader.WebClient/Model/ByteArrayItem.cs +src/Regula.DocumentReader.WebClient/Model/ByteArrayResult.cs +src/Regula.DocumentReader.WebClient/Model/CandidatesListItem.cs +src/Regula.DocumentReader.WebClient/Model/CertificateData.cs +src/Regula.DocumentReader.WebClient/Model/CheckDiagnose.cs +src/Regula.DocumentReader.WebClient/Model/CheckResult.cs src/Regula.DocumentReader.WebClient/Model/ChosenDocumentType.cs src/Regula.DocumentReader.WebClient/Model/ChosenDocumentTypeResult.cs +src/Regula.DocumentReader.WebClient/Model/ContainerList.cs +src/Regula.DocumentReader.WebClient/Model/ContainerListListInner.cs +src/Regula.DocumentReader.WebClient/Model/Critical.cs src/Regula.DocumentReader.WebClient/Model/CrossSourceValueComparison.cs src/Regula.DocumentReader.WebClient/Model/DataModule.cs src/Regula.DocumentReader.WebClient/Model/DetailsOptical.cs @@ -24,43 +52,101 @@ src/Regula.DocumentReader.WebClient/Model/DetailsRFID.cs src/Regula.DocumentReader.WebClient/Model/DeviceInfo.cs src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfo.cs src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoFieldsList.cs +src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoItem.cs +src/Regula.DocumentReader.WebClient/Model/DocGraphicsInfoItem.cs src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedField.cs +src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedFieldItem.cs src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfo.cs +src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfoItem.cs +src/Regula.DocumentReader.WebClient/Model/DocumentBinaryInfoResult.cs +src/Regula.DocumentReader.WebClient/Model/DocumentFormat.cs src/Regula.DocumentReader.WebClient/Model/DocumentImage.cs src/Regula.DocumentReader.WebClient/Model/DocumentImageResult.cs src/Regula.DocumentReader.WebClient/Model/DocumentPosition.cs +src/Regula.DocumentReader.WebClient/Model/DocumentPositionItem.cs src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs +src/Regula.DocumentReader.WebClient/Model/DocumentType.cs +src/Regula.DocumentReader.WebClient/Model/DocumentTypeRecognitionResult.cs src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs +src/Regula.DocumentReader.WebClient/Model/DocumentsDatabase.cs +src/Regula.DocumentReader.WebClient/Model/EncryptedRCLItem.cs src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs +src/Regula.DocumentReader.WebClient/Model/ErrorCoordinates.cs src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs src/Regula.DocumentReader.WebClient/Model/FaceApi.cs src/Regula.DocumentReader.WebClient/Model/FaceApiSearch.cs +src/Regula.DocumentReader.WebClient/Model/FaceDetection.cs +src/Regula.DocumentReader.WebClient/Model/FaceDetectionItem.cs +src/Regula.DocumentReader.WebClient/Model/FaceDetectionResult.cs +src/Regula.DocumentReader.WebClient/Model/FaceItem.cs +src/Regula.DocumentReader.WebClient/Model/FiberItem.cs src/Regula.DocumentReader.WebClient/Model/FiberResult.cs +src/Regula.DocumentReader.WebClient/Model/FieldItem.cs +src/Regula.DocumentReader.WebClient/Model/FileImage.cs +src/Regula.DocumentReader.WebClient/Model/GetTransactionsByTagResponse.cs +src/Regula.DocumentReader.WebClient/Model/GraphData.cs src/Regula.DocumentReader.WebClient/Model/GraphicField.cs +src/Regula.DocumentReader.WebClient/Model/GraphicFieldType.cs src/Regula.DocumentReader.WebClient/Model/GraphicFieldsList.cs src/Regula.DocumentReader.WebClient/Model/GraphicsResult.cs +src/Regula.DocumentReader.WebClient/Model/Healthcheck.cs +src/Regula.DocumentReader.WebClient/Model/HealthcheckDocumentsDatabase.cs +src/Regula.DocumentReader.WebClient/Model/IdentItem.cs src/Regula.DocumentReader.WebClient/Model/IdentResult.cs src/Regula.DocumentReader.WebClient/Model/ImageData.cs src/Regula.DocumentReader.WebClient/Model/ImageQA.cs src/Regula.DocumentReader.WebClient/Model/ImageQualityCheck.cs src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckList.cs +src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckListItem.cs +src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckType.cs src/Regula.DocumentReader.WebClient/Model/ImageQualityResult.cs +src/Regula.DocumentReader.WebClient/Model/ImageTransactionData.cs src/Regula.DocumentReader.WebClient/Model/Images.cs src/Regula.DocumentReader.WebClient/Model/ImagesAvailableSource.cs src/Regula.DocumentReader.WebClient/Model/ImagesField.cs src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs +src/Regula.DocumentReader.WebClient/Model/ImagesItem.cs src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs +src/Regula.DocumentReader.WebClient/Model/InData.cs +src/Regula.DocumentReader.WebClient/Model/InDataTransactionImagesFieldValue.cs +src/Regula.DocumentReader.WebClient/Model/InDataVideo.cs +src/Regula.DocumentReader.WebClient/Model/InputBarcodeType.cs +src/Regula.DocumentReader.WebClient/Model/InputImageQualityChecks.cs +src/Regula.DocumentReader.WebClient/Model/LCID.cs src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs +src/Regula.DocumentReader.WebClient/Model/LicenseItem.cs src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs +src/Regula.DocumentReader.WebClient/Model/Light.cs +src/Regula.DocumentReader.WebClient/Model/ListTransactionsByTagResponse.cs src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs +src/Regula.DocumentReader.WebClient/Model/ListVerifiedFieldsItem.cs +src/Regula.DocumentReader.WebClient/Model/LivenessParams.cs +src/Regula.DocumentReader.WebClient/Model/LogLevel.cs +src/Regula.DocumentReader.WebClient/Model/MRZDetectorResult.cs +src/Regula.DocumentReader.WebClient/Model/MRZFormat.cs +src/Regula.DocumentReader.WebClient/Model/MRZPositionResult.cs +src/Regula.DocumentReader.WebClient/Model/MRZRowsItem.cs +src/Regula.DocumentReader.WebClient/Model/MRZTestQuality.cs +src/Regula.DocumentReader.WebClient/Model/MRZTestQualityItem.cs +src/Regula.DocumentReader.WebClient/Model/MRZTestQualityResult.cs +src/Regula.DocumentReader.WebClient/Model/MeasureSystem.cs +src/Regula.DocumentReader.WebClient/Model/MrzDetectModeEnum.cs +src/Regula.DocumentReader.WebClient/Model/MrzPosition.cs +src/Regula.DocumentReader.WebClient/Model/MrzPositionItem.cs +src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextItem.cs src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs +src/Regula.DocumentReader.WebClient/Model/OneCandidateItem.cs src/Regula.DocumentReader.WebClient/Model/OriginalSymbol.cs +src/Regula.DocumentReader.WebClient/Model/OutData.cs +src/Regula.DocumentReader.WebClient/Model/OutDataTransactionImagesFieldValue.cs src/Regula.DocumentReader.WebClient/Model/PArrayField.cs +src/Regula.DocumentReader.WebClient/Model/ParsedData.cs src/Regula.DocumentReader.WebClient/Model/ParsingNotificationCodes.cs src/Regula.DocumentReader.WebClient/Model/PerDocumentConfig.cs +src/Regula.DocumentReader.WebClient/Model/PhotoIdentItem.cs src/Regula.DocumentReader.WebClient/Model/PhotoIdentResult.cs src/Regula.DocumentReader.WebClient/Model/Point.cs src/Regula.DocumentReader.WebClient/Model/PointArray.cs @@ -71,21 +157,90 @@ src/Regula.DocumentReader.WebClient/Model/ProcessRequest.cs src/Regula.DocumentReader.WebClient/Model/ProcessRequestImage.cs src/Regula.DocumentReader.WebClient/Model/ProcessResponse.cs src/Regula.DocumentReader.WebClient/Model/ProcessSystemInfo.cs +src/Regula.DocumentReader.WebClient/Model/ProcessingStatus.cs +src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedField.cs +src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedFieldItem.cs +src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfo.cs +src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfoItem.cs +src/Regula.DocumentReader.WebClient/Model/RFIDErrorCodes.cs +src/Regula.DocumentReader.WebClient/Model/RFIDGraphicsInfoResult.cs +src/Regula.DocumentReader.WebClient/Model/RFIDPKDResourceType.cs +src/Regula.DocumentReader.WebClient/Model/RFIDTextDataResult.cs +src/Regula.DocumentReader.WebClient/Model/RawImageContainerItem.cs src/Regula.DocumentReader.WebClient/Model/RawImageContainerList.cs src/Regula.DocumentReader.WebClient/Model/RectangleCoordinates.cs +src/Regula.DocumentReader.WebClient/Model/Result.cs +src/Regula.DocumentReader.WebClient/Model/ResultItem.cs +src/Regula.DocumentReader.WebClient/Model/ResultMRZDetector.cs +src/Regula.DocumentReader.WebClient/Model/ResultMRZDetectorItem.cs +src/Regula.DocumentReader.WebClient/Model/RfidAChip.cs +src/Regula.DocumentReader.WebClient/Model/RfidAccessControlInfo.cs +src/Regula.DocumentReader.WebClient/Model/RfidAccessControlProcedureType.cs +src/Regula.DocumentReader.WebClient/Model/RfidAccessKey.cs +src/Regula.DocumentReader.WebClient/Model/RfidApplication.cs +src/Regula.DocumentReader.WebClient/Model/RfidApplicationType.cs +src/Regula.DocumentReader.WebClient/Model/RfidAttributeData.cs +src/Regula.DocumentReader.WebClient/Model/RfidAttributeName.cs +src/Regula.DocumentReader.WebClient/Model/RfidAuthenticationProcedureType.cs +src/Regula.DocumentReader.WebClient/Model/RfidBaudRate.cs +src/Regula.DocumentReader.WebClient/Model/RfidCardPropertiesExt.cs +src/Regula.DocumentReader.WebClient/Model/RfidCertificateEx.cs +src/Regula.DocumentReader.WebClient/Model/RfidCertificateOrigin.cs +src/Regula.DocumentReader.WebClient/Model/RfidCertificateType.cs +src/Regula.DocumentReader.WebClient/Model/RfidDG1.cs +src/Regula.DocumentReader.WebClient/Model/RfidDataFile.cs +src/Regula.DocumentReader.WebClient/Model/RfidDataFileType.cs +src/Regula.DocumentReader.WebClient/Model/RfidDataGroupTypeTag.cs +src/Regula.DocumentReader.WebClient/Model/RfidDistinguishedName.cs +src/Regula.DocumentReader.WebClient/Model/RfidLocation.cs src/Regula.DocumentReader.WebClient/Model/RfidOrigin.cs +src/Regula.DocumentReader.WebClient/Model/RfidPasswordType.cs +src/Regula.DocumentReader.WebClient/Model/RfidPkiExtension.cs +src/Regula.DocumentReader.WebClient/Model/RfidRawData.cs +src/Regula.DocumentReader.WebClient/Model/RfidSecurityObject.cs +src/Regula.DocumentReader.WebClient/Model/RfidSessionData.cs +src/Regula.DocumentReader.WebClient/Model/RfidSignerInfoEx.cs +src/Regula.DocumentReader.WebClient/Model/RfidTerminal.cs +src/Regula.DocumentReader.WebClient/Model/RfidTerminalType.cs +src/Regula.DocumentReader.WebClient/Model/RfidType.cs +src/Regula.DocumentReader.WebClient/Model/RfidValidity.cs +src/Regula.DocumentReader.WebClient/Model/Scenario.cs +src/Regula.DocumentReader.WebClient/Model/SecurityFeatureItem.cs src/Regula.DocumentReader.WebClient/Model/SecurityFeatureResult.cs +src/Regula.DocumentReader.WebClient/Model/SecurityFeatureType.cs +src/Regula.DocumentReader.WebClient/Model/SecurityObjectCertificates.cs +src/Regula.DocumentReader.WebClient/Model/Source.cs src/Regula.DocumentReader.WebClient/Model/SourceValidity.cs src/Regula.DocumentReader.WebClient/Model/Status.cs +src/Regula.DocumentReader.WebClient/Model/StatusItem.cs src/Regula.DocumentReader.WebClient/Model/StatusResult.cs +src/Regula.DocumentReader.WebClient/Model/StringItem.cs src/Regula.DocumentReader.WebClient/Model/StringRecognitionResult.cs +src/Regula.DocumentReader.WebClient/Model/Symbol.cs src/Regula.DocumentReader.WebClient/Model/SymbolCandidate.cs +src/Regula.DocumentReader.WebClient/Model/SymbolEstimationItem.cs src/Regula.DocumentReader.WebClient/Model/SymbolRecognitionResult.cs +src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfo.cs +src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfoItem.cs +src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfo.cs +src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfoItem.cs src/Regula.DocumentReader.WebClient/Model/Text.cs src/Regula.DocumentReader.WebClient/Model/TextAvailableSource.cs src/Regula.DocumentReader.WebClient/Model/TextDataResult.cs src/Regula.DocumentReader.WebClient/Model/TextField.cs +src/Regula.DocumentReader.WebClient/Model/TextFieldType.cs src/Regula.DocumentReader.WebClient/Model/TextFieldValue.cs +src/Regula.DocumentReader.WebClient/Model/TextItem.cs +src/Regula.DocumentReader.WebClient/Model/TextPostProcessing.cs src/Regula.DocumentReader.WebClient/Model/TextResult.cs +src/Regula.DocumentReader.WebClient/Model/TransactionImage.cs src/Regula.DocumentReader.WebClient/Model/TransactionInfo.cs +src/Regula.DocumentReader.WebClient/Model/TransactionProcessGetResponse.cs +src/Regula.DocumentReader.WebClient/Model/TransactionProcessRequest.cs +src/Regula.DocumentReader.WebClient/Model/TransactionProcessResult.cs +src/Regula.DocumentReader.WebClient/Model/TrfFtBytes.cs +src/Regula.DocumentReader.WebClient/Model/TrfFtString.cs +src/Regula.DocumentReader.WebClient/Model/VerificationResult.cs src/Regula.DocumentReader.WebClient/Model/VerifiedFieldMap.cs +src/Regula.DocumentReader.WebClient/Model/Visibility.cs +src/Regula.DocumentReader.WebClient/Model/VisualExtendedFieldItem.cs diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION index 28cbf7c..5f84a81 100644 --- a/.openapi-generator/VERSION +++ b/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0 \ No newline at end of file +7.12.0 diff --git a/Regula.DocumentReader.sln b/Regula.DocumentReader.sln index bd7bd4a..7e47418 100644 --- a/Regula.DocumentReader.sln +++ b/Regula.DocumentReader.sln @@ -6,8 +6,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Regula.DocumentReader.WebCl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Regula.DocumentReader.NetCoreExample", "src\Regula.DocumentReader.NetCoreExample\Regula.DocumentReader.NetCoreExample.csproj", "{EA417402-2843-4CA5-B712-4CD9425C02E4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regula.DocumentReader.NetCoreExampleEncryptedRcl", "src\Regula.DocumentReader.NetCoreExampleEncryptedRcl\Regula.DocumentReader.NetCoreExampleEncryptedRcl.csproj", "{1A61741A-298F-4722-8626-00DF9787C683}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regula.DocumentReader.NetCoreExamplePortraitComparison", "src\Regula.DocumentReader.NetCoreExamplePortraitComparison\Regula.DocumentReader.NetCoreExamplePortraitComparison.csproj", "{DC05980A-7291-4BD2-B9E6-AA0EAADD6198}" EndProject Global @@ -24,10 +22,6 @@ Global {EA417402-2843-4CA5-B712-4CD9425C02E4}.Debug|Any CPU.Build.0 = Debug|Any CPU {EA417402-2843-4CA5-B712-4CD9425C02E4}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA417402-2843-4CA5-B712-4CD9425C02E4}.Release|Any CPU.Build.0 = Release|Any CPU - {1A61741A-298F-4722-8626-00DF9787C683}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A61741A-298F-4722-8626-00DF9787C683}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A61741A-298F-4722-8626-00DF9787C683}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A61741A-298F-4722-8626-00DF9787C683}.Release|Any CPU.Build.0 = Release|Any CPU {DC05980A-7291-4BD2-B9E6-AA0EAADD6198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DC05980A-7291-4BD2-B9E6-AA0EAADD6198}.Debug|Any CPU.Build.0 = Debug|Any CPU {DC05980A-7291-4BD2-B9E6-AA0EAADD6198}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/csharp-generator-config.json b/csharp-generator-config.json index ac0fdf0..9e04e42 100644 --- a/csharp-generator-config.json +++ b/csharp-generator-config.json @@ -1,9 +1,10 @@ { "packageName": "Regula.DocumentReader.WebClient", - "typeMappings": { - "boolean": "bool?" - }, + "library": "httpclient", "nullableReferenceTypes": true, - "optionalAssemblyInfo": true, - "isRestSharp_106_10_1_above" :true + "targetFramework": "net8.0", + "typeMappings" : { + "ContainerListListInner": "ResultItem", + "AuthenticityCheckResultListInner": "AuthenticityCheckResultItem" + } } \ No newline at end of file diff --git a/dev.md b/dev.md index 12f90d4..68d3c98 100644 --- a/dev.md +++ b/dev.md @@ -1,14 +1,8 @@ # Development -Models generation based on [openapi spec](https://github.com/regulaforensics/DocumentReader-api-openapi). - -## Enums -Instead of using enums, generator produces static constants. - -## 2-cycle generation -1. Generate enums as constants -2. Generate normal models with substituted by primitive values enums +Models generation based on [openapi spec](https://github.com/regulaforensics/DocumentReader-api-openapi). +## Generation To regenerate models from openapi definition, clone [latest open api definitions](https://github.com/regulaforensics/DocumentReader-api-openapi) @@ -16,3 +10,25 @@ and use next command from the project root. ```bash ./update-models.sh ``` + +## Generator configuration Features + +1. The generator does not generate long enums, the problem +is solved by adding the edited template modelEnum.mustache. +2. When generating oneOf schemas, the generator creates its +own abstract class, which does not look like it would like. +The problem was solved by replacing the abstract generator +class with ours using typeMappings in the generator config. +3. The generator sets the discriminator name incorrectly, the problem +is solved by adding and editing the modelGeneric.mustache template. +4. Changes have also been made to modelsGeneric.mustache to exclude +unspecified fields from JSON when serializing a class. + +## Problem solving + +To solve new problems, use the generator +settings ([csharp](https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/csharp.md), +[common](https://github.com/OpenAPITools/openapi-generator/blob/master/docs/customization.md)) +and [templates](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources/csharp). + +**Do not edit the generated files! They will be overwritten after generation!** \ No newline at end of file diff --git a/generator-templates/modelEnum.mustache b/generator-templates/modelEnum.mustache new file mode 100644 index 0000000..12744d8 --- /dev/null +++ b/generator-templates/modelEnum.mustache @@ -0,0 +1,185 @@ + /// + /// {{description}}{{^description}}Defines {{{name}}}{{/description}} + /// + {{#description}} + /// {{.}} + {{/description}} + {{#vendorExtensions.x-cls-compliant}} + [CLSCompliant({{{.}}})] + {{/vendorExtensions.x-cls-compliant}} + {{#vendorExtensions.x-com-visible}} + [ComVisible({{{.}}})] + {{/vendorExtensions.x-com-visible}} + {{#allowableValues}} + {{#enumVars}} + {{#-first}} + {{#isString}} + {{^useGenericHost}} + [JsonConverter(typeof(StringEnumConverter))] + {{/useGenericHost}} + {{/isString}} + {{/-first}} + {{/enumVars}} + {{/allowableValues}} + {{>visibility}} enum {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{#isLong}}: long{{/isLong}}{{/datatypeWithEnum}}{{#vendorExtensions.x-enum-byte}}: byte{{/vendorExtensions.x-enum-byte}} + { + {{#allowableValues}} + {{#enumVars}} + /// + /// Enum {{name}} for value: {{value}} + /// + {{#isString}} + {{^useGenericHost}} + {{! EnumMember not currently supported in System.Text.Json, use a converter instead }} + [EnumMember(Value = "{{{value}}}")] + {{/useGenericHost}} + {{/isString}} + {{name}}{{^isString}} = {{{value}}}{{/isString}}{{#isString}}{{^vendorExtensions.x-zero-based-enum}} = {{-index}}{{/vendorExtensions.x-zero-based-enum}}{{/isString}}{{^-last}},{{/-last}} + {{^-last}} + + {{/-last}} + {{/enumVars}} + {{/allowableValues}} + } + {{#useGenericHost}} + + /// + /// Converts to and from the JSON value + /// + public static class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter + { + /// + /// Parses a given value to + /// + /// + /// + public static {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} FromString(string value) + { + {{#allowableValues}} + {{#enumVars}} + if (value.Equals({{^isString}}({{{value}}}).ToString(){{/isString}}{{#isString}}"{{{value}}}"{{/isString}})) + return {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}}; + + {{/enumVars}} + {{/allowableValues}} + throw new NotImplementedException($"Could not convert value to type {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}: '{value}'"); + } + + /// + /// Parses a given value to + /// + /// + /// + public static {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? FromStringOrDefault(string value) + { + {{#allowableValues}} + {{#enumVars}} + if (value.Equals({{^isString}}({{{value}}}).ToString(){{/isString}}{{#isString}}"{{{value}}}"{{/isString}})) + return {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}}; + + {{/enumVars}} + {{/allowableValues}} + return null; + } + + /// + /// Converts the to the json value + /// + /// + /// + /// + public static {{>EnumValueDataType}} ToJsonValue({{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} value) + { + {{^isString}} + return ({{>EnumValueDataType}}) value; + {{/isString}} + {{#isString}} + {{#allowableValues}} + {{#enumVars}} + if (value == {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}}) + return {{^isNumeric}}"{{/isNumeric}}{{{value}}}{{^isNumeric}}"{{/isNumeric}}; + + {{/enumVars}} + {{/allowableValues}} + throw new NotImplementedException($"Value could not be handled: '{value}'"); + {{/isString}} + } + } + + /// + /// A Json converter for type + /// + /// + public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}JsonConverter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}> + { + /// + /// Returns a {{datatypeWithEnum}} from the Json object + /// + /// + /// + /// + /// + public override {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + string{{nrt?}} rawValue = reader.GetString(); + + {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? result = rawValue == null + ? null + : {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.FromStringOrDefault(rawValue); + + if (result != null) + return result.Value; + + throw new JsonException(); + } + + /// + /// Writes the {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} to the json writer + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions options) + { + writer.WriteStringValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}.ToString()); + } + } + + /// + /// A Json converter for type + /// + public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}NullableJsonConverter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}?> + { + /// + /// Returns a {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} from the Json object + /// + /// + /// + /// + /// + public override {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + string{{nrt?}} rawValue = reader.GetString(); + + {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? result = rawValue == null + ? null + : {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.FromStringOrDefault(rawValue); + + if (result != null) + return result.Value; + + throw new JsonException(); + } + + /// + /// Writes the DateTime to the json writer + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? {{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions options) + { + writer.WriteStringValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}?.ToString() ?? "null"); + } + } + {{/useGenericHost}} diff --git a/generator-templates/modelGeneric.mustache b/generator-templates/modelGeneric.mustache new file mode 100644 index 0000000..7ff12a4 --- /dev/null +++ b/generator-templates/modelGeneric.mustache @@ -0,0 +1,432 @@ + /// + /// {{description}}{{^description}}{{classname}}{{/description}} + /// + {{#vendorExtensions.x-cls-compliant}} + [CLSCompliant({{{vendorExtensions.x-cls-compliant}}})] + {{/vendorExtensions.x-cls-compliant}} + {{#vendorExtensions.x-com-visible}} + [ComVisible({{{vendorExtensions.x-com-visible}}})] + {{/vendorExtensions.x-com-visible}} + [DataContract(Name = "{{{name}}}")] + {{^useUnityWebRequest}} + {{#discriminator}} + {{#mappedModels.size}} + [JsonConverter(typeof(JsonSubtypes), "{{{discriminator.propertyBaseName}}}")] + {{/mappedModels.size}} + {{#mappedModels}} + [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")] + {{/mappedModels}} + {{/discriminator}} + {{/useUnityWebRequest}} + {{>visibility}} partial class {{classname}}{{#lambda.firstDot}}{{#parent}} : .{{/parent}}{{#validatable}} : .{{/validatable}}{{#equatable}} : .{{/equatable}}{{/lambda.firstDot}}{{#lambda.joinWithComma}}{{#parent}}{{{.}}} {{/parent}}{{#equatable}}IEquatable<{{classname}}> {{/equatable}}{{#validatable}}IValidatableObject {{/validatable}}{{/lambda.joinWithComma}} + { + {{#vars}} + {{#items.isEnum}} + {{#items}} + {{^complexType}} +{{>modelInnerEnum}} + {{/complexType}} + {{/items}} + {{/items.isEnum}} + {{#isEnum}} + {{^complexType}} +{{>modelInnerEnum}} + {{/complexType}} + {{/isEnum}} + {{#isEnum}} + + /// + /// {{description}}{{^description}}Gets or Sets {{{name}}}{{/description}} + /// + {{#description}} + /// {{.}} + {{/description}} + {{#example}} + /* + {{.}} + */ + {{/example}} + {{^conditionalSerialization}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{complexType}}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} { get; set; } + {{#isReadOnly}} + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{#isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{complexType}}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} { get; set; } + + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + + {{^isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{complexType}}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} + { + get{ return _{{name}};} + set + { + _{{name}} = value; + _flag{{name}} = true; + } + } + private {{{complexType}}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} _{{name}}; + private bool _flag{{name}}; + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return _flag{{name}}; + } + {{/isReadOnly}} + {{/conditionalSerialization}} + {{/isEnum}} + {{/vars}} + {{#hasRequired}} + {{^hasOnlyReadOnly}} + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + {{^isAdditionalPropertiesTrue}} + protected {{classname}}() { } + {{/isAdditionalPropertiesTrue}} + {{#isAdditionalPropertiesTrue}} + protected {{classname}}() + { + this.AdditionalProperties = new Dictionary(); + } + {{/isAdditionalPropertiesTrue}} + {{/hasOnlyReadOnly}} + {{/hasRequired}} + /// + /// Initializes a new instance of the class. + /// + {{#readWriteVars}} + /// {{description}}{{^description}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{/description}}{{#required}} (required){{/required}}{{#defaultValue}} (default to {{.}}){{/defaultValue}}. + {{/readWriteVars}} + {{#hasOnlyReadOnly}} + [JsonConstructorAttribute] + {{/hasOnlyReadOnly}} + public {{classname}}({{#readWriteVars}}{{{datatypeWithEnum}}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}}{{/isEnum}} {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{#defaultValue}}{{^isDateTime}}{{#isString}}{{^isEnum}}@{{/isEnum}}{{/isString}}{{{defaultValue}}}{{/isDateTime}}{{#isDateTime}}default({{{datatypeWithEnum}}}){{/isDateTime}}{{/defaultValue}}{{^defaultValue}}default({{{datatypeWithEnum}}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}}{{/isEnum}}){{/defaultValue}}{{^-last}}, {{/-last}}{{/readWriteVars}}){{#parent}} : base({{#parentVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{^-last}}, {{/-last}}{{/parentVars}}){{/parent}} + { + {{#vars}} + {{^isInherited}} + {{^isReadOnly}} + {{#required}} + {{^conditionalSerialization}} + {{^vendorExtensions.x-csharp-value-type}} + // to ensure "{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}" is required (not null) + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null) + { + throw new ArgumentNullException("{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} is a required property for {{classname}} and cannot be null"); + } + this.{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{#vendorExtensions.x-csharp-value-type}} + this.{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{^vendorExtensions.x-csharp-value-type}} + // to ensure "{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}" is required (not null) + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null) + { + throw new ArgumentNullException("{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} is a required property for {{classname}} and cannot be null"); + } + this._{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{#vendorExtensions.x-csharp-value-type}} + this._{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{/conditionalSerialization}} + {{/required}} + {{/isReadOnly}} + {{/isInherited}} + {{/vars}} + {{#vars}} + {{^isInherited}} + {{^isReadOnly}} + {{^required}} + {{#defaultValue}} + {{^conditionalSerialization}} + {{^vendorExtensions.x-csharp-value-type}} + // use default value if no "{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}" provided + this.{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} ?? {{#isString}}@{{/isString}}{{{defaultValue}}}; + {{/vendorExtensions.x-csharp-value-type}} + {{#vendorExtensions.x-csharp-value-type}} + this.{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{/conditionalSerialization}} + {{/defaultValue}} + {{^defaultValue}} + {{^conditionalSerialization}} + this.{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + {{/conditionalSerialization}} + {{#conditionalSerialization}} + this._{{name}} = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}; + if (this.{{name}} != null) + { + this._flag{{name}} = true; + } + {{/conditionalSerialization}} + {{/defaultValue}} + {{/required}} + {{/isReadOnly}} + {{/isInherited}} + {{/vars}} + {{#isAdditionalPropertiesTrue}} + this.AdditionalProperties = new Dictionary(); + {{/isAdditionalPropertiesTrue}} + } + + {{#vars}} + {{^isInherited}} + {{^isEnum}} + /// + /// {{description}}{{^description}}Gets or Sets {{{name}}}{{/description}} + /// {{#description}} + /// {{.}}{{/description}} + {{#example}} + /* + {{.}} + */ + {{/example}} + {{^conditionalSerialization}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}false{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#isDate}} + {{^supportsDateOnly}} + [JsonConverter(typeof(OpenAPIDateConverter))] + {{/supportsDateOnly}} + {{/isDate}} + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{dataType}}}{{^required}}?{{/required}} {{name}} { get; {{#isReadOnly}}private {{/isReadOnly}}set; } + + {{#isReadOnly}} + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{#isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#isDate}} + [JsonConverter(typeof(OpenAPIDateConverter))] + {{/isDate}} + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{dataType}}} {{name}} { get; private set; } + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + {{^isReadOnly}} + {{#isDate}} + [JsonConverter(typeof(OpenAPIDateConverter))] + {{/isDate}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#required}}true{{/required}}{{^required}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/required}}{{/vendorExtensions.x-emit-default-value}})] + {{#deprecated}} + [Obsolete] + {{/deprecated}} + public {{{dataType}}} {{name}} + { + get{ return _{{name}};} + set + { + _{{name}} = value; + _flag{{name}} = true; + } + } + private {{{dataType}}} _{{name}}; + private bool _flag{{name}}; + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return _flag{{name}}; + } + {{/isReadOnly}} + {{/conditionalSerialization}} + {{/isEnum}} + {{/isInherited}} + {{/vars}} + {{#isAdditionalPropertiesTrue}} + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + {{/isAdditionalPropertiesTrue}} + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class {{classname}} {\n"); + {{#parent}} + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + {{/parent}} + {{#vars}} + sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); + {{/vars}} + {{#isAdditionalPropertiesTrue}} + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + {{/isAdditionalPropertiesTrue}} + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public {{#parent}}{{^isArray}}{{^isMap}}override {{/isMap}}{{/isArray}}{{/parent}}{{^parent}}virtual {{/parent}}string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + {{#equatable}} + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + {{#useCompareNetObjects}} + return OpenAPIClientUtils.compareLogic.Compare(this, input as {{classname}}).AreEqual; + {{/useCompareNetObjects}} + {{^useCompareNetObjects}} + return this.Equals(input as {{classname}}); + {{/useCompareNetObjects}} + } + + /// + /// Returns true if {{classname}} instances are equal + /// + /// Instance of {{classname}} to be compared + /// Boolean + public bool Equals({{classname}} input) + { + {{#useCompareNetObjects}} + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + {{/useCompareNetObjects}} + {{^useCompareNetObjects}} + if (input == null) + { + return false; + } + return {{#vars}}{{#parent}}base.Equals(input) && {{/parent}}{{^isContainer}} + ( + this.{{name}} == input.{{name}} || + {{^vendorExtensions.x-is-value-type}} + (this.{{name}} != null && + this.{{name}}.Equals(input.{{name}})) + {{/vendorExtensions.x-is-value-type}} + {{#vendorExtensions.x-is-value-type}} + this.{{name}}.Equals(input.{{name}}) + {{/vendorExtensions.x-is-value-type}} + ){{^-last}} && {{/-last}}{{/isContainer}}{{#isContainer}} + ( + this.{{name}} == input.{{name}} || + {{^vendorExtensions.x-is-value-type}}this.{{name}} != null && + input.{{name}} != null && + {{/vendorExtensions.x-is-value-type}}this.{{name}}.SequenceEqual(input.{{name}}) + ){{^-last}} && {{/-last}}{{/isContainer}}{{/vars}}{{^vars}}{{#parent}}base.Equals(input){{/parent}}{{^parent}}false{{/parent}}{{/vars}}{{^isAdditionalPropertiesTrue}};{{/isAdditionalPropertiesTrue}} + {{#isAdditionalPropertiesTrue}} + && (this.AdditionalProperties.Count == input.AdditionalProperties.Count && !this.AdditionalProperties.Except(input.AdditionalProperties).Any()); + {{/isAdditionalPropertiesTrue}} + {{/useCompareNetObjects}} + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + {{#parent}} + int hashCode = base.GetHashCode(); + {{/parent}} + {{^parent}} + int hashCode = 41; + {{/parent}} + {{#vars}} + {{^vendorExtensions.x-is-value-type}} + if (this.{{name}} != null) + { + hashCode = (hashCode * 59) + this.{{name}}.GetHashCode(); + } + {{/vendorExtensions.x-is-value-type}} + {{#vendorExtensions.x-is-value-type}} + hashCode = (hashCode * 59) + this.{{name}}.GetHashCode(); + {{/vendorExtensions.x-is-value-type}} + {{/vars}} + {{#isAdditionalPropertiesTrue}} + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + {{/isAdditionalPropertiesTrue}} + return hashCode; + } + } + {{/equatable}} + +{{#validatable}} +{{>validatable}} +{{/validatable}} + } diff --git a/src/Regula.DocumentReader.NetCoreExample/Program.cs b/src/Regula.DocumentReader.NetCoreExample/Program.cs index fce6c3c..1847fb8 100644 --- a/src/Regula.DocumentReader.NetCoreExample/Program.cs +++ b/src/Regula.DocumentReader.NetCoreExample/Program.cs @@ -3,9 +3,9 @@ using System.IO; using System.Text; using Regula.DocumentReader.WebClient.Api; +using Regula.DocumentReader.WebClient.Client; using Regula.DocumentReader.WebClient.Model; using Regula.DocumentReader.WebClient.Model.Ext; -using Regula.DocumentReader.WebClient.Model.Ext.Autheticity; namespace Regula.DocumentReader.NetCoreExample { @@ -31,7 +31,7 @@ public static void Main() var requestParams = new RecognitionParams { AlreadyCropped = true } .WithScenario(Scenario.FULL_PROCESS) - // .WithResultTypeOutput(new List + // .WithResultTypeOutput(new List // { // // actual results // Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES, @@ -50,18 +50,21 @@ public static void Main() // new ProcessRequestImage(new ImageDataExt(irPage0), Light.IR), // new ProcessRequestImage(new ImageDataExt(uvPage0), Light.UV) }); + + var configuration = new Configuration + { + BasePath = apiBaseUrl, + // DefaultHeaders = new Dictionary + // { + // { "Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("USER:PASSWORD"))}" }, + // } + }; var api = licenseFromEnv != null - ? new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromEnv) - : new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromFile); + ? new DocumentReaderApi(configuration).WithLicense(licenseFromEnv) + : new DocumentReaderApi(configuration).WithLicense(licenseFromFile); var response = api.Process(request); - // var authHeaders = new Dictionary() - // { - // { "Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("USER:PASSWORD"))}" } - // }; - // var response = api.Process(request, headers: authHeaders); - Console.WriteLine(response.Log()); // overall status results @@ -69,11 +72,11 @@ public static void Main() var docOverallStatus = status.OverallStatus == CheckResult.OK ? "valid" : "not valid"; var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid"; - var docType = response.DocumentType(); var info = api.Ping(); - // var info = api.Ping(headers: authHeaders); + var docType = response.DocumentType(); + var info = api.Health(); Console.WriteLine("-----------------------------------------------------------------"); - Console.WriteLine($" API Version: {info.Version}"); + Console.WriteLine($" API Version: {info.VarVersion}"); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine($" Document Overall Status: {docOverallStatus}"); Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}"); diff --git a/src/Regula.DocumentReader.NetCoreExample/Regula.DocumentReader.NetCoreExample.csproj b/src/Regula.DocumentReader.NetCoreExample/Regula.DocumentReader.NetCoreExample.csproj index fd38b5b..3cfb1ca 100644 --- a/src/Regula.DocumentReader.NetCoreExample/Regula.DocumentReader.NetCoreExample.csproj +++ b/src/Regula.DocumentReader.NetCoreExample/Regula.DocumentReader.NetCoreExample.csproj @@ -3,7 +3,7 @@ Exe DocumentReader WebClient Example Regula.DocumentReader.NetCoreExampple - net6.0;net7.0;net8.0 + net8.0 diff --git a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Program.cs b/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Program.cs deleted file mode 100644 index d5dfdfd..0000000 --- a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Program.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Regula.DocumentReader.WebClient.Api; -using Regula.DocumentReader.WebClient.Model; -using Regula.DocumentReader.WebClient.Model.Ext; -using Regula.DocumentReader.WebClient.Model.Ext.Autheticity; - -namespace Regula.DocumentReader.NetCoreExampleEncryptedRcl -{ - internal static class Program - { - private const string API_BASE_PATH = "API_BASE_PATH"; - - public static void Main() - { - var apiBaseUrl = Environment.GetEnvironmentVariable(API_BASE_PATH) - ?? "https://api.regulaforensics.com"; - - var requestParams = new RecognitionParams() - .WithScenario(Scenario.FULL_PROCESS) - .WithResultTypeOutput(new List - { - // actual results - Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES, - Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.DOCUMENT_POSITION, - // legacy results - Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT, - Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS, - Result.LEXICAL_ANALYSIS, Result.IMAGE_QUALITY - }); - - var licenseString = File.ReadAllText("license.txt"); - var encryptedRclString = File.ReadAllText("encrypted-rcl.txt"); - - var licenseData = Convert.FromBase64String(licenseString); - var encryptedRclData = Convert.FromBase64String(encryptedRclString); - - var request = new RecognitionRequest(requestParams, new ContainerList(list: new List() - { - new LicenseResult(licenseData, licenseData.Length, 0, 0, 0, Result.LICENSE), - new EncryptedRCLResult(encryptedRclData, encryptedRclData.Length, 0, 0, 0, Result.ENCRYPTED_RCL) - })); - - var api = new DocumentReaderApi(apiBaseUrl); - - var response = api.Process(request); - - // overall status results - var status = response.Status(); - var docOverallStatus = status.OverallStatus == CheckResult.OK ? "valid" : "not valid"; - var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid"; - - // text results - var docNumberField = response.Text().GetField(TextFieldType.DOCUMENT_NUMBER); - var docNumberVisual = docNumberField.GetValue(Source.VISUAL); - var docNumberMrz = docNumberField.GetValue(Source.MRZ); - var docNumberVisualValidity = docNumberField.SourceValidity(Source.VISUAL); - var docNumberMrzValidity = docNumberField.SourceValidity(Source.MRZ); - var docNumberMrzVisualMatching = docNumberField.CrossSourceComparison(Source.MRZ, Source.VISUAL); - - var docAuthenticity = response.Authenticity(); - var docIRB900 = docAuthenticity.IrB900Checks(); - var docIRB900Blank = docIRB900?.ChecksByElement(SecurityFeatureType.BLANK); - - var docImagePattern = docAuthenticity.ImagePatternChecks(); - var docImagePatternBlank = docImagePattern?.ChecksByElement(SecurityFeatureType.BLANK); - - var docImageQuality = response.ImageQualityChecks(); - - var info = api.Ping(); - Console.WriteLine("-----------------------------------------------------------------"); - Console.WriteLine($" API Version: {info.Version}"); - Console.WriteLine("-----------------------------------------------------------------"); - Console.WriteLine($" Document Overall Status: {docOverallStatus}"); - Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}"); - Console.WriteLine($" Document Number Visual: {docNumberVisual}"); - Console.WriteLine($" Document Number MRZ: {docNumberMrz}", docNumberMrz); - Console.WriteLine($"Validity Of Document Number Visual: {docNumberVisualValidity}"); - Console.WriteLine($" Validity Of Document Number MRZ: {docNumberMrzValidity}"); - Console.WriteLine($" MRZ-Visual values comparison: {docNumberMrzVisualMatching}"); - Console.WriteLine("-----------------------------------------------------------------"); - - // images results - var documentImage = response.Images().GetField(GraphicFieldType.DOCUMENT_FRONT).GetValue(); - var portraitField = response.Images().GetField(GraphicFieldType.PORTRAIT); - var portraitFromVisual = portraitField.GetValue(Source.VISUAL); - - File.WriteAllBytes("document-image.jpg", documentImage); - File.WriteAllBytes("portrait.jpg", portraitFromVisual); - - // how to get low lvl individual results - // var lexResult = response.ResultByType(Result.LEXICAL_ANALYSIS); - } - } -} \ No newline at end of file diff --git a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Regula.DocumentReader.NetCoreExampleEncryptedRcl.csproj b/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Regula.DocumentReader.NetCoreExampleEncryptedRcl.csproj deleted file mode 100644 index 3ba8d42..0000000 --- a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/Regula.DocumentReader.NetCoreExampleEncryptedRcl.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - Exe - DocumentReader WebClient Example EncryptedRcl - Regula.DocumentReader.NetCoreExampleEncryptedRcl - net6.0;net7.0;net8.0 - - - - - PreserveNewest - - - PreserveNewest - - - - - - diff --git a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/encrypted-rcl.txt b/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/encrypted-rcl.txt deleted file mode 100644 index e22b191..0000000 --- a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/encrypted-rcl.txt +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/license.txt b/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/license.txt deleted file mode 100644 index 4225f85..0000000 --- a/src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/license.txt +++ /dev/null @@ -1 +0,0 @@ -AAEAAK/WKOtEs17ikF4B/IKdpwmj9p0KTx2OSFFdNba1eoDT5+8tDMeZEM4ucNYB3zqKknTIxH/7zTNpQtFLtzZlwmtWEgwfLLSdFdWTA63AI7RjRxD9gr2ci++l32k7iJvUnLy1XAMM6sEhij4Ui3s+MpObMhu6/EJWe9y/57uFB4Jzdwx34D9VAS1wj9O6MliCqKs9sIZNwohaddcg8sVYHKd76VqVvrZKN5HcW7nSjWoDDXWsLA3LW6INaU3SuWJJkDD1EqE6lvjWjKlxwe7B5h77csirRjI58HCXrbXL1g84n1FZ3uTgw7KfISxlQ+i99Zj9TbhSEiGPfnZFvk6LHARUBAAAAAAAECcDDWmiV6FtvHfS/mQmG7iPG16AxSAM1CZkciHkBeXKD+P3qYfPPKvOoC+VmgsKy3+YtFZbNtdrzWILttCv9PDHshglkIaC5qIwJCJUwmj7o2LHMtLyVVzLq15v3JULQ89HGa0Mgcjoo4Rporb/ARsRq5f9YaEamP6i2zmc88Fa4a4pxl3bBI3pDlu6qZ2SGRyysrkh19PUf3wNigE5i1kK7CMqi5TuUkuoyboog+bypE5CV8peAnrhcH0O8PzoDz0R8U3K+cy/BuyeP6eZ/0J8mk4QgVcaYDGRIeKPYWtvhdRa2j3ybItNfA2S2piTL6Mf9fEli5mpifBTNNGoZuzwEWxUH0vmco/zAFkH8dmkRQGSe9u8WjbgQHhIUIQ0aifGSJEbNocc/3kQsRTBhMT1By8C2cSJ20A0OnyY9nmWx9vpAeuCdMkTNOjAP/AZuZNZtmmRmBsoXpsAP+TOZ1hbimumcw/QSVUhKDVdLbIH03g45byy8Db1xe2uohSY65p9pRqIzgEMoCs/Is5ga+2jRxNlfGwer2AKxhWpxjqnGQJt9Asr9LI7IfCxrJnzBHxsH4a8iEZaSZXIhgwy6NhwIALVhRnohljzs/LBo2gpEVugBIdWHdbS/juGma8vGstWEj1yDpPBuavlj8/+lRpt8OVPZG99hMvaph50D3Q1hwlsxPw2Nz/8hQlP7PQ1JmzYULpVsnL2jPjpMdvjGOsyf3Niv4FakLHGyLpUb8GErzQpF4hCTyJyhAMCR2E6dBMT8E95BGSV8tEo5LzYK4nfSYJk8LDGVU4dvtxrLhbLeLr9OmNigVImKDKrZrIQLOJtCcb4q3V8HDQ5XeGsJ2pPRHDOJL7RjUEEbhb0w8ewTpJdDec2BUvZXMTwVLk4CED8mZwMssO6HEcnjy2JqVHU47sVwhpfKJIT+9deAzybEkTi+Mibs4MLBcaO6iaoQsaORvk87ERwXe4F/5JUz0uMoSoEbIPrR4s+MakfFsEDNSOBEl5LCmM2BvIFkqoVnzV5Ft+1mLhvYNgnkrwntnCf0Nt81ragY83Jumvs3QvSBw7M4WW1ANlKJfrGfgwwroISK0Ma5mXc40oKUIb7Jmgp+uwxr+Nka3DNBGG3qUUI/lM3N4ZkmPAOTbNwVHv+TDo62nFaCtCeaK31owNYKojWbc5Gf+FL8K34j01DzIJiUO+3wHs2pH39ePDregf8uvx/kTvvA8oqEZWMzjmYdMkV1o43/nvnlHiwl8Pyq4O2F5NX9LVxcQpw6nMPWlKe6zrluztm/gYO7h2Rt1ualZbO4DQvt8OuTwXvzxR1X9XWJ6qNZjYbMmnZp+tPpL+iO3St6sWWGEc5nelcCPOIBOoXwYo1SZxUa0ex//aiExfoaEL1aJO95ARWnKwXnVBJyEiRume5j/qFeFkwo5/XFiBt9bRluOMdWuNTOc5A25eFmuNr0n8eeE458Huyg7DiKQ== \ No newline at end of file diff --git a/src/Regula.DocumentReader.NetCoreExamplePortraitComparison/Program.cs b/src/Regula.DocumentReader.NetCoreExamplePortraitComparison/Program.cs index 9098539..fe3c248 100644 --- a/src/Regula.DocumentReader.NetCoreExamplePortraitComparison/Program.cs +++ b/src/Regula.DocumentReader.NetCoreExamplePortraitComparison/Program.cs @@ -1,7 +1,8 @@ using Regula.DocumentReader.WebClient.Api; +using Regula.DocumentReader.WebClient.Client; using Regula.DocumentReader.WebClient.Model; using Regula.DocumentReader.WebClient.Model.Ext; -using Regula.DocumentReader.WebClient.Model.Ext.Autheticity; +using System.Text; namespace Regula.DocumentReader.NetCoreExamplePortraitComparison { @@ -19,15 +20,15 @@ public static void Main() // ************************************************************************************************ var apiBaseUrl = Environment.GetEnvironmentVariable(API_BASE_PATH) ?? "https://api.regulaforensics.com"; - + var licenseFromEnv = Environment.GetEnvironmentVariable(TEST_LICENSE); // optional, used here only for smoke test purposes var licenseFromFile = File.Exists(LICENSE_FILE_NAME) ? File.ReadAllBytes(LICENSE_FILE_NAME) : null; - + var whitePage0 = File.ReadAllBytes("WHITE.jpg"); - + var requestParams = new RecognitionParams { AlreadyCropped = true } .WithScenario(Scenario.FULL_PROCESS) // .WithResultTypeOutput(new List @@ -42,10 +43,17 @@ public static void Main() .WithAuthParam(new AuthParams(checkPhotoComparison: true)) .WithLog(false); - + var configuration = new Configuration + { + BasePath = apiBaseUrl, + // DefaultHeaders = new Dictionary + // { + // { "Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("USER:PASSWORD"))}" }, + // } + }; var api = licenseFromEnv != null - ? new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromEnv) - : new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromFile); + ? new DocumentReaderApi(configuration).WithLicense(licenseFromEnv) + : new DocumentReaderApi(configuration).WithLicense(licenseFromFile); var request = new RecognitionRequest(requestParams, new List { @@ -54,10 +62,6 @@ public static void Main() request.ExtPortrait = Convert.ToBase64String(File.ReadAllBytes("portrait.png")); var response = api.Process(request); - // var authHeaders = new Dictionary() - // { - // { "Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes("USER:PASSWORD"))}" } - // }; var comparison = response.PortraitComparison(); Console.WriteLine(response.Log()); @@ -68,11 +72,10 @@ public static void Main() var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid"; var docType = response.DocumentType(); - var info = api.Ping(); - // var info = api.Ping(headers: authHeaders); + var info = api.Health(); Console.WriteLine("-----------------------------------------------------------------"); - Console.WriteLine($" API Version: {info.Version}"); + Console.WriteLine($" API Version: {info.VarVersion}"); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine($" Document Overall Status: {docOverallStatus}"); Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}"); @@ -84,7 +87,7 @@ public static void Main() Console.WriteLine($"Source: {field.FieldName}, Value: {field.Value}"); } Console.WriteLine("-----------------------------------------------------------------"); - + // images results var documentImage = response.Images().GetField(GraphicFieldType.DOCUMENT_FRONT).GetValue(); @@ -93,7 +96,6 @@ public static void Main() File.WriteAllBytes("document-image.jpg", documentImage); File.WriteAllBytes("portrait.jpg", portraitFromVisual); - } } } \ No newline at end of file diff --git a/src/Regula.DocumentReader.WebClient/Api/DefaultApi.cs b/src/Regula.DocumentReader.WebClient/Api/DefaultApi.cs deleted file mode 100644 index 7d1bd94..0000000 --- a/src/Regula.DocumentReader.WebClient/Api/DefaultApi.cs +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 6.9.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Threading; -using RestSharp; -using Regula.DocumentReader.WebClient.Client; -using Regula.DocumentReader.WebClient.Model; - -namespace Regula.DocumentReader.WebClient.Api -{ - /// - /// Represents a collection of functions to interact with the API endpoints - /// - public interface IDefaultApi : IApiAccessor - { - #region Synchronous Operations - /// - /// Server health check - /// - /// - /// - /// - /// Thrown when fails to make API call - /// (optional) - /// DeviceInfo - DeviceInfo Ping(Dictionary headers, string xRequestID = default(string)); - - /// - /// Server health check - /// - /// - /// - /// - /// Thrown when fails to make API call - /// (optional) - /// ApiResponse of DeviceInfo - ApiResponse PingWithHttpInfo(Dictionary headers, string xRequestID = default(string)); - #endregion Synchronous Operations - #region Asynchronous Operations - /// - /// Server health check - /// - /// - /// - /// - /// Thrown when fails to make API call - /// (optional) - /// Cancellation Token to cancel request (optional) - /// Task of DeviceInfo - System.Threading.Tasks.Task PingAsync(string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)); - - /// - /// Server health check - /// - /// - /// - /// - /// Thrown when fails to make API call - /// (optional) - /// Cancellation Token to cancel request (optional) - /// Task of ApiResponse (DeviceInfo) - System.Threading.Tasks.Task> PingWithHttpInfoAsync(string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)); - #endregion Asynchronous Operations - } - - /// - /// Represents a collection of functions to interact with the API endpoints - /// - public partial class DefaultApi : IDefaultApi - { - private Regula.DocumentReader.WebClient.Client.ExceptionFactory _exceptionFactory = (name, response) => null; - - /// - /// Initializes a new instance of the class. - /// - /// - public DefaultApi(String basePath) - { - this.Configuration = new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath }; - - ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; - } - - /// - /// Initializes a new instance of the class - /// - /// - public DefaultApi() - { - this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.Default; - - ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; - } - - /// - /// Initializes a new instance of the class - /// using Configuration object - /// - /// An instance of Configuration - /// - public DefaultApi(Regula.DocumentReader.WebClient.Client.Configuration configuration = null) - { - if (configuration == null) // use the default one in Configuration - this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.Default; - else - this.Configuration = configuration; - - ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; - } - - /// - /// Gets the base path of the API client. - /// - /// The base path - public String GetBasePath() - { - return this.Configuration.ApiClient.RestClient.Options.BaseUrl.ToString(); - } - - /// - /// Sets the base path of the API client. - /// - /// The base path - [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] - public void SetBasePath(String basePath) - { - // do nothing - } - - /// - /// Gets or sets the configuration object - /// - /// An instance of the Configuration - public Regula.DocumentReader.WebClient.Client.Configuration Configuration { get; set; } - - /// - /// Provides a factory method hook for the creation of exceptions. - /// - public Regula.DocumentReader.WebClient.Client.ExceptionFactory ExceptionFactory - { - get - { - if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) - { - throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); - } - return _exceptionFactory; - } - set { _exceptionFactory = value; } - } - - /// - /// Gets the default header. - /// - /// Dictionary of HTTP header - [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] - public IDictionary DefaultHeader() - { - return new ReadOnlyDictionary(this.Configuration.DefaultHeader); - } - - /// - /// Add default header. - /// - /// Header field name. - /// Header field value. - /// - [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] - public void AddDefaultHeader(string key, string value) - { - this.Configuration.AddDefaultHeader(key, value); - } - - /// - /// Server health check - /// - /// Thrown when fails to make API call - /// (optional) - /// DeviceInfo - public DeviceInfo Ping(Dictionary headers, string xRequestID = default(string)) - { - ApiResponse localVarResponse = PingWithHttpInfo(headers, xRequestID); - return localVarResponse.Data; - } - - public ApiResponse SaveResponse(RestResponse response) - { - int localVarStatusCode = (int)response.StatusCode; - return new ApiResponse(localVarStatusCode, - response.Headers.ToDictionarySafe(x => x.Name, x => string.Join(",", x.Value)), - (DeviceInfo)this.Configuration.ApiClient.Deserialize(response, typeof(DeviceInfo))); - } - /// - /// Server health check - /// - /// Thrown when fails to make API call - /// (optional) - /// ApiResponse of DeviceInfo - public ApiResponse PingWithHttpInfo(Dictionary headers, string xRequestID = default(string)) - { - - var localVarPath = "/api/ping"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = this.Configuration.DefaultHeader.Union(headers).ToDictionary(k => k.Key, v => v.Value); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept; - - if (xRequestID != null) - localVarHeaderParams["X-RequestID"] = this.Configuration.ApiClient.ParameterToString(xRequestID); // header parameter - - // make the HTTP request - RestResponse localVarResponse = (RestResponse)this.Configuration.ApiClient.CallApi(localVarPath, - Method.Get, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int)localVarResponse.StatusCode; - - if (ExceptionFactory != null) - { - Exception exception = ExceptionFactory("Ping", localVarResponse); - if (exception != null) throw exception; - } - return SaveResponse(localVarResponse); - } - /// - /// Server health check - /// - /// Thrown when fails to make API call - /// (optional) - /// Cancellation Token to cancel request (optional) - /// Task of DeviceInfo - public async System.Threading.Tasks.Task PingAsync(string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)) - { - ApiResponse localVarResponse = await PingWithHttpInfoAsync(xRequestID, cancellationToken); - return localVarResponse.Data; - - } - - /// - /// Server health check - /// - /// Thrown when fails to make API call - /// (optional) - /// Cancellation Token to cancel request (optional) - /// Task of ApiResponse (DeviceInfo) - public async System.Threading.Tasks.Task> PingWithHttpInfoAsync(string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)) - { - - var localVarPath = "/api/ping"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept; - - if (xRequestID != null) localVarHeaderParams["X-RequestID"] = this.Configuration.ApiClient.ParameterToString(xRequestID); // header parameter - - - // make the HTTP request - RestResponse localVarResponse = (RestResponse)await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.Get, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType, cancellationToken); - - int localVarStatusCode = (int)localVarResponse.StatusCode; - - if (ExceptionFactory != null) - { - Exception exception = ExceptionFactory("Ping", localVarResponse); - if (exception != null) throw exception; - } - - return SaveResponse(localVarResponse); - } - } -} \ No newline at end of file diff --git a/src/Regula.DocumentReader.WebClient/Api/DocumentReaderApi.cs b/src/Regula.DocumentReader.WebClient/Api/DocumentReaderApi.cs index c1bdb62..f7a3482 100644 --- a/src/Regula.DocumentReader.WebClient/Api/DocumentReaderApi.cs +++ b/src/Regula.DocumentReader.WebClient/Api/DocumentReaderApi.cs @@ -10,25 +10,33 @@ namespace Regula.DocumentReader.WebClient.Api { public class DocumentReaderApi { - private readonly DefaultApi _defaultApi; + private readonly HealthcheckApi _healthcheckApi; private readonly ProcessApi _processApi; public DocumentReaderApi(string basePath) { - this._defaultApi = new DefaultApi(basePath); + this._healthcheckApi = new HealthcheckApi(basePath); this._processApi = new ProcessApi(basePath); } + + public DocumentReaderApi(Configuration configuration) + { + this._healthcheckApi = new HealthcheckApi(configuration); + this._processApi = new ProcessApi(configuration); + } - public Configuration Configuration + public IReadableConfiguration Configuration { get => this._processApi.Configuration; - set => this._processApi.Configuration = value; + set + { + this._healthcheckApi.Configuration = value; + this._processApi.Configuration = value; + } } private string License { get; set; } - - public RecognitionResponse Process(ProcessRequest processRequest) { return Process(processRequest, new Dictionary(), default(string)); @@ -51,7 +59,7 @@ public RecognitionResponse Process(ProcessRequest processRequest, Dictionary ProcessAsync(ProcessRequest processRequest) @@ -76,29 +84,29 @@ public async Task ProcessAsync(ProcessRequest processReques else processRequest.SystemInfo.License = License; - var response = await this._processApi.ApiProcessWithHttpInfoAsync(processRequest, headers, xRequestID, cancellationToken); + var response = await this._processApi.ApiProcessWithHttpInfoAsync(processRequest, xRequestID, cancellationToken); return new RecognitionResponse(response); } public DeviceInfo Ping(string xRequestID) { - return this._defaultApi.Ping(new Dictionary(), xRequestID); + return this._healthcheckApi.Ping(xRequestID); } public DeviceInfo Ping() { - return this._defaultApi.Ping(new Dictionary()); + return this._healthcheckApi.Ping(); } - public DeviceInfo Ping(string xRequestID, Dictionary headers) + public Healthcheck Health(string xRequestID) { - return this._defaultApi.Ping(headers, xRequestID); + return this._healthcheckApi.Healthz(xRequestID); } - - public DeviceInfo Ping(Dictionary headers) + + public Healthcheck Health() { - return this._defaultApi.Ping(headers); + return this._healthcheckApi.Healthz(); } public DocumentReaderApi WithLicense(string license) diff --git a/src/Regula.DocumentReader.WebClient/Api/HealthcheckApi.cs b/src/Regula.DocumentReader.WebClient/Api/HealthcheckApi.cs new file mode 100644 index 0000000..0f7c4b5 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Api/HealthcheckApi.cs @@ -0,0 +1,719 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Mime; +using Regula.DocumentReader.WebClient.Client; +using Regula.DocumentReader.WebClient.Model; + +namespace Regula.DocumentReader.WebClient.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IHealthcheckApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Healthcheck + Healthcheck Healthz(string? xRequestID = default(string?)); + + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of Healthcheck + ApiResponse HealthzWithHttpInfo(string? xRequestID = default(string?)); + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// DeviceInfo + [Obsolete] + DeviceInfo Ping(string? xRequestID = default(string?)); + + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of DeviceInfo + [Obsolete] + ApiResponse PingWithHttpInfo(string? xRequestID = default(string?)); + /// + /// License health check + /// + /// Thrown when fails to make API call + /// (optional) + /// + void Readyz(string? xRequestID = default(string?)); + + /// + /// License health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of Object(void) + ApiResponse ReadyzWithHttpInfo(string? xRequestID = default(string?)); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IHealthcheckApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of Healthcheck + System.Threading.Tasks.Task HealthzAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Healthcheck) + System.Threading.Tasks.Task> HealthzWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of DeviceInfo + [Obsolete] + System.Threading.Tasks.Task PingAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Server health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (DeviceInfo) + [Obsolete] + System.Threading.Tasks.Task> PingWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// License health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task ReadyzAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// License health check + /// + /// + /// + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> ReadyzWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IHealthcheckApi : IHealthcheckApiSync, IHealthcheckApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class HealthcheckApi : IDisposable, IHealthcheckApi + { + private Regula.DocumentReader.WebClient.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// + public HealthcheckApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// The target service's base path in URL format. + /// + /// + public HealthcheckApi(string basePath) + { + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class using Configuration object. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// An instance of Configuration. + /// + /// + public HealthcheckApi(Regula.DocumentReader.WebClient.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class. + /// + /// An instance of HttpClient. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public HealthcheckApi(HttpClient client, HttpClientHandler handler = null) : this(client, (string)null, handler) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// An instance of HttpClient. + /// The target service's base path in URL format. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public HealthcheckApi(HttpClient client, string basePath, HttpClientHandler handler = null) + { + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class using Configuration object. + /// + /// An instance of HttpClient. + /// An instance of Configuration. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public HealthcheckApi(HttpClient client, Regula.DocumentReader.WebClient.Client.Configuration configuration, HttpClientHandler handler = null) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + /// + public HealthcheckApi(Regula.DocumentReader.WebClient.Client.ISynchronousClient client, Regula.DocumentReader.WebClient.Client.IAsynchronousClient asyncClient, Regula.DocumentReader.WebClient.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Disposes resources if they were created by us + /// + public void Dispose() + { + this.ApiClient?.Dispose(); + } + + /// + /// Holds the ApiClient if created + /// + public Regula.DocumentReader.WebClient.Client.ApiClient ApiClient { get; set; } = null; + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Regula.DocumentReader.WebClient.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Regula.DocumentReader.WebClient.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public string GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Regula.DocumentReader.WebClient.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Regula.DocumentReader.WebClient.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Healthcheck + public Healthcheck Healthz(string? xRequestID = default(string?)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = HealthzWithHttpInfo(xRequestID); + return localVarResponse.Data; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of Healthcheck + public Regula.DocumentReader.WebClient.Client.ApiResponse HealthzWithHttpInfo(string? xRequestID = default(string?)) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/healthz", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Healthz", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of Healthcheck + public async System.Threading.Tasks.Task HealthzAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await HealthzWithHttpInfoAsync(xRequestID, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Healthcheck) + public async System.Threading.Tasks.Task> HealthzWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/healthz", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Healthz", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// DeviceInfo + [Obsolete] + public DeviceInfo Ping(string? xRequestID = default(string?)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = PingWithHttpInfo(xRequestID); + return localVarResponse.Data; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of DeviceInfo + [Obsolete] + public Regula.DocumentReader.WebClient.Client.ApiResponse PingWithHttpInfo(string? xRequestID = default(string?)) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/ping", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Ping", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of DeviceInfo + [Obsolete] + public async System.Threading.Tasks.Task PingAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await PingWithHttpInfoAsync(xRequestID, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Server health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (DeviceInfo) + [Obsolete] + public async System.Threading.Tasks.Task> PingWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/ping", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Ping", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// License health check + /// + /// Thrown when fails to make API call + /// (optional) + /// + public void Readyz(string? xRequestID = default(string?)) + { + ReadyzWithHttpInfo(xRequestID); + } + + /// + /// License health check + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of Object(void) + public Regula.DocumentReader.WebClient.Client.ApiResponse ReadyzWithHttpInfo(string? xRequestID = default(string?)) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/readyz", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Readyz", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// License health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task ReadyzAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + await ReadyzWithHttpInfoAsync(xRequestID, cancellationToken).ConfigureAwait(false); + } + + /// + /// License health check + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> ReadyzWithHttpInfoAsync(string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) + { + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/readyz", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Readyz", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/src/Regula.DocumentReader.WebClient/Api/ProcessApi.cs b/src/Regula.DocumentReader.WebClient/Api/ProcessApi.cs index 7bc15df..e6747b3 100644 --- a/src/Regula.DocumentReader.WebClient/Api/ProcessApi.cs +++ b/src/Regula.DocumentReader.WebClient/Api/ProcessApi.cs @@ -1,41 +1,40 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; -using System.Threading; -using RestSharp; +using System.Net; +using System.Net.Http; +using System.Net.Mime; using Regula.DocumentReader.WebClient.Client; using Regula.DocumentReader.WebClient.Model; namespace Regula.DocumentReader.WebClient.Api { + /// /// Represents a collection of functions to interact with the API endpoints /// - public interface IProcessApi : IApiAccessor + public interface IProcessApiSync : IApiAccessor { #region Synchronous Operations /// /// Process list of documents images and return extracted data /// - /// - /// - /// /// Thrown when fails to make API call /// /// (optional) /// ProcessResponse - ProcessResponse ApiProcess (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string)); + ProcessResponse ApiProcess(ProcessRequest processRequest, string? xRequestID = default(string?)); /// /// Process list of documents images and return extracted data @@ -47,8 +46,15 @@ public interface IProcessApi : IApiAccessor /// /// (optional) /// ApiResponse of ProcessResponse - ApiResponse ApiProcessWithHttpInfo (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string)); - #endregion Synchronous Operation, + ApiResponse ApiProcessWithHttpInfo(ProcessRequest processRequest, string? xRequestID = default(string?)); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IProcessApiAsync : IApiAccessor + { #region Asynchronous Operations /// /// Process list of documents images and return extracted data @@ -59,9 +65,9 @@ public interface IProcessApi : IApiAccessor /// Thrown when fails to make API call /// /// (optional) - /// Cancellation Token to cancel request (optional) + /// Cancellation Token to cancel the request. /// Task of ProcessResponse - System.Threading.Tasks.Task ApiProcessAsync (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)); + System.Threading.Tasks.Task ApiProcessAsync(ProcessRequest processRequest, string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); /// /// Process list of documents images and return extracted data @@ -72,81 +78,205 @@ public interface IProcessApi : IApiAccessor /// Thrown when fails to make API call /// /// (optional) - /// Cancellation Token to cancel request (optional) + /// Cancellation Token to cancel the request. /// Task of ApiResponse (ProcessResponse) - System.Threading.Tasks.Task> ApiProcessWithHttpInfoAsync (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)); + System.Threading.Tasks.Task> ApiProcessWithHttpInfoAsync(ProcessRequest processRequest, string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); #endregion Asynchronous Operations } /// /// Represents a collection of functions to interact with the API endpoints /// - public partial class ProcessApi : IProcessApi + public interface IProcessApi : IProcessApiSync, IProcessApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class ProcessApi : IDisposable, IProcessApi { private Regula.DocumentReader.WebClient.Client.ExceptionFactory _exceptionFactory = (name, response) => null; /// /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. /// /// - public ProcessApi(String basePath) + public ProcessApi() : this((string)null) { - this.Configuration = new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath }; - - ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. /// + /// The target service's base path in URL format. + /// /// - public ProcessApi() + public ProcessApi(string basePath) { - this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.Default; + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + /// + /// Initializes a new instance of the class using Configuration object. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// An instance of Configuration. + /// + /// + public ProcessApi(Regula.DocumentReader.WebClient.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; } /// - /// Initializes a new instance of the class - /// using Configuration object + /// Initializes a new instance of the class. /// - /// An instance of Configuration + /// An instance of HttpClient. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// /// - public ProcessApi(Regula.DocumentReader.WebClient.Client.Configuration configuration = null) + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public ProcessApi(HttpClient client, HttpClientHandler handler = null) : this(client, (string)null, handler) { - if (configuration == null) // use the default one in Configuration - this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.Default; - else - this.Configuration = configuration; + } + /// + /// Initializes a new instance of the class. + /// + /// An instance of HttpClient. + /// The target service's base path in URL format. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public ProcessApi(HttpClient client, string basePath, HttpClientHandler handler = null) + { + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class using Configuration object. + /// + /// An instance of HttpClient. + /// An instance of Configuration. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public ProcessApi(HttpClient client, Regula.DocumentReader.WebClient.Client.Configuration configuration, HttpClientHandler handler = null) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; } /// - /// Gets the base path of the API client. + /// Initializes a new instance of the class + /// using a Configuration object and client instance. /// - /// The base path - public String GetBasePath() + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + /// + public ProcessApi(Regula.DocumentReader.WebClient.Client.ISynchronousClient client, Regula.DocumentReader.WebClient.Client.IAsynchronousClient asyncClient, Regula.DocumentReader.WebClient.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Disposes resources if they were created by us + /// + public void Dispose() { - return this.Configuration.ApiClient.RestClient.Options.BaseUrl.ToString(); + this.ApiClient?.Dispose(); } /// - /// Sets the base path of the API client. + /// Holds the ApiClient if created + /// + public Regula.DocumentReader.WebClient.Client.ApiClient ApiClient { get; set; } = null; + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Regula.DocumentReader.WebClient.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Regula.DocumentReader.WebClient.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. /// /// The base path - [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] - public void SetBasePath(String basePath) + public string GetBasePath() { - // do nothing + return this.Configuration.BasePath; } /// /// Gets or sets the configuration object /// /// An instance of the Configuration - public Regula.DocumentReader.WebClient.Client.Configuration Configuration {get; set;} + public Regula.DocumentReader.WebClient.Client.IReadableConfiguration Configuration { get; set; } /// /// Provides a factory method hook for the creation of exceptions. @@ -164,28 +294,6 @@ public Regula.DocumentReader.WebClient.Client.ExceptionFactory ExceptionFactory set { _exceptionFactory = value; } } - /// - /// Gets the default header. - /// - /// Dictionary of HTTP header - [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] - public IDictionary DefaultHeader() - { - return new ReadOnlyDictionary(this.Configuration.DefaultHeader); - } - - /// - /// Add default header. - /// - /// Header field name. - /// Header field value. - /// - [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] - public void AddDefaultHeader(string key, string value) - { - this.Configuration.AddDefaultHeader(key, value); - } - /// /// Process list of documents images and return extracted data /// @@ -193,10 +301,10 @@ public void AddDefaultHeader(string key, string value) /// /// (optional) /// ProcessResponse - public ProcessResponse ApiProcess (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string)) + public ProcessResponse ApiProcess(ProcessRequest processRequest, string? xRequestID = default(string?)) { - ApiResponse localVarResponse = ApiProcessWithHttpInfo(processRequest, headers, xRequestID); - return localVarResponse.Data; + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiProcessWithHttpInfo(processRequest, xRequestID); + return localVarResponse.Data; } /// @@ -206,63 +314,46 @@ public void AddDefaultHeader(string key, string value) /// /// (optional) /// ApiResponse of ProcessResponse - public ApiResponse ApiProcessWithHttpInfo (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string)) + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiProcessWithHttpInfo(ProcessRequest processRequest, string? xRequestID = default(string?)) { // verify the required parameter 'processRequest' is set if (processRequest == null) - throw new ApiException(400, "Missing required parameter 'processRequest' when calling ProcessApi->ApiProcess"); - - var localVarPath = "/api/process"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = this.Configuration.DefaultHeader.Union(headers).ToDictionary (k => k.Key, v => v.Value); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'processRequest' when calling ProcessApi->ApiProcess"); + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { "application/json" }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { + string[] _accepts = new string[] { "application/json" }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (xRequestID != null) localVarHeaderParams.Add("X-RequestID", this.Configuration.ApiClient.ParameterToString(xRequestID)); // header parameter - if (processRequest != null && processRequest.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(processRequest); // http body (model) parameter - } - else + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) { - localVarPostBody = processRequest; // byte array + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter } + localVarRequestOptions.Data = processRequest; // make the HTTP request - RestResponse localVarResponse = (RestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.Post, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int) localVarResponse.StatusCode; + var localVarResponse = this.Client.Post("/api/process", localVarRequestOptions, this.Configuration); - if (ExceptionFactory != null) + if (this.ExceptionFactory != null) { - Exception exception = ExceptionFactory("ApiProcess", localVarResponse); - if (exception != null) throw exception; + Exception _exception = this.ExceptionFactory("ApiProcess", localVarResponse); + if (_exception != null) throw _exception; } - var rawResponse = localVarResponse.Content; - - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionarySafe(x => x.Name, x => string.Join(",", x.Value)), - (ProcessResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ProcessResponse)), rawResponse); + return localVarResponse; } /// @@ -271,13 +362,12 @@ public void AddDefaultHeader(string key, string value) /// Thrown when fails to make API call /// /// (optional) - /// Cancellation Token to cancel request (optional) + /// Cancellation Token to cancel the request. /// Task of ProcessResponse - public async System.Threading.Tasks.Task ApiProcessAsync (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)) + public async System.Threading.Tasks.Task ApiProcessAsync(ProcessRequest processRequest, string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) { - ApiResponse localVarResponse = await ApiProcessWithHttpInfoAsync(processRequest, headers, xRequestID, cancellationToken); - return localVarResponse.Data; - + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiProcessWithHttpInfoAsync(processRequest, xRequestID, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; } /// @@ -286,65 +376,51 @@ public void AddDefaultHeader(string key, string value) /// Thrown when fails to make API call /// /// (optional) - /// Cancellation Token to cancel request (optional) + /// Cancellation Token to cancel the request. /// Task of ApiResponse (ProcessResponse) - public async System.Threading.Tasks.Task> ApiProcessWithHttpInfoAsync (ProcessRequest processRequest, Dictionary headers, string xRequestID = default(string), CancellationToken cancellationToken = default(CancellationToken)) + public async System.Threading.Tasks.Task> ApiProcessWithHttpInfoAsync(ProcessRequest processRequest, string? xRequestID = default(string?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) { // verify the required parameter 'processRequest' is set if (processRequest == null) - throw new ApiException(400, "Missing required parameter 'processRequest' when calling ProcessApi->ApiProcess"); - - var localVarPath = "/api/process"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = this.Configuration.DefaultHeader.Union(headers).ToDictionarySafe(k => k.Key, v => v.Value); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'processRequest' when calling ProcessApi->ApiProcess"); + + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { "application/json" }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { + string[] _accepts = new string[] { "application/json" }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept; - - if (xRequestID != null) - localVarHeaderParams["X-RequestID"] = this.Configuration.ApiClient.ParameterToString(xRequestID); // header parameter - - if (processRequest.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(processRequest); // http body (model) parameter - } - else + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (xRequestID != null) { - localVarPostBody = processRequest; // byte array + localVarRequestOptions.HeaderParameters.Add("X-RequestID", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(xRequestID)); // header parameter } + localVarRequestOptions.Data = processRequest; // make the HTTP request - RestResponse localVarResponse = (RestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.Post, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType, cancellationToken); - int localVarStatusCode = (int) localVarResponse.StatusCode; + var localVarResponse = await this.AsynchronousClient.PostAsync("/api/process", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); - if (ExceptionFactory != null) + if (this.ExceptionFactory != null) { - Exception exception = ExceptionFactory("ApiProcess", localVarResponse); - if (exception != null) throw exception; + Exception _exception = this.ExceptionFactory("ApiProcess", localVarResponse); + if (_exception != null) throw _exception; } - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionarySafe(x => x.Name, x => string.Join(",", x.Value)), - (ProcessResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ProcessResponse))); + return localVarResponse; } } diff --git a/src/Regula.DocumentReader.WebClient/Api/TransactionApi.cs b/src/Regula.DocumentReader.WebClient/Api/TransactionApi.cs new file mode 100644 index 0000000..ec48920 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Api/TransactionApi.cs @@ -0,0 +1,1203 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Mime; +using Regula.DocumentReader.WebClient.Client; +using Regula.DocumentReader.WebClient.Model; + +namespace Regula.DocumentReader.WebClient.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface ITransactionApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Delete Reprocess transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Object + Object ApiV2TagTagIdDelete(Guid tagId); + + /// + /// Delete Reprocess transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// ApiResponse of Object + ApiResponse ApiV2TagTagIdDeleteWithHttpInfo(Guid tagId); + /// + /// Get transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// ListTransactionsByTagResponse + ListTransactionsByTagResponse ApiV2TagTagIdTransactionsGet(string tagId); + + /// + /// Get transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// ApiResponse of ListTransactionsByTagResponse + ApiResponse ApiV2TagTagIdTransactionsGetWithHttpInfo(string tagId); + /// + /// Get Reprocess transaction file + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// FileParameter + FileParameter ApiV2TransactionTransactionIdFileGet(Guid transactionId, string name); + + /// + /// Get Reprocess transaction file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// ApiResponse of FileParameter + ApiResponse ApiV2TransactionTransactionIdFileGetWithHttpInfo(Guid transactionId, string name); + /// + /// Get Reprocess transaction data + /// + /// Thrown when fails to make API call + /// Transaction id + /// TransactionProcessGetResponse + TransactionProcessGetResponse ApiV2TransactionTransactionIdGet(Guid transactionId); + + /// + /// Get Reprocess transaction data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// ApiResponse of TransactionProcessGetResponse + ApiResponse ApiV2TransactionTransactionIdGetWithHttpInfo(Guid transactionId); + /// + /// Reprocess + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// TransactionProcessResult + TransactionProcessResult ApiV2TransactionTransactionIdProcessPost(Guid transactionId, TransactionProcessRequest transactionProcessRequest); + + /// + /// Reprocess + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// ApiResponse of TransactionProcessResult + ApiResponse ApiV2TransactionTransactionIdProcessPostWithHttpInfo(Guid transactionId, TransactionProcessRequest transactionProcessRequest); + /// + /// Get Reprocess transaction result + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// ProcessResponse + ProcessResponse ApiV2TransactionTransactionIdResultsGet(Guid transactionId, bool? withImages = default(bool?)); + + /// + /// Get Reprocess transaction result + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// ApiResponse of ProcessResponse + ApiResponse ApiV2TransactionTransactionIdResultsGetWithHttpInfo(Guid transactionId, bool? withImages = default(bool?)); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface ITransactionApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Delete Reprocess transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of Object + System.Threading.Tasks.Task ApiV2TagTagIdDeleteAsync(Guid tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Delete Reprocess transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Object) + System.Threading.Tasks.Task> ApiV2TagTagIdDeleteWithHttpInfoAsync(Guid tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Get transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ListTransactionsByTagResponse + System.Threading.Tasks.Task ApiV2TagTagIdTransactionsGetAsync(string tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Get transactions by tag + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ListTransactionsByTagResponse) + System.Threading.Tasks.Task> ApiV2TagTagIdTransactionsGetWithHttpInfoAsync(string tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Get Reprocess transaction file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// Cancellation Token to cancel the request. + /// Task of FileParameter + System.Threading.Tasks.Task ApiV2TransactionTransactionIdFileGetAsync(Guid transactionId, string name, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Get Reprocess transaction file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (FileParameter) + System.Threading.Tasks.Task> ApiV2TransactionTransactionIdFileGetWithHttpInfoAsync(Guid transactionId, string name, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Get Reprocess transaction data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// Cancellation Token to cancel the request. + /// Task of TransactionProcessGetResponse + System.Threading.Tasks.Task ApiV2TransactionTransactionIdGetAsync(Guid transactionId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Get Reprocess transaction data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (TransactionProcessGetResponse) + System.Threading.Tasks.Task> ApiV2TransactionTransactionIdGetWithHttpInfoAsync(Guid transactionId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Reprocess + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// Cancellation Token to cancel the request. + /// Task of TransactionProcessResult + System.Threading.Tasks.Task ApiV2TransactionTransactionIdProcessPostAsync(Guid transactionId, TransactionProcessRequest transactionProcessRequest, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Reprocess + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (TransactionProcessResult) + System.Threading.Tasks.Task> ApiV2TransactionTransactionIdProcessPostWithHttpInfoAsync(Guid transactionId, TransactionProcessRequest transactionProcessRequest, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + /// + /// Get Reprocess transaction result + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// Cancellation Token to cancel the request. + /// Task of ProcessResponse + System.Threading.Tasks.Task ApiV2TransactionTransactionIdResultsGetAsync(Guid transactionId, bool? withImages = default(bool?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Get Reprocess transaction result + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProcessResponse) + System.Threading.Tasks.Task> ApiV2TransactionTransactionIdResultsGetWithHttpInfoAsync(Guid transactionId, bool? withImages = default(bool?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface ITransactionApi : ITransactionApiSync, ITransactionApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class TransactionApi : IDisposable, ITransactionApi + { + private Regula.DocumentReader.WebClient.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// + public TransactionApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// The target service's base path in URL format. + /// + /// + public TransactionApi(string basePath) + { + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class using Configuration object. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. + /// + /// An instance of Configuration. + /// + /// + public TransactionApi(Regula.DocumentReader.WebClient.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(this.Configuration.BasePath); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class. + /// + /// An instance of HttpClient. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public TransactionApi(HttpClient client, HttpClientHandler handler = null) : this(client, (string)null, handler) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// An instance of HttpClient. + /// The target service's base path in URL format. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public TransactionApi(HttpClient client, string basePath, HttpClientHandler handler = null) + { + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + new Regula.DocumentReader.WebClient.Client.Configuration { BasePath = basePath } + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class using Configuration object. + /// + /// An instance of HttpClient. + /// An instance of Configuration. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public TransactionApi(HttpClient client, Regula.DocumentReader.WebClient.Client.Configuration configuration, HttpClientHandler handler = null) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + if (client == null) throw new ArgumentNullException("client"); + + this.Configuration = Regula.DocumentReader.WebClient.Client.Configuration.MergeConfigurations( + Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance, + configuration + ); + this.ApiClient = new Regula.DocumentReader.WebClient.Client.ApiClient(client, this.Configuration.BasePath, handler); + this.Client = this.ApiClient; + this.AsynchronousClient = this.ApiClient; + ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + /// + public TransactionApi(Regula.DocumentReader.WebClient.Client.ISynchronousClient client, Regula.DocumentReader.WebClient.Client.IAsynchronousClient asyncClient, Regula.DocumentReader.WebClient.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Regula.DocumentReader.WebClient.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Disposes resources if they were created by us + /// + public void Dispose() + { + this.ApiClient?.Dispose(); + } + + /// + /// Holds the ApiClient if created + /// + public Regula.DocumentReader.WebClient.Client.ApiClient ApiClient { get; set; } = null; + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Regula.DocumentReader.WebClient.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Regula.DocumentReader.WebClient.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public string GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Regula.DocumentReader.WebClient.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Regula.DocumentReader.WebClient.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Delete Reprocess transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Object + public Object ApiV2TagTagIdDelete(Guid tagId) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TagTagIdDeleteWithHttpInfo(tagId); + return localVarResponse.Data; + } + + /// + /// Delete Reprocess transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// ApiResponse of Object + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TagTagIdDeleteWithHttpInfo(Guid tagId) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("tagId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(tagId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Delete("/api/v2/tag/{tagId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TagTagIdDelete", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete Reprocess transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of Object + public async System.Threading.Tasks.Task ApiV2TagTagIdDeleteAsync(Guid tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TagTagIdDeleteWithHttpInfoAsync(tagId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Delete Reprocess transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Object) + public async System.Threading.Tasks.Task> ApiV2TagTagIdDeleteWithHttpInfoAsync(Guid tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("tagId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(tagId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/api/v2/tag/{tagId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TagTagIdDelete", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// ListTransactionsByTagResponse + public ListTransactionsByTagResponse ApiV2TagTagIdTransactionsGet(string tagId) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TagTagIdTransactionsGetWithHttpInfo(tagId); + return localVarResponse.Data; + } + + /// + /// Get transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// ApiResponse of ListTransactionsByTagResponse + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TagTagIdTransactionsGetWithHttpInfo(string tagId) + { + // verify the required parameter 'tagId' is set + if (tagId == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'tagId' when calling TransactionApi->ApiV2TagTagIdTransactionsGet"); + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("tagId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(tagId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/v2/tag/{tagId}/transactions", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TagTagIdTransactionsGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ListTransactionsByTagResponse + public async System.Threading.Tasks.Task ApiV2TagTagIdTransactionsGetAsync(string tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TagTagIdTransactionsGetWithHttpInfoAsync(tagId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get transactions by tag + /// + /// Thrown when fails to make API call + /// Tag id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ListTransactionsByTagResponse) + public async System.Threading.Tasks.Task> ApiV2TagTagIdTransactionsGetWithHttpInfoAsync(string tagId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + // verify the required parameter 'tagId' is set + if (tagId == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'tagId' when calling TransactionApi->ApiV2TagTagIdTransactionsGet"); + + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("tagId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(tagId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/v2/tag/{tagId}/transactions", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TagTagIdTransactionsGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction file + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// FileParameter + public FileParameter ApiV2TransactionTransactionIdFileGet(Guid transactionId, string name) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TransactionTransactionIdFileGetWithHttpInfo(transactionId, name); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction file + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// ApiResponse of FileParameter + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TransactionTransactionIdFileGetWithHttpInfo(Guid transactionId, string name) + { + // verify the required parameter 'name' is set + if (name == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'name' when calling TransactionApi->ApiV2TransactionTransactionIdFileGet"); + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/octet-stream" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + localVarRequestOptions.QueryParameters.Add(Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToMultiMap("", "name", name)); + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/v2/transaction/{transactionId}/file", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdFileGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction file + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// Cancellation Token to cancel the request. + /// Task of FileParameter + public async System.Threading.Tasks.Task ApiV2TransactionTransactionIdFileGetAsync(Guid transactionId, string name, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TransactionTransactionIdFileGetWithHttpInfoAsync(transactionId, name, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction file + /// + /// Thrown when fails to make API call + /// Transaction id + /// File name + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (FileParameter) + public async System.Threading.Tasks.Task> ApiV2TransactionTransactionIdFileGetWithHttpInfoAsync(Guid transactionId, string name, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + // verify the required parameter 'name' is set + if (name == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'name' when calling TransactionApi->ApiV2TransactionTransactionIdFileGet"); + + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/octet-stream" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + localVarRequestOptions.QueryParameters.Add(Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToMultiMap("", "name", name)); + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/v2/transaction/{transactionId}/file", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdFileGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction data + /// + /// Thrown when fails to make API call + /// Transaction id + /// TransactionProcessGetResponse + public TransactionProcessGetResponse ApiV2TransactionTransactionIdGet(Guid transactionId) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TransactionTransactionIdGetWithHttpInfo(transactionId); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction data + /// + /// Thrown when fails to make API call + /// Transaction id + /// ApiResponse of TransactionProcessGetResponse + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TransactionTransactionIdGetWithHttpInfo(Guid transactionId) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/v2/transaction/{transactionId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction data + /// + /// Thrown when fails to make API call + /// Transaction id + /// Cancellation Token to cancel the request. + /// Task of TransactionProcessGetResponse + public async System.Threading.Tasks.Task ApiV2TransactionTransactionIdGetAsync(Guid transactionId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TransactionTransactionIdGetWithHttpInfoAsync(transactionId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction data + /// + /// Thrown when fails to make API call + /// Transaction id + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (TransactionProcessGetResponse) + public async System.Threading.Tasks.Task> ApiV2TransactionTransactionIdGetWithHttpInfoAsync(Guid transactionId, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/v2/transaction/{transactionId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Reprocess + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// TransactionProcessResult + public TransactionProcessResult ApiV2TransactionTransactionIdProcessPost(Guid transactionId, TransactionProcessRequest transactionProcessRequest) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TransactionTransactionIdProcessPostWithHttpInfo(transactionId, transactionProcessRequest); + return localVarResponse.Data; + } + + /// + /// Reprocess + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// ApiResponse of TransactionProcessResult + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TransactionTransactionIdProcessPostWithHttpInfo(Guid transactionId, TransactionProcessRequest transactionProcessRequest) + { + // verify the required parameter 'transactionProcessRequest' is set + if (transactionProcessRequest == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'transactionProcessRequest' when calling TransactionApi->ApiV2TransactionTransactionIdProcessPost"); + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + localVarRequestOptions.Data = transactionProcessRequest; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/api/v2/transaction/{transactionId}/process", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdProcessPost", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Reprocess + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// Cancellation Token to cancel the request. + /// Task of TransactionProcessResult + public async System.Threading.Tasks.Task ApiV2TransactionTransactionIdProcessPostAsync(Guid transactionId, TransactionProcessRequest transactionProcessRequest, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TransactionTransactionIdProcessPostWithHttpInfoAsync(transactionId, transactionProcessRequest, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Reprocess + /// + /// Thrown when fails to make API call + /// Transaction id + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (TransactionProcessResult) + public async System.Threading.Tasks.Task> ApiV2TransactionTransactionIdProcessPostWithHttpInfoAsync(Guid transactionId, TransactionProcessRequest transactionProcessRequest, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + // verify the required parameter 'transactionProcessRequest' is set + if (transactionProcessRequest == null) + throw new Regula.DocumentReader.WebClient.Client.ApiException(400, "Missing required parameter 'transactionProcessRequest' when calling TransactionApi->ApiV2TransactionTransactionIdProcessPost"); + + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + localVarRequestOptions.Data = transactionProcessRequest; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/api/v2/transaction/{transactionId}/process", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdProcessPost", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction result + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// ProcessResponse + public ProcessResponse ApiV2TransactionTransactionIdResultsGet(Guid transactionId, bool? withImages = default(bool?)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = ApiV2TransactionTransactionIdResultsGetWithHttpInfo(transactionId, withImages); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction result + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// ApiResponse of ProcessResponse + public Regula.DocumentReader.WebClient.Client.ApiResponse ApiV2TransactionTransactionIdResultsGetWithHttpInfo(Guid transactionId, bool? withImages = default(bool?)) + { + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + if (withImages != null) + { + localVarRequestOptions.QueryParameters.Add(Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToMultiMap("", "withImages", withImages)); + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/api/v2/transaction/{transactionId}/results", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdResultsGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Reprocess transaction result + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// Cancellation Token to cancel the request. + /// Task of ProcessResponse + public async System.Threading.Tasks.Task ApiV2TransactionTransactionIdResultsGetAsync(Guid transactionId, bool? withImages = default(bool?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + Regula.DocumentReader.WebClient.Client.ApiResponse localVarResponse = await ApiV2TransactionTransactionIdResultsGetWithHttpInfoAsync(transactionId, withImages, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get Reprocess transaction result + /// + /// Thrown when fails to make API call + /// Transaction id + /// With base64 images or url (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProcessResponse) + public async System.Threading.Tasks.Task> ApiV2TransactionTransactionIdResultsGetWithHttpInfoAsync(Guid transactionId, bool? withImages = default(bool?), System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + + Regula.DocumentReader.WebClient.Client.RequestOptions localVarRequestOptions = new Regula.DocumentReader.WebClient.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Regula.DocumentReader.WebClient.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("transactionId", Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToString(transactionId)); // path parameter + if (withImages != null) + { + localVarRequestOptions.QueryParameters.Add(Regula.DocumentReader.WebClient.Client.ClientUtils.ParameterToMultiMap("", "withImages", withImages)); + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/api/v2/transaction/{transactionId}/results", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ApiV2TransactionTransactionIdResultsGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/ApiClient.cs b/src/Regula.DocumentReader.WebClient/Client/ApiClient.cs index 0f29eda..5412fd7 100644 --- a/src/Regula.DocumentReader.WebClient/Client/ApiClient.cs +++ b/src/Regula.DocumentReader.WebClient/Client/ApiClient.cs @@ -1,287 +1,90 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Text.RegularExpressions; using System.IO; -using System.Threading; -using System.Web; using System.Linq; using System.Net; +using System.Reflection; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters; using System.Text; +using System.Threading; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Web; using Newtonsoft.Json; -using RestSharp; +using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +using System.Net.Http; +using System.Net.Http.Headers; +using Polly; namespace Regula.DocumentReader.WebClient.Client { /// - /// API client is mainly responsible for making the HTTP call to the API backend. + /// To Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - public partial class ApiClient + internal class CustomJsonCodec { - public JsonSerializerSettings serializerSettings = new JsonSerializerSettings + private readonly IReadableConfiguration _configuration; + private static readonly string _contentType = "application/json"; + private readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings { - ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } }; - /// - /// Allows for extending request processing for generated code. - /// - /// The RestSharp request object - partial void InterceptRequest(RestRequest request); - - /// - /// Allows for extending response processing for generated code. - /// - /// The RestSharp request object - /// The RestSharp response object - partial void InterceptResponse(RestRequest request, RestResponse response); - - /// - /// Initializes a new instance of the class - /// with default configuration. - /// - public ApiClient() + public CustomJsonCodec(IReadableConfiguration configuration) { - Configuration = Regula.DocumentReader.WebClient.Client.Configuration.Default; - var options = new RestClientOptions("https://api.regulaforensics.com") - { - ThrowOnAnyError = true, - MaxTimeout = Configuration.Timeout - }; - RestClient = new RestClient(options); + _configuration = configuration; } - /// - /// Initializes a new instance of the class - /// with default base path (https://api.regulaforensics.com). - /// - /// An instance of Configuration. - public ApiClient(Configuration config) + public CustomJsonCodec(JsonSerializerSettings serializerSettings, IReadableConfiguration configuration) { - Configuration = config ?? Regula.DocumentReader.WebClient.Client.Configuration.Default; - - var options = new RestClientOptions(Configuration.BasePath) - { - ThrowOnAnyError = true, - MaxTimeout = Configuration.Timeout - }; - RestClient = new RestClient(options); + _serializerSettings = serializerSettings; + _configuration = configuration; } /// - /// Initializes a new instance of the class - /// with default configuration. + /// Serialize the object into a JSON string. /// - /// The base path. - public ApiClient(String basePath = "https://api.regulaforensics.com") + /// Object to be serialized. + /// A JSON string. + public string Serialize(object obj) { - if (String.IsNullOrEmpty(basePath)) - throw new ArgumentException("basePath cannot be empty"); - Configuration = Client.Configuration.Default; - RestClientOptions options = new(basePath) + if (obj != null && obj is Regula.DocumentReader.WebClient.Model.AbstractOpenAPISchema) { - ThrowOnAnyError = true, - MaxTimeout = Configuration.Timeout - }; - RestClient = new RestClient(options); - } - - /// - /// Gets or sets the default API client for making HTTP calls. - /// - /// The default API client. - [Obsolete("ApiClient.Default is deprecated, please use 'Configuration.Default.ApiClient' instead.")] - public static ApiClient Default; - - /// - /// Gets or sets an instance of the IReadableConfiguration. - /// - /// An instance of the IReadableConfiguration. - /// - /// helps us to avoid modifying possibly global - /// configuration values from within a given client. It does not guarantee thread-safety - /// of the instance in any way. - /// - public IReadableConfiguration Configuration { get; set; } - - /// - /// Gets or sets the RestClient. - /// - /// An instance of the RestClient - public RestClient RestClient { get; set; } - - // Creates and sets up a RestRequest prior to a call. - private RestRequest PrepareRequest( - String path, RestSharp.Method method, List> queryParams, Object postBody, - Dictionary headerParams, Dictionary formParams, - Dictionary fileParams, Dictionary pathParams, - String contentType) - { - var request = new RestRequest(path, method); - - // add path parameter, if any - foreach(var param in pathParams) - request.AddParameter(param.Key, param.Value, ParameterType.UrlSegment); - - // add header parameter, if any - foreach(var param in headerParams) - request.AddHeader(param.Key, param.Value); - - // add query parameter, if any - foreach(var param in queryParams) - request.AddQueryParameter(param.Key, param.Value); - - // add form parameter, if any - foreach(var param in formParams) - request.AddParameter(param.Key, param.Value); - - // add file parameter, if any - foreach(var param in fileParams) - { - request.AddFile(param.Value.Name, ()=>param.Value.GetFile(), param.Value.FileName, param.Value.ContentType); + // the object to be serialized is an oneOf/anyOf schema + return ((Regula.DocumentReader.WebClient.Model.AbstractOpenAPISchema)obj).ToJson(); } - - if (postBody != null) // http body (model or byte[]) parameter + else { - request.AddParameter(contentType, postBody, ParameterType.RequestBody); + return JsonConvert.SerializeObject(obj, _serializerSettings); } - - return request; - } - /// - /// Makes the HTTP request (Sync). - /// - /// URL path. - /// HTTP method. - /// Query parameters. - /// HTTP body (POST request). - /// Header parameters. - /// Form parameters. - /// File parameters. - /// Path parameters. - /// Content Type of the request - /// Object - public Object CallApi( - String path, RestSharp.Method method, List> queryParams, Object postBody, - Dictionary headerParams, Dictionary formParams, - Dictionary fileParams, Dictionary pathParams, - String contentType) - { - var request = PrepareRequest( - path, method, queryParams, postBody, headerParams, formParams, fileParams, - pathParams, contentType); - - - // set user agent - request.AddHeader("UserAgent", Configuration.UserAgent); - - InterceptRequest(request); - var response = RestClient.Execute(request); - InterceptResponse(request, response); - - return (Object) response; - } - /// - /// Makes the asynchronous HTTP request. - /// - /// URL path. - /// HTTP method. - /// Query parameters. - /// HTTP body (POST request). - /// Header parameters. - /// Form parameters. - /// File parameters. - /// Path parameters. - /// Content type. - /// Cancellation Token. - /// The Task instance. - public async System.Threading.Tasks.Task CallApiAsync( - String path, RestSharp.Method method, List> queryParams, Object postBody, - Dictionary headerParams, Dictionary formParams, - Dictionary fileParams, Dictionary pathParams, - String contentType, CancellationToken cancellationToken) - { - var request = PrepareRequest( - path, method, queryParams, postBody, headerParams, formParams, fileParams, - pathParams, contentType); - request.AddHeader("UserAgent", Configuration.UserAgent); - InterceptRequest(request); - var response = await RestClient.ExecuteAsync(request, cancellationToken); - InterceptResponse(request, response); - return (Object)response; } - /// - /// Escape string (url-encoded). - /// - /// String to be escaped. - /// Escaped string. - public string EscapeString(string str) - { - return UrlEncode(str); - } - - /// - /// Create FileParameter based on Stream. - /// - /// Parameter name. - /// Input stream. - /// FileParameter. - public FileParameter ParameterToFile(string name, Stream stream) + public async Task Deserialize(HttpResponseMessage response) { - if (stream is FileStream) - return FileParameter.Create(name, ReadAsBytes(stream), Path.GetFileName(((FileStream)stream).Name)); - else - return FileParameter.Create(name, ReadAsBytes(stream), "no_file_name_provided"); - } - - /// - /// If parameter is DateTime, output in a formatted string (default ISO 8601), customizable with Configuration.DateTime. - /// If parameter is a list, join the list with ",". - /// Otherwise just return the string. - /// - /// The parameter (header, path, query, form). - /// Formatted string. - public string ParameterToString(object obj) - { - if (obj is DateTime) - // Return a formatted date string - Can be customized with Configuration.DateTimeFormat - // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") - // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 - // For example: 2009-06-15T13:45:30.0000000 - return ((DateTime)obj).ToString (Configuration.DateTimeFormat); - else if (obj is DateTimeOffset) - // Return a formatted date string - Can be customized with Configuration.DateTimeFormat - // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") - // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 - // For example: 2009-06-15T13:45:30.0000000 - return ((DateTimeOffset)obj).ToString (Configuration.DateTimeFormat); - else if (obj is bool) - return (bool)obj ? "true" : "false"; - else if (obj is IList) - { - var flattenedString = new StringBuilder(); - foreach (var param in (IList)obj) - { - if (flattenedString.Length > 0) - flattenedString.Append(","); - flattenedString.Append(param); - } - return flattenedString.ToString(); - } - else - return Convert.ToString (obj); + var result = (T) await Deserialize(response, typeof(T)).ConfigureAwait(false); + return result; } /// @@ -290,52 +93,82 @@ public string ParameterToString(object obj) /// The HTTP response. /// Object type. /// Object representation of the JSON string. - public object Deserialize(RestResponse response, Type type) + internal async Task Deserialize(HttpResponseMessage response, Type type) { - IReadOnlyCollection headers = response.Headers; + IList headers = new List(); + // process response headers, e.g. Access-Control-Allow-Methods + foreach (var responseHeader in response.Headers) + { + headers.Add(responseHeader.Key + "=" + ClientUtils.ParameterToString(responseHeader.Value)); + } + + // process response content headers, e.g. Content-Type + foreach (var responseHeader in response.Content.Headers) + { + headers.Add(responseHeader.Key + "=" + ClientUtils.ParameterToString(responseHeader.Value)); + } + + // RFC 2183 & RFC 2616 + var fileNameRegex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$", RegexOptions.IgnoreCase); if (type == typeof(byte[])) // return byte array { - return response.RawBytes; + return await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); + } + else if (type == typeof(FileParameter)) + { + if (headers != null) { + foreach (var header in headers) + { + var match = fileNameRegex.Match(header.ToString()); + if (match.Success) + { + string fileName = ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); + return new FileParameter(fileName, await response.Content.ReadAsStreamAsync().ConfigureAwait(false)); + } + } + } + return new FileParameter(await response.Content.ReadAsStreamAsync().ConfigureAwait(false)); } // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + var bytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); if (headers != null) { - var filePath = String.IsNullOrEmpty(Configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() - : Configuration.TempFolderPath; - var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); + : _configuration.TempFolderPath; + foreach (var header in headers) { - var match = regex.Match(header.ToString()); + var match = fileNameRegex.Match(header.ToString()); if (match.Success) { - string fileName = filePath + SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object { - return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); + return DateTime.Parse(await response.Content.ReadAsStringAsync().ConfigureAwait(false), null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { - return ConvertType(response.Content, type); + return Convert.ChangeType(await response.Content.ReadAsStringAsync().ConfigureAwait(false), type); } // at this point, it must be a model (json) try { - return JsonConvert.DeserializeObject(response.Content, type, serializerSettings); + return JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync().ConfigureAwait(false), type, _serializerSettings); } catch (Exception e) { @@ -343,205 +176,613 @@ public object Deserialize(RestResponse response, Type type) } } + public string RootElement { get; set; } + public string Namespace { get; set; } + public string DateFormat { get; set; } + + public string ContentType + { + get { return _contentType; } + set { throw new InvalidOperationException("Not allowed to set content type."); } + } + } + /// + /// Provides a default implementation of an Api client (both synchronous and asynchronous implementations), + /// encapsulating general REST accessor use cases. + /// + /// + /// The Dispose method will manage the HttpClient lifecycle when not passed by constructor. + /// + public partial class ApiClient : IDisposable, ISynchronousClient, IAsynchronousClient + { + private readonly string _baseUrl; + + private readonly HttpClientHandler _httpClientHandler; + private readonly HttpClient _httpClient; + private readonly bool _disposeClient; + /// - /// Serialize an input (model) into JSON string + /// Specifies the settings on a object. + /// These settings can be adjusted to accommodate custom serialization rules. /// - /// Object. - /// JSON string. - public String Serialize(object obj) + public JsonSerializerSettings SerializerSettings { get; set; } = new JsonSerializerSettings { - try + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver { - return obj != null ? JsonConvert.SerializeObject(obj) : null; - } - catch (Exception e) - { - throw new ApiException(500, e.Message); + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } } - } + }; /// - ///Check if the given MIME is a JSON MIME. - ///JSON MIME examples: - /// application/json - /// application/json; charset=UTF8 - /// APPLICATION/JSON - /// application/vnd.company+json + /// Initializes a new instance of the , defaulting to the global configurations' base url. + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. /// - /// MIME - /// Returns True if MIME type is json. - public bool IsJsonMime(String mime) + public ApiClient() : + this(Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance.BasePath) { - var jsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"); - return mime != null && (jsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json")); } /// - /// Select the Content-Type header's value from the given content-type array: - /// if JSON type exists in the given array, use it; - /// otherwise use the first one defined in 'consumes' + /// Initializes a new instance of the . + /// **IMPORTANT** This will also create an instance of HttpClient, which is less than ideal. + /// It's better to reuse the HttpClient and HttpClientHandler. /// - /// The Content-Type array to select from. - /// The Content-Type header to use. - public String SelectHeaderContentType(String[] contentTypes) + /// The target service's base path in URL format. + /// + public ApiClient(string basePath) { - if (contentTypes.Length == 0) - return "application/json"; - - foreach (var contentType in contentTypes) - { - if (IsJsonMime(contentType.ToLower())) - return contentType; - } + if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); - return contentTypes[0]; // use the first content type specified in 'consumes' + _httpClientHandler = new HttpClientHandler(); + _httpClient = new HttpClient(_httpClientHandler, true); + _disposeClient = true; + _baseUrl = basePath; } /// - /// Select the Accept header's value from the given accepts array: - /// if JSON exists in the given array, use it; - /// otherwise use all of them (joining into a string) + /// Initializes a new instance of the , defaulting to the global configurations' base url. /// - /// The accepts array to select from. - /// The Accept header to use. - public String SelectHeaderAccept(String[] accepts) + /// An instance of HttpClient. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public ApiClient(HttpClient client, HttpClientHandler handler = null) : + this(client, Regula.DocumentReader.WebClient.Client.GlobalConfiguration.Instance.BasePath, handler) { - if (accepts.Length == 0) - return null; - - if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) - return "application/json"; - - return String.Join(",", accepts); } /// - /// Encode string in base64 format. + /// Initializes a new instance of the . /// - /// String to be encoded. - /// Encoded string. - public static string Base64Encode(string text) + /// An instance of HttpClient. + /// The target service's base path in URL format. + /// An optional instance of HttpClientHandler that is used by HttpClient. + /// + /// + /// + /// Some configuration settings will not be applied without passing an HttpClientHandler. + /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. + /// + public ApiClient(HttpClient client, string basePath, HttpClientHandler handler = null) { - return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text)); + if (client == null) throw new ArgumentNullException("client cannot be null"); + if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); + + _httpClientHandler = handler; + _httpClient = client; + _baseUrl = basePath; } /// - /// Dynamically cast the object into target type. + /// Disposes resources if they were created by us /// - /// Object to be casted - /// Target type - /// Casted object - public static dynamic ConvertType(dynamic fromObject, Type toObject) + public void Dispose() { - return Convert.ChangeType(fromObject, toObject); + if(_disposeClient) { + _httpClient.Dispose(); + } } - /// - /// Convert stream to byte array - /// - /// Input stream to be converted - /// Byte array - public static byte[] ReadAsBytes(Stream inputStream) + /// Prepares multipart/form-data content + HttpContent PrepareMultipartFormDataContent(RequestOptions options) { - byte[] buf = new byte[16*1024]; - using (MemoryStream ms = new MemoryStream()) + string boundary = "---------" + Guid.NewGuid().ToString().ToUpperInvariant(); + var multipartContent = new MultipartFormDataContent(boundary); + foreach (var formParameter in options.FormParameters) { - int count; - while ((count = inputStream.Read(buf, 0, buf.Length)) > 0) + multipartContent.Add(new StringContent(formParameter.Value), formParameter.Key); + } + + if (options.FileParameters != null && options.FileParameters.Count > 0) + { + foreach (var fileParam in options.FileParameters) { - ms.Write(buf, 0, count); + foreach (var file in fileParam.Value) + { + var content = new StreamContent(file.Content); + content.Headers.ContentType = new MediaTypeHeaderValue(file.ContentType); + multipartContent.Add(content, fileParam.Key, file.Name); + } } - return ms.ToArray(); } + return multipartContent; } /// - /// URL encode a string - /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 + /// Provides all logic for constructing a new HttpRequestMessage. + /// At this point, all information for querying the service is known. Here, it is simply + /// mapped into the a HttpRequestMessage. /// - /// String to be URL encoded - /// Byte array - public static string UrlEncode(string input) + /// The http verb. + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// [private] A new HttpRequestMessage instance. + /// + private HttpRequestMessage NewRequest( + HttpMethod method, + string path, + RequestOptions options, + IReadableConfiguration configuration) { - const int maxLength = 32766; + if (path == null) throw new ArgumentNullException("path"); + if (options == null) throw new ArgumentNullException("options"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + WebRequestPathBuilder builder = new WebRequestPathBuilder(_baseUrl, path); - if (input == null) + builder.AddPathParameters(options.PathParameters); + + builder.AddQueryParameters(options.QueryParameters); + + HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); + + if (configuration.UserAgent != null) { - throw new ArgumentNullException("input"); + request.Headers.TryAddWithoutValidation("User-Agent", configuration.UserAgent); } - if (input.Length <= maxLength) + if (configuration.DefaultHeaders != null) { - return Uri.EscapeDataString(input); + foreach (var headerParam in configuration.DefaultHeaders) + { + request.Headers.Add(headerParam.Key, headerParam.Value); + } + } + + if (options.HeaderParameters != null) + { + foreach (var headerParam in options.HeaderParameters) + { + foreach (var value in headerParam.Value) + { + // Todo make content headers actually content headers + request.Headers.TryAddWithoutValidation(headerParam.Key, value); + } + } } - StringBuilder sb = new StringBuilder(input.Length * 2); - int index = 0; + List> contentList = new List>(); - while (index < input.Length) + string contentType = null; + if (options.HeaderParameters != null && options.HeaderParameters.ContainsKey("Content-Type")) + { + var contentTypes = options.HeaderParameters["Content-Type"]; + contentType = contentTypes.FirstOrDefault(); + } + + if (contentType == "multipart/form-data") + { + request.Content = PrepareMultipartFormDataContent(options); + } + else if (contentType == "application/x-www-form-urlencoded") + { + request.Content = new FormUrlEncodedContent(options.FormParameters); + } + else { - int length = Math.Min(input.Length - index, maxLength); - string subString = input.Substring(index, length); + if (options.Data != null) + { + if (options.Data is FileParameter fp) + { + contentType = contentType ?? "application/octet-stream"; - sb.Append(Uri.EscapeDataString(subString)); - index += subString.Length; + var streamContent = new StreamContent(fp.Content); + streamContent.Headers.ContentType = new MediaTypeHeaderValue(contentType); + request.Content = streamContent; + } + else + { + var serializer = new CustomJsonCodec(SerializerSettings, configuration); + request.Content = new StringContent(serializer.Serialize(options.Data), new UTF8Encoding(), + "application/json"); + } + } } - return sb.ToString(); + + + // TODO provide an alternative that allows cookies per request instead of per API client + if (options.Cookies != null && options.Cookies.Count > 0) + { + request.Properties["CookieContainer"] = options.Cookies; + } + + return request; } - /// - /// Sanitize filename by removing the path - /// - /// Filename - /// Filename - public static string SanitizeFilename(string filename) + partial void InterceptRequest(HttpRequestMessage req); + partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response); + + private async Task> ToApiResponse(HttpResponseMessage response, object responseData, Uri uri) { - Match match = Regex.Match(filename, @".*[/\\](.*)$"); + T result = (T) responseData; + string rawContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - if (match.Success) + var transformed = new ApiResponse(response.StatusCode, new Multimap(), result, rawContent) { - return match.Groups[1].Value; + ErrorText = response.ReasonPhrase, + Cookies = new List() + }; + + // process response headers, e.g. Access-Control-Allow-Methods + if (response.Headers != null) + { + foreach (var responseHeader in response.Headers) + { + transformed.Headers.Add(responseHeader.Key, ClientUtils.ParameterToString(responseHeader.Value)); + } } - else + + // process response content headers, e.g. Content-Type + if (response.Content.Headers != null) + { + foreach (var responseHeader in response.Content.Headers) + { + transformed.Headers.Add(responseHeader.Key, ClientUtils.ParameterToString(responseHeader.Value)); + } + } + + if (_httpClientHandler != null && response != null) { - return filename; + try { + foreach (Cookie cookie in _httpClientHandler.CookieContainer.GetCookies(uri)) + { + transformed.Cookies.Add(cookie); + } + } + catch (PlatformNotSupportedException) {} } + + return transformed; } - /// - /// Convert params to key/value pairs. - /// Use collectionFormat to properly format lists and collections. - /// - /// Collection format. - /// Key name. - /// Value object. - /// A list of KeyValuePairs - public IEnumerable> ParameterToKeyValuePairs(string collectionFormat, string name, object value) + private ApiResponse Exec(HttpRequestMessage req, IReadableConfiguration configuration) { - var parameters = new List>(); + return ExecAsync(req, configuration).GetAwaiter().GetResult(); + } - if (IsCollection(value) && collectionFormat == "multi") + private async Task> ExecAsync(HttpRequestMessage req, + IReadableConfiguration configuration, + System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + CancellationTokenSource timeoutTokenSource = null; + CancellationTokenSource finalTokenSource = null; + var deserializer = new CustomJsonCodec(SerializerSettings, configuration); + var finalToken = cancellationToken; + + try { - var valueCollection = value as IEnumerable; - parameters.AddRange(from object item in valueCollection select new KeyValuePair(name, ParameterToString(item))); + if (configuration.Timeout > TimeSpan.Zero) + { + timeoutTokenSource = new CancellationTokenSource(configuration.Timeout); + finalTokenSource = CancellationTokenSource.CreateLinkedTokenSource(finalToken, timeoutTokenSource.Token); + finalToken = finalTokenSource.Token; + } + + if (configuration.Proxy != null) + { + if(_httpClientHandler == null) throw new InvalidOperationException("Configuration `Proxy` not supported when the client is explicitly created without an HttpClientHandler, use the proper constructor."); + _httpClientHandler.Proxy = configuration.Proxy; + } + + if (configuration.ClientCertificates != null) + { + if(_httpClientHandler == null) throw new InvalidOperationException("Configuration `ClientCertificates` not supported when the client is explicitly created without an HttpClientHandler, use the proper constructor."); + _httpClientHandler.ClientCertificates.AddRange(configuration.ClientCertificates); + } + + var cookieContainer = req.Properties.ContainsKey("CookieContainer") ? req.Properties["CookieContainer"] as List : null; + + if (cookieContainer != null) + { + if(_httpClientHandler == null) throw new InvalidOperationException("Request property `CookieContainer` not supported when the client is explicitly created without an HttpClientHandler, use the proper constructor."); + foreach (var cookie in cookieContainer) + { + _httpClientHandler.CookieContainer.Add(cookie); + } + } + + InterceptRequest(req); + + HttpResponseMessage response; + if (RetryConfiguration.AsyncRetryPolicy != null) + { + var policy = RetryConfiguration.AsyncRetryPolicy; + var policyResult = await policy + .ExecuteAndCaptureAsync(() => _httpClient.SendAsync(req, finalToken)) + .ConfigureAwait(false); + response = (policyResult.Outcome == OutcomeType.Successful) ? + policyResult.Result : new HttpResponseMessage() + { + ReasonPhrase = policyResult.FinalException.ToString(), + RequestMessage = req + }; + } + else + { + response = await _httpClient.SendAsync(req, finalToken).ConfigureAwait(false); + } + + if (!response.IsSuccessStatusCode) + { + return await ToApiResponse(response, default(T), req.RequestUri).ConfigureAwait(false); + } + + object responseData = await deserializer.Deserialize(response).ConfigureAwait(false); + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Regula.DocumentReader.WebClient.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + responseData = (T) typeof(T).GetMethod("FromJson").Invoke(null, new object[] { response.Content }); + } + else if (typeof(T).Name == "Stream") // for binary response + { + responseData = (T) (object) await response.Content.ReadAsStreamAsync().ConfigureAwait(false); + } + + InterceptResponse(req, response); + + return await ToApiResponse(response, responseData, req.RequestUri).ConfigureAwait(false); } - else + catch (OperationCanceledException original) { - parameters.Add(new KeyValuePair(name, ParameterToString(value))); + if (timeoutTokenSource != null && timeoutTokenSource.IsCancellationRequested) + { + throw new TaskCanceledException($"[{req.Method}] {req.RequestUri} was timeout.", + new TimeoutException(original.Message, original)); + } + throw; } + finally + { + if (timeoutTokenSource != null) + { + timeoutTokenSource.Dispose(); + } + + if (finalTokenSource != null) + { + finalTokenSource.Dispose(); + } + } + } + + #region IAsynchronousClient + /// + /// Make a HTTP GET request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Get, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP POST request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Post, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PUT request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Put, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP DELETE request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Delete, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP HEAD request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Head, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP OPTION request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Options, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PATCH request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(new HttpMethod("PATCH"), path, options, config), config, cancellationToken); + } + #endregion IAsynchronousClient + + #region ISynchronousClient + /// + /// Make a HTTP GET request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Get, path, options, config), config); + } + + /// + /// Make a HTTP POST request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Post, path, options, config), config); + } - return parameters; + /// + /// Make a HTTP PUT request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Put, path, options, config), config); + } + + /// + /// Make a HTTP DELETE request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Delete, path, options, config), config); + } + + /// + /// Make a HTTP HEAD request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Head, path, options, config), config); + } + + /// + /// Make a HTTP OPTION request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Options, path, options, config), config); } /// - /// Check if generic object is a collection. + /// Make a HTTP PATCH request (synchronous). /// - /// - /// True if object is a collection type - private static bool IsCollection(object value) + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) { - return value is IList || value is ICollection; + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(new HttpMethod("PATCH"), path, options, config), config); } + #endregion ISynchronousClient } } diff --git a/src/Regula.DocumentReader.WebClient/Client/ApiException.cs b/src/Regula.DocumentReader.WebClient/Client/ApiException.cs index 64c08e5..e589aa5 100644 --- a/src/Regula.DocumentReader.WebClient/Client/ApiException.cs +++ b/src/Regula.DocumentReader.WebClient/Client/ApiException.cs @@ -1,13 +1,13 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; namespace Regula.DocumentReader.WebClient.Client @@ -27,12 +27,18 @@ public class ApiException : Exception /// Gets or sets the error content (body json object) /// /// The error content (Http response body). - public dynamic ErrorContent { get; private set; } + public object ErrorContent { get; private set; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + public Multimap Headers { get; private set; } /// /// Initializes a new instance of the class. /// - public ApiException() {} + public ApiException() { } /// /// Initializes a new instance of the class. @@ -50,10 +56,12 @@ public ApiException(int errorCode, string message) : base(message) /// HTTP status code. /// Error message. /// Error content. - public ApiException(int errorCode, string message, dynamic errorContent = null) : base(message) + /// HTTP Headers. + public ApiException(int errorCode, string message, object errorContent = null, Multimap headers = null) : base(message) { this.ErrorCode = errorCode; this.ErrorContent = errorContent; + this.Headers = headers; } } diff --git a/src/Regula.DocumentReader.WebClient/Client/ApiResponse.cs b/src/Regula.DocumentReader.WebClient/Client/ApiResponse.cs index fd876a7..b0f29c7 100644 --- a/src/Regula.DocumentReader.WebClient/Client/ApiResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Client/ApiResponse.cs @@ -1,66 +1,166 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; using System.Collections.Generic; +using System.Net; namespace Regula.DocumentReader.WebClient.Client { + /// + /// Provides a non-generic contract for the ApiResponse wrapper. + /// + public interface IApiResponse + { + /// + /// The data type of + /// + Type ResponseType { get; } + + /// + /// The content of this response + /// + Object Content { get; } + + /// + /// Gets or sets the status code (HTTP status code) + /// + /// The status code. + HttpStatusCode StatusCode { get; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + Multimap Headers { get; } + + /// + /// Gets or sets any error text defined by the calling client. + /// + string ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } + } + /// /// API Response /// - public class ApiResponse + public class ApiResponse : IApiResponse { + #region Properties + /// /// Gets or sets the status code (HTTP status code) /// /// The status code. - public int StatusCode { get; private set; } + public HttpStatusCode StatusCode { get; } /// /// Gets or sets the HTTP headers /// /// HTTP headers - public IDictionary Headers { get; private set; } + public Multimap Headers { get; } /// /// Gets or sets the data (parsed HTTP body) /// /// The data. - public T Data { get; private set; } - - + public T Data { get; } + /// - /// Gets or sets the RawResponse + /// Gets or sets any error text defined by the calling client. /// - /// The data. - public string RawResponse { get; private set; } + public string ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + public List Cookies { get; set; } + + /// + /// The content of this response + /// + public Type ResponseType + { + get { return typeof(T); } + } + + /// + /// The data type of + /// + public object Content + { + get { return Data; } + } /// - /// Initializes a new instance of the class. + /// The raw content + /// + public string RawContent { get; } + + #endregion Properties + + #region Constructors + + /// + /// Initializes a new instance of the class. /// /// HTTP status code. /// HTTP headers. /// Data (parsed HTTP body) - /// - public ApiResponse(int statusCode, - IDictionary headers, - T data, - string rawResponse = null) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) { - this.StatusCode= statusCode; - this.Headers = headers; - this.Data = data; - this.RawResponse = rawResponse; + StatusCode = statusCode; + Headers = headers; + Data = data; + RawContent = rawContent; } - } + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) + { + } + + #endregion Constructors + } } diff --git a/src/Regula.DocumentReader.WebClient/Client/ClientUtils.cs b/src/Regula.DocumentReader.WebClient/Client/ClientUtils.cs new file mode 100644 index 0000000..464aaa0 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/ClientUtils.cs @@ -0,0 +1,253 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// Utility functions providing some benefit to API client consumers. + /// + public static class ClientUtils + { + /// + /// Sanitize filename by removing the path + /// + /// Filename + /// Filename + public static string SanitizeFilename(string filename) + { + Match match = Regex.Match(filename, @".*[/\\](.*)$"); + return match.Success ? match.Groups[1].Value : filename; + } + + /// + /// Convert params to key/value pairs. + /// Use collectionFormat to properly format lists and collections. + /// + /// The swagger-supported collection format, one of: csv, tsv, ssv, pipes, multi + /// Key name. + /// Value object. + /// A multimap of keys with 1..n associated values. + public static Multimap ParameterToMultiMap(string collectionFormat, string name, object value) + { + var parameters = new Multimap(); + + if (value is ICollection collection && collectionFormat == "multi") + { + foreach (var item in collection) + { + parameters.Add(name, ParameterToString(item)); + } + } + else if (value is IDictionary dictionary) + { + if(collectionFormat == "deepObject") { + foreach (DictionaryEntry entry in dictionary) + { + parameters.Add(name + "[" + entry.Key + "]", ParameterToString(entry.Value)); + } + } + else { + foreach (DictionaryEntry entry in dictionary) + { + parameters.Add(entry.Key.ToString(), ParameterToString(entry.Value)); + } + } + } + else + { + parameters.Add(name, ParameterToString(value)); + } + + return parameters; + } + + /// + /// If parameter is DateTime, output in a formatted string (default ISO 8601), customizable with Configuration.DateTime. + /// If parameter is a list, join the list with ",". + /// Otherwise just return the string. + /// + /// The parameter (header, path, query, form). + /// An optional configuration instance, providing formatting options used in processing. + /// Formatted string. + public static string ParameterToString(object obj, IReadableConfiguration configuration = null) + { + if (obj is DateTime dateTime) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTime.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is DateTimeOffset dateTimeOffset) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTimeOffset.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is DateOnly dateOnly) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15 + return dateOnly.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is bool boolean) + return boolean ? "true" : "false"; + if (obj is ICollection collection) { + List entries = new List(); + foreach (var entry in collection) + entries.Add(ParameterToString(entry, configuration)); + return string.Join(",", entries); + } + if (obj is Enum && HasEnumMemberAttrValue(obj)) + return GetEnumMemberAttrValue(obj); + + return Convert.ToString(obj, CultureInfo.InvariantCulture); + } + + /// + /// Serializes the given object when not null. Otherwise return null. + /// + /// The object to serialize. + /// Serialized string. + public static string Serialize(object obj) + { + return obj != null ? Newtonsoft.Json.JsonConvert.SerializeObject(obj) : null; + } + + /// + /// Encode string in base64 format. + /// + /// string to be encoded. + /// Encoded string. + public static string Base64Encode(string text) + { + return Convert.ToBase64String(global::System.Text.Encoding.UTF8.GetBytes(text)); + } + + /// + /// Convert stream to byte array + /// + /// Input stream to be converted + /// Byte array + public static byte[] ReadAsBytes(Stream inputStream) + { + using (var ms = new MemoryStream()) + { + inputStream.CopyTo(ms); + return ms.ToArray(); + } + } + + /// + /// Select the Content-Type header's value from the given content-type array: + /// if JSON type exists in the given array, use it; + /// otherwise use the first one defined in 'consumes' + /// + /// The Content-Type array to select from. + /// The Content-Type header to use. + public static string SelectHeaderContentType(string[] contentTypes) + { + if (contentTypes.Length == 0) + return null; + + foreach (var contentType in contentTypes) + { + if (IsJsonMime(contentType)) + return contentType; + } + + return contentTypes[0]; // use the first content type specified in 'consumes' + } + + /// + /// Select the Accept header's value from the given accepts array: + /// if JSON exists in the given array, use it; + /// otherwise use all of them (joining into a string) + /// + /// The accepts array to select from. + /// The Accept header to use. + public static string SelectHeaderAccept(string[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return "application/json"; + + return string.Join(",", accepts); + } + + /// + /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. + /// + public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"); + + /// + /// Check if the given MIME is a JSON MIME. + /// JSON MIME examples: + /// application/json + /// application/json; charset=UTF8 + /// APPLICATION/JSON + /// application/vnd.company+json + /// + /// MIME + /// Returns True if MIME type is json. + public static bool IsJsonMime(string mime) + { + if (string.IsNullOrWhiteSpace(mime)) return false; + + return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); + } + + /// + /// Is the Enum decorated with EnumMember Attribute + /// + /// + /// true if found + private static bool HasEnumMemberAttrValue(object enumVal) + { + if (enumVal == null) + throw new ArgumentNullException(nameof(enumVal)); + var enumType = enumVal.GetType(); + var memInfo = enumType.GetMember(enumVal.ToString() ?? throw new InvalidOperationException()); + var attr = memInfo.FirstOrDefault()?.GetCustomAttributes(false).OfType().FirstOrDefault(); + if (attr != null) return true; + return false; + } + + /// + /// Get the EnumMember value + /// + /// + /// EnumMember value as string otherwise null + private static string GetEnumMemberAttrValue(object enumVal) + { + if (enumVal == null) + throw new ArgumentNullException(nameof(enumVal)); + var enumType = enumVal.GetType(); + var memInfo = enumType.GetMember(enumVal.ToString() ?? throw new InvalidOperationException()); + var attr = memInfo.FirstOrDefault()?.GetCustomAttributes(false).OfType().FirstOrDefault(); + if (attr != null) + { + return attr.Value; + } + return null; + } + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/Configuration.cs b/src/Regula.DocumentReader.WebClient/Client/Configuration.cs index da74e71..4efc27a 100644 --- a/src/Regula.DocumentReader.WebClient/Client/Configuration.cs +++ b/src/Regula.DocumentReader.WebClient/Client/Configuration.cs @@ -1,20 +1,24 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Reflection; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Reflection; +using System.Security.Cryptography.X509Certificates; using System.Text; +using System.Net.Http; +using System.Net.Security; namespace Regula.DocumentReader.WebClient.Client { @@ -42,9 +46,6 @@ public class Configuration : IReadableConfiguration #region Static Members - private static readonly object GlobalConfigSync = new { }; - private static Configuration _globalConfiguration; - /// /// Default creation of exceptions for a given method name and response object /// @@ -54,89 +55,116 @@ public class Configuration : IReadableConfiguration if (status >= 400) { return new ApiException(status, - string.Format("Error calling {0}: {1}", methodName, response.Content), - response.Content); + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent, response.Headers); } if (status == 0) { return new ApiException(status, - string.Format("Error calling {0}: {1}", methodName, response.ErrorMessage), response.ErrorMessage); + string.Format("Error calling {0}: {1}", methodName, response.ErrorText), response.ErrorText); } return null; }; - /// - /// Gets or sets the default Configuration. - /// - /// Configuration. - public static Configuration Default - { - get { return _globalConfiguration; } - set - { - lock (GlobalConfigSync) - { - _globalConfiguration = value; - } - } - } - #endregion Static Members #region Private Members + /// + /// Defines the base path of the target API server. + /// Example: http://localhost:3000/v1/ + /// + private string _basePath; + + private bool _useDefaultCredentials = false; + /// /// Gets or sets the API key based on the authentication name. + /// This is the key and value comprising the "secret" for accessing an API. /// /// The API key. - private IDictionary _apiKey = null; + private IDictionary _apiKey; /// /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. /// /// The prefix of the API key. - private IDictionary _apiKeyPrefix = null; + private IDictionary _apiKeyPrefix; private string _dateTimeFormat = ISO8601_DATETIME_FORMAT; private string _tempFolderPath = Path.GetTempPath(); + /// + /// Gets or sets the servers defined in the OpenAPI spec. + /// + /// The servers + private IList> _servers; + + /// + /// Gets or sets the operation servers defined in the OpenAPI spec. + /// + /// The operation servers + private IReadOnlyDictionary>> _operationServers; + #endregion Private Members #region Constructors - static Configuration() - { - _globalConfiguration = new GlobalConfiguration(); - } - /// /// Initializes a new instance of the class /// + [global::System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] public Configuration() { - UserAgent = "OpenAPI-Generator/1.0.0/csharp"; + Proxy = null; + UserAgent = WebUtility.UrlEncode("OpenAPI-Generator/1.0.0/csharp"); BasePath = "https://api.regulaforensics.com"; - DefaultHeader = new ConcurrentDictionary(); + DefaultHeaders = new ConcurrentDictionary(); ApiKey = new ConcurrentDictionary(); ApiKeyPrefix = new ConcurrentDictionary(); + Servers = new List>() + { + { + new Dictionary { + {"url", "https://api.regulaforensics.com"}, + {"description", "Latest stable Regula Document Reader demo endpoint"}, + } + }, + { + new Dictionary { + {"url", "https://nightly-api.regulaforensics.com"}, + {"description", "Nightly Regula document reader demo endpoint"}, + } + }, + { + new Dictionary { + {"url", "http://localhost:8080"}, + {"description", "Local on-premise installation"}, + } + } + }; + OperationServers = new Dictionary>>() + { + }; // Setting Timeout has side effects (forces ApiClient creation). - Timeout = 100000; + Timeout = TimeSpan.FromSeconds(100); } /// /// Initializes a new instance of the class /// + [global::System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] public Configuration( - IDictionary defaultHeader, + IDictionary defaultHeaders, IDictionary apiKey, IDictionary apiKeyPrefix, string basePath = "https://api.regulaforensics.com") : this() { if (string.IsNullOrWhiteSpace(basePath)) throw new ArgumentException("The provided basePath is invalid.", "basePath"); - if (defaultHeader == null) - throw new ArgumentNullException("defaultHeader"); + if (defaultHeaders == null) + throw new ArgumentNullException("defaultHeaders"); if (apiKey == null) throw new ArgumentNullException("apiKey"); if (apiKeyPrefix == null) @@ -144,9 +172,9 @@ public Configuration( BasePath = basePath; - foreach (var keyValuePair in defaultHeader) + foreach (var keyValuePair in defaultHeaders) { - DefaultHeader.Add(keyValuePair); + DefaultHeaders.Add(keyValuePair); } foreach (var keyValuePair in apiKey) @@ -160,84 +188,59 @@ public Configuration( } } + #endregion Constructors + + #region Properties + /// - /// Initializes a new instance of the class with different settings - /// - /// Api client - /// Dictionary of default HTTP header - /// Username - /// Password - /// accessToken - /// Dictionary of API key - /// Dictionary of API key prefix - /// Temp folder path - /// DateTime format string - /// HTTP connection timeout (in milliseconds) - /// HTTP user agent - [Obsolete("Use explicit object construction and setting of properties.", true)] - public Configuration( - // ReSharper disable UnusedParameter.Local - ApiClient apiClient = null, - IDictionary defaultHeader = null, - string username = null, - string password = null, - string accessToken = null, - IDictionary apiKey = null, - IDictionary apiKeyPrefix = null, - string tempFolderPath = null, - string dateTimeFormat = null, - int timeout = 100000, - string userAgent = "OpenAPI-Generator/1.0.0/csharp" - // ReSharper restore UnusedParameter.Local - ) + /// Gets or sets the base path for API access. + /// + public virtual string BasePath { - + get { return _basePath; } + set { _basePath = value; } } /// - /// Initializes a new instance of the Configuration class. + /// Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) will be sent along to the server. The default is false. /// - /// Api client. - [Obsolete("This constructor caused unexpected sharing of static data. It is no longer supported.", true)] - // ReSharper disable once UnusedParameter.Local - public Configuration(ApiClient apiClient) + public virtual bool UseDefaultCredentials { - + get { return _useDefaultCredentials; } + set { _useDefaultCredentials = value; } } - #endregion Constructors - - - #region Properties - - private ApiClient _apiClient = null; /// - /// Gets an instance of an ApiClient for this configuration + /// Gets or sets the default header. /// - public virtual ApiClient ApiClient + [Obsolete("Use DefaultHeaders instead.")] + public virtual IDictionary DefaultHeader { get { - if (_apiClient == null) _apiClient = CreateApiClient(); - return _apiClient; + return DefaultHeaders; + } + set + { + DefaultHeaders = value; } } - private String _basePath = null; /// - /// Gets or sets the base path for API access. + /// Gets or sets the default headers. /// - public virtual string BasePath { get; set; } + public virtual IDictionary DefaultHeaders { get; set; } /// - /// Gets or sets the default header. + /// Gets or sets the HTTP timeout of ApiClient. Defaults to 100 seconds. /// - public virtual IDictionary DefaultHeader { get; set; } + public virtual TimeSpan Timeout { get; set; } /// - /// Gets or sets the HTTP timeout (milliseconds) of ApiClient. Default to 100000 milliseconds. + /// Gets or sets the proxy /// - public virtual int Timeout { get; set; } + /// Proxy. + public virtual WebProxy Proxy { get; set; } /// /// Gets or sets the HTTP user agent. @@ -264,17 +267,27 @@ public virtual ApiClient ApiClient /// API key with prefix. public string GetApiKeyWithPrefix(string apiKeyIdentifier) { - var apiKeyValue = ""; - ApiKey.TryGetValue (apiKeyIdentifier, out apiKeyValue); - var apiKeyPrefix = ""; - if (ApiKeyPrefix.TryGetValue (apiKeyIdentifier, out apiKeyPrefix)) + string apiKeyValue; + ApiKey.TryGetValue(apiKeyIdentifier, out apiKeyValue); + string apiKeyPrefix; + if (ApiKeyPrefix.TryGetValue(apiKeyIdentifier, out apiKeyPrefix)) + { return apiKeyPrefix + " " + apiKeyValue; - else - return apiKeyValue; + } + + return apiKeyValue; } + /// + /// Gets or sets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + public X509CertificateCollection ClientCertificates { get; set; } + /// /// Gets or sets the access token for OAuth2 authentication. + /// + /// This helper property simplifies code generation. /// /// The access token. public virtual string AccessToken { get; set; } @@ -341,6 +354,18 @@ public virtual string DateTimeFormat /// /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. + /// + /// Whatever you set here will be prepended to the value defined in AddApiKey. + /// + /// An example invocation here might be: + /// + /// ApiKeyPrefix["Authorization"] = "Bearer"; + /// + /// … where ApiKey["Authorization"] would then be used to set the value of your bearer token. + /// + /// + /// OAuth2 workflows should set tokens via AccessToken. + /// /// /// The prefix of the API key. public virtual IDictionary ApiKeyPrefix @@ -373,40 +398,160 @@ public virtual IDictionary ApiKey } } - #endregion Properties + /// + /// Gets or sets the servers. + /// + /// The servers. + public virtual IList> Servers + { + get { return _servers; } + set + { + if (value == null) + { + throw new InvalidOperationException("Servers may not be null."); + } + _servers = value; + } + } - #region Methods + /// + /// Gets or sets the operation servers. + /// + /// The operation servers. + public virtual IReadOnlyDictionary>> OperationServers + { + get { return _operationServers; } + set + { + if (value == null) + { + throw new InvalidOperationException("Operation servers may not be null."); + } + _operationServers = value; + } + } /// - /// Add default header. + /// Returns URL based on server settings without providing values + /// for the variables /// - /// Header field name. - /// Header field value. - /// - public void AddDefaultHeader(string key, string value) + /// Array index of the server settings. + /// The server URL. + public string GetServerUrl(int index) { - DefaultHeader[key] = value; + return GetServerUrl(Servers, index, null); } /// - /// Creates a new based on this instance. + /// Returns URL based on server settings. /// - /// - public ApiClient CreateApiClient() + /// Array index of the server settings. + /// Dictionary of the variables and the corresponding values. + /// The server URL. + public string GetServerUrl(int index, Dictionary inputVariables) { - return new ApiClient(BasePath) { Configuration = this }; + return GetServerUrl(Servers, index, inputVariables); } + /// + /// Returns URL based on operation server settings. + /// + /// Operation associated with the request path. + /// Array index of the server settings. + /// The operation server URL. + public string GetOperationServerUrl(string operation, int index) + { + return GetOperationServerUrl(operation, index, null); + } + + /// + /// Returns URL based on operation server settings. + /// + /// Operation associated with the request path. + /// Array index of the server settings. + /// Dictionary of the variables and the corresponding values. + /// The operation server URL. + public string GetOperationServerUrl(string operation, int index, Dictionary inputVariables) + { + if (operation != null && OperationServers.TryGetValue(operation, out var operationServer)) + { + return GetServerUrl(operationServer, index, inputVariables); + } + + return null; + } + + /// + /// Returns URL based on server settings. + /// + /// Dictionary of server settings. + /// Array index of the server settings. + /// Dictionary of the variables and the corresponding values. + /// The server URL. + private string GetServerUrl(IList> servers, int index, Dictionary inputVariables) + { + if (index < 0 || index >= servers.Count) + { + throw new InvalidOperationException($"Invalid index {index} when selecting the server. Must be less than {servers.Count}."); + } + + if (inputVariables == null) + { + inputVariables = new Dictionary(); + } + + IReadOnlyDictionary server = servers[index]; + string url = (string)server["url"]; + + if (server.ContainsKey("variables")) + { + // go through each variable and assign a value + foreach (KeyValuePair variable in (IReadOnlyDictionary)server["variables"]) + { + + IReadOnlyDictionary serverVariables = (IReadOnlyDictionary)(variable.Value); + + if (inputVariables.ContainsKey(variable.Key)) + { + if (((List)serverVariables["enum_values"]).Contains(inputVariables[variable.Key])) + { + url = url.Replace("{" + variable.Key + "}", inputVariables[variable.Key]); + } + else + { + throw new InvalidOperationException($"The variable `{variable.Key}` in the server URL has invalid value #{inputVariables[variable.Key]}. Must be {(List)serverVariables["enum_values"]}"); + } + } + else + { + // use default value + url = url.Replace("{" + variable.Key + "}", (string)serverVariables["default_value"]); + } + } + } + + return url; + } + + /// + /// Gets and Sets the RemoteCertificateValidationCallback + /// + public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } + + #endregion Properties + + #region Methods /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Regula.DocumentReader.WebClient) Debug Report:\n"; + string report = "C# SDK (Regula.DocumentReader.WebClient) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; - report += " Version of the API: 6.9.0\n"; + report += " Version of the API: 7.6.0\n"; report += " SDK Package Version: 1.0.0\n"; return report; @@ -434,5 +579,46 @@ public void AddApiKeyPrefix(string key, string value) } #endregion Methods + + #region Static Members + /// + /// Merge configurations. + /// + /// First configuration. + /// Second configuration. + /// Merged configuration. + public static IReadableConfiguration MergeConfigurations(IReadableConfiguration first, IReadableConfiguration second) + { + if (second == null) return first ?? GlobalConfiguration.Instance; + + Dictionary apiKey = first.ApiKey.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary apiKeyPrefix = first.ApiKeyPrefix.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary defaultHeaders = first.DefaultHeaders.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + foreach (var kvp in second.ApiKey) apiKey[kvp.Key] = kvp.Value; + foreach (var kvp in second.ApiKeyPrefix) apiKeyPrefix[kvp.Key] = kvp.Value; + foreach (var kvp in second.DefaultHeaders) defaultHeaders[kvp.Key] = kvp.Value; + + var config = new Configuration + { + ApiKey = apiKey, + ApiKeyPrefix = apiKeyPrefix, + DefaultHeaders = defaultHeaders, + BasePath = second.BasePath ?? first.BasePath, + Timeout = second.Timeout, + Proxy = second.Proxy ?? first.Proxy, + UserAgent = second.UserAgent ?? first.UserAgent, + Username = second.Username ?? first.Username, + Password = second.Password ?? first.Password, + AccessToken = second.AccessToken ?? first.AccessToken, + TempFolderPath = second.TempFolderPath ?? first.TempFolderPath, + DateTimeFormat = second.DateTimeFormat ?? first.DateTimeFormat, + ClientCertificates = second.ClientCertificates ?? first.ClientCertificates, + UseDefaultCredentials = second.UseDefaultCredentials, + RemoteCertificateValidationCallback = second.RemoteCertificateValidationCallback ?? first.RemoteCertificateValidationCallback, + }; + return config; + } + #endregion Static Members } } diff --git a/src/Regula.DocumentReader.WebClient/Client/ExceptionFactory.cs b/src/Regula.DocumentReader.WebClient/Client/ExceptionFactory.cs index 25e558a..6945bee 100644 --- a/src/Regula.DocumentReader.WebClient/Client/ExceptionFactory.cs +++ b/src/Regula.DocumentReader.WebClient/Client/ExceptionFactory.cs @@ -1,16 +1,14 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ using System; -using RestSharp; namespace Regula.DocumentReader.WebClient.Client { @@ -20,5 +18,5 @@ namespace Regula.DocumentReader.WebClient.Client /// Method name /// Response /// Exceptions - public delegate Exception ExceptionFactory(string methodName, RestResponse response); + public delegate Exception ExceptionFactory(string methodName, IApiResponse response); } diff --git a/src/Regula.DocumentReader.WebClient/Client/FileParameter.cs b/src/Regula.DocumentReader.WebClient/Client/FileParameter.cs new file mode 100644 index 0000000..ad9966d --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/FileParameter.cs @@ -0,0 +1,80 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System.IO; + +namespace Regula.DocumentReader.WebClient.Client +{ + + /// + /// Represents a File passed to the API as a Parameter, allows using different backends for files + /// + public class FileParameter + { + /// + /// The filename + /// + public string Name { get; set; } = "no_name_provided"; + + /// + /// The content type of the file + /// + public string ContentType { get; set; } = "application/octet-stream"; + + /// + /// The content of the file + /// + public Stream Content { get; set; } + + /// + /// Construct a FileParameter just from the contents, will extract the filename from a filestream + /// + /// The file content + public FileParameter(Stream content) + { + if (content is FileStream fs) + { + Name = fs.Name; + } + Content = content; + } + + /// + /// Construct a FileParameter from name and content + /// + /// The filename + /// The file content + public FileParameter(string filename, Stream content) + { + Name = filename; + Content = content; + } + + /// + /// Construct a FileParameter from name and content + /// + /// The filename + /// The content type of the file + /// The file content + public FileParameter(string filename, string contentType, Stream content) + { + Name = filename; + ContentType = contentType; + Content = content; + } + + /// + /// Implicit conversion of stream to file parameter. Useful for backwards compatibility. + /// + /// Stream to convert + /// FileParameter + public static implicit operator FileParameter(Stream s) => new FileParameter(s); + } +} \ No newline at end of file diff --git a/src/Regula.DocumentReader.WebClient/Client/GlobalConfiguration.cs b/src/Regula.DocumentReader.WebClient/Client/GlobalConfiguration.cs index fc198c8..8c0fae4 100644 --- a/src/Regula.DocumentReader.WebClient/Client/GlobalConfiguration.cs +++ b/src/Regula.DocumentReader.WebClient/Client/GlobalConfiguration.cs @@ -1,21 +1,14 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ -using System; -using System.Reflection; using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; namespace Regula.DocumentReader.WebClient.Client { @@ -29,6 +22,46 @@ namespace Regula.DocumentReader.WebClient.Client /// public partial class GlobalConfiguration : Configuration { + #region Private Members + private static readonly object GlobalConfigSync = new { }; + private static IReadableConfiguration _globalConfiguration; + + #endregion Private Members + + #region Constructors + + /// + private GlobalConfiguration() + { + } + + /// + public GlobalConfiguration(IDictionary defaultHeader, IDictionary apiKey, IDictionary apiKeyPrefix, string basePath = "http://localhost:3000/api") : base(defaultHeader, apiKey, apiKeyPrefix, basePath) + { + } + + static GlobalConfiguration() + { + Instance = new GlobalConfiguration(); + } + + #endregion Constructors + + /// + /// Gets or sets the default Configuration. + /// + /// Configuration. + public static IReadableConfiguration Instance + { + get { return _globalConfiguration; } + set + { + lock (GlobalConfigSync) + { + _globalConfiguration = value; + } + } + } } -} \ No newline at end of file +} diff --git a/src/Regula.DocumentReader.WebClient/Client/IApiAccessor.cs b/src/Regula.DocumentReader.WebClient/Client/IApiAccessor.cs index efaacfd..2f70fa7 100644 --- a/src/Regula.DocumentReader.WebClient/Client/IApiAccessor.cs +++ b/src/Regula.DocumentReader.WebClient/Client/IApiAccessor.cs @@ -1,19 +1,14 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using RestSharp; namespace Regula.DocumentReader.WebClient.Client { @@ -26,14 +21,14 @@ public interface IApiAccessor /// Gets or sets the configuration object /// /// An instance of the Configuration - Configuration Configuration {get; set;} + IReadableConfiguration Configuration { get; set; } /// /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); - + string GetBasePath(); + /// /// Provides a factory method hook for the creation of exceptions. /// diff --git a/src/Regula.DocumentReader.WebClient/Client/IAsynchronousClient.cs b/src/Regula.DocumentReader.WebClient/Client/IAsynchronousClient.cs new file mode 100644 index 0000000..7aa0820 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/IAsynchronousClient.cs @@ -0,0 +1,100 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Threading.Tasks; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// Contract for Asynchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface IAsynchronousClient + { + /// + /// Executes a non-blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)); + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/IReadableConfiguration.cs b/src/Regula.DocumentReader.WebClient/Client/IReadableConfiguration.cs index f27f1eb..f899023 100644 --- a/src/Regula.DocumentReader.WebClient/Client/IReadableConfiguration.cs +++ b/src/Regula.DocumentReader.WebClient/Client/IReadableConfiguration.cs @@ -1,15 +1,18 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ +using System; using System.Collections.Generic; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; namespace Regula.DocumentReader.WebClient.Client { @@ -45,15 +48,22 @@ public interface IReadableConfiguration /// /// Gets the date time format. /// - /// Date time foramt. + /// Date time format. string DateTimeFormat { get; } /// /// Gets the default header. /// /// Default header. + [Obsolete("Use DefaultHeaders instead.")] IDictionary DefaultHeader { get; } + /// + /// Gets the default headers. + /// + /// Default headers. + IDictionary DefaultHeaders { get; } + /// /// Gets the temp folder path. /// @@ -61,10 +71,16 @@ public interface IReadableConfiguration string TempFolderPath { get; } /// - /// Gets the HTTP connection timeout (in milliseconds) + /// Gets the HTTP connection timeout. /// /// HTTP connection timeout. - int Timeout { get; } + TimeSpan Timeout { get; } + + /// + /// Gets the proxy. + /// + /// Proxy. + WebProxy Proxy { get; } /// /// Gets the user agent. @@ -84,11 +100,42 @@ public interface IReadableConfiguration /// Password. string Password { get; } + /// + /// Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) will be sent along to the server. The default is false. + /// + bool UseDefaultCredentials { get; } + + /// + /// Get the servers associated with the operation. + /// + /// Operation servers. + IReadOnlyDictionary>> OperationServers { get; } + /// /// Gets the API key with prefix. /// /// API key identifier (authentication scheme). /// API key with prefix. string GetApiKeyWithPrefix(string apiKeyIdentifier); + + /// + /// Gets the Operation server url at the provided index. + /// + /// Operation server name. + /// Index of the operation server settings. + /// + string GetOperationServerUrl(string operation, int index); + + /// + /// Gets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + X509CertificateCollection ClientCertificates { get; } + + /// + /// Callback function for handling the validation of remote certificates. Useful for certificate pinning and + /// overriding certificate errors in the scope of a request. + /// + RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; } } } diff --git a/src/Regula.DocumentReader.WebClient/Client/ISynchronousClient.cs b/src/Regula.DocumentReader.WebClient/Client/ISynchronousClient.cs new file mode 100644 index 0000000..3a3a68b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/ISynchronousClient.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.IO; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// Contract for Synchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface ISynchronousClient + { + /// + /// Executes a blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/Multimap.cs b/src/Regula.DocumentReader.WebClient/Client/Multimap.cs new file mode 100644 index 0000000..54ee0ce --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/Multimap.cs @@ -0,0 +1,295 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// A dictionary in which one key has many associated values. + /// + /// The type of the key + /// The type of the value associated with the key. + public class Multimap : IDictionary> + { + #region Private Fields + + private readonly Dictionary> _dictionary; + + #endregion Private Fields + + #region Constructors + + /// + /// Empty Constructor. + /// + public Multimap() + { + _dictionary = new Dictionary>(); + } + + /// + /// Constructor with comparer. + /// + /// + public Multimap(IEqualityComparer comparer) + { + _dictionary = new Dictionary>(comparer); + } + + #endregion Constructors + + #region Enumerators + + /// + /// To get the enumerator. + /// + /// Enumerator + public IEnumerator>> GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + /// + /// To get the enumerator. + /// + /// Enumerator + IEnumerator IEnumerable.GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + #endregion Enumerators + + #region Public Members + /// + /// Add values to Multimap + /// + /// Key value pair + public void Add(KeyValuePair> item) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + + /// + /// Add Multimap to Multimap + /// + /// Multimap + public void Add(Multimap multimap) + { + foreach (var item in multimap) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + + /// + /// Clear Multimap + /// + public void Clear() + { + _dictionary.Clear(); + } + + /// + /// Determines whether Multimap contains the specified item. + /// + /// Key value pair + /// Method needs to be implemented + /// true if the Multimap contains the item; otherwise, false. + public bool Contains(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Copy items of the Multimap to an array, + /// starting at a particular array index. + /// + /// The array that is the destination of the items copied + /// from Multimap. The array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + /// Method needs to be implemented + public void CopyTo(KeyValuePair>[] array, int arrayIndex) + { + throw new NotImplementedException(); + } + + /// + /// Removes the specified item from the Multimap. + /// + /// Key value pair + /// true if the item is successfully removed; otherwise, false. + /// Method needs to be implemented + public bool Remove(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Gets the number of items contained in the Multimap. + /// + public int Count => _dictionary.Count; + + /// + /// Gets a value indicating whether the Multimap is read-only. + /// + public bool IsReadOnly => false; + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add the value to Multimap. + public void Add(TKey key, IList value) + { + if (value != null && value.Count > 0) + { + if (_dictionary.TryGetValue(key, out var list)) + { + foreach (var k in value) list.Add(k); + } + else + { + list = new List(value); + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + } + + /// + /// Determines whether the Multimap contains an item with the specified key. + /// + /// The key to locate in the Multimap. + /// true if the Multimap contains an item with + /// the key; otherwise, false. + public bool ContainsKey(TKey key) + { + return _dictionary.ContainsKey(key); + } + + /// + /// Removes item with the specified key from the Multimap. + /// + /// The key to locate in the Multimap. + /// true if the item is successfully removed; otherwise, false. + public bool Remove(TKey key) + { + return TryRemove(key, out var _); + } + + /// + /// Gets the value associated with the specified key. + /// + /// The key whose value to get. + /// When this method returns, the value associated with the specified key, if the + /// key is found; otherwise, the default value for the type of the value parameter. + /// This parameter is passed uninitialized. + /// true if the object that implements Multimap contains + /// an item with the specified key; otherwise, false. + public bool TryGetValue(TKey key, out IList value) + { + return _dictionary.TryGetValue(key, out value); + } + + /// + /// Gets or sets the item with the specified key. + /// + /// The key of the item to get or set. + /// The value of the specified key. + public IList this[TKey key] + { + get => _dictionary[key]; + set => _dictionary[key] = value; + } + + /// + /// Gets a System.Collections.Generic.ICollection containing the keys of the Multimap. + /// + public ICollection Keys => _dictionary.Keys; + + /// + /// Gets a System.Collections.Generic.ICollection containing the values of the Multimap. + /// + public ICollection> Values => _dictionary.Values; + + /// + /// Copy the items of the Multimap to an System.Array, + /// starting at a particular System.Array index. + /// + /// The one-dimensional System.Array that is the destination of the items copied + /// from Multimap. The System.Array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + public void CopyTo(Array array, int index) + { + ((ICollection)_dictionary).CopyTo(array, index); + } + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add value to Multimap. + public void Add(TKey key, TValue value) + { + if (value != null) + { + if (_dictionary.TryGetValue(key, out var list)) + { + list.Add(value); + } + else + { + list = new List { value }; + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add value to Multimap."); + } + } + } + + #endregion Public Members + + #region Private Members + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryRemove(TKey key, out IList value) + { + _dictionary.TryGetValue(key, out value); + return _dictionary.Remove(key); + } + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryAdd(TKey key, IList value) + { + try + { + _dictionary.Add(key, value); + } + catch (ArgumentException) + { + return false; + } + + return true; + } + #endregion Private Members + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/OpenAPIDateConverter.cs b/src/Regula.DocumentReader.WebClient/Client/OpenAPIDateConverter.cs index f03d85a..6c6a4bf 100644 --- a/src/Regula.DocumentReader.WebClient/Client/OpenAPIDateConverter.cs +++ b/src/Regula.DocumentReader.WebClient/Client/OpenAPIDateConverter.cs @@ -1,10 +1,9 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.9.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/Regula.DocumentReader.WebClient/Client/RequestOptions.cs b/src/Regula.DocumentReader.WebClient/Client/RequestOptions.cs new file mode 100644 index 0000000..e90df56 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/RequestOptions.cs @@ -0,0 +1,74 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// A container for generalized request inputs. This type allows consumers to extend the request functionality + /// by abstracting away from the default (built-in) request framework (e.g. RestSharp). + /// + public class RequestOptions + { + /// + /// Parameters to be bound to path parts of the Request's URL + /// + public Dictionary PathParameters { get; set; } + + /// + /// Query parameters to be applied to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap QueryParameters { get; set; } + + /// + /// Header parameters to be applied to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap HeaderParameters { get; set; } + + /// + /// Form parameters to be sent along with the request. + /// + public Dictionary FormParameters { get; set; } + + /// + /// File parameters to be sent along with the request. + /// + public Multimap FileParameters { get; set; } + + /// + /// Cookies to be sent along with the request. + /// + public List Cookies { get; set; } + + /// + /// Any data associated with a request body. + /// + public Object Data { get; set; } + + /// + /// Constructs a new instance of + /// + public RequestOptions() + { + PathParameters = new Dictionary(); + QueryParameters = new Multimap(); + HeaderParameters = new Multimap(); + FormParameters = new Dictionary(); + FileParameters = new Multimap(); + Cookies = new List(); + } + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/RetryConfiguration.cs b/src/Regula.DocumentReader.WebClient/Client/RetryConfiguration.cs new file mode 100644 index 0000000..619d4f6 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/RetryConfiguration.cs @@ -0,0 +1,31 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Polly; +using System.Net.Http; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// Configuration class to set the polly retry policies to be applied to the requests. + /// + public static class RetryConfiguration + { + /// + /// Retry policy + /// + public static Policy RetryPolicy { get; set; } + + /// + /// Async retry policy + /// + public static AsyncPolicy AsyncRetryPolicy { get; set; } + } +} diff --git a/src/Regula.DocumentReader.WebClient/Client/WebRequestPathBuilder.cs b/src/Regula.DocumentReader.WebClient/Client/WebRequestPathBuilder.cs new file mode 100644 index 0000000..08599c6 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Client/WebRequestPathBuilder.cs @@ -0,0 +1,53 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections.Generic; + +namespace Regula.DocumentReader.WebClient.Client +{ + /// + /// A URI builder + /// + class WebRequestPathBuilder + { + private string _baseUrl; + private string _path; + private string _query = "?"; + public WebRequestPathBuilder(string baseUrl, string path) + { + _baseUrl = baseUrl; + _path = path; + } + + public void AddPathParameters(Dictionary parameters) + { + foreach (var parameter in parameters) + { + _path = _path.Replace("{" + parameter.Key + "}", Uri.EscapeDataString(parameter.Value)); + } + } + + public void AddQueryParameters(Multimap parameters) + { + foreach (var parameter in parameters) + { + foreach (var value in parameter.Value) + { + _query = _query + parameter.Key + "=" + Uri.EscapeDataString(value) + "&"; + } + } + } + + public string GetFullUri() + { + return _baseUrl + _path + _query.Substring(0, _query.Length - 1); + } + } +} diff --git a/src/Regula.DocumentReader.WebClient/Extensions.cs b/src/Regula.DocumentReader.WebClient/Extensions.cs deleted file mode 100644 index 058ffb9..0000000 --- a/src/Regula.DocumentReader.WebClient/Extensions.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Regula.DocumentReader.WebClient -{ - public static class CollectionExtensions - { - public static Dictionary ToDictionarySafe(this IEnumerable collection, - Func keySelector, - Func elementSelector) - where TKey : notnull - { - var result = new Dictionary(); - foreach (var value in collection) - { - result[keySelector(value)] = elementSelector(value); - } - return result; - } - } -} \ No newline at end of file diff --git a/src/Regula.DocumentReader.WebClient/Model/AbstractOpenAPISchema.cs b/src/Regula.DocumentReader.WebClient/Model/AbstractOpenAPISchema.cs new file mode 100644 index 0000000..597d843 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/AbstractOpenAPISchema.cs @@ -0,0 +1,76 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Abstract base class for oneOf, anyOf schemas in the OpenAPI specification + /// + public abstract partial class AbstractOpenAPISchema + { + /// + /// Custom JSON serializer + /// + static public readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Error, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Custom JSON serializer for objects with additional properties + /// + static public readonly JsonSerializerSettings AdditionalPropertiesSerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Ignore, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Gets or Sets the actual instance + /// + public abstract Object ActualInstance { get; set; } + + /// + /// Gets or Sets IsNullable to indicate whether the instance is nullable + /// + public bool IsNullable { get; protected set; } + + /// + /// Gets or Sets the schema type, which can be either `oneOf` or `anyOf` + /// + public string SchemaType { get; protected set; } + + /// + /// Converts the instance into JSON string. + /// + public abstract string ToJson(); + } +} diff --git a/src/Regula.DocumentReader.WebClient/Model/AreaArray.cs b/src/Regula.DocumentReader.WebClient/Model/AreaArray.cs index 62b9cbb..ff45764 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AreaArray.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AreaArray.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,30 +29,54 @@ namespace Regula.DocumentReader.WebClient.Model /// /// AreaArray /// - [DataContract] - public partial class AreaArray : IEquatable, IValidatableObject + [DataContract(Name = "AreaArray")] + public partial class AreaArray : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// list. - /// points. - public AreaArray(List list = default(List), List points = default(List)) + [JsonConstructorAttribute] + protected AreaArray() { } + /// + /// Initializes a new instance of the class. + /// + /// Number of elements in List and Points (required). + /// list (required). + /// points (required). + public AreaArray(decimal count = default(decimal), List list = default(List), List points = default(List)) { + this.Count = count; + // to ensure "list" is required (not null) + if (list == null) + { + throw new ArgumentNullException("list is a required property for AreaArray and cannot be null"); + } this.List = list; + // to ensure "points" is required (not null) + if (points == null) + { + throw new ArgumentNullException("points is a required property for AreaArray and cannot be null"); + } this.Points = points; } - + + /// + /// Number of elements in List and Points + /// + /// Number of elements in List and Points + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] + public decimal Count { get; set; } + /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=false)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } /// /// Gets or Sets Points /// - [DataMember(Name="Points", EmitDefaultValue=false)] + [DataMember(Name = "Points", IsRequired = true, EmitDefaultValue = true)] public List Points { get; set; } /// @@ -59,14 +85,15 @@ public partial class AreaArray : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AreaArray {\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); sb.Append(" Points: ").Append(Points).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,64 +103,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AreaArray); - } - - /// - /// Returns true if AreaArray instances are equal - /// - /// Instance of AreaArray to be compared - /// Boolean - public bool Equals(AreaArray input) - { - if (input == null) - return false; - - return - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ) && - ( - this.Points == input.Points || - this.Points != null && - input.Points != null && - this.Points.SequenceEqual(input.Points) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - if (this.Points != null) - hashCode = hashCode * 59 + this.Points.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AreaContainer.cs b/src/Regula.DocumentReader.WebClient/Model/AreaContainer.cs index 037636b..e0f30cb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AreaContainer.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AreaContainer.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,38 +29,53 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Checked fragment coordinates /// - [DataContract] - public partial class AreaContainer : IEquatable, IValidatableObject + [DataContract(Name = "AreaContainer")] + public partial class AreaContainer : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// count. - /// list. - /// points. + [JsonConstructorAttribute] + protected AreaContainer() { } + /// + /// Initializes a new instance of the class. + /// + /// count (required). + /// list (required). + /// points (required). public AreaContainer(int count = default(int), List list = default(List), List points = default(List)) { this.Count = count; + // to ensure "list" is required (not null) + if (list == null) + { + throw new ArgumentNullException("list is a required property for AreaContainer and cannot be null"); + } this.List = list; + // to ensure "points" is required (not null) + if (points == null) + { + throw new ArgumentNullException("points is a required property for AreaContainer and cannot be null"); + } this.Points = points; } - + /// /// Gets or Sets Count /// - [DataMember(Name="Count", EmitDefaultValue=false)] + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] public int Count { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=false)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } /// /// Gets or Sets Points /// - [DataMember(Name="Points", EmitDefaultValue=false)] + [DataMember(Name = "Points", IsRequired = true, EmitDefaultValue = true)] public List Points { get; set; } /// @@ -67,7 +84,7 @@ public partial class AreaContainer : IEquatable, IValidatableObj /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AreaContainer {\n"); sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); @@ -75,7 +92,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -85,71 +102,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AreaContainer); - } - - /// - /// Returns true if AreaContainer instances are equal - /// - /// Instance of AreaContainer to be compared - /// Boolean - public bool Equals(AreaContainer input) - { - if (input == null) - return false; - - return - ( - this.Count == input.Count || - (this.Count != null && - this.Count.Equals(input.Count)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ) && - ( - this.Points == input.Points || - this.Points != null && - input.Points != null && - this.Points.SequenceEqual(input.Points) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Count != null) - hashCode = hashCode * 59 + this.Count.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - if (this.Points != null) - hashCode = hashCode * 59 + this.Points.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthParams.cs b/src/Regula.DocumentReader.WebClient/Model/AuthParams.cs index b530917..73563dd 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthParams.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthParams.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// AuthParams /// - [DataContract] - public partial class AuthParams : IEquatable, IValidatableObject + [DataContract(Name = "AuthParams")] + public partial class AuthParams : IValidatableObject { /// /// Initializes a new instance of the class. @@ -49,7 +51,7 @@ public partial class AuthParams : IEquatable, IValidatableObject /// This parameter is used to enable Portrait comparison check. /// This parameter is used to enable LetterScreen check. /// This parameter is used to enable Security text check. - public AuthParams(bool? checkLiveness = default(bool?), LivenessParams livenessParams = default(LivenessParams), bool? checkUVLuminiscence = default(bool?), bool? checkIRB900 = default(bool?), bool? checkImagePatterns = default(bool?), bool? checkFibers = default(bool?), bool? checkExtMRZ = default(bool?), bool? checkExtOCR = default(bool?), bool? checkAxial = default(bool?), bool? checkBarcodeFormat = default(bool?), bool? checkIRVisibility = default(bool?), bool? checkIPI = default(bool?), bool? checkPhotoEmbedding = default(bool?), bool? checkPhotoComparison = default(bool?), bool? checkLetterScreen = default(bool?), bool? checkSecurityText = default(bool?)) + public AuthParams(bool checkLiveness = default(bool), LivenessParams livenessParams = default(LivenessParams), bool checkUVLuminiscence = default(bool), bool checkIRB900 = default(bool), bool checkImagePatterns = default(bool), bool checkFibers = default(bool), bool checkExtMRZ = default(bool), bool checkExtOCR = default(bool), bool checkAxial = default(bool), bool checkBarcodeFormat = default(bool), bool checkIRVisibility = default(bool), bool checkIPI = default(bool), bool checkPhotoEmbedding = default(bool), bool checkPhotoComparison = default(bool), bool checkLetterScreen = default(bool), bool checkSecurityText = default(bool)) { this.CheckLiveness = checkLiveness; this.LivenessParams = livenessParams; @@ -68,116 +70,116 @@ public partial class AuthParams : IEquatable, IValidatableObject this.CheckLetterScreen = checkLetterScreen; this.CheckSecurityText = checkSecurityText; } - + /// /// This parameter is used to enable document liveness check /// /// This parameter is used to enable document liveness check - [DataMember(Name="checkLiveness", EmitDefaultValue=false)] + [DataMember(Name = "checkLiveness", EmitDefaultValue = false)] public bool? CheckLiveness { get; set; } /// /// Gets or Sets LivenessParams /// - [DataMember(Name="livenessParams", EmitDefaultValue=false)] - public LivenessParams LivenessParams { get; set; } + [DataMember(Name = "livenessParams", EmitDefaultValue = false)] + public LivenessParams? LivenessParams { get; set; } /// /// This parameter is used to enable Document luminescence check in UV light /// /// This parameter is used to enable Document luminescence check in UV light - [DataMember(Name="checkUVLuminiscence", EmitDefaultValue=false)] + [DataMember(Name = "checkUVLuminiscence", EmitDefaultValue = false)] public bool? CheckUVLuminiscence { get; set; } /// /// This parameter is used to enable B900 ink MRZ contrast check in IR light /// /// This parameter is used to enable B900 ink MRZ contrast check in IR light - [DataMember(Name="checkIRB900", EmitDefaultValue=false)] + [DataMember(Name = "checkIRB900", EmitDefaultValue = false)] public bool? CheckIRB900 { get; set; } /// /// This parameter is used to enable Image patterns presence/absence check (position, shape, color) /// /// This parameter is used to enable Image patterns presence/absence check (position, shape, color) - [DataMember(Name="checkImagePatterns", EmitDefaultValue=false)] + [DataMember(Name = "checkImagePatterns", EmitDefaultValue = false)] public bool? CheckImagePatterns { get; set; } /// /// This parameter is used to enable Fibers detection /// /// This parameter is used to enable Fibers detection - [DataMember(Name="checkFibers", EmitDefaultValue=false)] + [DataMember(Name = "checkFibers", EmitDefaultValue = false)] public bool? CheckFibers { get; set; } /// /// This parameter is used to enable Extended MRZ Check /// /// This parameter is used to enable Extended MRZ Check - [DataMember(Name="checkExtMRZ", EmitDefaultValue=false)] + [DataMember(Name = "checkExtMRZ", EmitDefaultValue = false)] public bool? CheckExtMRZ { get; set; } /// /// This parameter is used to enable Extended OCR Check /// /// This parameter is used to enable Extended OCR Check - [DataMember(Name="checkExtOCR", EmitDefaultValue=false)] + [DataMember(Name = "checkExtOCR", EmitDefaultValue = false)] public bool? CheckExtOCR { get; set; } /// /// This parameter is used to enable laminate integrity check in axial light /// /// This parameter is used to enable laminate integrity check in axial light - [DataMember(Name="checkAxial", EmitDefaultValue=false)] + [DataMember(Name = "checkAxial", EmitDefaultValue = false)] public bool? CheckAxial { get; set; } /// /// This parameter is used to enable Barcode format check (code metadata, data format, contents format, etc.) /// /// This parameter is used to enable Barcode format check (code metadata, data format, contents format, etc.) - [DataMember(Name="checkBarcodeFormat", EmitDefaultValue=false)] + [DataMember(Name = "checkBarcodeFormat", EmitDefaultValue = false)] public bool? CheckBarcodeFormat { get; set; } /// /// This parameter is used to enable Document elements visibility check in IR light /// /// This parameter is used to enable Document elements visibility check in IR light - [DataMember(Name="checkIRVisibility", EmitDefaultValue=false)] + [DataMember(Name = "checkIRVisibility", EmitDefaultValue = false)] public bool? CheckIRVisibility { get; set; } /// /// This parameter is used to enable Invisible Personal Information (IPI) check /// /// This parameter is used to enable Invisible Personal Information (IPI) check - [DataMember(Name="checkIPI", EmitDefaultValue=false)] + [DataMember(Name = "checkIPI", EmitDefaultValue = false)] public bool? CheckIPI { get; set; } /// /// This parameter is used to enable Owner's photo embedding check (is photo printed or sticked) /// /// This parameter is used to enable Owner's photo embedding check (is photo printed or sticked) - [DataMember(Name="checkPhotoEmbedding", EmitDefaultValue=false)] + [DataMember(Name = "checkPhotoEmbedding", EmitDefaultValue = false)] public bool? CheckPhotoEmbedding { get; set; } /// /// This parameter is used to enable Portrait comparison check /// /// This parameter is used to enable Portrait comparison check - [DataMember(Name="checkPhotoComparison", EmitDefaultValue=false)] + [DataMember(Name = "checkPhotoComparison", EmitDefaultValue = false)] public bool? CheckPhotoComparison { get; set; } /// /// This parameter is used to enable LetterScreen check /// /// This parameter is used to enable LetterScreen check - [DataMember(Name="checkLetterScreen", EmitDefaultValue=false)] + [DataMember(Name = "checkLetterScreen", EmitDefaultValue = false)] public bool? CheckLetterScreen { get; set; } /// /// This parameter is used to enable Security text check /// /// This parameter is used to enable Security text check - [DataMember(Name="checkSecurityText", EmitDefaultValue=false)] + [DataMember(Name = "checkSecurityText", EmitDefaultValue = false)] public bool? CheckSecurityText { get; set; } /// @@ -186,7 +188,7 @@ public partial class AuthParams : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AuthParams {\n"); sb.Append(" CheckLiveness: ").Append(CheckLiveness).Append("\n"); sb.Append(" LivenessParams: ").Append(LivenessParams).Append("\n"); @@ -207,7 +209,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -217,160 +219,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AuthParams); - } - - /// - /// Returns true if AuthParams instances are equal - /// - /// Instance of AuthParams to be compared - /// Boolean - public bool Equals(AuthParams input) - { - if (input == null) - return false; - - return - ( - this.CheckLiveness == input.CheckLiveness || - (this.CheckLiveness != null && - this.CheckLiveness.Equals(input.CheckLiveness)) - ) && - ( - this.LivenessParams == input.LivenessParams || - (this.LivenessParams != null && - this.LivenessParams.Equals(input.LivenessParams)) - ) && - ( - this.CheckUVLuminiscence == input.CheckUVLuminiscence || - (this.CheckUVLuminiscence != null && - this.CheckUVLuminiscence.Equals(input.CheckUVLuminiscence)) - ) && - ( - this.CheckIRB900 == input.CheckIRB900 || - (this.CheckIRB900 != null && - this.CheckIRB900.Equals(input.CheckIRB900)) - ) && - ( - this.CheckImagePatterns == input.CheckImagePatterns || - (this.CheckImagePatterns != null && - this.CheckImagePatterns.Equals(input.CheckImagePatterns)) - ) && - ( - this.CheckFibers == input.CheckFibers || - (this.CheckFibers != null && - this.CheckFibers.Equals(input.CheckFibers)) - ) && - ( - this.CheckExtMRZ == input.CheckExtMRZ || - (this.CheckExtMRZ != null && - this.CheckExtMRZ.Equals(input.CheckExtMRZ)) - ) && - ( - this.CheckExtOCR == input.CheckExtOCR || - (this.CheckExtOCR != null && - this.CheckExtOCR.Equals(input.CheckExtOCR)) - ) && - ( - this.CheckAxial == input.CheckAxial || - (this.CheckAxial != null && - this.CheckAxial.Equals(input.CheckAxial)) - ) && - ( - this.CheckBarcodeFormat == input.CheckBarcodeFormat || - (this.CheckBarcodeFormat != null && - this.CheckBarcodeFormat.Equals(input.CheckBarcodeFormat)) - ) && - ( - this.CheckIRVisibility == input.CheckIRVisibility || - (this.CheckIRVisibility != null && - this.CheckIRVisibility.Equals(input.CheckIRVisibility)) - ) && - ( - this.CheckIPI == input.CheckIPI || - (this.CheckIPI != null && - this.CheckIPI.Equals(input.CheckIPI)) - ) && - ( - this.CheckPhotoEmbedding == input.CheckPhotoEmbedding || - (this.CheckPhotoEmbedding != null && - this.CheckPhotoEmbedding.Equals(input.CheckPhotoEmbedding)) - ) && - ( - this.CheckPhotoComparison == input.CheckPhotoComparison || - (this.CheckPhotoComparison != null && - this.CheckPhotoComparison.Equals(input.CheckPhotoComparison)) - ) && - ( - this.CheckLetterScreen == input.CheckLetterScreen || - (this.CheckLetterScreen != null && - this.CheckLetterScreen.Equals(input.CheckLetterScreen)) - ) && - ( - this.CheckSecurityText == input.CheckSecurityText || - (this.CheckSecurityText != null && - this.CheckSecurityText.Equals(input.CheckSecurityText)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.CheckLiveness != null) - hashCode = hashCode * 59 + this.CheckLiveness.GetHashCode(); - if (this.LivenessParams != null) - hashCode = hashCode * 59 + this.LivenessParams.GetHashCode(); - if (this.CheckUVLuminiscence != null) - hashCode = hashCode * 59 + this.CheckUVLuminiscence.GetHashCode(); - if (this.CheckIRB900 != null) - hashCode = hashCode * 59 + this.CheckIRB900.GetHashCode(); - if (this.CheckImagePatterns != null) - hashCode = hashCode * 59 + this.CheckImagePatterns.GetHashCode(); - if (this.CheckFibers != null) - hashCode = hashCode * 59 + this.CheckFibers.GetHashCode(); - if (this.CheckExtMRZ != null) - hashCode = hashCode * 59 + this.CheckExtMRZ.GetHashCode(); - if (this.CheckExtOCR != null) - hashCode = hashCode * 59 + this.CheckExtOCR.GetHashCode(); - if (this.CheckAxial != null) - hashCode = hashCode * 59 + this.CheckAxial.GetHashCode(); - if (this.CheckBarcodeFormat != null) - hashCode = hashCode * 59 + this.CheckBarcodeFormat.GetHashCode(); - if (this.CheckIRVisibility != null) - hashCode = hashCode * 59 + this.CheckIRVisibility.GetHashCode(); - if (this.CheckIPI != null) - hashCode = hashCode * 59 + this.CheckIPI.GetHashCode(); - if (this.CheckPhotoEmbedding != null) - hashCode = hashCode * 59 + this.CheckPhotoEmbedding.GetHashCode(); - if (this.CheckPhotoComparison != null) - hashCode = hashCode * 59 + this.CheckPhotoComparison.GetHashCode(); - if (this.CheckLetterScreen != null) - hashCode = hashCode * 59 + this.CheckLetterScreen.GetHashCode(); - if (this.CheckSecurityText != null) - hashCode = hashCode * 59 + this.CheckSecurityText.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckList.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckList.cs index 37e1226..f26cbd5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// AuthenticityCheckList /// - [DataContract] - public partial class AuthenticityCheckList : IEquatable, IValidatableObject + [DataContract(Name = "AuthenticityCheckList")] + public partial class AuthenticityCheckList : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,35 +40,31 @@ protected AuthenticityCheckList() { } /// /// Initializes a new instance of the class. /// - /// Count of items in List. + /// Count of items in List (required). /// Authenticity Check (required). public AuthenticityCheckList(int count = default(int), List list = default(List)) { + this.Count = count; // to ensure "list" is required (not null) if (list == null) { - throw new InvalidDataException("list is a required property for AuthenticityCheckList and cannot be null"); - } - else - { - this.List = list; + throw new ArgumentNullException("list is a required property for AuthenticityCheckList and cannot be null"); } - - this.Count = count; + this.List = list; } - + /// /// Count of items in List /// /// Count of items in List - [DataMember(Name="Count", EmitDefaultValue=false)] + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] public int Count { get; set; } /// /// Authenticity Check /// /// Authenticity Check - [DataMember(Name="List", EmitDefaultValue=true)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } /// @@ -75,14 +73,14 @@ protected AuthenticityCheckList() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AuthenticityCheckList {\n"); sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -92,63 +90,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AuthenticityCheckList); - } - - /// - /// Returns true if AuthenticityCheckList instances are equal - /// - /// Instance of AuthenticityCheckList to be compared - /// Boolean - public bool Equals(AuthenticityCheckList input) - { - if (input == null) - return false; - - return - ( - this.Count == input.Count || - (this.Count != null && - this.Count.Equals(input.Count)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Count != null) - hashCode = hashCode * 59 + this.Count.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckListItem.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckListItem.cs new file mode 100644 index 0000000..6a0f54a --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckListItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// AuthenticityCheckListItem + /// + [DataContract(Name = "AuthenticityCheckListItem")] + public partial class AuthenticityCheckListItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected AuthenticityCheckListItem() { } + /// + /// Initializes a new instance of the class. + /// + /// authenticityCheckList (required). + public AuthenticityCheckListItem(AuthenticityCheckList authenticityCheckList = default(AuthenticityCheckList)) + { + // to ensure "authenticityCheckList" is required (not null) + if (authenticityCheckList == null) + { + throw new ArgumentNullException("authenticityCheckList is a required property for AuthenticityCheckListItem and cannot be null"); + } + this.AuthenticityCheckList = authenticityCheckList; + } + + /// + /// Gets or Sets AuthenticityCheckList + /// + [DataMember(Name = "AuthenticityCheckList", IsRequired = true, EmitDefaultValue = true)] + public AuthenticityCheckList AuthenticityCheckList { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class AuthenticityCheckListItem {\n"); + sb.Append(" AuthenticityCheckList: ").Append(AuthenticityCheckList).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs index da6afcc..bfdbd6e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResult.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 5.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// AuthenticityCheckResult /// - [DataContract] - public partial class AuthenticityCheckResult : IEquatable, IValidatableObject + [DataContract(Name = "AuthenticityCheckResult")] + public partial class AuthenticityCheckResult : IValidatableObject { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public AuthenticityResultType Type { get; set; } + + /// + /// Gets or Sets Result + /// + [DataMember(Name = "Result", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Result { get; set; } /// /// Initializes a new instance of the class. /// @@ -40,57 +54,32 @@ protected AuthenticityCheckResult() { } /// /// type (required). /// result (required). + /// Count of items in List. /// list (required). - public AuthenticityCheckResult(int type = default(int), int result = default(int), List list = default(List)) + public AuthenticityCheckResult(AuthenticityResultType type = default(AuthenticityResultType), CheckResult result = default(CheckResult), int count = default(int), List list = default(List)) { - // to ensure "type" is required (not null) - if (type == null) - { - throw new InvalidDataException("type is a required property for AuthenticityCheckResult and cannot be null"); - } - else - { - this.Type = type; - } - - // to ensure "result" is required (not null) - if (result == null) - { - throw new InvalidDataException("result is a required property for AuthenticityCheckResult and cannot be null"); - } - else - { - this.Result = result; - } - + this.Type = type; + this.Result = result; // to ensure "list" is required (not null) if (list == null) { - throw new InvalidDataException("list is a required property for AuthenticityCheckResult and cannot be null"); + throw new ArgumentNullException("list is a required property for AuthenticityCheckResult and cannot be null"); } - else - { - this.List = list; - } - + this.List = list; + this.Count = count; } - - /// - /// Gets or Sets Type - /// - [DataMember(Name="Type", EmitDefaultValue=true)] - public int Type { get; set; } /// - /// Gets or Sets Result + /// Count of items in List /// - [DataMember(Name="Result", EmitDefaultValue=true)] - public int Result { get; set; } + /// Count of items in List + [DataMember(Name = "Count", EmitDefaultValue = false)] + public int? Count { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=true)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } /// @@ -99,80 +88,23 @@ protected AuthenticityCheckResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AuthenticityCheckResult {\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" Result: ").Append(Result).Append("\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// /// JSON string presentation of the object public virtual string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AuthenticityCheckResult); - } - - /// - /// Returns true if AuthenticityCheckResult instances are equal - /// - /// Instance of AuthenticityCheckResult to be compared - /// Boolean - public bool Equals(AuthenticityCheckResult input) - { - if (input == null) - return false; - - return - ( - this.Type == input.Type || - (this.Type != null && - this.Type.Equals(input.Type)) - ) && - ( - this.Result == input.Result || - (this.Result != null && - this.Result.Equals(input.Result)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Type != null) - hashCode = hashCode * 59 + this.Type.GetHashCode(); - if (this.Result != null) - hashCode = hashCode * 59 + this.Result.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - return hashCode; - } + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } /// @@ -180,7 +112,7 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs index 2a48102..0e8104f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultItem.cs @@ -1,48 +1,79 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.IO; -using System.Text; +using System.Collections; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; -using Regula.DocumentReader.WebClient.Model.Ext.Autheticity; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// /// Common fields for all authenticity result objects /// - [DataContract] + [DataContract(Name = "AuthenticityCheckResultItem")] [JsonConverter(typeof(JsonSubtypes), "Type")] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.UV_LUMINESCENCE)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.IR_B900)] - [JsonSubtypes.KnownSubType(typeof(IdentResult), AuthenticityResultType.IMAGE_PATTERN)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.AXIAL_PROTECTION)] - [JsonSubtypes.KnownSubType(typeof(FiberResult), AuthenticityResultType.UV_FIBERS)] - [JsonSubtypes.KnownSubType(typeof(IdentResult), AuthenticityResultType.IR_VISIBILITY)] - [JsonSubtypes.KnownSubType(typeof(OCRSecurityTextResult), AuthenticityResultType.OCR_SECURITY_TEXT)] - [JsonSubtypes.KnownSubType(typeof(ImageIdentChecks), AuthenticityResultType.IPI)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.PHOTO_EMBED_TYPE)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.HOLOGRAMS)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.OVI)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.PHOTO_AREA)] - [JsonSubtypes.KnownSubType(typeof(IdentResult), AuthenticityResultType.PORTRAIT_COMPARISON)] - [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), AuthenticityResultType.BARCODE_FORMAT_CHECK)] - [JsonSubtypes.KnownSubType(typeof(IdentResult), AuthenticityResultType.KINEGRAM)] - [JsonSubtypes.KnownSubType(typeof(IdentResult), AuthenticityResultType.LETTER_SCREEN)] - public partial class AuthenticityCheckResultItem : IEquatable, IValidatableObject + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "1")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "1024")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "1048576")] + [JsonSubtypes.KnownSubType(typeof(PhotoIdentResult), "128")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "131072")] + [JsonSubtypes.KnownSubType(typeof(FiberResult), "16")] + [JsonSubtypes.KnownSubType(typeof(FiberResult), "16384")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "2")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "2048")] + [JsonSubtypes.KnownSubType(typeof(PhotoIdentResult), "256")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "262144")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "32")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "32768")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "4")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "4096")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "512")] + [JsonSubtypes.KnownSubType(typeof(IdentResult), "524288")] + [JsonSubtypes.KnownSubType(typeof(OCRSecurityTextResult), "64")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "65536")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "8")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "8192")] + [JsonSubtypes.KnownSubType(typeof(SecurityFeatureResult), "8388608")] + public partial class AuthenticityCheckResultItem : IValidatableObject { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public AuthenticityResultType Type { get; set; } + + /// + /// Gets or Sets ElementResult + /// + [DataMember(Name = "ElementResult", EmitDefaultValue = false)] + public CheckResult? ElementResult { get; set; } + + /// + /// Gets or Sets ElementDiagnose + /// + [DataMember(Name = "ElementDiagnose", EmitDefaultValue = false)] + public CheckDiagnose? ElementDiagnose { get; set; } /// /// Initializes a new instance of the class. /// @@ -51,51 +82,23 @@ protected AuthenticityCheckResultItem() { } /// /// Initializes a new instance of the class. /// - /// Same as authenticity result type, but used for safe parsing of not-described values: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/authenticity-result-type/ (required) (default to 0). + /// type (required). /// elementResult. /// elementDiagnose. /// percentValue. - public AuthenticityCheckResultItem(int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) + public AuthenticityCheckResultItem(AuthenticityResultType type = default(AuthenticityResultType), CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) { - // to ensure "type" is required (not null) - if (type == null) - { - throw new InvalidDataException("type is a required property for AuthenticityCheckResultItem and cannot be null"); - } - else - { - this.Type = type; - } - + this.Type = type; this.ElementResult = elementResult; this.ElementDiagnose = elementDiagnose; this.PercentValue = percentValue; } - - /// - /// Same as authenticity result type, but used for safe parsing of not-described values: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/authenticity-result-type/ - /// - /// Same as authenticity result type, but used for safe parsing of not-described values: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/authenticity-result-type/ - [DataMember(Name="Type", EmitDefaultValue=true)] - public int Type { get; set; } - - /// - /// Gets or Sets ElementResult - /// - [DataMember(Name="ElementResult", EmitDefaultValue=false)] - public int ElementResult { get; set; } - - /// - /// Gets or Sets ElementDiagnose - /// - [DataMember(Name="ElementDiagnose", EmitDefaultValue=false)] - public int ElementDiagnose { get; set; } /// /// Gets or Sets PercentValue /// - [DataMember(Name="PercentValue", EmitDefaultValue=false)] - public int PercentValue { get; set; } + [DataMember(Name = "PercentValue", EmitDefaultValue = false)] + public int? PercentValue { get; set; } /// /// Returns the string presentation of the object @@ -103,7 +106,7 @@ protected AuthenticityCheckResultItem() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AuthenticityCheckResultItem {\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" ElementResult: ").Append(ElementResult).Append("\n"); @@ -112,7 +115,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -122,76 +125,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AuthenticityCheckResultItem); - } - - /// - /// Returns true if AuthenticityCheckResultItem instances are equal - /// - /// Instance of AuthenticityCheckResultItem to be compared - /// Boolean - public bool Equals(AuthenticityCheckResultItem input) - { - if (input == null) - return false; - - return - ( - this.Type == input.Type || - (this.Type != null && - this.Type.Equals(input.Type)) - ) && - ( - this.ElementResult == input.ElementResult || - (this.ElementResult != null && - this.ElementResult.Equals(input.ElementResult)) - ) && - ( - this.ElementDiagnose == input.ElementDiagnose || - (this.ElementDiagnose != null && - this.ElementDiagnose.Equals(input.ElementDiagnose)) - ) && - ( - this.PercentValue == input.PercentValue || - (this.PercentValue != null && - this.PercentValue.Equals(input.PercentValue)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Type != null) - hashCode = hashCode * 59 + this.Type.GetHashCode(); - if (this.ElementResult != null) - hashCode = hashCode * 59 + this.ElementResult.GetHashCode(); - if (this.ElementDiagnose != null) - hashCode = hashCode * 59 + this.ElementDiagnose.GetHashCode(); - if (this.PercentValue != null) - hashCode = hashCode * 59 + this.PercentValue.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { return this.BaseValidate(validationContext); } @@ -201,7 +140,7 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - protected IEnumerable BaseValidate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultListInner.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultListInner.cs new file mode 100644 index 0000000..069475b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityCheckResultListInner.cs @@ -0,0 +1,400 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; +using System.Reflection; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// AuthenticityCheckResultListInner + /// + [JsonConverter(typeof(AuthenticityCheckResultListInnerJsonConverter))] + [DataContract(Name = "AuthenticityCheckResult_List_inner")] + public partial class AuthenticityCheckResultListInner : AbstractOpenAPISchema, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of SecurityFeatureResult. + public AuthenticityCheckResultListInner(SecurityFeatureResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of IdentResult. + public AuthenticityCheckResultListInner(IdentResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of FiberResult. + public AuthenticityCheckResultListInner(FiberResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of OCRSecurityTextResult. + public AuthenticityCheckResultListInner(OCRSecurityTextResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of PhotoIdentResult. + public AuthenticityCheckResultListInner(PhotoIdentResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(FiberResult) || value is FiberResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(IdentResult) || value is IdentResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(OCRSecurityTextResult) || value is OCRSecurityTextResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(PhotoIdentResult) || value is PhotoIdentResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(SecurityFeatureResult) || value is SecurityFeatureResult) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: FiberResult, IdentResult, OCRSecurityTextResult, PhotoIdentResult, SecurityFeatureResult"); + } + } + } + + /// + /// Get the actual instance of `SecurityFeatureResult`. If the actual instance is not `SecurityFeatureResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of SecurityFeatureResult + public SecurityFeatureResult GetSecurityFeatureResult() + { + return (SecurityFeatureResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `IdentResult`. If the actual instance is not `IdentResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of IdentResult + public IdentResult GetIdentResult() + { + return (IdentResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `FiberResult`. If the actual instance is not `FiberResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of FiberResult + public FiberResult GetFiberResult() + { + return (FiberResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `OCRSecurityTextResult`. If the actual instance is not `OCRSecurityTextResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of OCRSecurityTextResult + public OCRSecurityTextResult GetOCRSecurityTextResult() + { + return (OCRSecurityTextResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `PhotoIdentResult`. If the actual instance is not `PhotoIdentResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of PhotoIdentResult + public PhotoIdentResult GetPhotoIdentResult() + { + return (PhotoIdentResult)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class AuthenticityCheckResultListInner {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, AuthenticityCheckResultListInner.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of AuthenticityCheckResultListInner + /// + /// JSON string + /// An instance of AuthenticityCheckResultListInner + public static AuthenticityCheckResultListInner FromJson(string jsonString) + { + AuthenticityCheckResultListInner newAuthenticityCheckResultListInner = null; + + if (string.IsNullOrEmpty(jsonString)) + { + return newAuthenticityCheckResultListInner; + } + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(FiberResult).GetProperty("AdditionalProperties") == null) + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.SerializerSettings)); + } + else + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("FiberResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into FiberResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(IdentResult).GetProperty("AdditionalProperties") == null) + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.SerializerSettings)); + } + else + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("IdentResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IdentResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(OCRSecurityTextResult).GetProperty("AdditionalProperties") == null) + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.SerializerSettings)); + } + else + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("OCRSecurityTextResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into OCRSecurityTextResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(PhotoIdentResult).GetProperty("AdditionalProperties") == null) + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.SerializerSettings)); + } + else + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("PhotoIdentResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into PhotoIdentResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(SecurityFeatureResult).GetProperty("AdditionalProperties") == null) + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.SerializerSettings)); + } + else + { + newAuthenticityCheckResultListInner = new AuthenticityCheckResultListInner(JsonConvert.DeserializeObject(jsonString, AuthenticityCheckResultListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("SecurityFeatureResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SecurityFeatureResult: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + String.Join(",", matchedTypes)); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newAuthenticityCheckResultListInner; + } + + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for AuthenticityCheckResultListInner + /// + public class AuthenticityCheckResultListInnerJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((string)(typeof(AuthenticityCheckResultListInner).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + switch(reader.TokenType) + { + case JsonToken.StartObject: + return AuthenticityCheckResultListInner.FromJson(JObject.Load(reader).ToString(Formatting.None)); + case JsonToken.StartArray: + return AuthenticityCheckResultListInner.FromJson(JArray.Load(reader).ToString(Formatting.None)); + default: + return null; + } + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityResult.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityResult.cs index b010c2d..0b08344 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthenticityResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// AuthenticityResult /// - [DataContract] - public partial class AuthenticityResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "AuthenticityResult")] + public partial class AuthenticityResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected AuthenticityResult() { } /// Initializes a new instance of the class. /// /// authenticityCheckList (required). - public AuthenticityResult(AuthenticityCheckList authenticityCheckList = default(AuthenticityCheckList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.AUTHENTICITY). + public AuthenticityResult(AuthenticityCheckList authenticityCheckList = default(AuthenticityCheckList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.AUTHENTICITY) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "authenticityCheckList" is required (not null) if (authenticityCheckList == null) { - throw new InvalidDataException("authenticityCheckList is a required property for AuthenticityResult and cannot be null"); - } - else - { - this.AuthenticityCheckList = authenticityCheckList; + throw new ArgumentNullException("authenticityCheckList is a required property for AuthenticityResult and cannot be null"); } - + this.AuthenticityCheckList = authenticityCheckList; } - + /// /// Gets or Sets AuthenticityCheckList /// - [DataMember(Name="AuthenticityCheckList", EmitDefaultValue=true)] + [DataMember(Name = "AuthenticityCheckList", IsRequired = true, EmitDefaultValue = true)] public AuthenticityCheckList AuthenticityCheckList { get; set; } /// @@ -65,14 +69,14 @@ protected AuthenticityResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class AuthenticityResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" AuthenticityCheckList: ").Append(AuthenticityCheckList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as AuthenticityResult); - } - - /// - /// Returns true if AuthenticityResult instances are equal - /// - /// Instance of AuthenticityResult to be compared - /// Boolean - public bool Equals(AuthenticityResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.AuthenticityCheckList == input.AuthenticityCheckList || - (this.AuthenticityCheckList != null && - this.AuthenticityCheckList.Equals(input.AuthenticityCheckList)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.AuthenticityCheckList != null) - hashCode = hashCode * 59 + this.AuthenticityCheckList.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/AuthenticityResultType.cs b/src/Regula.DocumentReader.WebClient/Model/AuthenticityResultType.cs index cbc170f..6fe4111 100644 --- a/src/Regula.DocumentReader.WebClient/Model/AuthenticityResultType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/AuthenticityResultType.cs @@ -1,74 +1,171 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - /// Enumeration describes available authenticity checks - public class AuthenticityResultType + /// + /// Enumeration describes available authenticity checks: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/authenticity-result-type/. + /// + /// Enumeration describes available authenticity checks: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/authenticity-result-type/. + public enum AuthenticityResultType: long { - - public const int UV_LUMINESCENCE = 1; - - public const int IR_B900 = 2; - - public const int IMAGE_PATTERN = 4; - - public const int AXIAL_PROTECTION = 8; - - public const int UV_FIBERS = 16; - - public const int IR_VISIBILITY = 32; + /// + /// Enum NONE for value: 0 + /// + NONE = 0, + + /// + /// Enum UV_LUMINESCENCE for value: 1 + /// + UV_LUMINESCENCE = 1, + + /// + /// Enum IR_B900 for value: 2 + /// + IR_B900 = 2, + + /// + /// Enum IMAGE_PATTERN for value: 4 + /// + IMAGE_PATTERN = 4, + + /// + /// Enum AXIAL_PROTECTION for value: 8 + /// + AXIAL_PROTECTION = 8, - public const int OCR_SECURITY_TEXT = 64; + /// + /// Enum UV_FIBERS for value: 16 + /// + UV_FIBERS = 16, - public const int IPI = 128; - - public const int PHOTO_EMBED_TYPE = 512; + /// + /// Enum IR_VISIBILITY for value: 32 + /// + IR_VISIBILITY = 32, - public const int OVI = 1024; - - public const int HOLOGRAMS = 4096; + /// + /// Enum OCR_SECURITY_TEXT for value: 64 + /// + OCR_SECURITY_TEXT = 64, - public const int PHOTO_AREA = 8192; - - public const int PORTRAIT_COMPARISON = 32768; + /// + /// Enum IPI for value: 128 + /// + IPI = 128, - public const int BARCODE_FORMAT_CHECK = 65536; - - public const int KINEGRAM = 131072; - - public const int LETTER_SCREEN = 262144; + /// + /// Enum IR_PHOTO for value: 256 + /// + IR_PHOTO = 256, - public const int HOLOGRAM_DETECTION = 524288; + /// + /// Enum PHOTO_EMBED_TYPE for value: 512 + /// + PHOTO_EMBED_TYPE = 512, - public const int FINGERPRINT_COMPARISON = 1048576; + /// + /// Enum OVI for value: 1024 + /// + OVI = 1024, - public const int LIVENESS = 2097152; + /// + /// Enum IR_LUMINESCENCE for value: 2048 + /// + IR_LUMINESCENCE = 2048, - public const int EXTENDED_OCR_CHECK = 4194304; + /// + /// Enum HOLOGRAMS for value: 4096 + /// + HOLOGRAMS = 4096, - public const int EXTENDED_MRZ_CHECK = 8388608; + /// + /// Enum PHOTO_AREA for value: 8192 + /// + PHOTO_AREA = 8192, + /// + /// Enum UV_BACKGROUND for value: 16384 + /// + UV_BACKGROUND = 16384, + + /// + /// Enum PORTRAIT_COMPARISON for value: 32768 + /// + PORTRAIT_COMPARISON = 32768, + + /// + /// Enum BARCODE_FORMAT_CHECK for value: 65536 + /// + BARCODE_FORMAT_CHECK = 65536, + + /// + /// Enum KINEGRAM for value: 131072 + /// + KINEGRAM = 131072, + + /// + /// Enum LETTER_SCREEN for value: 262144 + /// + LETTER_SCREEN = 262144, + + /// + /// Enum HOLOGRAM_DETECTION for value: 524288 + /// + HOLOGRAM_DETECTION = 524288, + + /// + /// Enum FINGERPRINT_COMPARISON for value: 1048576 + /// + FINGERPRINT_COMPARISON = 1048576, + + /// + /// Enum LIVENESS for value: 2097152 + /// + LIVENESS = 2097152, + + /// + /// Enum EXTENDED_OCR_CHECK for value: 4194304 + /// + EXTENDED_OCR_CHECK = 4194304, + + /// + /// Enum EXTENDED_MRZ_CHECK for value: 8388608 + /// + EXTENDED_MRZ_CHECK = 8388608, + + /// + /// Enum ENCRYPTED_IPI for value: 16777216 + /// + ENCRYPTED_IPI = 16777216, + + /// + /// Enum STATUS_ONLY for value: 2147483648 + /// + STATUS_ONLY = 2147483648 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/BarCodeModuleType.cs b/src/Regula.DocumentReader.WebClient/Model/BarCodeModuleType.cs new file mode 100644 index 0000000..92e950e --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/BarCodeModuleType.cs @@ -0,0 +1,60 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Defines BarCodeModuleType + /// + public enum BarCodeModuleType + { + /// + /// Enum TEXT for value: 0 + /// + TEXT = 0, + + /// + /// Enum BYTE for value: 1 + /// + BYTE = 1, + + /// + /// Enum NUM for value: 2 + /// + NUM = 2, + + /// + /// Enum SHIFT for value: 3 + /// + SHIFT = 3, + + /// + /// Enum ALL for value: 4 + /// + ALL = 4 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/BarcodeType.cs b/src/Regula.DocumentReader.WebClient/Model/BarcodeType.cs new file mode 100644 index 0000000..8d533b9 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/BarcodeType.cs @@ -0,0 +1,141 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains the types of barcodes that can be processed + /// + /// Enumeration contains the types of barcodes that can be processed + public enum BarcodeType + { + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum CODE128 for value: 1 + /// + CODE128 = 1, + + /// + /// Enum CODE39 for value: 2 + /// + CODE39 = 2, + + /// + /// Enum EAN8 for value: 3 + /// + EAN8 = 3, + + /// + /// Enum ITF for value: 4 + /// + ITF = 4, + + /// + /// Enum PDF417 for value: 5 + /// + PDF417 = 5, + + /// + /// Enum STF for value: 6 + /// + STF = 6, + + /// + /// Enum MTF for value: 7 + /// + MTF = 7, + + /// + /// Enum IATA for value: 8 + /// + IATA = 8, + + /// + /// Enum CODABAR for value: 9 + /// + CODABAR = 9, + + /// + /// Enum UPCA for value: 10 + /// + UPCA = 10, + + /// + /// Enum CODE93 for value: 11 + /// + CODE93 = 11, + + /// + /// Enum UPCE for value: 12 + /// + UPCE = 12, + + /// + /// Enum EAN13 for value: 13 + /// + EAN13 = 13, + + /// + /// Enum QRCODE for value: 14 + /// + QRCODE = 14, + + /// + /// Enum AZTEC for value: 15 + /// + AZTEC = 15, + + /// + /// Enum DATAMATRIX for value: 16 + /// + DATAMATRIX = 16, + + /// + /// Enum ALL_1D for value: 17 + /// + ALL_1D = 17, + + /// + /// Enum CODE11 for value: 18 + /// + CODE11 = 18, + + /// + /// Enum JABCODE for value: 19 + /// + JABCODE = 19, + + /// + /// Enum END for value: 20 + /// + END = 20 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/BcPDF417INFO.cs b/src/Regula.DocumentReader.WebClient/Model/BcPDF417INFO.cs index a1c7dff..bc5c487 100644 --- a/src/Regula.DocumentReader.WebClient/Model/BcPDF417INFO.cs +++ b/src/Regula.DocumentReader.WebClient/Model/BcPDF417INFO.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,18 +29,23 @@ namespace Regula.DocumentReader.WebClient.Model /// /// BcPDF417INFO /// - [DataContract] - public partial class BcPDF417INFO : IEquatable, IValidatableObject + [DataContract(Name = "bcPDF417INFO")] + public partial class BcPDF417INFO : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// angle. - /// bcColumn. - /// bcErrorLevel. - /// bcRow. - /// minX. - /// minY. + [JsonConstructorAttribute] + protected BcPDF417INFO() { } + /// + /// Initializes a new instance of the class. + /// + /// angle (required). + /// bcColumn (required). + /// bcErrorLevel (required). + /// bcRow (required). + /// minX (required). + /// minY (required). public BcPDF417INFO(float angle = default(float), int bcColumn = default(int), int bcErrorLevel = default(int), int bcRow = default(int), float minX = default(float), float minY = default(float)) { this.Angle = angle; @@ -48,41 +55,41 @@ public partial class BcPDF417INFO : IEquatable, IValidatableObjec this.MinX = minX; this.MinY = minY; } - + /// /// Gets or Sets Angle /// - [DataMember(Name="Angle", EmitDefaultValue=false)] + [DataMember(Name = "Angle", IsRequired = true, EmitDefaultValue = true)] public float Angle { get; set; } /// /// Gets or Sets BcColumn /// - [DataMember(Name="bcColumn", EmitDefaultValue=false)] + [DataMember(Name = "bcColumn", IsRequired = true, EmitDefaultValue = true)] public int BcColumn { get; set; } /// /// Gets or Sets BcErrorLevel /// - [DataMember(Name="bcErrorLevel", EmitDefaultValue=false)] + [DataMember(Name = "bcErrorLevel", IsRequired = true, EmitDefaultValue = true)] public int BcErrorLevel { get; set; } /// /// Gets or Sets BcRow /// - [DataMember(Name="bcRow", EmitDefaultValue=false)] + [DataMember(Name = "bcRow", IsRequired = true, EmitDefaultValue = true)] public int BcRow { get; set; } /// /// Gets or Sets MinX /// - [DataMember(Name="minX", EmitDefaultValue=false)] + [DataMember(Name = "minX", IsRequired = true, EmitDefaultValue = true)] public float MinX { get; set; } /// /// Gets or Sets MinY /// - [DataMember(Name="minY", EmitDefaultValue=false)] + [DataMember(Name = "minY", IsRequired = true, EmitDefaultValue = true)] public float MinY { get; set; } /// @@ -91,7 +98,7 @@ public partial class BcPDF417INFO : IEquatable, IValidatableObjec /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class BcPDF417INFO {\n"); sb.Append(" Angle: ").Append(Angle).Append("\n"); sb.Append(" BcColumn: ").Append(BcColumn).Append("\n"); @@ -102,7 +109,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -112,90 +119,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as BcPDF417INFO); - } - - /// - /// Returns true if BcPDF417INFO instances are equal - /// - /// Instance of BcPDF417INFO to be compared - /// Boolean - public bool Equals(BcPDF417INFO input) - { - if (input == null) - return false; - - return - ( - this.Angle == input.Angle || - (this.Angle != null && - this.Angle.Equals(input.Angle)) - ) && - ( - this.BcColumn == input.BcColumn || - (this.BcColumn != null && - this.BcColumn.Equals(input.BcColumn)) - ) && - ( - this.BcErrorLevel == input.BcErrorLevel || - (this.BcErrorLevel != null && - this.BcErrorLevel.Equals(input.BcErrorLevel)) - ) && - ( - this.BcRow == input.BcRow || - (this.BcRow != null && - this.BcRow.Equals(input.BcRow)) - ) && - ( - this.MinX == input.MinX || - (this.MinX != null && - this.MinX.Equals(input.MinX)) - ) && - ( - this.MinY == input.MinY || - (this.MinY != null && - this.MinY.Equals(input.MinY)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Angle != null) - hashCode = hashCode * 59 + this.Angle.GetHashCode(); - if (this.BcColumn != null) - hashCode = hashCode * 59 + this.BcColumn.GetHashCode(); - if (this.BcErrorLevel != null) - hashCode = hashCode * 59 + this.BcErrorLevel.GetHashCode(); - if (this.BcRow != null) - hashCode = hashCode * 59 + this.BcRow.GetHashCode(); - if (this.MinX != null) - hashCode = hashCode * 59 + this.MinX.GetHashCode(); - if (this.MinY != null) - hashCode = hashCode * 59 + this.MinY.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/BcROIDETECT.cs b/src/Regula.DocumentReader.WebClient/Model/BcROIDETECT.cs index 32eb628..b9bf278 100644 --- a/src/Regula.DocumentReader.WebClient/Model/BcROIDETECT.cs +++ b/src/Regula.DocumentReader.WebClient/Model/BcROIDETECT.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,16 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// BcROIDETECT /// - [DataContract] - public partial class BcROIDETECT : IEquatable, IValidatableObject + [DataContract(Name = "bcROI_DETECT")] + public partial class BcROIDETECT : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// bottom. - /// left. - /// right. - /// top. + [JsonConstructorAttribute] + protected BcROIDETECT() { } + /// + /// Initializes a new instance of the class. + /// + /// bottom (required). + /// left (required). + /// right (required). + /// top (required). public BcROIDETECT(int bottom = default(int), int left = default(int), int right = default(int), int top = default(int)) { this.Bottom = bottom; @@ -44,29 +51,29 @@ public partial class BcROIDETECT : IEquatable, IValidatableObject this.Right = right; this.Top = top; } - + /// /// Gets or Sets Bottom /// - [DataMember(Name="bottom", EmitDefaultValue=false)] + [DataMember(Name = "bottom", IsRequired = true, EmitDefaultValue = true)] public int Bottom { get; set; } /// /// Gets or Sets Left /// - [DataMember(Name="left", EmitDefaultValue=false)] + [DataMember(Name = "left", IsRequired = true, EmitDefaultValue = true)] public int Left { get; set; } /// /// Gets or Sets Right /// - [DataMember(Name="right", EmitDefaultValue=false)] + [DataMember(Name = "right", IsRequired = true, EmitDefaultValue = true)] public int Right { get; set; } /// /// Gets or Sets Top /// - [DataMember(Name="top", EmitDefaultValue=false)] + [DataMember(Name = "top", IsRequired = true, EmitDefaultValue = true)] public int Top { get; set; } /// @@ -75,7 +82,7 @@ public partial class BcROIDETECT : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class BcROIDETECT {\n"); sb.Append(" Bottom: ").Append(Bottom).Append("\n"); sb.Append(" Left: ").Append(Left).Append("\n"); @@ -84,7 +91,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -94,76 +101,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as BcROIDETECT); - } - - /// - /// Returns true if BcROIDETECT instances are equal - /// - /// Instance of BcROIDETECT to be compared - /// Boolean - public bool Equals(BcROIDETECT input) - { - if (input == null) - return false; - - return - ( - this.Bottom == input.Bottom || - (this.Bottom != null && - this.Bottom.Equals(input.Bottom)) - ) && - ( - this.Left == input.Left || - (this.Left != null && - this.Left.Equals(input.Left)) - ) && - ( - this.Right == input.Right || - (this.Right != null && - this.Right.Equals(input.Right)) - ) && - ( - this.Top == input.Top || - (this.Top != null && - this.Top.Equals(input.Top)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Bottom != null) - hashCode = hashCode * 59 + this.Bottom.GetHashCode(); - if (this.Left != null) - hashCode = hashCode * 59 + this.Left.GetHashCode(); - if (this.Right != null) - hashCode = hashCode * 59 + this.Right.GetHashCode(); - if (this.Top != null) - hashCode = hashCode * 59 + this.Top.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/BinaryData.cs b/src/Regula.DocumentReader.WebClient/Model/BinaryData.cs new file mode 100644 index 0000000..00e040b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/BinaryData.cs @@ -0,0 +1,651 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used for storing the results of one bar-code module reading. + /// + [DataContract(Name = "BinaryData")] + public partial class BinaryData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// rFIDAuthenticationInfo. + /// rFIDMIFAREDataValidity. + /// rFIDMIFAREData. + /// rFIDEFCOM. + /// rFIDDG1. + /// rFIDDG2. + /// rFIDDG3. + /// rFIDDG4. + /// rFIDDG5. + /// rFIDDG6. + /// rFIDDG7. + /// rFIDDG8. + /// rFIDDG9. + /// rFIDDG10. + /// rFIDDG11. + /// rFIDDG12. + /// rFIDDG13. + /// rFIDDG14. + /// rFIDDG15. + /// rFIDDG16. + /// rFIDEFSOD. + /// eIDDG1. + /// eIDDG2. + /// eIDDG3. + /// eIDDG4. + /// eIDDG5. + /// eIDDG6. + /// eIDDG7. + /// eIDDG8. + /// eIDDG9. + /// eIDDG10. + /// eIDDG11. + /// eIDDG12. + /// eIDDG13. + /// eIDDG14. + /// eIDDG15. + /// eIDDG16. + /// eIDDG17. + /// eIDDG18. + /// eIDDG19. + /// eIDDG20. + /// eIDDG21. + /// eDLCOM. + /// eDLSOD. + /// eDLDG1. + /// eDLDG2. + /// eDLDG3. + /// eDLDG4. + /// eDLDG5. + /// eDLDG6. + /// eDLDG7. + /// eDLDG8. + /// eDLDG9. + /// eDLDG10. + /// eDLDG11. + /// eDLDG12. + /// eDLDG13. + /// eDLDG14. + /// visibleDigitalSeal. + /// visibleDigitalSealNC. + /// digitalSignature. + /// rFIDSessionData. + /// rFIDSessionDataStatus. + /// Indexes of groups that aren't read. + public BinaryData(Dictionary rFIDAuthenticationInfo = default(Dictionary), Dictionary rFIDMIFAREDataValidity = default(Dictionary), Dictionary rFIDMIFAREData = default(Dictionary), Dictionary rFIDEFCOM = default(Dictionary), RfidDG1 rFIDDG1 = default(RfidDG1), Dictionary rFIDDG2 = default(Dictionary), Dictionary rFIDDG3 = default(Dictionary), Dictionary rFIDDG4 = default(Dictionary), Dictionary rFIDDG5 = default(Dictionary), Dictionary rFIDDG6 = default(Dictionary), Dictionary rFIDDG7 = default(Dictionary), Dictionary rFIDDG8 = default(Dictionary), Dictionary rFIDDG9 = default(Dictionary), Dictionary rFIDDG10 = default(Dictionary), Dictionary rFIDDG11 = default(Dictionary), Dictionary rFIDDG12 = default(Dictionary), Dictionary rFIDDG13 = default(Dictionary), Dictionary rFIDDG14 = default(Dictionary), Dictionary rFIDDG15 = default(Dictionary), Dictionary rFIDDG16 = default(Dictionary), Dictionary rFIDEFSOD = default(Dictionary), Dictionary eIDDG1 = default(Dictionary), Dictionary eIDDG2 = default(Dictionary), Dictionary eIDDG3 = default(Dictionary), Dictionary eIDDG4 = default(Dictionary), Dictionary eIDDG5 = default(Dictionary), Dictionary eIDDG6 = default(Dictionary), Dictionary eIDDG7 = default(Dictionary), Dictionary eIDDG8 = default(Dictionary), Dictionary eIDDG9 = default(Dictionary), Dictionary eIDDG10 = default(Dictionary), Dictionary eIDDG11 = default(Dictionary), Dictionary eIDDG12 = default(Dictionary), Dictionary eIDDG13 = default(Dictionary), Dictionary eIDDG14 = default(Dictionary), Dictionary eIDDG15 = default(Dictionary), Dictionary eIDDG16 = default(Dictionary), Dictionary eIDDG17 = default(Dictionary), Dictionary eIDDG18 = default(Dictionary), Dictionary eIDDG19 = default(Dictionary), Dictionary eIDDG20 = default(Dictionary), Dictionary eIDDG21 = default(Dictionary), Dictionary eDLCOM = default(Dictionary), Dictionary eDLSOD = default(Dictionary), Dictionary eDLDG1 = default(Dictionary), Dictionary eDLDG2 = default(Dictionary), Dictionary eDLDG3 = default(Dictionary), Dictionary eDLDG4 = default(Dictionary), Dictionary eDLDG5 = default(Dictionary), Dictionary eDLDG6 = default(Dictionary), Dictionary eDLDG7 = default(Dictionary), Dictionary eDLDG8 = default(Dictionary), Dictionary eDLDG9 = default(Dictionary), Dictionary eDLDG10 = default(Dictionary), Dictionary eDLDG11 = default(Dictionary), Dictionary eDLDG12 = default(Dictionary), Dictionary eDLDG13 = default(Dictionary), Dictionary eDLDG14 = default(Dictionary), Dictionary visibleDigitalSeal = default(Dictionary), Dictionary visibleDigitalSealNC = default(Dictionary), Dictionary digitalSignature = default(Dictionary), RfidSessionData rFIDSessionData = default(RfidSessionData), DetailsRFID rFIDSessionDataStatus = default(DetailsRFID), List rFIDEPasspDirectory = default(List)) + { + this.RFIDAuthenticationInfo = rFIDAuthenticationInfo; + this.RFIDMIFAREDataValidity = rFIDMIFAREDataValidity; + this.RFIDMIFAREData = rFIDMIFAREData; + this.RFID_EF_COM = rFIDEFCOM; + this.RFIDDG1 = rFIDDG1; + this.RFIDDG2 = rFIDDG2; + this.RFIDDG3 = rFIDDG3; + this.RFIDDG4 = rFIDDG4; + this.RFIDDG5 = rFIDDG5; + this.RFIDDG6 = rFIDDG6; + this.RFIDDG7 = rFIDDG7; + this.RFIDDG8 = rFIDDG8; + this.RFIDDG9 = rFIDDG9; + this.RFIDDG10 = rFIDDG10; + this.RFIDDG11 = rFIDDG11; + this.RFIDDG12 = rFIDDG12; + this.RFIDDG13 = rFIDDG13; + this.RFIDDG14 = rFIDDG14; + this.RFIDDG15 = rFIDDG15; + this.RFIDDG16 = rFIDDG16; + this.RFID_EF_SOD = rFIDEFSOD; + this.EIDDG1 = eIDDG1; + this.EIDDG2 = eIDDG2; + this.EIDDG3 = eIDDG3; + this.EIDDG4 = eIDDG4; + this.EIDDG5 = eIDDG5; + this.EIDDG6 = eIDDG6; + this.EIDDG7 = eIDDG7; + this.EIDDG8 = eIDDG8; + this.EIDDG9 = eIDDG9; + this.EIDDG10 = eIDDG10; + this.EIDDG11 = eIDDG11; + this.EIDDG12 = eIDDG12; + this.EIDDG13 = eIDDG13; + this.EIDDG14 = eIDDG14; + this.EIDDG15 = eIDDG15; + this.EIDDG16 = eIDDG16; + this.EIDDG17 = eIDDG17; + this.EIDDG18 = eIDDG18; + this.EIDDG19 = eIDDG19; + this.EIDDG20 = eIDDG20; + this.EIDDG21 = eIDDG21; + this.EDLCOM = eDLCOM; + this.EDLSOD = eDLSOD; + this.EDLDG1 = eDLDG1; + this.EDLDG2 = eDLDG2; + this.EDLDG3 = eDLDG3; + this.EDLDG4 = eDLDG4; + this.EDLDG5 = eDLDG5; + this.EDLDG6 = eDLDG6; + this.EDLDG7 = eDLDG7; + this.EDLDG8 = eDLDG8; + this.EDLDG9 = eDLDG9; + this.EDLDG10 = eDLDG10; + this.EDLDG11 = eDLDG11; + this.EDLDG12 = eDLDG12; + this.EDLDG13 = eDLDG13; + this.EDLDG14 = eDLDG14; + this.VisibleDigitalSeal = visibleDigitalSeal; + this.VisibleDigitalSealNC = visibleDigitalSealNC; + this.DigitalSignature = digitalSignature; + this.RFIDSessionData = rFIDSessionData; + this.RFIDSessionDataStatus = rFIDSessionDataStatus; + this.RFIDEPasspDirectory = rFIDEPasspDirectory; + } + + /// + /// Gets or Sets RFIDAuthenticationInfo + /// + [DataMember(Name = "RFID_Authentication_Info", EmitDefaultValue = false)] + public Dictionary? RFIDAuthenticationInfo { get; set; } + + /// + /// Gets or Sets RFIDMIFAREDataValidity + /// + [DataMember(Name = "RFID_MIFARE_Data_Validity", EmitDefaultValue = false)] + public Dictionary? RFIDMIFAREDataValidity { get; set; } + + /// + /// Gets or Sets RFIDMIFAREData + /// + [DataMember(Name = "RFID_MIFARE_Data", EmitDefaultValue = false)] + public Dictionary? RFIDMIFAREData { get; set; } + + /// + /// Gets or Sets RFID_EF_COM + /// + [DataMember(Name = "RFID_EF_COM", EmitDefaultValue = false)] + public Dictionary? RFID_EF_COM { get; set; } + + /// + /// Gets or Sets RFIDDG1 + /// + [DataMember(Name = "RFID_DG1", EmitDefaultValue = false)] + public RfidDG1? RFIDDG1 { get; set; } + + /// + /// Gets or Sets RFIDDG2 + /// + [DataMember(Name = "RFID_DG2", EmitDefaultValue = false)] + public Dictionary? RFIDDG2 { get; set; } + + /// + /// Gets or Sets RFIDDG3 + /// + [DataMember(Name = "RFID_DG3", EmitDefaultValue = false)] + public Dictionary? RFIDDG3 { get; set; } + + /// + /// Gets or Sets RFIDDG4 + /// + [DataMember(Name = "RFID_DG4", EmitDefaultValue = false)] + public Dictionary? RFIDDG4 { get; set; } + + /// + /// Gets or Sets RFIDDG5 + /// + [DataMember(Name = "RFID_DG5", EmitDefaultValue = false)] + public Dictionary? RFIDDG5 { get; set; } + + /// + /// Gets or Sets RFIDDG6 + /// + [DataMember(Name = "RFID_DG6", EmitDefaultValue = false)] + public Dictionary? RFIDDG6 { get; set; } + + /// + /// Gets or Sets RFIDDG7 + /// + [DataMember(Name = "RFID_DG7", EmitDefaultValue = false)] + public Dictionary? RFIDDG7 { get; set; } + + /// + /// Gets or Sets RFIDDG8 + /// + [DataMember(Name = "RFID_DG8", EmitDefaultValue = false)] + public Dictionary? RFIDDG8 { get; set; } + + /// + /// Gets or Sets RFIDDG9 + /// + [DataMember(Name = "RFID_DG9", EmitDefaultValue = false)] + public Dictionary? RFIDDG9 { get; set; } + + /// + /// Gets or Sets RFIDDG10 + /// + [DataMember(Name = "RFID_DG10", EmitDefaultValue = false)] + public Dictionary? RFIDDG10 { get; set; } + + /// + /// Gets or Sets RFIDDG11 + /// + [DataMember(Name = "RFID_DG11", EmitDefaultValue = false)] + public Dictionary? RFIDDG11 { get; set; } + + /// + /// Gets or Sets RFIDDG12 + /// + [DataMember(Name = "RFID_DG12", EmitDefaultValue = false)] + public Dictionary? RFIDDG12 { get; set; } + + /// + /// Gets or Sets RFIDDG13 + /// + [DataMember(Name = "RFID_DG13", EmitDefaultValue = false)] + public Dictionary? RFIDDG13 { get; set; } + + /// + /// Gets or Sets RFIDDG14 + /// + [DataMember(Name = "RFID_DG14", EmitDefaultValue = false)] + public Dictionary? RFIDDG14 { get; set; } + + /// + /// Gets or Sets RFIDDG15 + /// + [DataMember(Name = "RFID_DG15", EmitDefaultValue = false)] + public Dictionary? RFIDDG15 { get; set; } + + /// + /// Gets or Sets RFIDDG16 + /// + [DataMember(Name = "RFID_DG16", EmitDefaultValue = false)] + public Dictionary? RFIDDG16 { get; set; } + + /// + /// Gets or Sets RFID_EF_SOD + /// + [DataMember(Name = "RFID_EF_SOD", EmitDefaultValue = false)] + public Dictionary? RFID_EF_SOD { get; set; } + + /// + /// Gets or Sets EIDDG1 + /// + [DataMember(Name = "eID_DG1", EmitDefaultValue = false)] + public Dictionary? EIDDG1 { get; set; } + + /// + /// Gets or Sets EIDDG2 + /// + [DataMember(Name = "eID_DG2", EmitDefaultValue = false)] + public Dictionary? EIDDG2 { get; set; } + + /// + /// Gets or Sets EIDDG3 + /// + [DataMember(Name = "eID_DG3", EmitDefaultValue = false)] + public Dictionary? EIDDG3 { get; set; } + + /// + /// Gets or Sets EIDDG4 + /// + [DataMember(Name = "eID_DG4", EmitDefaultValue = false)] + public Dictionary? EIDDG4 { get; set; } + + /// + /// Gets or Sets EIDDG5 + /// + [DataMember(Name = "eID_DG5", EmitDefaultValue = false)] + public Dictionary? EIDDG5 { get; set; } + + /// + /// Gets or Sets EIDDG6 + /// + [DataMember(Name = "eID_DG6", EmitDefaultValue = false)] + public Dictionary? EIDDG6 { get; set; } + + /// + /// Gets or Sets EIDDG7 + /// + [DataMember(Name = "eID_DG7", EmitDefaultValue = false)] + public Dictionary? EIDDG7 { get; set; } + + /// + /// Gets or Sets EIDDG8 + /// + [DataMember(Name = "eID_DG8", EmitDefaultValue = false)] + public Dictionary? EIDDG8 { get; set; } + + /// + /// Gets or Sets EIDDG9 + /// + [DataMember(Name = "eID_DG9", EmitDefaultValue = false)] + public Dictionary? EIDDG9 { get; set; } + + /// + /// Gets or Sets EIDDG10 + /// + [DataMember(Name = "eID_DG10", EmitDefaultValue = false)] + public Dictionary? EIDDG10 { get; set; } + + /// + /// Gets or Sets EIDDG11 + /// + [DataMember(Name = "eID_DG11", EmitDefaultValue = false)] + public Dictionary? EIDDG11 { get; set; } + + /// + /// Gets or Sets EIDDG12 + /// + [DataMember(Name = "eID_DG12", EmitDefaultValue = false)] + public Dictionary? EIDDG12 { get; set; } + + /// + /// Gets or Sets EIDDG13 + /// + [DataMember(Name = "eID_DG13", EmitDefaultValue = false)] + public Dictionary? EIDDG13 { get; set; } + + /// + /// Gets or Sets EIDDG14 + /// + [DataMember(Name = "eID_DG14", EmitDefaultValue = false)] + public Dictionary? EIDDG14 { get; set; } + + /// + /// Gets or Sets EIDDG15 + /// + [DataMember(Name = "eID_DG15", EmitDefaultValue = false)] + public Dictionary? EIDDG15 { get; set; } + + /// + /// Gets or Sets EIDDG16 + /// + [DataMember(Name = "eID_DG16", EmitDefaultValue = false)] + public Dictionary? EIDDG16 { get; set; } + + /// + /// Gets or Sets EIDDG17 + /// + [DataMember(Name = "eID_DG17", EmitDefaultValue = false)] + public Dictionary? EIDDG17 { get; set; } + + /// + /// Gets or Sets EIDDG18 + /// + [DataMember(Name = "eID_DG18", EmitDefaultValue = false)] + public Dictionary? EIDDG18 { get; set; } + + /// + /// Gets or Sets EIDDG19 + /// + [DataMember(Name = "eID_DG19", EmitDefaultValue = false)] + public Dictionary? EIDDG19 { get; set; } + + /// + /// Gets or Sets EIDDG20 + /// + [DataMember(Name = "eID_DG20", EmitDefaultValue = false)] + public Dictionary? EIDDG20 { get; set; } + + /// + /// Gets or Sets EIDDG21 + /// + [DataMember(Name = "eID_DG21", EmitDefaultValue = false)] + public Dictionary? EIDDG21 { get; set; } + + /// + /// Gets or Sets EDLCOM + /// + [DataMember(Name = "eDL_COM", EmitDefaultValue = false)] + public Dictionary? EDLCOM { get; set; } + + /// + /// Gets or Sets EDLSOD + /// + [DataMember(Name = "eDL_SOD", EmitDefaultValue = false)] + public Dictionary? EDLSOD { get; set; } + + /// + /// Gets or Sets EDLDG1 + /// + [DataMember(Name = "eDL_DG1", EmitDefaultValue = false)] + public Dictionary? EDLDG1 { get; set; } + + /// + /// Gets or Sets EDLDG2 + /// + [DataMember(Name = "eDL_DG2", EmitDefaultValue = false)] + public Dictionary? EDLDG2 { get; set; } + + /// + /// Gets or Sets EDLDG3 + /// + [DataMember(Name = "eDL_DG3", EmitDefaultValue = false)] + public Dictionary? EDLDG3 { get; set; } + + /// + /// Gets or Sets EDLDG4 + /// + [DataMember(Name = "eDL_DG4", EmitDefaultValue = false)] + public Dictionary? EDLDG4 { get; set; } + + /// + /// Gets or Sets EDLDG5 + /// + [DataMember(Name = "eDL_DG5", EmitDefaultValue = false)] + public Dictionary? EDLDG5 { get; set; } + + /// + /// Gets or Sets EDLDG6 + /// + [DataMember(Name = "eDL_DG6", EmitDefaultValue = false)] + public Dictionary? EDLDG6 { get; set; } + + /// + /// Gets or Sets EDLDG7 + /// + [DataMember(Name = "eDL_DG7", EmitDefaultValue = false)] + public Dictionary? EDLDG7 { get; set; } + + /// + /// Gets or Sets EDLDG8 + /// + [DataMember(Name = "eDL_DG8", EmitDefaultValue = false)] + public Dictionary? EDLDG8 { get; set; } + + /// + /// Gets or Sets EDLDG9 + /// + [DataMember(Name = "eDL_DG9", EmitDefaultValue = false)] + public Dictionary? EDLDG9 { get; set; } + + /// + /// Gets or Sets EDLDG10 + /// + [DataMember(Name = "eDL_DG10", EmitDefaultValue = false)] + public Dictionary? EDLDG10 { get; set; } + + /// + /// Gets or Sets EDLDG11 + /// + [DataMember(Name = "eDL_DG11", EmitDefaultValue = false)] + public Dictionary? EDLDG11 { get; set; } + + /// + /// Gets or Sets EDLDG12 + /// + [DataMember(Name = "eDL_DG12", EmitDefaultValue = false)] + public Dictionary? EDLDG12 { get; set; } + + /// + /// Gets or Sets EDLDG13 + /// + [DataMember(Name = "eDL_DG13", EmitDefaultValue = false)] + public Dictionary? EDLDG13 { get; set; } + + /// + /// Gets or Sets EDLDG14 + /// + [DataMember(Name = "eDL_DG14", EmitDefaultValue = false)] + public Dictionary? EDLDG14 { get; set; } + + /// + /// Gets or Sets VisibleDigitalSeal + /// + [DataMember(Name = "Visible_Digital_Seal", EmitDefaultValue = false)] + public Dictionary? VisibleDigitalSeal { get; set; } + + /// + /// Gets or Sets VisibleDigitalSealNC + /// + [DataMember(Name = "Visible_Digital_Seal_NC", EmitDefaultValue = false)] + public Dictionary? VisibleDigitalSealNC { get; set; } + + /// + /// Gets or Sets DigitalSignature + /// + [DataMember(Name = "Digital_Signature", EmitDefaultValue = false)] + public Dictionary? DigitalSignature { get; set; } + + /// + /// Gets or Sets RFIDSessionData + /// + [DataMember(Name = "RFID_Session_Data", EmitDefaultValue = false)] + public RfidSessionData? RFIDSessionData { get; set; } + + /// + /// Gets or Sets RFIDSessionDataStatus + /// + [DataMember(Name = "RFID_Session_Data_Status", EmitDefaultValue = false)] + public DetailsRFID? RFIDSessionDataStatus { get; set; } + + /// + /// Indexes of groups that aren't read + /// + /// Indexes of groups that aren't read + [DataMember(Name = "RFID_ePassp_Directory", EmitDefaultValue = false)] + public List? RFIDEPasspDirectory { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class BinaryData {\n"); + sb.Append(" RFIDAuthenticationInfo: ").Append(RFIDAuthenticationInfo).Append("\n"); + sb.Append(" RFIDMIFAREDataValidity: ").Append(RFIDMIFAREDataValidity).Append("\n"); + sb.Append(" RFIDMIFAREData: ").Append(RFIDMIFAREData).Append("\n"); + sb.Append(" RFID_EF_COM: ").Append(RFID_EF_COM).Append("\n"); + sb.Append(" RFIDDG1: ").Append(RFIDDG1).Append("\n"); + sb.Append(" RFIDDG2: ").Append(RFIDDG2).Append("\n"); + sb.Append(" RFIDDG3: ").Append(RFIDDG3).Append("\n"); + sb.Append(" RFIDDG4: ").Append(RFIDDG4).Append("\n"); + sb.Append(" RFIDDG5: ").Append(RFIDDG5).Append("\n"); + sb.Append(" RFIDDG6: ").Append(RFIDDG6).Append("\n"); + sb.Append(" RFIDDG7: ").Append(RFIDDG7).Append("\n"); + sb.Append(" RFIDDG8: ").Append(RFIDDG8).Append("\n"); + sb.Append(" RFIDDG9: ").Append(RFIDDG9).Append("\n"); + sb.Append(" RFIDDG10: ").Append(RFIDDG10).Append("\n"); + sb.Append(" RFIDDG11: ").Append(RFIDDG11).Append("\n"); + sb.Append(" RFIDDG12: ").Append(RFIDDG12).Append("\n"); + sb.Append(" RFIDDG13: ").Append(RFIDDG13).Append("\n"); + sb.Append(" RFIDDG14: ").Append(RFIDDG14).Append("\n"); + sb.Append(" RFIDDG15: ").Append(RFIDDG15).Append("\n"); + sb.Append(" RFIDDG16: ").Append(RFIDDG16).Append("\n"); + sb.Append(" RFID_EF_SOD: ").Append(RFID_EF_SOD).Append("\n"); + sb.Append(" EIDDG1: ").Append(EIDDG1).Append("\n"); + sb.Append(" EIDDG2: ").Append(EIDDG2).Append("\n"); + sb.Append(" EIDDG3: ").Append(EIDDG3).Append("\n"); + sb.Append(" EIDDG4: ").Append(EIDDG4).Append("\n"); + sb.Append(" EIDDG5: ").Append(EIDDG5).Append("\n"); + sb.Append(" EIDDG6: ").Append(EIDDG6).Append("\n"); + sb.Append(" EIDDG7: ").Append(EIDDG7).Append("\n"); + sb.Append(" EIDDG8: ").Append(EIDDG8).Append("\n"); + sb.Append(" EIDDG9: ").Append(EIDDG9).Append("\n"); + sb.Append(" EIDDG10: ").Append(EIDDG10).Append("\n"); + sb.Append(" EIDDG11: ").Append(EIDDG11).Append("\n"); + sb.Append(" EIDDG12: ").Append(EIDDG12).Append("\n"); + sb.Append(" EIDDG13: ").Append(EIDDG13).Append("\n"); + sb.Append(" EIDDG14: ").Append(EIDDG14).Append("\n"); + sb.Append(" EIDDG15: ").Append(EIDDG15).Append("\n"); + sb.Append(" EIDDG16: ").Append(EIDDG16).Append("\n"); + sb.Append(" EIDDG17: ").Append(EIDDG17).Append("\n"); + sb.Append(" EIDDG18: ").Append(EIDDG18).Append("\n"); + sb.Append(" EIDDG19: ").Append(EIDDG19).Append("\n"); + sb.Append(" EIDDG20: ").Append(EIDDG20).Append("\n"); + sb.Append(" EIDDG21: ").Append(EIDDG21).Append("\n"); + sb.Append(" EDLCOM: ").Append(EDLCOM).Append("\n"); + sb.Append(" EDLSOD: ").Append(EDLSOD).Append("\n"); + sb.Append(" EDLDG1: ").Append(EDLDG1).Append("\n"); + sb.Append(" EDLDG2: ").Append(EDLDG2).Append("\n"); + sb.Append(" EDLDG3: ").Append(EDLDG3).Append("\n"); + sb.Append(" EDLDG4: ").Append(EDLDG4).Append("\n"); + sb.Append(" EDLDG5: ").Append(EDLDG5).Append("\n"); + sb.Append(" EDLDG6: ").Append(EDLDG6).Append("\n"); + sb.Append(" EDLDG7: ").Append(EDLDG7).Append("\n"); + sb.Append(" EDLDG8: ").Append(EDLDG8).Append("\n"); + sb.Append(" EDLDG9: ").Append(EDLDG9).Append("\n"); + sb.Append(" EDLDG10: ").Append(EDLDG10).Append("\n"); + sb.Append(" EDLDG11: ").Append(EDLDG11).Append("\n"); + sb.Append(" EDLDG12: ").Append(EDLDG12).Append("\n"); + sb.Append(" EDLDG13: ").Append(EDLDG13).Append("\n"); + sb.Append(" EDLDG14: ").Append(EDLDG14).Append("\n"); + sb.Append(" VisibleDigitalSeal: ").Append(VisibleDigitalSeal).Append("\n"); + sb.Append(" VisibleDigitalSealNC: ").Append(VisibleDigitalSealNC).Append("\n"); + sb.Append(" DigitalSignature: ").Append(DigitalSignature).Append("\n"); + sb.Append(" RFIDSessionData: ").Append(RFIDSessionData).Append("\n"); + sb.Append(" RFIDSessionDataStatus: ").Append(RFIDSessionDataStatus).Append("\n"); + sb.Append(" RFIDEPasspDirectory: ").Append(RFIDEPasspDirectory).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/BinaryDataResult.cs b/src/Regula.DocumentReader.WebClient/Model/BinaryDataResult.cs deleted file mode 100644 index b891483..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/BinaryDataResult.cs +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// BinaryDataResult - /// - [DataContract] - public partial class BinaryDataResult : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// Count of array fields. - /// pArrayFields. - public BinaryDataResult(int nFields = default(int), List pArrayFields = default(List)) - { - this.NFields = nFields; - this.PArrayFields = pArrayFields; - } - - /// - /// Count of array fields - /// - /// Count of array fields - [DataMember(Name="nFields", EmitDefaultValue=false)] - public int NFields { get; set; } - - /// - /// Gets or Sets PArrayFields - /// - [DataMember(Name="pArrayFields", EmitDefaultValue=false)] - public List PArrayFields { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class BinaryDataResult {\n"); - sb.Append(" NFields: ").Append(NFields).Append("\n"); - sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as BinaryDataResult); - } - - /// - /// Returns true if BinaryDataResult instances are equal - /// - /// Instance of BinaryDataResult to be compared - /// Boolean - public bool Equals(BinaryDataResult input) - { - if (input == null) - return false; - - return - ( - this.NFields == input.NFields || - (this.NFields != null && - this.NFields.Equals(input.NFields)) - ) && - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.NFields != null) - hashCode = hashCode * 59 + this.NFields.GetHashCode(); - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/ByteArrayItem.cs b/src/Regula.DocumentReader.WebClient/Model/ByteArrayItem.cs new file mode 100644 index 0000000..5a5dfe3 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ByteArrayItem.cs @@ -0,0 +1,94 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ByteArrayItem + /// + [DataContract(Name = "ByteArrayItem")] + public partial class ByteArrayItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ByteArrayItem() { } + /// + /// Initializes a new instance of the class. + /// + /// Byte array in base64 (required). + public ByteArrayItem(string byteArray = default(string)) + { + // to ensure "byteArray" is required (not null) + if (byteArray == null) + { + throw new ArgumentNullException("byteArray is a required property for ByteArrayItem and cannot be null"); + } + this.ByteArray = byteArray; + } + + /// + /// Byte array in base64 + /// + /// Byte array in base64 + [DataMember(Name = "ByteArray", IsRequired = true, EmitDefaultValue = true)] + public string ByteArray { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ByteArrayItem {\n"); + sb.Append(" ByteArray: ").Append(ByteArray).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/ByteArrayResult.cs b/src/Regula.DocumentReader.WebClient/Model/ByteArrayResult.cs index e1d68d1..d6ea24c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ByteArrayResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ByteArrayResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ByteArrayResult /// - [DataContract] - public partial class ByteArrayResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "ByteArrayResult")] + public partial class ByteArrayResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,25 +42,26 @@ protected ByteArrayResult() { } /// Initializes a new instance of the class. /// /// Byte array in base64 (required). - public ByteArrayResult(string byteArray = default(string), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.DTC_VC). + public ByteArrayResult(string byteArray = default(string), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.DTC_VC) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "byteArray" is required (not null) if (byteArray == null) { - throw new InvalidDataException("byteArray is a required property for ByteArrayResult and cannot be null"); - } - else - { - this.ByteArray = byteArray; + throw new ArgumentNullException("byteArray is a required property for ByteArrayResult and cannot be null"); } - + this.ByteArray = byteArray; } - + /// /// Byte array in base64 /// /// Byte array in base64 - [DataMember(Name="ByteArray", EmitDefaultValue=true)] + [DataMember(Name = "ByteArray", IsRequired = true, EmitDefaultValue = true)] public string ByteArray { get; set; } /// @@ -66,14 +70,14 @@ protected ByteArrayResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ByteArrayResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" ByteArray: ").Append(ByteArray).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -84,46 +88,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ByteArrayResult); - } - - /// - /// Returns true if ByteArrayResult instances are equal - /// - /// Instance of ByteArrayResult to be compared - /// Boolean - public bool Equals(ByteArrayResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.ByteArray == input.ByteArray || - (this.ByteArray != null && - this.ByteArray.Equals(input.ByteArray)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.ByteArray != null) - hashCode = hashCode * 59 + this.ByteArray.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -131,9 +102,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/CandidatesListItem.cs b/src/Regula.DocumentReader.WebClient/Model/CandidatesListItem.cs new file mode 100644 index 0000000..45da33f --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/CandidatesListItem.cs @@ -0,0 +1,83 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// CandidatesListItem + /// + [DataContract(Name = "CandidatesListItem")] + public partial class CandidatesListItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// candidatesList. + public CandidatesListItem(DocumentTypesCandidatesList candidatesList = default(DocumentTypesCandidatesList)) + { + this.CandidatesList = candidatesList; + } + + /// + /// Gets or Sets CandidatesList + /// + [DataMember(Name = "CandidatesList", EmitDefaultValue = false)] + public DocumentTypesCandidatesList? CandidatesList { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class CandidatesListItem {\n"); + sb.Append(" CandidatesList: ").Append(CandidatesList).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/CertificateData.cs b/src/Regula.DocumentReader.WebClient/Model/CertificateData.cs new file mode 100644 index 0000000..55e2fdf --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/CertificateData.cs @@ -0,0 +1,107 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// CertificateData + /// + [DataContract(Name = "CertificateData")] + public partial class CertificateData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CertificateData() { } + /// + /// Initializes a new instance of the class. + /// + /// data (required). + /// length (required). + public CertificateData(string data = default(string), string length = default(string)) + { + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for CertificateData and cannot be null"); + } + this.Data = data; + // to ensure "length" is required (not null) + if (length == null) + { + throw new ArgumentNullException("length is a required property for CertificateData and cannot be null"); + } + this.Length = length; + } + + /// + /// Gets or Sets Data + /// + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Gets or Sets Length + /// + [DataMember(Name = "Length", IsRequired = true, EmitDefaultValue = true)] + public string Length { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class CertificateData {\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" Length: ").Append(Length).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/CheckDiagnose.cs b/src/Regula.DocumentReader.WebClient/Model/CheckDiagnose.cs index 92c9021..90e83d7 100644 --- a/src/Regula.DocumentReader.WebClient/Model/CheckDiagnose.cs +++ b/src/Regula.DocumentReader.WebClient/Model/CheckDiagnose.cs @@ -1,304 +1,661 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - /// Enumeration contains identifiers which determinate the single document element authenticity check outcome reason - public class CheckDiagnose + /// + /// Enumeration contains identifiers which determinate the single document element authenticity check outcome reason: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/check-diagnose/ + /// + /// Enumeration contains identifiers which determinate the single document element authenticity check outcome reason: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/check-diagnose/ + public enum CheckDiagnose { - - - public const int UNKNOWN = 0; - - - public const int PASS = 1; - - - public const int INVALID_INPUT_DATA = 2; - - - public const int INTERNAL_ERROR = 3; - - - public const int EXCEPTION_IN_MODULE = 4; - - - public const int UNCERTAIN_VERIFICATION = 5; - - - public const int NECESSARY_IMAGE_NOT_FOUND = 7; - - - public const int PHOTO_SIDES_NOT_FOUND = 8; - - - public const int INVALID_CHECKSUM = 10; - - - public const int SYNTAX_ERROR = 11; - - - public const int LOGIC_ERROR = 12; - - - public const int SOURCES_COMPARISON_ERROR = 13; - - - public const int FIELDS_COMPARISON_LOGIC_ERROR = 14; - - - public const int INVALID_FIELD_FORMAT = 15; - - - public const int TRUE_LUMINESCENCE_ERROR = 20; - - - public const int FALSE_LUMINESCENCE_ERROR = 21; - - - public const int FIXED_PATTERN_ERROR = 22; - - - public const int LOW_CONTRAST_IN_IR_LIGHT = 23; - - - public const int INCORRECT_BACKGROUND_LIGHT = 24; - - - public const int BACKGROUND_COMPARISON_ERROR = 25; - - - public const int INCORRECT_TEXT_COLOR = 26; - - - public const int PHOTO_FALSE_LUMINESCENCE = 27; - - - public const int TOO_MUCH_SHIFT = 28; - - - public const int FIBERS_NOT_FOUND = 30; - - - public const int TOO_MANY_OBJECTS = 31; - - - public const int SPECKS_IN_UV = 33; - - - public const int TOO_LOW_RESOLUTION = 34; - - - public const int INVISIBLE_ELEMENT_PRESENT = 40; - - - public const int VISIBLE_ELEMENT_ABSENT = 41; - - - public const int ELEMENT_SHOULD_BE_COLORED = 42; - - - public const int ELEMENT_SHOULD_BE_GRAYSCALE = 43; - - - public const int PHOTO_WHITE_IR_DONT_MATCH = 44; - - - public const int UV_DULL_PAPER_MRZ = 50; - - - public const int FALSE_LUMINESCENCE_IN_MRZ = 51; - - - public const int UV_DULL_PAPER_PHOTO = 52; - - - public const int UV_DULL_PAPER_BLANK = 53; - - - public const int UV_DULL_PAPER_ERROR = 54; - - - public const int FALSE_LUMINESCENCE_IN_BLANK = 55; - - - public const int BAD_AREA_IN_AXIAL = 60; - - - public const int FALSE_IP_PARAMETERS = 65; - - - public const int FIELD_POS_CORRECTOR_HIGHLIGHT_IR = 80; - - - public const int OVI_IR_INVISIBLE = 90; - - - public const int OVI_INSUFFICIENT_AREA = 91; - - - public const int OVI_COLOR_INVARIABLE = 92; - - - public const int OVI_BAD_COLOR_FRONT = 93; - - - public const int OVI_BAD_COLOR_SIDE = 94; - - - public const int OVI_WIDE_COLOR_SPREAD = 95; - - - public const int OVI_BAD_COLOR_PERCENT = 96; - - - public const int HOLOGRAM_ELEMENT_ABSENT = 100; - - - public const int HOLOGRAM_SIDE_TOP_IMAGES_ABSENT = 101; - - - public const int HOLOGRAM_ELEMENT_PRESENT = 102; - - - public const int PHOTO_PATTERN_INTERRUPTED = 110; - - - public const int PHOTO_PATTERN_SHIFTED = 111; - - - public const int PHOTO_PATTERN_DIFFERENT_COLORS = 112; - - - public const int PHOTO_PATTERN_IR_VISIBLE = 113; - - - public const int PHOTO_PATTERN_NOT_INTERSECT = 114; - - - public const int PHOTO_SIZE_IS_WRONG = 115; - - - public const int PHOTO_PATTERN_INVALID_COLOR = 116; - - - public const int PHOTO_PATTERN_SHIFTED_VERT = 117; - - - public const int PHOTO_PATTERN_PATTERN_NOT_FOUND = 118; - - - public const int PHOTO_PATTERN_DIFFERENT_LINES_THICKNESS = 119; - - - public const int PHOTO_IS_NOT_RECTANGLE = 120; - - - public const int PHOTO_CORNERS_IS_WRONG = 121; - - - public const int TEXT_COLOR_SHOULD_BE_BLUE = 130; - - - public const int TEXT_COLOR_SHOULD_BE_GREEN = 131; - - - public const int TEXT_COLOR_SHOULD_BE_RED = 132; - - - public const int TEXT_SHOULD_BE_BLACK = 133; - - - public const int BARCODE_WAS_READ_WITH_ERRORS = 140; - - - public const int BARCODE_DATA_FORMAT_ERROR = 141; - - - public const int BARCODE_SIZE_PARAMS_ERROR = 142; - - - public const int NOT_ALL_BARCODES_READ = 143; - - - public const int PORTRAIT_COMPARISON_PORTRAITS_DIFFER = 150; - - - public const int PORTRAIT_COMPARISON_NO_SERVICE_REPLY = 151; - - - public const int PORTRAIT_COMPARISON_SERVICE_ERROR = 152; - - - public const int PORTRAIT_COMPARISON_NOT_ENOUGH_IMAGES = 153; - - - public const int PORTRAIT_COMPARISON_NO_LIVE_PHOTO = 154; - - - public const int PORTRAIT_COMPARISON_NO_SERVICE_LICENSE = 155; - - - public const int PORTRAIT_COMPARISON_NO_PORTRAIT_DETECTED = 156; - - public const int FIELD_POS_CORRECTOR_PHOTO_REPLACED = 82; - - public const int FIELD_POS_CORRECTOR_GLARES_IN_PHOTO_AREA = 81; - - public const int HOLOGRAM_FRAMES_IS_ABSENT = 103; - - public const int HOLOGRAM_HOLO_FIELD_IS_ABSENT = 104; - - public const int DOCUMENT_IS_CANCELLING = 122; - - public const int MOBILE_IMAGES_UNSUITABLE_LIGHT_CONDITIONS = 160; - - public const int MOBILE_IMAGES_WHITE_UV_NO_DIFFERENCE = 161; - - public const int FINGERPRINTS_COMPARISON_MISMATCH = 170; - - public const int HOLO_PHOTO_FACE_NOT_DETECTED = 180; - - public const int HOLO_PHOTO_FACE_COMPARISON_FAILED = 181; - - public const int HOLO_PHOTO_GLARE_IN_CENTER_ABSENT = 182; - - public const int HOLO_PHOTO_HOLO_ELEMENT_SHAPE_ERROR = 183; - - public const int HOLO_PHOTO_ALGORITHMS_STEPS_ERROR = 184; - - public const int HOLO_PHOTO_HOLO_AREAS_NOT_LOADED = 185; - - public const int HOLO_PHOTO_FINISHED_BY_TIMEOUT = 186; - - public const int HOLO_PHOTO_DOCUMENT_OUTSIDE_FRAME = 187; - - public const int LIVENESS_DEPTH_CHECK_FAILED = 190; - - public const int LAS_INK_INVALID_LINES_FREQUENCY = 230; - - public const int LAST_DIAGNOSE_VALUE = 240; - + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum PASS for value: 1 + /// + PASS = 1, + + /// + /// Enum INVALID_INPUT_DATA for value: 2 + /// + INVALID_INPUT_DATA = 2, + + /// + /// Enum INTERNAL_ERROR for value: 3 + /// + INTERNAL_ERROR = 3, + + /// + /// Enum EXCEPTION_IN_MODULE for value: 4 + /// + EXCEPTION_IN_MODULE = 4, + + /// + /// Enum UNCERTAIN_VERIFICATION for value: 5 + /// + UNCERTAIN_VERIFICATION = 5, + + /// + /// Enum NECESSARY_IMAGE_NOT_FOUND for value: 7 + /// + NECESSARY_IMAGE_NOT_FOUND = 7, + + /// + /// Enum PHOTO_SIDES_NOT_FOUND for value: 8 + /// + PHOTO_SIDES_NOT_FOUND = 8, + + /// + /// Enum INVALID_CHECKSUM for value: 10 + /// + INVALID_CHECKSUM = 10, + + /// + /// Enum SYNTAX_ERROR for value: 11 + /// + SYNTAX_ERROR = 11, + + /// + /// Enum LOGIC_ERROR for value: 12 + /// + LOGIC_ERROR = 12, + + /// + /// Enum SOURCES_COMPARISON_ERROR for value: 13 + /// + SOURCES_COMPARISON_ERROR = 13, + + /// + /// Enum FIELDS_COMPARISON_LOGIC_ERROR for value: 14 + /// + FIELDS_COMPARISON_LOGIC_ERROR = 14, + + /// + /// Enum INVALID_FIELD_FORMAT for value: 15 + /// + INVALID_FIELD_FORMAT = 15, + + /// + /// Enum TRUE_LUMINESCENCE_ERROR for value: 20 + /// + TRUE_LUMINESCENCE_ERROR = 20, + + /// + /// Enum FALSE_LUMINESCENCE_ERROR for value: 21 + /// + FALSE_LUMINESCENCE_ERROR = 21, + + /// + /// Enum FIXED_PATTERN_ERROR for value: 22 + /// + FIXED_PATTERN_ERROR = 22, + + /// + /// Enum LOW_CONTRAST_IN_IR_LIGHT for value: 23 + /// + LOW_CONTRAST_IN_IR_LIGHT = 23, + + /// + /// Enum INCORRECT_BACKGROUND_LIGHT for value: 24 + /// + INCORRECT_BACKGROUND_LIGHT = 24, + + /// + /// Enum BACKGROUND_COMPARISON_ERROR for value: 25 + /// + BACKGROUND_COMPARISON_ERROR = 25, + + /// + /// Enum INCORRECT_TEXT_COLOR for value: 26 + /// + INCORRECT_TEXT_COLOR = 26, + + /// + /// Enum PHOTO_FALSE_LUMINESCENCE for value: 27 + /// + PHOTO_FALSE_LUMINESCENCE = 27, + + /// + /// Enum TOO_MUCH_SHIFT for value: 28 + /// + TOO_MUCH_SHIFT = 28, + + /// + /// Enum CONTACT_CHIP_TYPE_MISMATCH for value: 29 + /// + CONTACT_CHIP_TYPE_MISMATCH = 29, + + /// + /// Enum FIBERS_NOT_FOUND for value: 30 + /// + FIBERS_NOT_FOUND = 30, + + /// + /// Enum TOO_MANY_OBJECTS for value: 31 + /// + TOO_MANY_OBJECTS = 31, + + /// + /// Enum SPECKS_IN_UV for value: 33 + /// + SPECKS_IN_UV = 33, + + /// + /// Enum TOO_LOW_RESOLUTION for value: 34 + /// + TOO_LOW_RESOLUTION = 34, + + /// + /// Enum INVISIBLE_ELEMENT_PRESENT for value: 40 + /// + INVISIBLE_ELEMENT_PRESENT = 40, + + /// + /// Enum VISIBLE_ELEMENT_ABSENT for value: 41 + /// + VISIBLE_ELEMENT_ABSENT = 41, + + /// + /// Enum ELEMENT_SHOULD_BE_COLORED for value: 42 + /// + ELEMENT_SHOULD_BE_COLORED = 42, + + /// + /// Enum ELEMENT_SHOULD_BE_GRAYSCALE for value: 43 + /// + ELEMENT_SHOULD_BE_GRAYSCALE = 43, + + /// + /// Enum PHOTO_WHITE_IR_DONT_MATCH for value: 44 + /// + PHOTO_WHITE_IR_DONT_MATCH = 44, + + /// + /// Enum UV_DULL_PAPER_MRZ for value: 50 + /// + UV_DULL_PAPER_MRZ = 50, + + /// + /// Enum FALSE_LUMINESCENCE_IN_MRZ for value: 51 + /// + FALSE_LUMINESCENCE_IN_MRZ = 51, + + /// + /// Enum UV_DULL_PAPER_PHOTO for value: 52 + /// + UV_DULL_PAPER_PHOTO = 52, + + /// + /// Enum UV_DULL_PAPER_BLANK for value: 53 + /// + UV_DULL_PAPER_BLANK = 53, + + /// + /// Enum UV_DULL_PAPER_ERROR for value: 54 + /// + UV_DULL_PAPER_ERROR = 54, + + /// + /// Enum FALSE_LUMINESCENCE_IN_BLANK for value: 55 + /// + FALSE_LUMINESCENCE_IN_BLANK = 55, + + /// + /// Enum BAD_AREA_IN_AXIAL for value: 60 + /// + BAD_AREA_IN_AXIAL = 60, + + /// + /// Enum FALSE_IPI_PARAMETERS for value: 65 + /// + FALSE_IPI_PARAMETERS = 65, + + /// + /// Enum ENCRYPTED_IPI_NOT_FOUND for value: 66 + /// + ENCRYPTED_IPI_NOT_FOUND = 66, + + /// + /// Enum ENCRYPTED_IPI_DATA_DONT_MATCH for value: 67 + /// + ENCRYPTED_IPI_DATA_DONT_MATCH = 67, + + /// + /// Enum FIELD_POS_CORRECTOR_HIGHLIGHT_IR for value: 80 + /// + FIELD_POS_CORRECTOR_HIGHLIGHT_IR = 80, + + /// + /// Enum FIELD_POS_CORRECTOR_GLARES_IN_PHOTO_AREA for value: 81 + /// + FIELD_POS_CORRECTOR_GLARES_IN_PHOTO_AREA = 81, + + /// + /// Enum FIELD_POS_CORRECTOR_PHOTO_REPLACED for value: 82 + /// + FIELD_POS_CORRECTOR_PHOTO_REPLACED = 82, + + /// + /// Enum FIELD_POS_CORRECTOR_LANDMARKS_CHECK_ERROR for value: 83 + /// + FIELD_POS_CORRECTOR_LANDMARKS_CHECK_ERROR = 83, + + /// + /// Enum FIELD_POS_CORRECTOR_FACE_PRESENCE_CHECK_ERROR for value: 84 + /// + FIELD_POS_CORRECTOR_FACE_PRESENCE_CHECK_ERROR = 84, + + /// + /// Enum FIELD_POS_CORRECTOR_FACE_ABSENCE_CHECK_ERROR for value: 85 + /// + FIELD_POS_CORRECTOR_FACE_ABSENCE_CHECK_ERROR = 85, + + /// + /// Enum FIELD_POS_CORRECTOR_INCORRECT_HEAD_POSITION for value: 86 + /// + FIELD_POS_CORRECTOR_INCORRECT_HEAD_POSITION = 86, + + /// + /// Enum OVI_IR_INVISIBLE for value: 90 + /// + OVI_IR_INVISIBLE = 90, + + /// + /// Enum OVI_INSUFFICIENT_AREA for value: 91 + /// + OVI_INSUFFICIENT_AREA = 91, + + /// + /// Enum OVI_COLOR_INVARIABLE for value: 92 + /// + OVI_COLOR_INVARIABLE = 92, + + /// + /// Enum OVI_BAD_COLOR_FRONT for value: 93 + /// + OVI_BAD_COLOR_FRONT = 93, + + /// + /// Enum OVI_BAD_COLOR_SIDE for value: 94 + /// + OVI_BAD_COLOR_SIDE = 94, + + /// + /// Enum OVI_WIDE_COLOR_SPREAD for value: 95 + /// + OVI_WIDE_COLOR_SPREAD = 95, + + /// + /// Enum OVI_BAD_COLOR_PERCENT for value: 96 + /// + OVI_BAD_COLOR_PERCENT = 96, + + /// + /// Enum HOLOGRAM_ELEMENT_ABSENT for value: 100 + /// + HOLOGRAM_ELEMENT_ABSENT = 100, + + /// + /// Enum HOLOGRAM_SIDE_TOP_IMAGES_ABSENT for value: 101 + /// + HOLOGRAM_SIDE_TOP_IMAGES_ABSENT = 101, + + /// + /// Enum HOLOGRAM_ELEMENT_PRESENT for value: 102 + /// + HOLOGRAM_ELEMENT_PRESENT = 102, + + /// + /// Enum HOLOGRAM_FRAMES_IS_ABSENT for value: 103 + /// + HOLOGRAM_FRAMES_IS_ABSENT = 103, + + /// + /// Enum HOLOGRAM_HOLO_FIELD_IS_ABSENT for value: 104 + /// + HOLOGRAM_HOLO_FIELD_IS_ABSENT = 104, + + /// + /// Enum PHOTO_PATTERN_INTERRUPTED for value: 110 + /// + PHOTO_PATTERN_INTERRUPTED = 110, + + /// + /// Enum PHOTO_PATTERN_SHIFTED for value: 111 + /// + PHOTO_PATTERN_SHIFTED = 111, + + /// + /// Enum PHOTO_PATTERN_DIFFERENT_COLORS for value: 112 + /// + PHOTO_PATTERN_DIFFERENT_COLORS = 112, + + /// + /// Enum PHOTO_PATTERN_IR_VISIBLE for value: 113 + /// + PHOTO_PATTERN_IR_VISIBLE = 113, + + /// + /// Enum PHOTO_PATTERN_NOT_INTERSECT for value: 114 + /// + PHOTO_PATTERN_NOT_INTERSECT = 114, + + /// + /// Enum PHOTO_SIZE_IS_WRONG for value: 115 + /// + PHOTO_SIZE_IS_WRONG = 115, + + /// + /// Enum PHOTO_PATTERN_INVALID_COLOR for value: 116 + /// + PHOTO_PATTERN_INVALID_COLOR = 116, + + /// + /// Enum PHOTO_PATTERN_SHIFTED_VERT for value: 117 + /// + PHOTO_PATTERN_SHIFTED_VERT = 117, + + /// + /// Enum PHOTO_PATTERN_PATTERN_NOT_FOUND for value: 118 + /// + PHOTO_PATTERN_PATTERN_NOT_FOUND = 118, + + /// + /// Enum PHOTO_PATTERN_DIFFERENT_LINES_THICKNESS for value: 119 + /// + PHOTO_PATTERN_DIFFERENT_LINES_THICKNESS = 119, + + /// + /// Enum PHOTO_IS_NOT_RECTANGLE for value: 120 + /// + PHOTO_IS_NOT_RECTANGLE = 120, + + /// + /// Enum PHOTO_CORNERS_IS_WRONG for value: 121 + /// + PHOTO_CORNERS_IS_WRONG = 121, + + /// + /// Enum DOCUMENT_IS_CANCELLING for value: 122 + /// + DOCUMENT_IS_CANCELLING = 122, + + /// + /// Enum TEXT_COLOR_SHOULD_BE_BLUE for value: 130 + /// + TEXT_COLOR_SHOULD_BE_BLUE = 130, + + /// + /// Enum TEXT_COLOR_SHOULD_BE_GREEN for value: 131 + /// + TEXT_COLOR_SHOULD_BE_GREEN = 131, + + /// + /// Enum TEXT_COLOR_SHOULD_BE_RED for value: 132 + /// + TEXT_COLOR_SHOULD_BE_RED = 132, + + /// + /// Enum TEXT_SHOULD_BE_BLACK for value: 133 + /// + TEXT_SHOULD_BE_BLACK = 133, + + /// + /// Enum BARCODE_WAS_READ_WITH_ERRORS for value: 140 + /// + BARCODE_WAS_READ_WITH_ERRORS = 140, + + /// + /// Enum BARCODE_DATA_FORMAT_ERROR for value: 141 + /// + BARCODE_DATA_FORMAT_ERROR = 141, + + /// + /// Enum BARCODE_SIZE_PARAMS_ERROR for value: 142 + /// + BARCODE_SIZE_PARAMS_ERROR = 142, + + /// + /// Enum NOT_ALL_BARCODES_READ for value: 143 + /// + NOT_ALL_BARCODES_READ = 143, + + /// + /// Enum GLARES_IN_BARCODE_AREA for value: 144 + /// + GLARES_IN_BARCODE_AREA = 144, + + /// + /// Enum NO_CERTIFICATE_FOR_DIGITAL_SIGNATURE_CHECK for value: 145 + /// + NO_CERTIFICATE_FOR_DIGITAL_SIGNATURE_CHECK = 145, + + /// + /// Enum PORTRAIT_COMPARISON_PORTRAITS_DIFFER for value: 150 + /// + PORTRAIT_COMPARISON_PORTRAITS_DIFFER = 150, + + /// + /// Enum PORTRAIT_COMPARISON_NO_SERVICE_REPLY for value: 151 + /// + PORTRAIT_COMPARISON_NO_SERVICE_REPLY = 151, + + /// + /// Enum PORTRAIT_COMPARISON_SERVICE_ERROR for value: 152 + /// + PORTRAIT_COMPARISON_SERVICE_ERROR = 152, + + /// + /// Enum PORTRAIT_COMPARISON_NOT_ENOUGH_IMAGES for value: 153 + /// + PORTRAIT_COMPARISON_NOT_ENOUGH_IMAGES = 153, + + /// + /// Enum PORTRAIT_COMPARISON_NO_LIVE_PHOTO for value: 154 + /// + PORTRAIT_COMPARISON_NO_LIVE_PHOTO = 154, + + /// + /// Enum PORTRAIT_COMPARISON_NO_SERVICE_LICENSE for value: 155 + /// + PORTRAIT_COMPARISON_NO_SERVICE_LICENSE = 155, + + /// + /// Enum PORTRAIT_COMPARISON_NO_PORTRAIT_DETECTED for value: 156 + /// + PORTRAIT_COMPARISON_NO_PORTRAIT_DETECTED = 156, + + /// + /// Enum MOBILE_IMAGES_UNSUITABLE_LIGHT_CONDITIONS for value: 160 + /// + MOBILE_IMAGES_UNSUITABLE_LIGHT_CONDITIONS = 160, + + /// + /// Enum MOBILE_IMAGES_WHITE_UV_NO_DIFFERENCE for value: 161 + /// + MOBILE_IMAGES_WHITE_UV_NO_DIFFERENCE = 161, + + /// + /// Enum FINGERPRINTS_COMPARISON_MISMATCH for value: 170 + /// + FINGERPRINTS_COMPARISON_MISMATCH = 170, + + /// + /// Enum HOLO_PHOTO_FACE_NOT_DETECTED for value: 180 + /// + HOLO_PHOTO_FACE_NOT_DETECTED = 180, + + /// + /// Enum HOLO_PHOTO_FACE_COMPARISON_FAILED for value: 181 + /// + HOLO_PHOTO_FACE_COMPARISON_FAILED = 181, + + /// + /// Enum HOLO_PHOTO_GLARE_IN_CENTER_ABSENT for value: 182 + /// + HOLO_PHOTO_GLARE_IN_CENTER_ABSENT = 182, + + /// + /// Enum HOLO_PHOTO_HOLO_ELEMENT_SHAPE_ERROR for value: 183 + /// + HOLO_PHOTO_HOLO_ELEMENT_SHAPE_ERROR = 183, + + /// + /// Enum HOLO_PHOTO_ALGORITHMS_STEPS_ERROR for value: 184 + /// + HOLO_PHOTO_ALGORITHMS_STEPS_ERROR = 184, + + /// + /// Enum HOLO_PHOTO_HOLO_AREAS_NOT_LOADED for value: 185 + /// + HOLO_PHOTO_HOLO_AREAS_NOT_LOADED = 185, + + /// + /// Enum HOLO_PHOTO_FINISHED_BY_TIMEOUT for value: 186 + /// + HOLO_PHOTO_FINISHED_BY_TIMEOUT = 186, + + /// + /// Enum HOLO_PHOTO_DOCUMENT_OUTSIDE_FRAME for value: 187 + /// + HOLO_PHOTO_DOCUMENT_OUTSIDE_FRAME = 187, + + /// + /// Enum LIVENESS_DEPTH_CHECK_FAILED for value: 190 + /// + LIVENESS_DEPTH_CHECK_FAILED = 190, + + /// + /// Enum MRZ_QUALITY_WRONG_SYMBOL_POSITION for value: 200 + /// + MRZ_QUALITY_WRONG_SYMBOL_POSITION = 200, + + /// + /// Enum MRZ_QUALITY_WRONG_BACKGROUND for value: 201 + /// + MRZ_QUALITY_WRONG_BACKGROUND = 201, + + /// + /// Enum MRZ_QUALITY_WRONG_MRZ_WIDTH for value: 202 + /// + MRZ_QUALITY_WRONG_MRZ_WIDTH = 202, + + /// + /// Enum MRZ_QUALITY_WRONG_MRZ_HEIGHT for value: 203 + /// + MRZ_QUALITY_WRONG_MRZ_HEIGHT = 203, + + /// + /// Enum MRZ_QUALITY_WRONG_LINE_POSITION for value: 204 + /// + MRZ_QUALITY_WRONG_LINE_POSITION = 204, + + /// + /// Enum MRZ_QUALITY_WRONG_FONT_TYPE for value: 205 + /// + MRZ_QUALITY_WRONG_FONT_TYPE = 205, + + /// + /// Enum OCR_QUALITY_TEXT_POSITION for value: 220 + /// + OCR_QUALITY_TEXT_POSITION = 220, + + /// + /// Enum OCR_QUALITY_INVALID_FONT for value: 221 + /// + OCR_QUALITY_INVALID_FONT = 221, + + /// + /// Enum OCR_QUALITY_INVALID_BACKGROUND for value: 222 + /// + OCR_QUALITY_INVALID_BACKGROUND = 222, + + /// + /// Enum LASINK_INVALID_LINES_FREQUENCY for value: 230 + /// + LASINK_INVALID_LINES_FREQUENCY = 230, + + /// + /// Enum DOC_LIVENESS_DOCUMENT_NOT_LIVE for value: 238 + /// + DOC_LIVENESS_DOCUMENT_NOT_LIVE = 238, + + /// + /// Enum DOC_LIVENESS_BLACK_AND_WHITE_COPY_DETECTED for value: 239 + /// + DOC_LIVENESS_BLACK_AND_WHITE_COPY_DETECTED = 239, + + /// + /// Enum DOC_LIVENESS_ELECTRONIC_DEVICE_DETECTED for value: 240 + /// + DOC_LIVENESS_ELECTRONIC_DEVICE_DETECTED = 240, + + /// + /// Enum DOC_LIVENESS_INVALID_BARCODE_BACKGROUND for value: 241 + /// + DOC_LIVENESS_INVALID_BARCODE_BACKGROUND = 241, + + /// + /// Enum CHD_ICAO_IDB_BASE32_ERROR for value: 243 + /// + CHD_ICAO_IDB_BASE32_ERROR = 243, + + /// + /// Enum CHD_ICAO_IDB_ZIPPED_ERROR for value: 244 + /// + CHD_ICAO_IDB_ZIPPED_ERROR = 244, + + /// + /// Enum CHD_ICAO_IDB_MESSAGE_ZONE_EMPTY for value: 245 + /// + CHD_ICAO_IDB_MESSAGE_ZONE_EMPTY = 245, + + /// + /// Enum CHD_ICAO_IDB_SIGNATURE_MUST_BE_PRESENT for value: 246 + /// + CHD_ICAO_IDB_SIGNATURE_MUST_BE_PRESENT = 246, + + /// + /// Enum CHD_ICAO_IDB_SIGNATURE_MUST_NOT_BE_PRESENT for value: 247 + /// + CHD_ICAO_IDB_SIGNATURE_MUST_NOT_BE_PRESENT = 247, + + /// + /// Enum CHD_ICAO_IDB_CERTIFICATE_MUST_NOT_BE_PRESENT for value: 248 + /// + CHD_ICAO_IDB_CERTIFICATE_MUST_NOT_BE_PRESENT = 248, + + /// + /// Enum CHD_INCORRECT_OBJECT_COLOR for value: 250 + /// + CHD_INCORRECT_OBJECT_COLOR = 250 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/CheckResult.cs b/src/Regula.DocumentReader.WebClient/Model/CheckResult.cs index 7c34dda..897c987 100644 --- a/src/Regula.DocumentReader.WebClient/Model/CheckResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/CheckResult.cs @@ -1,41 +1,51 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// 0 - result is negative; 1 - result is positive; 2 - сheck was not performed - public class CheckResult + /// + /// 0 - result is negative; 1 - result is positive; 2 - сheck was not performed + public enum CheckResult { + /// + /// Enum ERROR for value: 0 + /// + ERROR = 0, - /** Check was performed and result is NEGATIVE */ - public const int ERROR = 0; - - /** Check was performed and result is POSITIVE */ - public const int OK = 1; - - /** Check was NOT PERFORMED */ - public const int WAS_NOT_DONE = 2; + /// + /// Enum OK for value: 1 + /// + OK = 1, + /// + /// Enum WAS_NOT_DONE for value: 2 + /// + WAS_NOT_DONE = 2 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentType.cs b/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentType.cs index a748d3a..92c416d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentType.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,116 +29,163 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains information about one document type candidate /// - [DataContract] - public partial class ChosenDocumentType : IEquatable, IValidatableObject + [DataContract(Name = "ChosenDocumentType")] + public partial class ChosenDocumentType : IValidatableObject { + + /// + /// Gets or Sets RFIDPresence + /// + [DataMember(Name = "RFID_Presence", IsRequired = true, EmitDefaultValue = true)] + public RfidLocation RFIDPresence { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ChosenDocumentType() { } /// /// Initializes a new instance of the class. /// - /// Document name. - /// Unique document type template identifier (Regula's internal numeric code). - /// A measure of the likelihood of correct recognition in the analysis of this type of document. - /// rFIDPresence. - /// fDSIDList. - /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document. - /// Set of authentication options provided for this type of document (combination of Authenticity enum). - /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme. - /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity. - public ChosenDocumentType(string documentName = default(string), int iD = default(int), decimal p = default(decimal), int rFIDPresence = default(int), FDSIDList fDSIDList = default(FDSIDList), int necessaryLights = default(int), int checkAuthenticity = default(int), int uVExp = default(int), int authenticityNecessaryLights = default(int)) + /// Document name (required). + /// Unique document type template identifier (Regula's internal numeric code) (required). + /// A measure of the likelihood of correct recognition in the analysis of this type of document (required). + /// true if the document of the given type is rotated by 180 degrees (required). + /// rFIDPresence (required). + /// fDSIDList (required). + /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document (required). + /// Set of authentication options provided for this type of document (combination of Authenticity enum) (required). + /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme (required). + /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity (required). + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme (required). + /// rotationAngle. + public ChosenDocumentType(string documentName = default(string), int iD = default(int), decimal p = default(decimal), int rotated180 = default(int), RfidLocation rFIDPresence = default(RfidLocation), FDSIDList fDSIDList = default(FDSIDList), int necessaryLights = default(int), int checkAuthenticity = default(int), int uVExp = default(int), int authenticityNecessaryLights = default(int), decimal oVIExp = default(decimal), int rotationAngle = default(int)) { + // to ensure "documentName" is required (not null) + if (documentName == null) + { + throw new ArgumentNullException("documentName is a required property for ChosenDocumentType and cannot be null"); + } this.DocumentName = documentName; this.ID = iD; this.P = p; + this.Rotated180 = rotated180; this.RFIDPresence = rFIDPresence; + // to ensure "fDSIDList" is required (not null) + if (fDSIDList == null) + { + throw new ArgumentNullException("fDSIDList is a required property for ChosenDocumentType and cannot be null"); + } this.FDSIDList = fDSIDList; this.NecessaryLights = necessaryLights; this.CheckAuthenticity = checkAuthenticity; this.UVExp = uVExp; this.AuthenticityNecessaryLights = authenticityNecessaryLights; + this.OVIExp = oVIExp; + this.RotationAngle = rotationAngle; } - + /// /// Document name /// /// Document name - [DataMember(Name="DocumentName", EmitDefaultValue=false)] + [DataMember(Name = "DocumentName", IsRequired = true, EmitDefaultValue = true)] public string DocumentName { get; set; } /// /// Unique document type template identifier (Regula's internal numeric code) /// /// Unique document type template identifier (Regula's internal numeric code) - [DataMember(Name="ID", EmitDefaultValue=false)] + [DataMember(Name = "ID", IsRequired = true, EmitDefaultValue = true)] public int ID { get; set; } /// /// A measure of the likelihood of correct recognition in the analysis of this type of document /// /// A measure of the likelihood of correct recognition in the analysis of this type of document - [DataMember(Name="P", EmitDefaultValue=false)] + /* + 0.9913095831871032 + */ + [DataMember(Name = "P", IsRequired = true, EmitDefaultValue = true)] public decimal P { get; set; } /// - /// Gets or Sets RFIDPresence + /// true if the document of the given type is rotated by 180 degrees /// - [DataMember(Name="RFID_Presence", EmitDefaultValue=false)] - public int RFIDPresence { get; set; } + /// true if the document of the given type is rotated by 180 degrees + [DataMember(Name = "Rotated180", IsRequired = true, EmitDefaultValue = true)] + public int Rotated180 { get; set; } /// /// Gets or Sets FDSIDList /// - [DataMember(Name="FDSIDList", EmitDefaultValue=false)] + [DataMember(Name = "FDSIDList", IsRequired = true, EmitDefaultValue = true)] public FDSIDList FDSIDList { get; set; } /// /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document /// /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document - [DataMember(Name="NecessaryLights", EmitDefaultValue=false)] + [DataMember(Name = "NecessaryLights", IsRequired = true, EmitDefaultValue = true)] public int NecessaryLights { get; set; } /// /// Set of authentication options provided for this type of document (combination of Authenticity enum) /// /// Set of authentication options provided for this type of document (combination of Authenticity enum) - [DataMember(Name="CheckAuthenticity", EmitDefaultValue=false)] + [DataMember(Name = "CheckAuthenticity", IsRequired = true, EmitDefaultValue = true)] public int CheckAuthenticity { get; set; } /// /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme /// /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme - [DataMember(Name="UVExp", EmitDefaultValue=false)] + [DataMember(Name = "UVExp", IsRequired = true, EmitDefaultValue = true)] public int UVExp { get; set; } /// /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity /// /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity - [DataMember(Name="AuthenticityNecessaryLights", EmitDefaultValue=false)] + [DataMember(Name = "AuthenticityNecessaryLights", IsRequired = true, EmitDefaultValue = true)] public int AuthenticityNecessaryLights { get; set; } + /// + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme + /// + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme + [DataMember(Name = "OVIExp", IsRequired = true, EmitDefaultValue = true)] + public decimal OVIExp { get; set; } + + /// + /// Gets or Sets RotationAngle + /// + [DataMember(Name = "RotationAngle", EmitDefaultValue = false)] + public int? RotationAngle { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ChosenDocumentType {\n"); sb.Append(" DocumentName: ").Append(DocumentName).Append("\n"); sb.Append(" ID: ").Append(ID).Append("\n"); sb.Append(" P: ").Append(P).Append("\n"); + sb.Append(" Rotated180: ").Append(Rotated180).Append("\n"); sb.Append(" RFIDPresence: ").Append(RFIDPresence).Append("\n"); sb.Append(" FDSIDList: ").Append(FDSIDList).Append("\n"); sb.Append(" NecessaryLights: ").Append(NecessaryLights).Append("\n"); sb.Append(" CheckAuthenticity: ").Append(CheckAuthenticity).Append("\n"); sb.Append(" UVExp: ").Append(UVExp).Append("\n"); sb.Append(" AuthenticityNecessaryLights: ").Append(AuthenticityNecessaryLights).Append("\n"); + sb.Append(" OVIExp: ").Append(OVIExp).Append("\n"); + sb.Append(" RotationAngle: ").Append(RotationAngle).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -146,124 +195,23 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ChosenDocumentType); - } - - /// - /// Returns true if ChosenDocumentType instances are equal - /// - /// Instance of ChosenDocumentType to be compared - /// Boolean - public bool Equals(ChosenDocumentType input) - { - if (input == null) - return false; - - return - ( - this.DocumentName == input.DocumentName || - (this.DocumentName != null && - this.DocumentName.Equals(input.DocumentName)) - ) && - ( - this.ID == input.ID || - (this.ID != null && - this.ID.Equals(input.ID)) - ) && - ( - this.P == input.P || - (this.P != null && - this.P.Equals(input.P)) - ) && - ( - this.RFIDPresence == input.RFIDPresence || - (this.RFIDPresence != null && - this.RFIDPresence.Equals(input.RFIDPresence)) - ) && - ( - this.FDSIDList == input.FDSIDList || - (this.FDSIDList != null && - this.FDSIDList.Equals(input.FDSIDList)) - ) && - ( - this.NecessaryLights == input.NecessaryLights || - (this.NecessaryLights != null && - this.NecessaryLights.Equals(input.NecessaryLights)) - ) && - ( - this.CheckAuthenticity == input.CheckAuthenticity || - (this.CheckAuthenticity != null && - this.CheckAuthenticity.Equals(input.CheckAuthenticity)) - ) && - ( - this.UVExp == input.UVExp || - (this.UVExp != null && - this.UVExp.Equals(input.UVExp)) - ) && - ( - this.AuthenticityNecessaryLights == input.AuthenticityNecessaryLights || - (this.AuthenticityNecessaryLights != null && - this.AuthenticityNecessaryLights.Equals(input.AuthenticityNecessaryLights)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.DocumentName != null) - hashCode = hashCode * 59 + this.DocumentName.GetHashCode(); - if (this.ID != null) - hashCode = hashCode * 59 + this.ID.GetHashCode(); - if (this.P != null) - hashCode = hashCode * 59 + this.P.GetHashCode(); - if (this.RFIDPresence != null) - hashCode = hashCode * 59 + this.RFIDPresence.GetHashCode(); - if (this.FDSIDList != null) - hashCode = hashCode * 59 + this.FDSIDList.GetHashCode(); - if (this.NecessaryLights != null) - hashCode = hashCode * 59 + this.NecessaryLights.GetHashCode(); - if (this.CheckAuthenticity != null) - hashCode = hashCode * 59 + this.CheckAuthenticity.GetHashCode(); - if (this.UVExp != null) - hashCode = hashCode * 59 + this.UVExp.GetHashCode(); - if (this.AuthenticityNecessaryLights != null) - hashCode = hashCode * 59 + this.AuthenticityNecessaryLights.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - - // P (decimal) maximum - if(this.P > (decimal)1) + if (this.P > (decimal)1) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for P, must be a value less than or equal to 1.", new [] { "P" }); + yield return new ValidationResult("Invalid value for P, must be a value less than or equal to 1.", new [] { "P" }); } // P (decimal) minimum - if(this.P < (decimal)0) + if (this.P < (decimal)0) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for P, must be a value greater than or equal to 0.", new [] { "P" }); + yield return new ValidationResult("Invalid value for P, must be a value greater than or equal to 0.", new [] { "P" }); } yield break; diff --git a/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentTypeResult.cs b/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentTypeResult.cs index 5d5ce4f..19ebd9b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentTypeResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ChosenDocumentTypeResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains information about the type of document that was determined based on the analysis of the provided image /// - [DataContract] - public partial class ChosenDocumentTypeResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "ChosenDocumentTypeResult")] + public partial class ChosenDocumentTypeResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,31 +41,49 @@ protected ChosenDocumentTypeResult() { } /// /// Initializes a new instance of the class. /// - /// oneCandidate. - public ChosenDocumentTypeResult(OneCandidate oneCandidate = default(OneCandidate), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// oneCandidate (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.DOCUMENT_TYPE). + public ChosenDocumentTypeResult(OneCandidate oneCandidate = default(OneCandidate), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.DOCUMENT_TYPE) : base(bufLength, light, listIdx, pageIdx, resultType) { + // to ensure "oneCandidate" is required (not null) + if (oneCandidate == null) + { + throw new ArgumentNullException("oneCandidate is a required property for ChosenDocumentTypeResult and cannot be null"); + } this.OneCandidate = oneCandidate; } - + /// /// Gets or Sets OneCandidate /// - [DataMember(Name="OneCandidate", EmitDefaultValue=false)] + [DataMember(Name = "OneCandidate", IsRequired = true, EmitDefaultValue = true)] public OneCandidate OneCandidate { get; set; } /// /// Gets or Sets XMLBuffer /// - [DataMember(Name="XML_buffer", EmitDefaultValue=false)] - public string XMLBuffer { get; private set; } + [DataMember(Name = "XML_buffer", EmitDefaultValue = false)] + public string? XMLBuffer { get; private set; } + /// + /// Returns false as XMLBuffer should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeXMLBuffer() + { + return false; + } /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ChosenDocumentTypeResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" OneCandidate: ").Append(OneCandidate).Append("\n"); @@ -70,7 +91,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -81,53 +102,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ChosenDocumentTypeResult); - } - - /// - /// Returns true if ChosenDocumentTypeResult instances are equal - /// - /// Instance of ChosenDocumentTypeResult to be compared - /// Boolean - public bool Equals(ChosenDocumentTypeResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.OneCandidate == input.OneCandidate || - (this.OneCandidate != null && - this.OneCandidate.Equals(input.OneCandidate)) - ) && base.Equals(input) && - ( - this.XMLBuffer == input.XMLBuffer || - (this.XMLBuffer != null && - this.XMLBuffer.Equals(input.XMLBuffer)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.OneCandidate != null) - hashCode = hashCode * 59 + this.OneCandidate.GetHashCode(); - if (this.XMLBuffer != null) - hashCode = hashCode * 59 + this.XMLBuffer.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -135,9 +116,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/ContainerList.cs b/src/Regula.DocumentReader.WebClient/Model/ContainerList.cs index 43a6d85..16134c1 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ContainerList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ContainerList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// List with various objects, containing processing results /// - [DataContract] - public partial class ContainerList : IEquatable, IValidatableObject + [DataContract(Name = "ContainerList")] + public partial class ContainerList : IValidatableObject { /// /// Initializes a new instance of the class. @@ -45,27 +47,23 @@ protected ContainerList() { } // to ensure "list" is required (not null) if (list == null) { - throw new InvalidDataException("list is a required property for ContainerList and cannot be null"); - } - else - { - this.List = list; + throw new ArgumentNullException("list is a required property for ContainerList and cannot be null"); } - + this.List = list; this.Count = count; } - + /// /// Length of list (Count for items) /// /// Length of list (Count for items) - [DataMember(Name="Count", EmitDefaultValue=false)] - public int Count { get; set; } + [DataMember(Name = "Count", EmitDefaultValue = false)] + public int? Count { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=true)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } /// @@ -74,14 +72,14 @@ protected ContainerList() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ContainerList {\n"); sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -91,63 +89,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ContainerList); - } - - /// - /// Returns true if ContainerList instances are equal - /// - /// Instance of ContainerList to be compared - /// Boolean - public bool Equals(ContainerList input) - { - if (input == null) - return false; - - return - ( - this.Count == input.Count || - (this.Count != null && - this.Count.Equals(input.Count)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Count != null) - hashCode = hashCode * 59 + this.Count.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ContainerListListInner.cs b/src/Regula.DocumentReader.WebClient/Model/ContainerListListInner.cs new file mode 100644 index 0000000..6c59af3 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ContainerListListInner.cs @@ -0,0 +1,1228 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; +using System.Reflection; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ContainerListListInner + /// + [JsonConverter(typeof(ContainerListListInnerJsonConverter))] + [DataContract(Name = "ContainerList_List_inner")] + public partial class ContainerListListInner : AbstractOpenAPISchema, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of StatusResult. + public ContainerListListInner(StatusResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of TextResult. + public ContainerListListInner(TextResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DocumentImageResult. + public ContainerListListInner(DocumentImageResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ImagesResult. + public ContainerListListInner(ImagesResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ChosenDocumentTypeResult. + public ContainerListListInner(ChosenDocumentTypeResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DocumentTypesCandidatesResult. + public ContainerListListInner(DocumentTypesCandidatesResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of TextDataResult. + public ContainerListListInner(TextDataResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of GraphicsResult. + public ContainerListListInner(GraphicsResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of LexicalAnalysisResult. + public ContainerListListInner(LexicalAnalysisResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of AuthenticityResult. + public ContainerListListInner(AuthenticityResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ImageQualityResult. + public ContainerListListInner(ImageQualityResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DocumentPositionResult. + public ContainerListListInner(DocumentPositionResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DocBarCodeInfo. + public ContainerListListInner(DocBarCodeInfo actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of LicenseResult. + public ContainerListListInner(LicenseResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of EncryptedRCLResult. + public ContainerListListInner(EncryptedRCLResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DocumentBinaryInfoResult. + public ContainerListListInner(DocumentBinaryInfoResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ByteArrayResult. + public ContainerListListInner(ByteArrayResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of FaceDetectionResult. + public ContainerListListInner(FaceDetectionResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of MRZDetectorResult. + public ContainerListListInner(MRZDetectorResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of MRZPositionResult. + public ContainerListListInner(MRZPositionResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of MRZTestQualityResult. + public ContainerListListInner(MRZTestQualityResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of RFIDGraphicsInfoResult. + public ContainerListListInner(RFIDGraphicsInfoResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of RFIDTextDataResult. + public ContainerListListInner(RFIDTextDataResult actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(AuthenticityResult) || value is AuthenticityResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ByteArrayResult) || value is ByteArrayResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ChosenDocumentTypeResult) || value is ChosenDocumentTypeResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DocBarCodeInfo) || value is DocBarCodeInfo) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DocumentBinaryInfoResult) || value is DocumentBinaryInfoResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DocumentImageResult) || value is DocumentImageResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DocumentPositionResult) || value is DocumentPositionResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DocumentTypesCandidatesResult) || value is DocumentTypesCandidatesResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(EncryptedRCLResult) || value is EncryptedRCLResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(FaceDetectionResult) || value is FaceDetectionResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(GraphicsResult) || value is GraphicsResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ImageQualityResult) || value is ImageQualityResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ImagesResult) || value is ImagesResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(LexicalAnalysisResult) || value is LexicalAnalysisResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(LicenseResult) || value is LicenseResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(MRZDetectorResult) || value is MRZDetectorResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(MRZPositionResult) || value is MRZPositionResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(MRZTestQualityResult) || value is MRZTestQualityResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(RFIDGraphicsInfoResult) || value is RFIDGraphicsInfoResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(RFIDTextDataResult) || value is RFIDTextDataResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(StatusResult) || value is StatusResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(TextDataResult) || value is TextDataResult) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(TextResult) || value is TextResult) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: AuthenticityResult, ByteArrayResult, ChosenDocumentTypeResult, DocBarCodeInfo, DocumentBinaryInfoResult, DocumentImageResult, DocumentPositionResult, DocumentTypesCandidatesResult, EncryptedRCLResult, FaceDetectionResult, GraphicsResult, ImageQualityResult, ImagesResult, LexicalAnalysisResult, LicenseResult, MRZDetectorResult, MRZPositionResult, MRZTestQualityResult, RFIDGraphicsInfoResult, RFIDTextDataResult, StatusResult, TextDataResult, TextResult"); + } + } + } + + /// + /// Get the actual instance of `StatusResult`. If the actual instance is not `StatusResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of StatusResult + public StatusResult GetStatusResult() + { + return (StatusResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `TextResult`. If the actual instance is not `TextResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of TextResult + public TextResult GetTextResult() + { + return (TextResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `DocumentImageResult`. If the actual instance is not `DocumentImageResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of DocumentImageResult + public DocumentImageResult GetDocumentImageResult() + { + return (DocumentImageResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `ImagesResult`. If the actual instance is not `ImagesResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of ImagesResult + public ImagesResult GetImagesResult() + { + return (ImagesResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `ChosenDocumentTypeResult`. If the actual instance is not `ChosenDocumentTypeResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of ChosenDocumentTypeResult + public ChosenDocumentTypeResult GetChosenDocumentTypeResult() + { + return (ChosenDocumentTypeResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `DocumentTypesCandidatesResult`. If the actual instance is not `DocumentTypesCandidatesResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of DocumentTypesCandidatesResult + public DocumentTypesCandidatesResult GetDocumentTypesCandidatesResult() + { + return (DocumentTypesCandidatesResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `TextDataResult`. If the actual instance is not `TextDataResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of TextDataResult + public TextDataResult GetTextDataResult() + { + return (TextDataResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `GraphicsResult`. If the actual instance is not `GraphicsResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of GraphicsResult + public GraphicsResult GetGraphicsResult() + { + return (GraphicsResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `LexicalAnalysisResult`. If the actual instance is not `LexicalAnalysisResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of LexicalAnalysisResult + public LexicalAnalysisResult GetLexicalAnalysisResult() + { + return (LexicalAnalysisResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `AuthenticityResult`. If the actual instance is not `AuthenticityResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of AuthenticityResult + public AuthenticityResult GetAuthenticityResult() + { + return (AuthenticityResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `ImageQualityResult`. If the actual instance is not `ImageQualityResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of ImageQualityResult + public ImageQualityResult GetImageQualityResult() + { + return (ImageQualityResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `DocumentPositionResult`. If the actual instance is not `DocumentPositionResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of DocumentPositionResult + public DocumentPositionResult GetDocumentPositionResult() + { + return (DocumentPositionResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `DocBarCodeInfo`. If the actual instance is not `DocBarCodeInfo`, + /// the InvalidClassException will be thrown + /// + /// An instance of DocBarCodeInfo + public DocBarCodeInfo GetDocBarCodeInfo() + { + return (DocBarCodeInfo)this.ActualInstance; + } + + /// + /// Get the actual instance of `LicenseResult`. If the actual instance is not `LicenseResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of LicenseResult + public LicenseResult GetLicenseResult() + { + return (LicenseResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `EncryptedRCLResult`. If the actual instance is not `EncryptedRCLResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of EncryptedRCLResult + public EncryptedRCLResult GetEncryptedRCLResult() + { + return (EncryptedRCLResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `DocumentBinaryInfoResult`. If the actual instance is not `DocumentBinaryInfoResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of DocumentBinaryInfoResult + public DocumentBinaryInfoResult GetDocumentBinaryInfoResult() + { + return (DocumentBinaryInfoResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `ByteArrayResult`. If the actual instance is not `ByteArrayResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of ByteArrayResult + public ByteArrayResult GetByteArrayResult() + { + return (ByteArrayResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `FaceDetectionResult`. If the actual instance is not `FaceDetectionResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of FaceDetectionResult + public FaceDetectionResult GetFaceDetectionResult() + { + return (FaceDetectionResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `MRZDetectorResult`. If the actual instance is not `MRZDetectorResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of MRZDetectorResult + public MRZDetectorResult GetMRZDetectorResult() + { + return (MRZDetectorResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `MRZPositionResult`. If the actual instance is not `MRZPositionResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of MRZPositionResult + public MRZPositionResult GetMRZPositionResult() + { + return (MRZPositionResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `MRZTestQualityResult`. If the actual instance is not `MRZTestQualityResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of MRZTestQualityResult + public MRZTestQualityResult GetMRZTestQualityResult() + { + return (MRZTestQualityResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `RFIDGraphicsInfoResult`. If the actual instance is not `RFIDGraphicsInfoResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of RFIDGraphicsInfoResult + public RFIDGraphicsInfoResult GetRFIDGraphicsInfoResult() + { + return (RFIDGraphicsInfoResult)this.ActualInstance; + } + + /// + /// Get the actual instance of `RFIDTextDataResult`. If the actual instance is not `RFIDTextDataResult`, + /// the InvalidClassException will be thrown + /// + /// An instance of RFIDTextDataResult + public RFIDTextDataResult GetRFIDTextDataResult() + { + return (RFIDTextDataResult)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ContainerListListInner {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, ContainerListListInner.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of ContainerListListInner + /// + /// JSON string + /// An instance of ContainerListListInner + public static ContainerListListInner FromJson(string jsonString) + { + ContainerListListInner newContainerListListInner = null; + + if (string.IsNullOrEmpty(jsonString)) + { + return newContainerListListInner; + } + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(AuthenticityResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("AuthenticityResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AuthenticityResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ByteArrayResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ByteArrayResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ByteArrayResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ChosenDocumentTypeResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ChosenDocumentTypeResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ChosenDocumentTypeResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DocBarCodeInfo).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DocBarCodeInfo"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DocBarCodeInfo: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DocumentBinaryInfoResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DocumentBinaryInfoResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DocumentBinaryInfoResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DocumentImageResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DocumentImageResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DocumentImageResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DocumentPositionResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DocumentPositionResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DocumentPositionResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DocumentTypesCandidatesResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DocumentTypesCandidatesResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DocumentTypesCandidatesResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(EncryptedRCLResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("EncryptedRCLResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EncryptedRCLResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(FaceDetectionResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("FaceDetectionResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into FaceDetectionResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(GraphicsResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("GraphicsResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into GraphicsResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ImageQualityResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ImageQualityResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ImageQualityResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ImagesResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ImagesResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ImagesResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(LexicalAnalysisResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("LexicalAnalysisResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into LexicalAnalysisResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(LicenseResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("LicenseResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into LicenseResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(MRZDetectorResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("MRZDetectorResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into MRZDetectorResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(MRZPositionResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("MRZPositionResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into MRZPositionResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(MRZTestQualityResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("MRZTestQualityResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into MRZTestQualityResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(RFIDGraphicsInfoResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("RFIDGraphicsInfoResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into RFIDGraphicsInfoResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(RFIDTextDataResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("RFIDTextDataResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into RFIDTextDataResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(StatusResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("StatusResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into StatusResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(TextDataResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("TextDataResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into TextDataResult: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(TextResult).GetProperty("AdditionalProperties") == null) + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.SerializerSettings)); + } + else + { + newContainerListListInner = new ContainerListListInner(JsonConvert.DeserializeObject(jsonString, ContainerListListInner.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("TextResult"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into TextResult: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + String.Join(",", matchedTypes)); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newContainerListListInner; + } + + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for ContainerListListInner + /// + public class ContainerListListInnerJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((string)(typeof(ContainerListListInner).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + switch(reader.TokenType) + { + case JsonToken.StartObject: + return ContainerListListInner.FromJson(JObject.Load(reader).ToString(Formatting.None)); + case JsonToken.StartArray: + return ContainerListListInner.FromJson(JArray.Load(reader).ToString(Formatting.None)); + default: + return null; + } + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/Critical.cs b/src/Regula.DocumentReader.WebClient/Model/Critical.cs index 0a2dcba..a05699d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Critical.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Critical.cs @@ -1,38 +1,46 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Enumeration contains identifiers determining the criticality of the security element - public class Critical + /// + /// Enumeration contains identifiers determining the criticality of the security element + public enum Critical { + /// + /// Enum NOT_CRITICAL for value: 0 + /// + NOT_CRITICAL = 0, - /** Security element may be absent in a valid document */ - public const int NOT_CRITICAL = 0; - - /** Security element must be present in a valid document */ - public const int CRITICAL = 1; - + /// + /// Enum CRITICAL for value: 1 + /// + CRITICAL = 1 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/CrossSourceValueComparison.cs b/src/Regula.DocumentReader.WebClient/Model/CrossSourceValueComparison.cs index 882791c..a306bf9 100644 --- a/src/Regula.DocumentReader.WebClient/Model/CrossSourceValueComparison.cs +++ b/src/Regula.DocumentReader.WebClient/Model/CrossSourceValueComparison.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,27 @@ namespace Regula.DocumentReader.WebClient.Model /// /// CrossSourceValueComparison /// - [DataContract] - public partial class CrossSourceValueComparison : IEquatable, IValidatableObject + [DataContract(Name = "CrossSourceValueComparison")] + public partial class CrossSourceValueComparison : IValidatableObject { + + /// + /// Gets or Sets SourceLeft + /// + [DataMember(Name = "sourceLeft", IsRequired = true, EmitDefaultValue = true)] + public Source SourceLeft { get; set; } + + /// + /// Gets or Sets SourceRight + /// + [DataMember(Name = "sourceRight", IsRequired = true, EmitDefaultValue = true)] + public Source SourceRight { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Status { get; set; } /// /// Initializes a new instance of the class. /// @@ -41,57 +61,12 @@ protected CrossSourceValueComparison() { } /// sourceLeft (required). /// sourceRight (required). /// status (required). - public CrossSourceValueComparison(string sourceLeft = default(string), string sourceRight = default(string), int status = default(int)) + public CrossSourceValueComparison(Source sourceLeft = default(Source), Source sourceRight = default(Source), CheckResult status = default(CheckResult)) { - // to ensure "sourceLeft" is required (not null) - if (sourceLeft == null) - { - throw new InvalidDataException("sourceLeft is a required property for CrossSourceValueComparison and cannot be null"); - } - else - { - this.SourceLeft = sourceLeft; - } - - // to ensure "sourceRight" is required (not null) - if (sourceRight == null) - { - throw new InvalidDataException("sourceRight is a required property for CrossSourceValueComparison and cannot be null"); - } - else - { - this.SourceRight = sourceRight; - } - - // to ensure "status" is required (not null) - if (status == null) - { - throw new InvalidDataException("status is a required property for CrossSourceValueComparison and cannot be null"); - } - else - { - this.Status = status; - } - + this.SourceLeft = sourceLeft; + this.SourceRight = sourceRight; + this.Status = status; } - - /// - /// Gets or Sets SourceLeft - /// - [DataMember(Name="sourceLeft", EmitDefaultValue=true)] - public string SourceLeft { get; set; } - - /// - /// Gets or Sets SourceRight - /// - [DataMember(Name="sourceRight", EmitDefaultValue=true)] - public string SourceRight { get; set; } - - /// - /// Gets or Sets Status - /// - [DataMember(Name="status", EmitDefaultValue=true)] - public int Status { get; set; } /// /// Returns the string presentation of the object @@ -99,7 +74,7 @@ protected CrossSourceValueComparison() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class CrossSourceValueComparison {\n"); sb.Append(" SourceLeft: ").Append(SourceLeft).Append("\n"); sb.Append(" SourceRight: ").Append(SourceRight).Append("\n"); @@ -107,7 +82,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -117,69 +92,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as CrossSourceValueComparison); - } - - /// - /// Returns true if CrossSourceValueComparison instances are equal - /// - /// Instance of CrossSourceValueComparison to be compared - /// Boolean - public bool Equals(CrossSourceValueComparison input) - { - if (input == null) - return false; - - return - ( - this.SourceLeft == input.SourceLeft || - (this.SourceLeft != null && - this.SourceLeft.Equals(input.SourceLeft)) - ) && - ( - this.SourceRight == input.SourceRight || - (this.SourceRight != null && - this.SourceRight.Equals(input.SourceRight)) - ) && - ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.SourceLeft != null) - hashCode = hashCode * 59 + this.SourceLeft.GetHashCode(); - if (this.SourceRight != null) - hashCode = hashCode * 59 + this.SourceRight.GetHashCode(); - if (this.Status != null) - hashCode = hashCode * 59 + this.Status.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DataModule.cs b/src/Regula.DocumentReader.WebClient/Model/DataModule.cs index 2096925..c658d73 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DataModule.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DataModule.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,55 +29,65 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DataModule /// - [DataContract] - public partial class DataModule : IEquatable, IValidatableObject + [DataContract(Name = "DataModule")] + public partial class DataModule : IValidatableObject { + + /// + /// Gets or Sets MType + /// + [DataMember(Name = "mType", IsRequired = true, EmitDefaultValue = true)] + public BarCodeModuleType MType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DataModule() { } /// /// Initializes a new instance of the class. /// - /// mData. - /// mLength. + /// mData (required). + /// mLength (required). /// mReserved1. /// mReserver2. - /// mType. - public DataModule(string mData = default(string), int mLength = default(int), int mReserved1 = default(int), int mReserver2 = default(int), int mType = default(int)) + /// mType (required). + public DataModule(string mData = default(string), int mLength = default(int), int mReserved1 = default(int), int mReserver2 = default(int), BarCodeModuleType mType = default(BarCodeModuleType)) { + // to ensure "mData" is required (not null) + if (mData == null) + { + throw new ArgumentNullException("mData is a required property for DataModule and cannot be null"); + } this.MData = mData; this.MLength = mLength; + this.MType = mType; this.MReserved1 = mReserved1; this.MReserver2 = mReserver2; - this.MType = mType; } - + /// /// Gets or Sets MData /// - [DataMember(Name="mData", EmitDefaultValue=false)] + [DataMember(Name = "mData", IsRequired = true, EmitDefaultValue = true)] public string MData { get; set; } /// /// Gets or Sets MLength /// - [DataMember(Name="mLength", EmitDefaultValue=false)] + [DataMember(Name = "mLength", IsRequired = true, EmitDefaultValue = true)] public int MLength { get; set; } /// /// Gets or Sets MReserved1 /// - [DataMember(Name="mReserved1", EmitDefaultValue=false)] - public int MReserved1 { get; set; } + [DataMember(Name = "mReserved1", EmitDefaultValue = false)] + public int? MReserved1 { get; set; } /// /// Gets or Sets MReserver2 /// - [DataMember(Name="mReserver2", EmitDefaultValue=false)] - public int MReserver2 { get; set; } - - /// - /// Gets or Sets MType - /// - [DataMember(Name="mType", EmitDefaultValue=false)] - public int MType { get; set; } + [DataMember(Name = "mReserver2", EmitDefaultValue = false)] + public int? MReserver2 { get; set; } /// /// Returns the string presentation of the object @@ -83,7 +95,7 @@ public partial class DataModule : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DataModule {\n"); sb.Append(" MData: ").Append(MData).Append("\n"); sb.Append(" MLength: ").Append(MLength).Append("\n"); @@ -93,7 +105,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -103,83 +115,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DataModule); - } - - /// - /// Returns true if DataModule instances are equal - /// - /// Instance of DataModule to be compared - /// Boolean - public bool Equals(DataModule input) - { - if (input == null) - return false; - - return - ( - this.MData == input.MData || - (this.MData != null && - this.MData.Equals(input.MData)) - ) && - ( - this.MLength == input.MLength || - (this.MLength != null && - this.MLength.Equals(input.MLength)) - ) && - ( - this.MReserved1 == input.MReserved1 || - (this.MReserved1 != null && - this.MReserved1.Equals(input.MReserved1)) - ) && - ( - this.MReserver2 == input.MReserver2 || - (this.MReserver2 != null && - this.MReserver2.Equals(input.MReserver2)) - ) && - ( - this.MType == input.MType || - (this.MType != null && - this.MType.Equals(input.MType)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.MData != null) - hashCode = hashCode * 59 + this.MData.GetHashCode(); - if (this.MLength != null) - hashCode = hashCode * 59 + this.MLength.GetHashCode(); - if (this.MReserved1 != null) - hashCode = hashCode * 59 + this.MReserved1.GetHashCode(); - if (this.MReserver2 != null) - hashCode = hashCode * 59 + this.MReserver2.GetHashCode(); - if (this.MType != null) - hashCode = hashCode * 59 + this.MType.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DetailsOptical.cs b/src/Regula.DocumentReader.WebClient/Model/DetailsOptical.cs index 13f077d..3b0e07d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DetailsOptical.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DetailsOptical.cs @@ -1,183 +1,121 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// - /// DetailsOptical + /// Details on performed optical checks /// - [DataContract] - public partial class DetailsOptical : IEquatable, IValidatableObject + [DataContract(Name = "detailsOptical")] + public partial class DetailsOptical : IValidatableObject { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected DetailsOptical() { } - /// - /// Initializes a new instance of the class. - /// - /// overallStatus (required). - /// docType (required). - /// expiry (required). - /// imageQA (required). - /// mrz (required). - /// Number of processed pages in the document (required). - /// security (required). - /// text (required). - public DetailsOptical(int overallStatus = default(int), int docType = default(int), int expiry = default(int), int imageQA = default(int), int mrz = default(int), int pagesCount = default(int), int security = default(int), int text = default(int)) - { - // to ensure "overallStatus" is required (not null) - if (overallStatus == null) - { - throw new InvalidDataException("overallStatus is a required property for DetailsOptical and cannot be null"); - } - else - { - this.OverallStatus = overallStatus; - } - - // to ensure "docType" is required (not null) - if (docType == null) - { - throw new InvalidDataException("docType is a required property for DetailsOptical and cannot be null"); - } - else - { - this.DocType = docType; - } - - // to ensure "expiry" is required (not null) - if (expiry == null) - { - throw new InvalidDataException("expiry is a required property for DetailsOptical and cannot be null"); - } - else - { - this.Expiry = expiry; - } - - // to ensure "imageQA" is required (not null) - if (imageQA == null) - { - throw new InvalidDataException("imageQA is a required property for DetailsOptical and cannot be null"); - } - else - { - this.ImageQA = imageQA; - } - - // to ensure "mrz" is required (not null) - if (mrz == null) - { - throw new InvalidDataException("mrz is a required property for DetailsOptical and cannot be null"); - } - else - { - this.Mrz = mrz; - } - - // to ensure "pagesCount" is required (not null) - if (pagesCount == null) - { - throw new InvalidDataException("pagesCount is a required property for DetailsOptical and cannot be null"); - } - else - { - this.PagesCount = pagesCount; - } - - // to ensure "security" is required (not null) - if (security == null) - { - throw new InvalidDataException("security is a required property for DetailsOptical and cannot be null"); - } - else - { - this.Security = security; - } - - // to ensure "text" is required (not null) - if (text == null) - { - throw new InvalidDataException("text is a required property for DetailsOptical and cannot be null"); - } - else - { - this.Text = text; - } - - } - + /// /// Gets or Sets OverallStatus /// - [DataMember(Name="overallStatus", EmitDefaultValue=true)] - public int OverallStatus { get; set; } + [DataMember(Name = "overallStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult OverallStatus { get; set; } /// /// Gets or Sets DocType /// - [DataMember(Name="docType", EmitDefaultValue=true)] - public int DocType { get; set; } + [DataMember(Name = "docType", IsRequired = true, EmitDefaultValue = true)] + public CheckResult DocType { get; set; } /// /// Gets or Sets Expiry /// - [DataMember(Name="expiry", EmitDefaultValue=true)] - public int Expiry { get; set; } + [DataMember(Name = "expiry", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Expiry { get; set; } /// /// Gets or Sets ImageQA /// - [DataMember(Name="imageQA", EmitDefaultValue=true)] - public int ImageQA { get; set; } + [DataMember(Name = "imageQA", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ImageQA { get; set; } /// /// Gets or Sets Mrz /// - [DataMember(Name="mrz", EmitDefaultValue=true)] - public int Mrz { get; set; } + [DataMember(Name = "mrz", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Mrz { get; set; } /// - /// Number of processed pages in the document + /// Gets or Sets Security /// - /// Number of processed pages in the document - [DataMember(Name="pagesCount", EmitDefaultValue=true)] - public int PagesCount { get; set; } + [DataMember(Name = "security", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Security { get; set; } /// - /// Gets or Sets Security + /// Gets or Sets Text + /// + [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Text { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DetailsOptical() { } + /// + /// Initializes a new instance of the class. /// - [DataMember(Name="security", EmitDefaultValue=true)] - public int Security { get; set; } + /// overallStatus (required). + /// docType (required). + /// expiry (required). + /// imageQA (required). + /// mrz (required). + /// Number of processed pages in the document (required). + /// security (required). + /// text (required). + /// vds. + public DetailsOptical(CheckResult overallStatus = default(CheckResult), CheckResult docType = default(CheckResult), CheckResult expiry = default(CheckResult), CheckResult imageQA = default(CheckResult), CheckResult mrz = default(CheckResult), int pagesCount = default(int), CheckResult security = default(CheckResult), CheckResult text = default(CheckResult), int vds = default(int)) + { + this.OverallStatus = overallStatus; + this.DocType = docType; + this.Expiry = expiry; + this.ImageQA = imageQA; + this.Mrz = mrz; + this.PagesCount = pagesCount; + this.Security = security; + this.Text = text; + this.Vds = vds; + } /// - /// Gets or Sets Text + /// Number of processed pages in the document + /// + /// Number of processed pages in the document + [DataMember(Name = "pagesCount", IsRequired = true, EmitDefaultValue = true)] + public int PagesCount { get; set; } + + /// + /// Gets or Sets Vds /// - [DataMember(Name="text", EmitDefaultValue=true)] - public int Text { get; set; } + [DataMember(Name = "vds", EmitDefaultValue = false)] + public int? Vds { get; set; } /// /// Returns the string presentation of the object @@ -185,7 +123,7 @@ protected DetailsOptical() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DetailsOptical {\n"); sb.Append(" OverallStatus: ").Append(OverallStatus).Append("\n"); sb.Append(" DocType: ").Append(DocType).Append("\n"); @@ -195,10 +133,11 @@ public override string ToString() sb.Append(" PagesCount: ").Append(PagesCount).Append("\n"); sb.Append(" Security: ").Append(Security).Append("\n"); sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Vds: ").Append(Vds).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -208,104 +147,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DetailsOptical); - } - - /// - /// Returns true if DetailsOptical instances are equal - /// - /// Instance of DetailsOptical to be compared - /// Boolean - public bool Equals(DetailsOptical input) - { - if (input == null) - return false; - - return - ( - this.OverallStatus == input.OverallStatus || - (this.OverallStatus != null && - this.OverallStatus.Equals(input.OverallStatus)) - ) && - ( - this.DocType == input.DocType || - (this.DocType != null && - this.DocType.Equals(input.DocType)) - ) && - ( - this.Expiry == input.Expiry || - (this.Expiry != null && - this.Expiry.Equals(input.Expiry)) - ) && - ( - this.ImageQA == input.ImageQA || - (this.ImageQA != null && - this.ImageQA.Equals(input.ImageQA)) - ) && - ( - this.Mrz == input.Mrz || - (this.Mrz != null && - this.Mrz.Equals(input.Mrz)) - ) && - ( - this.PagesCount == input.PagesCount || - (this.PagesCount != null && - this.PagesCount.Equals(input.PagesCount)) - ) && - ( - this.Security == input.Security || - (this.Security != null && - this.Security.Equals(input.Security)) - ) && - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.OverallStatus != null) - hashCode = hashCode * 59 + this.OverallStatus.GetHashCode(); - if (this.DocType != null) - hashCode = hashCode * 59 + this.DocType.GetHashCode(); - if (this.Expiry != null) - hashCode = hashCode * 59 + this.Expiry.GetHashCode(); - if (this.ImageQA != null) - hashCode = hashCode * 59 + this.ImageQA.GetHashCode(); - if (this.Mrz != null) - hashCode = hashCode * 59 + this.Mrz.GetHashCode(); - if (this.PagesCount != null) - hashCode = hashCode * 59 + this.PagesCount.GetHashCode(); - if (this.Security != null) - hashCode = hashCode * 59 + this.Security.GetHashCode(); - if (this.Text != null) - hashCode = hashCode * 59 + this.Text.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DetailsRFID.cs b/src/Regula.DocumentReader.WebClient/Model/DetailsRFID.cs index fc6077f..ead7ad9 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DetailsRFID.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DetailsRFID.cs @@ -1,165 +1,104 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// - /// DetailsRFID + /// Details on performed RFID checks /// - [DataContract] - public partial class DetailsRFID : IEquatable, IValidatableObject + [DataContract(Name = "detailsRFID")] + public partial class DetailsRFID : IValidatableObject { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected DetailsRFID() { } - /// - /// Initializes a new instance of the class. - /// - /// overallStatus (required). - /// aA (required). - /// bAC (required). - /// cA (required). - /// pA (required). - /// pACE (required). - /// tA (required). - public DetailsRFID(int overallStatus = default(int), int aA = default(int), int bAC = default(int), int cA = default(int), int pA = default(int), int pACE = default(int), int tA = default(int)) - { - // to ensure "overallStatus" is required (not null) - if (overallStatus == null) - { - throw new InvalidDataException("overallStatus is a required property for DetailsRFID and cannot be null"); - } - else - { - this.OverallStatus = overallStatus; - } - - // to ensure "aA" is required (not null) - if (aA == null) - { - throw new InvalidDataException("aA is a required property for DetailsRFID and cannot be null"); - } - else - { - this.AA = aA; - } - - // to ensure "bAC" is required (not null) - if (bAC == null) - { - throw new InvalidDataException("bAC is a required property for DetailsRFID and cannot be null"); - } - else - { - this.BAC = bAC; - } - - // to ensure "cA" is required (not null) - if (cA == null) - { - throw new InvalidDataException("cA is a required property for DetailsRFID and cannot be null"); - } - else - { - this.CA = cA; - } - - // to ensure "pA" is required (not null) - if (pA == null) - { - throw new InvalidDataException("pA is a required property for DetailsRFID and cannot be null"); - } - else - { - this.PA = pA; - } - - // to ensure "pACE" is required (not null) - if (pACE == null) - { - throw new InvalidDataException("pACE is a required property for DetailsRFID and cannot be null"); - } - else - { - this.PACE = pACE; - } - - // to ensure "tA" is required (not null) - if (tA == null) - { - throw new InvalidDataException("tA is a required property for DetailsRFID and cannot be null"); - } - else - { - this.TA = tA; - } - - } - + /// /// Gets or Sets OverallStatus /// - [DataMember(Name="overallStatus", EmitDefaultValue=true)] - public int OverallStatus { get; set; } + [DataMember(Name = "overallStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult OverallStatus { get; set; } /// /// Gets or Sets AA /// - [DataMember(Name="AA", EmitDefaultValue=true)] - public int AA { get; set; } + [DataMember(Name = "AA", IsRequired = true, EmitDefaultValue = true)] + public CheckResult AA { get; set; } /// /// Gets or Sets BAC /// - [DataMember(Name="BAC", EmitDefaultValue=true)] - public int BAC { get; set; } + [DataMember(Name = "BAC", IsRequired = true, EmitDefaultValue = true)] + public CheckResult BAC { get; set; } /// /// Gets or Sets CA /// - [DataMember(Name="CA", EmitDefaultValue=true)] - public int CA { get; set; } + [DataMember(Name = "CA", IsRequired = true, EmitDefaultValue = true)] + public CheckResult CA { get; set; } /// /// Gets or Sets PA /// - [DataMember(Name="PA", EmitDefaultValue=true)] - public int PA { get; set; } + [DataMember(Name = "PA", IsRequired = true, EmitDefaultValue = true)] + public CheckResult PA { get; set; } /// /// Gets or Sets PACE /// - [DataMember(Name="PACE", EmitDefaultValue=true)] - public int PACE { get; set; } + [DataMember(Name = "PACE", IsRequired = true, EmitDefaultValue = true)] + public CheckResult PACE { get; set; } /// /// Gets or Sets TA /// - [DataMember(Name="TA", EmitDefaultValue=true)] - public int TA { get; set; } + [DataMember(Name = "TA", IsRequired = true, EmitDefaultValue = true)] + public CheckResult TA { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DetailsRFID() { } + /// + /// Initializes a new instance of the class. + /// + /// overallStatus (required). + /// aA (required). + /// bAC (required). + /// cA (required). + /// pA (required). + /// pACE (required). + /// tA (required). + public DetailsRFID(CheckResult overallStatus = default(CheckResult), CheckResult aA = default(CheckResult), CheckResult bAC = default(CheckResult), CheckResult cA = default(CheckResult), CheckResult pA = default(CheckResult), CheckResult pACE = default(CheckResult), CheckResult tA = default(CheckResult)) + { + this.OverallStatus = overallStatus; + this.AA = aA; + this.BAC = bAC; + this.CA = cA; + this.PA = pA; + this.PACE = pACE; + this.TA = tA; + } /// /// Returns the string presentation of the object @@ -167,7 +106,7 @@ protected DetailsRFID() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DetailsRFID {\n"); sb.Append(" OverallStatus: ").Append(OverallStatus).Append("\n"); sb.Append(" AA: ").Append(AA).Append("\n"); @@ -179,7 +118,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -189,97 +128,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DetailsRFID); - } - - /// - /// Returns true if DetailsRFID instances are equal - /// - /// Instance of DetailsRFID to be compared - /// Boolean - public bool Equals(DetailsRFID input) - { - if (input == null) - return false; - - return - ( - this.OverallStatus == input.OverallStatus || - (this.OverallStatus != null && - this.OverallStatus.Equals(input.OverallStatus)) - ) && - ( - this.AA == input.AA || - (this.AA != null && - this.AA.Equals(input.AA)) - ) && - ( - this.BAC == input.BAC || - (this.BAC != null && - this.BAC.Equals(input.BAC)) - ) && - ( - this.CA == input.CA || - (this.CA != null && - this.CA.Equals(input.CA)) - ) && - ( - this.PA == input.PA || - (this.PA != null && - this.PA.Equals(input.PA)) - ) && - ( - this.PACE == input.PACE || - (this.PACE != null && - this.PACE.Equals(input.PACE)) - ) && - ( - this.TA == input.TA || - (this.TA != null && - this.TA.Equals(input.TA)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.OverallStatus != null) - hashCode = hashCode * 59 + this.OverallStatus.GetHashCode(); - if (this.AA != null) - hashCode = hashCode * 59 + this.AA.GetHashCode(); - if (this.BAC != null) - hashCode = hashCode * 59 + this.BAC.GetHashCode(); - if (this.CA != null) - hashCode = hashCode * 59 + this.CA.GetHashCode(); - if (this.PA != null) - hashCode = hashCode * 59 + this.PA.GetHashCode(); - if (this.PACE != null) - hashCode = hashCode * 59 + this.PACE.GetHashCode(); - if (this.TA != null) - hashCode = hashCode * 59 + this.TA.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DeviceInfo.cs b/src/Regula.DocumentReader.WebClient/Model/DeviceInfo.cs index ef377c0..db794e5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DeviceInfo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DeviceInfo.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,63 +29,63 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DeviceInfo /// - [DataContract] - public partial class DeviceInfo : IEquatable, IValidatableObject + [DataContract(Name = "DeviceInfo")] + public partial class DeviceInfo : IValidatableObject { /// /// Initializes a new instance of the class. /// /// appName. - /// version. + /// varVersion. /// licenseId. /// licenseSerial. /// validUntil. /// serverTime. - public DeviceInfo(string appName = default(string), string version = default(string), string licenseId = default(string), string licenseSerial = default(string), DateTime validUntil = default(DateTime), DateTime serverTime = default(DateTime)) + public DeviceInfo(string appName = default(string), string varVersion = default(string), string licenseId = default(string), string licenseSerial = default(string), DateTime validUntil = default(DateTime), DateTime serverTime = default(DateTime)) { this.AppName = appName; - this.Version = version; + this.VarVersion = varVersion; this.LicenseId = licenseId; this.LicenseSerial = licenseSerial; this.ValidUntil = validUntil; this.ServerTime = serverTime; } - + /// /// Gets or Sets AppName /// - [DataMember(Name="app-name", EmitDefaultValue=false)] - public string AppName { get; set; } + [DataMember(Name = "app-name", EmitDefaultValue = false)] + public string? AppName { get; set; } /// - /// Gets or Sets Version + /// Gets or Sets VarVersion /// - [DataMember(Name="version", EmitDefaultValue=false)] - public string Version { get; set; } + [DataMember(Name = "version", EmitDefaultValue = false)] + public string? VarVersion { get; set; } /// /// Gets or Sets LicenseId /// - [DataMember(Name="license-id", EmitDefaultValue=false)] - public string LicenseId { get; set; } + [DataMember(Name = "license-id", EmitDefaultValue = false)] + public string? LicenseId { get; set; } /// /// Gets or Sets LicenseSerial /// - [DataMember(Name="license-serial", EmitDefaultValue=false)] - public string LicenseSerial { get; set; } + [DataMember(Name = "license-serial", EmitDefaultValue = false)] + public string? LicenseSerial { get; set; } /// /// Gets or Sets ValidUntil /// - [DataMember(Name="valid-until", EmitDefaultValue=false)] - public DateTime ValidUntil { get; set; } + [DataMember(Name = "valid-until", EmitDefaultValue = false)] + public DateTime? ValidUntil { get; set; } /// /// Gets or Sets ServerTime /// - [DataMember(Name="server-time", EmitDefaultValue=false)] - public DateTime ServerTime { get; set; } + [DataMember(Name = "server-time", EmitDefaultValue = false)] + public DateTime? ServerTime { get; set; } /// /// Returns the string presentation of the object @@ -91,10 +93,10 @@ public partial class DeviceInfo : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DeviceInfo {\n"); sb.Append(" AppName: ").Append(AppName).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append(" LicenseId: ").Append(LicenseId).Append("\n"); sb.Append(" LicenseSerial: ").Append(LicenseSerial).Append("\n"); sb.Append(" ValidUntil: ").Append(ValidUntil).Append("\n"); @@ -102,7 +104,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -112,90 +114,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DeviceInfo); - } - - /// - /// Returns true if DeviceInfo instances are equal - /// - /// Instance of DeviceInfo to be compared - /// Boolean - public bool Equals(DeviceInfo input) - { - if (input == null) - return false; - - return - ( - this.AppName == input.AppName || - (this.AppName != null && - this.AppName.Equals(input.AppName)) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ) && - ( - this.LicenseId == input.LicenseId || - (this.LicenseId != null && - this.LicenseId.Equals(input.LicenseId)) - ) && - ( - this.LicenseSerial == input.LicenseSerial || - (this.LicenseSerial != null && - this.LicenseSerial.Equals(input.LicenseSerial)) - ) && - ( - this.ValidUntil == input.ValidUntil || - (this.ValidUntil != null && - this.ValidUntil.Equals(input.ValidUntil)) - ) && - ( - this.ServerTime == input.ServerTime || - (this.ServerTime != null && - this.ServerTime.Equals(input.ServerTime)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.AppName != null) - hashCode = hashCode * 59 + this.AppName.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - if (this.LicenseId != null) - hashCode = hashCode * 59 + this.LicenseId.GetHashCode(); - if (this.LicenseSerial != null) - hashCode = hashCode * 59 + this.LicenseSerial.GetHashCode(); - if (this.ValidUntil != null) - hashCode = hashCode * 59 + this.ValidUntil.GetHashCode(); - if (this.ServerTime != null) - hashCode = hashCode * 59 + this.ServerTime.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DeviceInfo2.cs b/src/Regula.DocumentReader.WebClient/Model/DeviceInfo2.cs deleted file mode 100644 index 4615034..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/DeviceInfo2.cs +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// DeviceInfo2 - /// - [DataContract] - public partial class DeviceInfo2 : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// app. - /// licenseId. - /// licenseType. - /// licenseSerial. - /// licenseValidUntil. - /// scenarios. - /// version. - public DeviceInfo2(string app = default(string), string licenseId = default(string), string licenseType = default(string), string licenseSerial = default(string), DateTime licenseValidUntil = default(DateTime), List scenarios = default(List), string version = default(string)) - { - this.App = app; - this.LicenseId = licenseId; - this.LicenseType = licenseType; - this.LicenseSerial = licenseSerial; - this.LicenseValidUntil = licenseValidUntil; - this.Scenarios = scenarios; - this.Version = version; - } - - /// - /// Gets or Sets App - /// - [DataMember(Name="app", EmitDefaultValue=false)] - public string App { get; set; } - - /// - /// Gets or Sets LicenseId - /// - [DataMember(Name="licenseId", EmitDefaultValue=false)] - public string LicenseId { get; set; } - - /// - /// Gets or Sets LicenseType - /// - [DataMember(Name="licenseType", EmitDefaultValue=false)] - public string LicenseType { get; set; } - - /// - /// Gets or Sets LicenseSerial - /// - [DataMember(Name="licenseSerial", EmitDefaultValue=false)] - public string LicenseSerial { get; set; } - - /// - /// Gets or Sets LicenseValidUntil - /// - [DataMember(Name="licenseValidUntil", EmitDefaultValue=false)] - public DateTime LicenseValidUntil { get; set; } - - /// - /// Gets or Sets Scenarios - /// - [DataMember(Name="scenarios", EmitDefaultValue=false)] - public List Scenarios { get; set; } - - /// - /// Gets or Sets Version - /// - [DataMember(Name="version", EmitDefaultValue=false)] - public string Version { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class DeviceInfo2 {\n"); - sb.Append(" App: ").Append(App).Append("\n"); - sb.Append(" LicenseId: ").Append(LicenseId).Append("\n"); - sb.Append(" LicenseType: ").Append(LicenseType).Append("\n"); - sb.Append(" LicenseSerial: ").Append(LicenseSerial).Append("\n"); - sb.Append(" LicenseValidUntil: ").Append(LicenseValidUntil).Append("\n"); - sb.Append(" Scenarios: ").Append(Scenarios).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DeviceInfo2); - } - - /// - /// Returns true if DeviceInfo2 instances are equal - /// - /// Instance of DeviceInfo2 to be compared - /// Boolean - public bool Equals(DeviceInfo2 input) - { - if (input == null) - return false; - - return - ( - this.App == input.App || - (this.App != null && - this.App.Equals(input.App)) - ) && - ( - this.LicenseId == input.LicenseId || - (this.LicenseId != null && - this.LicenseId.Equals(input.LicenseId)) - ) && - ( - this.LicenseType == input.LicenseType || - (this.LicenseType != null && - this.LicenseType.Equals(input.LicenseType)) - ) && - ( - this.LicenseSerial == input.LicenseSerial || - (this.LicenseSerial != null && - this.LicenseSerial.Equals(input.LicenseSerial)) - ) && - ( - this.LicenseValidUntil == input.LicenseValidUntil || - (this.LicenseValidUntil != null && - this.LicenseValidUntil.Equals(input.LicenseValidUntil)) - ) && - ( - this.Scenarios == input.Scenarios || - this.Scenarios != null && - input.Scenarios != null && - this.Scenarios.SequenceEqual(input.Scenarios) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.App != null) - hashCode = hashCode * 59 + this.App.GetHashCode(); - if (this.LicenseId != null) - hashCode = hashCode * 59 + this.LicenseId.GetHashCode(); - if (this.LicenseType != null) - hashCode = hashCode * 59 + this.LicenseType.GetHashCode(); - if (this.LicenseSerial != null) - hashCode = hashCode * 59 + this.LicenseSerial.GetHashCode(); - if (this.LicenseValidUntil != null) - hashCode = hashCode * 59 + this.LicenseValidUntil.GetHashCode(); - if (this.Scenarios != null) - hashCode = hashCode * 59 + this.Scenarios.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfo.cs b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfo.cs index 5873cd6..90c07b1 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfo.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Raw data from BarCodes /// - [DataContract] - public partial class DocBarCodeInfo : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "DocBarCodeInfo")] + public partial class DocBarCodeInfo : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,17 +41,27 @@ protected DocBarCodeInfo() { } /// /// Initializes a new instance of the class. /// - /// docBarCodeInfo. - public DocBarCodeInfo(DocBarCodeInfoFieldsList docBarCodeInfo = default(DocBarCodeInfoFieldsList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// varDocBarCodeInfo (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.BARCODES). + public DocBarCodeInfo(DocBarCodeInfoFieldsList varDocBarCodeInfo = default(DocBarCodeInfoFieldsList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.BARCODES) : base(bufLength, light, listIdx, pageIdx, resultType) { - this._DocBarCodeInfo = docBarCodeInfo; + // to ensure "varDocBarCodeInfo" is required (not null) + if (varDocBarCodeInfo == null) + { + throw new ArgumentNullException("varDocBarCodeInfo is a required property for DocBarCodeInfo and cannot be null"); + } + this.VarDocBarCodeInfo = varDocBarCodeInfo; } - + /// - /// Gets or Sets _DocBarCodeInfo + /// Gets or Sets VarDocBarCodeInfo /// - [DataMember(Name="DocBarCodeInfo", EmitDefaultValue=false)] - public DocBarCodeInfoFieldsList _DocBarCodeInfo { get; set; } + [DataMember(Name = "DocBarCodeInfo", IsRequired = true, EmitDefaultValue = true)] + public DocBarCodeInfoFieldsList VarDocBarCodeInfo { get; set; } /// /// Returns the string presentation of the object @@ -56,14 +69,14 @@ protected DocBarCodeInfo() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocBarCodeInfo {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); - sb.Append(" _DocBarCodeInfo: ").Append(_DocBarCodeInfo).Append("\n"); + sb.Append(" VarDocBarCodeInfo: ").Append(VarDocBarCodeInfo).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -74,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocBarCodeInfo); - } - - /// - /// Returns true if DocBarCodeInfo instances are equal - /// - /// Instance of DocBarCodeInfo to be compared - /// Boolean - public bool Equals(DocBarCodeInfo input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this._DocBarCodeInfo == input._DocBarCodeInfo || - (this._DocBarCodeInfo != null && - this._DocBarCodeInfo.Equals(input._DocBarCodeInfo)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this._DocBarCodeInfo != null) - hashCode = hashCode * 59 + this._DocBarCodeInfo.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -121,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoFieldsList.cs b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoFieldsList.cs index dd67d51..ae0be5e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoFieldsList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoFieldsList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,32 +29,42 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocBarCodeInfoFieldsList /// - [DataContract] - public partial class DocBarCodeInfoFieldsList : IEquatable, IValidatableObject + [DataContract(Name = "DocBarCodeInfoFieldsList")] + public partial class DocBarCodeInfoFieldsList : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// Count of array fields. - /// Data from barcode. + [JsonConstructorAttribute] + protected DocBarCodeInfoFieldsList() { } + /// + /// Initializes a new instance of the class. + /// + /// Count of array fields (required). + /// Data from barcode (required). public DocBarCodeInfoFieldsList(int nFields = default(int), List pArrayFields = default(List)) { this.NFields = nFields; + // to ensure "pArrayFields" is required (not null) + if (pArrayFields == null) + { + throw new ArgumentNullException("pArrayFields is a required property for DocBarCodeInfoFieldsList and cannot be null"); + } this.PArrayFields = pArrayFields; } - + /// /// Count of array fields /// /// Count of array fields - [DataMember(Name="nFields", EmitDefaultValue=false)] + [DataMember(Name = "nFields", IsRequired = true, EmitDefaultValue = true)] public int NFields { get; set; } /// /// Data from barcode /// /// Data from barcode - [DataMember(Name="pArrayFields", EmitDefaultValue=false)] + [DataMember(Name = "pArrayFields", IsRequired = true, EmitDefaultValue = true)] public List PArrayFields { get; set; } /// @@ -61,14 +73,14 @@ public partial class DocBarCodeInfoFieldsList : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocBarCodeInfoFieldsList {\n"); sb.Append(" NFields: ").Append(NFields).Append("\n"); sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -78,63 +90,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocBarCodeInfoFieldsList); - } - - /// - /// Returns true if DocBarCodeInfoFieldsList instances are equal - /// - /// Instance of DocBarCodeInfoFieldsList to be compared - /// Boolean - public bool Equals(DocBarCodeInfoFieldsList input) - { - if (input == null) - return false; - - return - ( - this.NFields == input.NFields || - (this.NFields != null && - this.NFields.Equals(input.NFields)) - ) && - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.NFields != null) - hashCode = hashCode * 59 + this.NFields.GetHashCode(); - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoItem.cs new file mode 100644 index 0000000..318f993 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocBarCodeInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// DocBarCodeInfoItem + /// + [DataContract(Name = "DocBarCodeInfoItem")] + public partial class DocBarCodeInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocBarCodeInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// docBarCodeInfo (required). + public DocBarCodeInfoItem(DocBarCodeInfoFieldsList docBarCodeInfo = default(DocBarCodeInfoFieldsList)) + { + // to ensure "docBarCodeInfo" is required (not null) + if (docBarCodeInfo == null) + { + throw new ArgumentNullException("docBarCodeInfo is a required property for DocBarCodeInfoItem and cannot be null"); + } + this.DocBarCodeInfo = docBarCodeInfo; + } + + /// + /// Gets or Sets DocBarCodeInfo + /// + [DataMember(Name = "DocBarCodeInfo", IsRequired = true, EmitDefaultValue = true)] + public DocBarCodeInfoFieldsList DocBarCodeInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocBarCodeInfoItem {\n"); + sb.Append(" DocBarCodeInfo: ").Append(DocBarCodeInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocGraphicsInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/DocGraphicsInfoItem.cs new file mode 100644 index 0000000..1ae6878 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocGraphicsInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// DocGraphicsInfoItem + /// + [DataContract(Name = "DocGraphicsInfoItem")] + public partial class DocGraphicsInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocGraphicsInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// docGraphicsInfo (required). + public DocGraphicsInfoItem(GraphicFieldsList docGraphicsInfo = default(GraphicFieldsList)) + { + // to ensure "docGraphicsInfo" is required (not null) + if (docGraphicsInfo == null) + { + throw new ArgumentNullException("docGraphicsInfo is a required property for DocGraphicsInfoItem and cannot be null"); + } + this.DocGraphicsInfo = docGraphicsInfo; + } + + /// + /// Gets or Sets DocGraphicsInfo + /// + [DataMember(Name = "DocGraphicsInfo", IsRequired = true, EmitDefaultValue = true)] + public GraphicFieldsList DocGraphicsInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocGraphicsInfoItem {\n"); + sb.Append(" DocGraphicsInfo: ").Append(DocGraphicsInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedField.cs b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedField.cs index 64c291b..f4c6b4b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedField.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedField.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocVisualExtendedField /// - [DataContract] - public partial class DocVisualExtendedField : IEquatable, IValidatableObject + [DataContract(Name = "DocVisualExtendedField")] + public partial class DocVisualExtendedField : VisualExtendedFieldItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,226 +40,67 @@ protected DocVisualExtendedField() { } /// /// Initializes a new instance of the class. /// + /// fieldRect (required). + /// fieldType (required). /// wFieldType (required). - /// Field name. Only use to search values for fields with fieldType=50(other). In general, use wFieldType for lookup. (required). - /// wLCID (required). - /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results.. - /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^'. - /// fieldRect. - /// Origin data group information. Only for Result.RFID_TEXT results.. - /// Index of the text field record in origin data group. Only for Result.RFID_TEXT results.. - public DocVisualExtendedField(int wFieldType = default(int), string fieldName = default(string), int wLCID = default(int), List stringsResult = default(List), string bufText = default(string), RectangleCoordinates fieldRect = default(RectangleCoordinates), int rFIDOriginDG = default(int), int rFIDOriginTagEntry = default(int)) + /// Field symbolic name (null-terminated string) (required). + /// Number of StringsResult array elements (required). + /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. (required). + /// Buf_Text text string length (required). + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' (required). + /// fieldMask. + /// validity. + /// inComparison. + /// wLCID. + /// reserved2. + /// reserved3. + public DocVisualExtendedField(RectangleCoordinates fieldRect = default(RectangleCoordinates), int fieldType = default(int), TextFieldType wFieldType = default(TextFieldType), string fieldName = default(string), decimal stringsCount = default(decimal), List stringsResult = default(List), decimal bufLength = default(decimal), string bufText = default(string), string fieldMask = default(string), int validity = default(int), int inComparison = default(int), int wLCID = default(int), int reserved2 = default(int), int reserved3 = default(int)) : base(fieldType, wFieldType, fieldName, stringsCount, stringsResult, bufLength, bufText, fieldMask, validity, inComparison, wLCID, reserved2, reserved3) { - // to ensure "wFieldType" is required (not null) - if (wFieldType == null) - { - throw new InvalidDataException("wFieldType is a required property for DocVisualExtendedField and cannot be null"); - } - else - { - this.WFieldType = wFieldType; - } - - // to ensure "fieldName" is required (not null) - if (fieldName == null) - { - throw new InvalidDataException("fieldName is a required property for DocVisualExtendedField and cannot be null"); - } - else + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) { - this.FieldName = fieldName; + throw new ArgumentNullException("fieldRect is a required property for DocVisualExtendedField and cannot be null"); } - - // to ensure "wLCID" is required (not null) - if (wLCID == null) - { - throw new InvalidDataException("wLCID is a required property for DocVisualExtendedField and cannot be null"); - } - else - { - this.WLCID = wLCID; - } - - this.StringsResult = stringsResult; - this.BufText = bufText; this.FieldRect = fieldRect; - this.RFIDOriginDG = rFIDOriginDG; - this.RFIDOriginTagEntry = rFIDOriginTagEntry; } - - /// - /// Gets or Sets WFieldType - /// - [DataMember(Name="wFieldType", EmitDefaultValue=true)] - public int WFieldType { get; set; } - - /// - /// Field name. Only use to search values for fields with fieldType=50(other). In general, use wFieldType for lookup. - /// - /// Field name. Only use to search values for fields with fieldType=50(other). In general, use wFieldType for lookup. - [DataMember(Name="FieldName", EmitDefaultValue=true)] - public string FieldName { get; set; } - - /// - /// Gets or Sets WLCID - /// - [DataMember(Name="wLCID", EmitDefaultValue=true)] - public int WLCID { get; set; } - - /// - /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. - /// - /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. - [DataMember(Name="StringsResult", EmitDefaultValue=false)] - public List StringsResult { get; set; } - - /// - /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' - /// - /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' - [DataMember(Name="Buf_Text", EmitDefaultValue=false)] - public string BufText { get; set; } /// /// Gets or Sets FieldRect /// - [DataMember(Name="FieldRect", EmitDefaultValue=false)] + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates FieldRect { get; set; } - /// - /// Origin data group information. Only for Result.RFID_TEXT results. - /// - /// Origin data group information. Only for Result.RFID_TEXT results. - [DataMember(Name="RFID_OriginDG", EmitDefaultValue=false)] - public int RFIDOriginDG { get; set; } - - /// - /// Index of the text field record in origin data group. Only for Result.RFID_TEXT results. - /// - /// Index of the text field record in origin data group. Only for Result.RFID_TEXT results. - [DataMember(Name="RFID_OriginTagEntry", EmitDefaultValue=false)] - public int RFIDOriginTagEntry { get; set; } - /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocVisualExtendedField {\n"); - sb.Append(" WFieldType: ").Append(WFieldType).Append("\n"); - sb.Append(" FieldName: ").Append(FieldName).Append("\n"); - sb.Append(" WLCID: ").Append(WLCID).Append("\n"); - sb.Append(" StringsResult: ").Append(StringsResult).Append("\n"); - sb.Append(" BufText: ").Append(BufText).Append("\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); - sb.Append(" RFIDOriginDG: ").Append(RFIDOriginDG).Append("\n"); - sb.Append(" RFIDOriginTagEntry: ").Append(RFIDOriginTagEntry).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// /// JSON string presentation of the object - public virtual string ToJson() + public override string ToJson() { return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocVisualExtendedField); - } - - /// - /// Returns true if DocVisualExtendedField instances are equal - /// - /// Instance of DocVisualExtendedField to be compared - /// Boolean - public bool Equals(DocVisualExtendedField input) - { - if (input == null) - return false; - - return - ( - this.WFieldType == input.WFieldType || - (this.WFieldType != null && - this.WFieldType.Equals(input.WFieldType)) - ) && - ( - this.FieldName == input.FieldName || - (this.FieldName != null && - this.FieldName.Equals(input.FieldName)) - ) && - ( - this.WLCID == input.WLCID || - (this.WLCID != null && - this.WLCID.Equals(input.WLCID)) - ) && - ( - this.StringsResult == input.StringsResult || - this.StringsResult != null && - input.StringsResult != null && - this.StringsResult.SequenceEqual(input.StringsResult) - ) && - ( - this.BufText == input.BufText || - (this.BufText != null && - this.BufText.Equals(input.BufText)) - ) && - ( - this.FieldRect == input.FieldRect || - (this.FieldRect != null && - this.FieldRect.Equals(input.FieldRect)) - ) && - ( - this.RFIDOriginDG == input.RFIDOriginDG || - (this.RFIDOriginDG != null && - this.RFIDOriginDG.Equals(input.RFIDOriginDG)) - ) && - ( - this.RFIDOriginTagEntry == input.RFIDOriginTagEntry || - (this.RFIDOriginTagEntry != null && - this.RFIDOriginTagEntry.Equals(input.RFIDOriginTagEntry)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.WFieldType != null) - hashCode = hashCode * 59 + this.WFieldType.GetHashCode(); - if (this.FieldName != null) - hashCode = hashCode * 59 + this.FieldName.GetHashCode(); - if (this.WLCID != null) - hashCode = hashCode * 59 + this.WLCID.GetHashCode(); - if (this.StringsResult != null) - hashCode = hashCode * 59 + this.StringsResult.GetHashCode(); - if (this.BufText != null) - hashCode = hashCode * 59 + this.BufText.GetHashCode(); - if (this.FieldRect != null) - hashCode = hashCode * 59 + this.FieldRect.GetHashCode(); - if (this.RFIDOriginDG != null) - hashCode = hashCode * 59 + this.RFIDOriginDG.GetHashCode(); - if (this.RFIDOriginTagEntry != null) - hashCode = hashCode * 59 + this.RFIDOriginTagEntry.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -265,8 +108,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { + foreach (var x in BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedFieldItem.cs b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedFieldItem.cs new file mode 100644 index 0000000..75af5ec --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedFieldItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// DocVisualExtendedFieldItem + /// + [DataContract(Name = "DocVisualExtendedFieldItem")] + public partial class DocVisualExtendedFieldItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocVisualExtendedFieldItem() { } + /// + /// Initializes a new instance of the class. + /// + /// fieldRect (required). + public DocVisualExtendedFieldItem(RectangleCoordinates fieldRect = default(RectangleCoordinates)) + { + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) + { + throw new ArgumentNullException("fieldRect is a required property for DocVisualExtendedFieldItem and cannot be null"); + } + this.FieldRect = fieldRect; + } + + /// + /// Gets or Sets FieldRect + /// + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates FieldRect { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocVisualExtendedFieldItem {\n"); + sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfo.cs b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfo.cs index e510960..102ff06 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfo.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Container for extracted text fields. Fields are identified by type and language /// - [DataContract] - public partial class DocVisualExtendedInfo : IEquatable, IValidatableObject + [DataContract(Name = "DocVisualExtendedInfo")] + public partial class DocVisualExtendedInfo : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,25 +40,30 @@ protected DocVisualExtendedInfo() { } /// /// Initializes a new instance of the class. /// + /// Number of pArrayFields array elements (required). /// pArrayFields (required). - public DocVisualExtendedInfo(List pArrayFields = default(List)) + public DocVisualExtendedInfo(decimal nFields = default(decimal), List pArrayFields = default(List)) { + this.NFields = nFields; // to ensure "pArrayFields" is required (not null) if (pArrayFields == null) { - throw new InvalidDataException("pArrayFields is a required property for DocVisualExtendedInfo and cannot be null"); + throw new ArgumentNullException("pArrayFields is a required property for DocVisualExtendedInfo and cannot be null"); } - else - { - this.PArrayFields = pArrayFields; - } - + this.PArrayFields = pArrayFields; } - + + /// + /// Number of pArrayFields array elements + /// + /// Number of pArrayFields array elements + [DataMember(Name = "nFields", IsRequired = true, EmitDefaultValue = true)] + public decimal NFields { get; set; } + /// /// Gets or Sets PArrayFields /// - [DataMember(Name="pArrayFields", EmitDefaultValue=true)] + [DataMember(Name = "pArrayFields", IsRequired = true, EmitDefaultValue = true)] public List PArrayFields { get; set; } /// @@ -65,13 +72,14 @@ protected DocVisualExtendedInfo() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocVisualExtendedInfo {\n"); + sb.Append(" NFields: ").Append(NFields).Append("\n"); sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -81,56 +89,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocVisualExtendedInfo); - } - - /// - /// Returns true if DocVisualExtendedInfo instances are equal - /// - /// Instance of DocVisualExtendedInfo to be compared - /// Boolean - public bool Equals(DocVisualExtendedInfo input) - { - if (input == null) - return false; - - return - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfoItem.cs new file mode 100644 index 0000000..c6176f9 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocVisualExtendedInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// DocVisualExtendedInfoItem + /// + [DataContract(Name = "DocVisualExtendedInfoItem")] + public partial class DocVisualExtendedInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocVisualExtendedInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// docVisualExtendedInfo (required). + public DocVisualExtendedInfoItem(DocVisualExtendedInfo docVisualExtendedInfo = default(DocVisualExtendedInfo)) + { + // to ensure "docVisualExtendedInfo" is required (not null) + if (docVisualExtendedInfo == null) + { + throw new ArgumentNullException("docVisualExtendedInfo is a required property for DocVisualExtendedInfoItem and cannot be null"); + } + this.DocVisualExtendedInfo = docVisualExtendedInfo; + } + + /// + /// Gets or Sets DocVisualExtendedInfo + /// + [DataMember(Name = "DocVisualExtendedInfo", IsRequired = true, EmitDefaultValue = true)] + public DocVisualExtendedInfo DocVisualExtendedInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocVisualExtendedInfoItem {\n"); + sb.Append(" DocVisualExtendedInfo: ").Append(DocVisualExtendedInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentBinaryInfoResult.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentBinaryInfoResult.cs new file mode 100644 index 0000000..435c36b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentBinaryInfoResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to store the data reading results from the RFID-chip in a form of a list of the logically separated data groups. + /// + [DataContract(Name = "DocumentBinaryInfoResult")] + public partial class DocumentBinaryInfoResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocumentBinaryInfoResult() { } + /// + /// Initializes a new instance of the class. + /// + /// tDocBinaryInfo (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.RFID_RAW_DATA). + public DocumentBinaryInfoResult(TDocBinaryInfo tDocBinaryInfo = default(TDocBinaryInfo), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.RFID_RAW_DATA) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "tDocBinaryInfo" is required (not null) + if (tDocBinaryInfo == null) + { + throw new ArgumentNullException("tDocBinaryInfo is a required property for DocumentBinaryInfoResult and cannot be null"); + } + this.TDocBinaryInfo = tDocBinaryInfo; + } + + /// + /// Gets or Sets TDocBinaryInfo + /// + [DataMember(Name = "TDocBinaryInfo", IsRequired = true, EmitDefaultValue = true)] + public TDocBinaryInfo TDocBinaryInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocumentBinaryInfoResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" TDocBinaryInfo: ").Append(TDocBinaryInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentFormat.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentFormat.cs index 5c4bd24..5ef4631 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentFormat.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentFormat.cs @@ -1,71 +1,106 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Defining the geometric format of documents in accordance with ISO / IEC 7810 - public class DocumentFormat + /// + /// Defining the geometric format of documents in accordance with ISO / IEC 7810 + public enum DocumentFormat { - - /** ID1 document format */ - public const int ID1 = 0; - - /** ID2 document format */ - public const int ID2 = 1; - - /** ID3 document format */ - public const int ID3 = 2; - - /** Undefined document format */ - public const int NON = 3; - - /** A4 document format */ - public const int A4 = 4; - - /** ID3 double document format */ - public const int ID3_X2 = 5; - - /** ID1 format document rotated 90 ° */ - public const int ID1_90 = 10; - - /** ID1 format document rotated 180 ° */ - public const int ID1_180 = 11; - - /** ID1 format document rotated 270 ° */ - public const int ID1_270 = 12; - - /** ID2 format document rotated 90 ° */ - public const int ID2_180 = 13; - - /** ID3 format document rotated 180 ° */ - public const int ID3_180 = 14; - - /** Arbitrary format */ - public const int CUSTOM = 1000; - - /** Flexible format. Standard formats can be resized during cropping, depending on various factors: light, background... */ - public const int FLEXIBLE = 1002; - + /// + /// Enum UNKNOWN for value: -1 + /// + UNKNOWN = -1, + + /// + /// Enum ID1 for value: 0 + /// + ID1 = 0, + + /// + /// Enum ID2 for value: 1 + /// + ID2 = 1, + + /// + /// Enum ID3 for value: 2 + /// + ID3 = 2, + + /// + /// Enum NON for value: 3 + /// + NON = 3, + + /// + /// Enum A4 for value: 4 + /// + A4 = 4, + + /// + /// Enum ID3_X2 for value: 5 + /// + ID3_X2 = 5, + + /// + /// Enum ID1_90 for value: 10 + /// + ID1_90 = 10, + + /// + /// Enum ID1_180 for value: 11 + /// + ID1_180 = 11, + + /// + /// Enum ID1_270 for value: 12 + /// + ID1_270 = 12, + + /// + /// Enum ID2_180 for value: 13 + /// + ID2_180 = 13, + + /// + /// Enum ID3_180 for value: 14 + /// + ID3_180 = 14, + + /// + /// Enum CUSTOM for value: 1000 + /// + CUSTOM = 1000, + + /// + /// Enum FLEXIBLE for value: 1002 + /// + FLEXIBLE = 1002 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentImage.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentImage.cs index 1dde17b..fa4845a 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentImage.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentImage.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocumentImage /// - [DataContract] - public partial class DocumentImage : IEquatable, IValidatableObject + [DataContract(Name = "DocumentImage")] + public partial class DocumentImage : IValidatableObject { /// /// Initializes a new instance of the class. @@ -45,29 +47,28 @@ protected DocumentImage() { } // to ensure "image" is required (not null) if (image == null) { - throw new InvalidDataException("image is a required property for DocumentImage and cannot be null"); - } - else - { - this.Image = image; + throw new ArgumentNullException("image is a required property for DocumentImage and cannot be null"); } - + this.Image = image; this.Format = format; } - + /// /// Base64 encoded image /// /// Base64 encoded image - [DataMember(Name="image", EmitDefaultValue=true)] + /* + Base64 encoded image + */ + [DataMember(Name = "image", IsRequired = true, EmitDefaultValue = true)] public string Image { get; set; } /// /// Image format /// /// Image format - [DataMember(Name="format", EmitDefaultValue=false)] - public string Format { get; set; } + [DataMember(Name = "format", EmitDefaultValue = false)] + public string? Format { get; set; } /// /// Returns the string presentation of the object @@ -75,14 +76,14 @@ protected DocumentImage() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentImage {\n"); sb.Append(" Image: ").Append(Image).Append("\n"); sb.Append(" Format: ").Append(Format).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -92,62 +93,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentImage); - } - - /// - /// Returns true if DocumentImage instances are equal - /// - /// Instance of DocumentImage to be compared - /// Boolean - public bool Equals(DocumentImage input) - { - if (input == null) - return false; - - return - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ) && - ( - this.Format == input.Format || - (this.Format != null && - this.Format.Equals(input.Format)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - if (this.Format != null) - hashCode = hashCode * 59 + this.Format.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentImageResult.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentImageResult.cs index 1fca4e7..84bf361 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentImageResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentImageResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains document image. /// - [DataContract] - public partial class DocumentImageResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "DocumentImageResult")] + public partial class DocumentImageResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected DocumentImageResult() { } /// Initializes a new instance of the class. /// /// rawImageContainer (required). - public DocumentImageResult(ImageData rawImageContainer = default(ImageData), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.DOCUMENT_IMAGE). + public DocumentImageResult(ImageData rawImageContainer = default(ImageData), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.DOCUMENT_IMAGE) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "rawImageContainer" is required (not null) if (rawImageContainer == null) { - throw new InvalidDataException("rawImageContainer is a required property for DocumentImageResult and cannot be null"); - } - else - { - this.RawImageContainer = rawImageContainer; + throw new ArgumentNullException("rawImageContainer is a required property for DocumentImageResult and cannot be null"); } - + this.RawImageContainer = rawImageContainer; } - + /// /// Gets or Sets RawImageContainer /// - [DataMember(Name="RawImageContainer", EmitDefaultValue=true)] + [DataMember(Name = "RawImageContainer", IsRequired = true, EmitDefaultValue = true)] public ImageData RawImageContainer { get; set; } /// @@ -65,14 +69,14 @@ protected DocumentImageResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentImageResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" RawImageContainer: ").Append(RawImageContainer).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentImageResult); - } - - /// - /// Returns true if DocumentImageResult instances are equal - /// - /// Instance of DocumentImageResult to be compared - /// Boolean - public bool Equals(DocumentImageResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.RawImageContainer == input.RawImageContainer || - (this.RawImageContainer != null && - this.RawImageContainer.Equals(input.RawImageContainer)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.RawImageContainer != null) - hashCode = hashCode * 59 + this.RawImageContainer.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentPosition.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentPosition.cs index 0560d1a..5264a0c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentPosition.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentPosition.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,103 +29,176 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocumentPosition /// - [DataContract] - public partial class DocumentPosition : IEquatable, IValidatableObject + [DataContract(Name = "DocumentPosition")] + public partial class DocumentPosition : IValidatableObject { + + /// + /// Gets or Sets DocFormat + /// + [DataMember(Name = "docFormat", IsRequired = true, EmitDefaultValue = true)] + public DocumentFormat DocFormat { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocumentPosition() { } /// /// Initializes a new instance of the class. /// - /// docFormat. - /// angle. - /// width. - /// height. - /// center. - /// leftBottom. - /// leftTop. - /// rightBottom. - /// rightTop. - /// dpi. - public DocumentPosition(int docFormat = default(int), decimal angle = default(decimal), int width = default(int), int height = default(int), Point center = default(Point), Point leftBottom = default(Point), Point leftTop = default(Point), Point rightBottom = default(Point), Point rightTop = default(Point), int dpi = default(int)) + /// docFormat (required). + /// Document rotation angle (required). + /// Document width (required). + /// Document height (required). + /// center (required). + /// leftBottom (required). + /// leftTop (required). + /// rightBottom (required). + /// rightTop (required). + /// dpi (required). + /// inverse. + /// objArea. + /// objIntAngleDev. + /// perspectiveTr. + /// resultStatus. + public DocumentPosition(DocumentFormat docFormat = default(DocumentFormat), decimal angle = default(decimal), int width = default(int), int height = default(int), Point center = default(Point), Point leftBottom = default(Point), Point leftTop = default(Point), Point rightBottom = default(Point), Point rightTop = default(Point), int dpi = default(int), int inverse = default(int), int objArea = default(int), int objIntAngleDev = default(int), int perspectiveTr = default(int), int resultStatus = default(int)) { this.DocFormat = docFormat; this.Angle = angle; this.Width = width; this.Height = height; + // to ensure "center" is required (not null) + if (center == null) + { + throw new ArgumentNullException("center is a required property for DocumentPosition and cannot be null"); + } this.Center = center; + // to ensure "leftBottom" is required (not null) + if (leftBottom == null) + { + throw new ArgumentNullException("leftBottom is a required property for DocumentPosition and cannot be null"); + } this.LeftBottom = leftBottom; + // to ensure "leftTop" is required (not null) + if (leftTop == null) + { + throw new ArgumentNullException("leftTop is a required property for DocumentPosition and cannot be null"); + } this.LeftTop = leftTop; + // to ensure "rightBottom" is required (not null) + if (rightBottom == null) + { + throw new ArgumentNullException("rightBottom is a required property for DocumentPosition and cannot be null"); + } this.RightBottom = rightBottom; + // to ensure "rightTop" is required (not null) + if (rightTop == null) + { + throw new ArgumentNullException("rightTop is a required property for DocumentPosition and cannot be null"); + } this.RightTop = rightTop; this.Dpi = dpi; + this.Inverse = inverse; + this.ObjArea = objArea; + this.ObjIntAngleDev = objIntAngleDev; + this.PerspectiveTr = perspectiveTr; + this.ResultStatus = resultStatus; } - - /// - /// Gets or Sets DocFormat - /// - [DataMember(Name="docFormat", EmitDefaultValue=false)] - public int DocFormat { get; set; } /// - /// Gets or Sets Angle + /// Document rotation angle /// - [DataMember(Name="Angle", EmitDefaultValue=false)] + /// Document rotation angle + [DataMember(Name = "Angle", IsRequired = true, EmitDefaultValue = true)] public decimal Angle { get; set; } /// - /// Gets or Sets Width + /// Document width /// - [DataMember(Name="Width", EmitDefaultValue=false)] + /// Document width + [DataMember(Name = "Width", IsRequired = true, EmitDefaultValue = true)] public int Width { get; set; } /// - /// Gets or Sets Height + /// Document height /// - [DataMember(Name="Height", EmitDefaultValue=false)] + /// Document height + [DataMember(Name = "Height", IsRequired = true, EmitDefaultValue = true)] public int Height { get; set; } /// /// Gets or Sets Center /// - [DataMember(Name="Center", EmitDefaultValue=false)] + [DataMember(Name = "Center", IsRequired = true, EmitDefaultValue = true)] public Point Center { get; set; } /// /// Gets or Sets LeftBottom /// - [DataMember(Name="LeftBottom", EmitDefaultValue=false)] + [DataMember(Name = "LeftBottom", IsRequired = true, EmitDefaultValue = true)] public Point LeftBottom { get; set; } /// /// Gets or Sets LeftTop /// - [DataMember(Name="LeftTop", EmitDefaultValue=false)] + [DataMember(Name = "LeftTop", IsRequired = true, EmitDefaultValue = true)] public Point LeftTop { get; set; } /// /// Gets or Sets RightBottom /// - [DataMember(Name="RightBottom", EmitDefaultValue=false)] + [DataMember(Name = "RightBottom", IsRequired = true, EmitDefaultValue = true)] public Point RightBottom { get; set; } /// /// Gets or Sets RightTop /// - [DataMember(Name="RightTop", EmitDefaultValue=false)] + [DataMember(Name = "RightTop", IsRequired = true, EmitDefaultValue = true)] public Point RightTop { get; set; } /// /// Gets or Sets Dpi /// - [DataMember(Name="Dpi", EmitDefaultValue=false)] + [DataMember(Name = "Dpi", IsRequired = true, EmitDefaultValue = true)] public int Dpi { get; set; } + /// + /// Gets or Sets Inverse + /// + [DataMember(Name = "Inverse", EmitDefaultValue = false)] + public int? Inverse { get; set; } + + /// + /// Gets or Sets ObjArea + /// + [DataMember(Name = "ObjArea", EmitDefaultValue = false)] + public int? ObjArea { get; set; } + + /// + /// Gets or Sets ObjIntAngleDev + /// + [DataMember(Name = "ObjIntAngleDev", EmitDefaultValue = false)] + public int? ObjIntAngleDev { get; set; } + + /// + /// Gets or Sets PerspectiveTr + /// + [DataMember(Name = "PerspectiveTr", EmitDefaultValue = false)] + public int? PerspectiveTr { get; set; } + + /// + /// Gets or Sets ResultStatus + /// + [DataMember(Name = "ResultStatus", EmitDefaultValue = false)] + public int? ResultStatus { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentPosition {\n"); sb.Append(" DocFormat: ").Append(DocFormat).Append("\n"); sb.Append(" Angle: ").Append(Angle).Append("\n"); @@ -135,10 +210,15 @@ public override string ToString() sb.Append(" RightBottom: ").Append(RightBottom).Append("\n"); sb.Append(" RightTop: ").Append(RightTop).Append("\n"); sb.Append(" Dpi: ").Append(Dpi).Append("\n"); + sb.Append(" Inverse: ").Append(Inverse).Append("\n"); + sb.Append(" ObjArea: ").Append(ObjArea).Append("\n"); + sb.Append(" ObjIntAngleDev: ").Append(ObjIntAngleDev).Append("\n"); + sb.Append(" PerspectiveTr: ").Append(PerspectiveTr).Append("\n"); + sb.Append(" ResultStatus: ").Append(ResultStatus).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -148,118 +228,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentPosition); - } - - /// - /// Returns true if DocumentPosition instances are equal - /// - /// Instance of DocumentPosition to be compared - /// Boolean - public bool Equals(DocumentPosition input) - { - if (input == null) - return false; - - return - ( - this.DocFormat == input.DocFormat || - (this.DocFormat != null && - this.DocFormat.Equals(input.DocFormat)) - ) && - ( - this.Angle == input.Angle || - (this.Angle != null && - this.Angle.Equals(input.Angle)) - ) && - ( - this.Width == input.Width || - (this.Width != null && - this.Width.Equals(input.Width)) - ) && - ( - this.Height == input.Height || - (this.Height != null && - this.Height.Equals(input.Height)) - ) && - ( - this.Center == input.Center || - (this.Center != null && - this.Center.Equals(input.Center)) - ) && - ( - this.LeftBottom == input.LeftBottom || - (this.LeftBottom != null && - this.LeftBottom.Equals(input.LeftBottom)) - ) && - ( - this.LeftTop == input.LeftTop || - (this.LeftTop != null && - this.LeftTop.Equals(input.LeftTop)) - ) && - ( - this.RightBottom == input.RightBottom || - (this.RightBottom != null && - this.RightBottom.Equals(input.RightBottom)) - ) && - ( - this.RightTop == input.RightTop || - (this.RightTop != null && - this.RightTop.Equals(input.RightTop)) - ) && - ( - this.Dpi == input.Dpi || - (this.Dpi != null && - this.Dpi.Equals(input.Dpi)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.DocFormat != null) - hashCode = hashCode * 59 + this.DocFormat.GetHashCode(); - if (this.Angle != null) - hashCode = hashCode * 59 + this.Angle.GetHashCode(); - if (this.Width != null) - hashCode = hashCode * 59 + this.Width.GetHashCode(); - if (this.Height != null) - hashCode = hashCode * 59 + this.Height.GetHashCode(); - if (this.Center != null) - hashCode = hashCode * 59 + this.Center.GetHashCode(); - if (this.LeftBottom != null) - hashCode = hashCode * 59 + this.LeftBottom.GetHashCode(); - if (this.LeftTop != null) - hashCode = hashCode * 59 + this.LeftTop.GetHashCode(); - if (this.RightBottom != null) - hashCode = hashCode * 59 + this.RightBottom.GetHashCode(); - if (this.RightTop != null) - hashCode = hashCode * 59 + this.RightTop.GetHashCode(); - if (this.Dpi != null) - hashCode = hashCode * 59 + this.Dpi.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentPositionItem.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentPositionItem.cs new file mode 100644 index 0000000..f9898fd --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentPositionItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// DocumentPositionItem + /// + [DataContract(Name = "DocumentPositionItem")] + public partial class DocumentPositionItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DocumentPositionItem() { } + /// + /// Initializes a new instance of the class. + /// + /// documentPosition (required). + public DocumentPositionItem(DocumentPosition documentPosition = default(DocumentPosition)) + { + // to ensure "documentPosition" is required (not null) + if (documentPosition == null) + { + throw new ArgumentNullException("documentPosition is a required property for DocumentPositionItem and cannot be null"); + } + this.DocumentPosition = documentPosition; + } + + /// + /// Gets or Sets DocumentPosition + /// + [DataMember(Name = "DocumentPosition", IsRequired = true, EmitDefaultValue = true)] + public DocumentPosition DocumentPosition { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class DocumentPositionItem {\n"); + sb.Append(" DocumentPosition: ").Append(DocumentPosition).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs index fa14439..68c87c3 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains information about document position on the input image, its center, angle, etc /// - [DataContract] - public partial class DocumentPositionResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "DocumentPositionResult")] + public partial class DocumentPositionResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,16 +41,26 @@ protected DocumentPositionResult() { } /// /// Initializes a new instance of the class. /// - /// documentPosition. - public DocumentPositionResult(DocumentPosition documentPosition = default(DocumentPosition), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// documentPosition (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.BARCODE_POSITION). + public DocumentPositionResult(DocumentPosition documentPosition = default(DocumentPosition), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.BARCODE_POSITION) : base(bufLength, light, listIdx, pageIdx, resultType) { + // to ensure "documentPosition" is required (not null) + if (documentPosition == null) + { + throw new ArgumentNullException("documentPosition is a required property for DocumentPositionResult and cannot be null"); + } this.DocumentPosition = documentPosition; } - + /// /// Gets or Sets DocumentPosition /// - [DataMember(Name="DocumentPosition", EmitDefaultValue=false)] + [DataMember(Name = "DocumentPosition", IsRequired = true, EmitDefaultValue = true)] public DocumentPosition DocumentPosition { get; set; } /// @@ -56,14 +69,14 @@ protected DocumentPositionResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentPositionResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" DocumentPosition: ").Append(DocumentPosition).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -74,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentPositionResult); - } - - /// - /// Returns true if DocumentPositionResult instances are equal - /// - /// Instance of DocumentPositionResult to be compared - /// Boolean - public bool Equals(DocumentPositionResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.DocumentPosition == input.DocumentPosition || - (this.DocumentPosition != null && - this.DocumentPosition.Equals(input.DocumentPosition)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.DocumentPosition != null) - hashCode = hashCode * 59 + this.DocumentPosition.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -121,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentType.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentType.cs index 66ee65e..3a3369f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentType.cs @@ -1,716 +1,1186 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Possible values for document types - public class DocumentType + /// + /// Possible values for document types + public enum DocumentType { - - - public const int NOT_DEFINED = 0; - - - public const int PASSPORT = 11; - - - public const int IDENTITY_CARD = 12; - - - public const int DIPLOMATIC_PASSPORT = 13; - - - public const int SERVICE_PASSPORT = 14; - - - public const int SEAMANS_IDENTITY_DOCUMENT = 15; - - - public const int IDENTITY_CARD_FOR_RESIDENCE = 16; - - - public const int TRAVEL_DOCUMENT = 17; - - - public const int OTHER = 99; - - - public const int VISA_ID2 = 29; - - - public const int VISA_ID3 = 30; - - - public const int NATIONAL_IDENTITY_CARD = 20; - - - public const int SOCIAL_IDENTITY_CARD = 21; - - - public const int ALIENS_IDENTITY_CARD = 22; - - - public const int PRIVILEGED_IDENTITY_CARD = 23; - - - public const int RESIDENCE_PERMIT_IDENTITY_CARD = 24; - - - public const int ORIGIN_CARD = 25; - - - public const int EMERGENCY_PASSPORT = 26; - - - public const int ALIENS_PASSPORT = 27; - - - public const int ALTERNATIVE_IDENTITY_CARD = 28; - - - public const int AUTHORIZATION_CARD = 32; - - - public const int BEGINNER_PERMIT = 33; - - - public const int BORDER_CROSSING_CARD = 34; - - - public const int CHAUFFEUR_LICENSE = 35; - - - public const int CHAUFFEUR_LICENSE_UNDER_18 = 36; - - - public const int CHAUFFEUR_LICENSE_UNDER_21 = 37; - - - public const int COMMERCIAL_DRIVING_LICENSE = 38; - - - public const int COMMERCIAL_DRIVING_LICENSE_INSTRUCTIONAL_PERMIT = 39; - - - public const int COMMERCIAL_DRIVING_LICENSE_UNDER_18 = 40; - - - public const int COMMERCIAL_DRIVING_LICENSE_UNDER_21 = 41; - - - public const int COMMERCIAL_INSTRUCTION_PERMIT = 42; - - - public const int COMMERCIAL_NEW_PERMIT = 43; - - - public const int CONCEALED_CARRY_LICENSE = 44; - - - public const int CONCEALED_FIREARM_PERMIT = 45; - - - public const int CONDITIONAL_DRIVING_LICENSE = 46; - - - public const int DEPARTMENT_OF_VETERANS_AFFAIRS_IDENTITY_CARD = 47; - - - public const int DIPLOMATIC_DRIVING_LICENSE = 48; - - - public const int DRIVING_LICENSE = 49; - - - public const int DRIVING_LICENSE_INSTRUCTIONAL_PERMIT = 50; - - - public const int DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_18 = 51; - - - public const int DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_21 = 52; - - - public const int DRIVING_LICENSE_LEARNERS_PERMIT = 53; - - - public const int DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_18 = 54; - - - public const int DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_21 = 55; - - - public const int DRIVING_LICENSE_NOVICE = 56; - - - public const int DRIVING_LICENSE_NOVICE_UNDER_18 = 57; - - - public const int DRIVING_LICENSE_NOVICE_UNDER_21 = 58; - - - public const int DRIVING_LICENSE_REGISTERED_OFFENDER = 59; - - - public const int DRIVING_LICENSE_RESTRICTED_UNDER_18 = 60; - - - public const int DRIVING_LICENSE_RESTRICTED_UNDER_21 = 61; - - - public const int DRIVING_LICENSE_TEMPORARY_VISITOR = 62; - - - public const int DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_18 = 63; - - - public const int DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_21 = 64; - - - public const int DRIVING_LICENSE_UNDER_18 = 65; - - - public const int DRIVING_LICENSE_UNDER_21 = 66; - - - public const int EMPLOYMENT_DRIVING_PERMIT = 67; - - - public const int ENHANCED_CHAUFFEUR_LICENSE = 68; - - - public const int ENHANCED_CHAUFFEUR_LICENSE_UNDER_18 = 69; - - - public const int ENHANCED_CHAUFFEUR_LICENSE_UNDER_21 = 70; - - - public const int ENHANCED_COMMERCIAL_DRIVING_LICENSE = 71; - - - public const int ENHANCED_DRIVING_LICENSE = 72; - - - public const int ENHANCED_DRIVING_LICENSE_UNDER_18 = 73; - - - public const int ENHANCED_DRIVING_LICENSE_UNDER_21 = 74; - - - public const int ENHANCED_IDENTITY_CARD = 75; - - - public const int ENHANCED_IDENTITY_CARD_UNDER_18 = 76; - - - public const int ENHANCED_IDENTITY_CARD_UNDER_21 = 77; - - - public const int ENHANCED_OPERATORS_LICENSE = 78; - - - public const int FIREARMS_PERMIT = 79; - - - public const int FULL_PROVISIONAL_LICENSE = 80; - - - public const int FULL_PROVISIONAL_LICENSE_UNDER_18 = 81; - - - public const int FULL_PROVISIONAL_LICENSE_UNDER_21 = 82; - - - public const int GENEVA_CONVENTIONS_IDENTITY_CARD = 83; - - - public const int GRADUATED_DRIVING_LICENSE_UNDER_18 = 84; - - - public const int GRADUATED_DRIVING_LICENSE_UNDER_21 = 85; - - - public const int GRADUATED_INSTRUCTION_PERMIT_UNDER_18 = 86; - - - public const int GRADUATED_INSTRUCTION_PERMIT_UNDER_21 = 87; - - - public const int GRADUATED_LICENSE_UNDER_18 = 88; - - - public const int GRADUATED_LICENSE_UNDER_21 = 89; - - - public const int HANDGUN_CARRY_PERMIT = 90; - - - public const int IDENTITY_AND_PRIVILEGE_CARD = 91; - - - public const int IDENTITY_CARD_MOBILITY_IMPAIRED = 92; - - - public const int IDENTITY_CARD_REGISTERED_OFFENDER = 93; - - - public const int IDENTITY_CARD_TEMPORARY_VISITOR = 94; - - - public const int IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_18 = 95; - - - public const int IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_21 = 96; - - - public const int IDENTITY_CARD_UNDER_18 = 97; - - - public const int IDENTITY_CARD_UNDER_21 = 98; - - - public const int IGNITION_INTERLOCK_PERMIT = 100; - - - public const int IMMIGRANT_VISA = 101; - - - public const int INSTRUCTION_PERMIT = 102; - - - public const int INSTRUCTION_PERMIT_UNDER_18 = 103; - - - public const int INSTRUCTION_PERMIT_UNDER_21 = 104; - - - public const int INTERIM_DRIVING_LICENSE = 105; - - - public const int INTERIM_IDENTITY_CARD = 106; - - - public const int INTERMEDIATE_DRIVING_LICENSE = 107; - - - public const int INTERMEDIATE_DRIVING_LICENSE_UNDER_18 = 108; - - - public const int INTERMEDIATE_DRIVING_LICENSE_UNDER_21 = 109; - - - public const int JUNIOR_DRIVING_LICENSE = 110; - - - public const int LEARNER_INSTRUCTIONAL_PERMIT = 111; - - - public const int LEARNER_LICENSE = 112; - - - public const int LEARNER_LICENSE_UNDER_18 = 113; - - - public const int LEARNER_LICENSE_UNDER_21 = 114; - - - public const int LEARNER_PERMIT = 115; - - - public const int LEARNER_PERMIT_UNDER_18 = 116; - - - public const int LEARNER_PERMIT_UNDER_21 = 117; - - - public const int LIMITED_LICENSE = 118; - - - public const int LIMITED_PERMIT = 119; - - - public const int LIMITED_TERM_DRIVING_LICENSE = 120; - - - public const int LIMITED_TERM_IDENTITY_CARD = 121; - - - public const int LIQUOR_IDENTITY_CARD = 122; - - - public const int NEW_PERMIT = 123; - - - public const int NEW_PERMIT_UNDER_18 = 124; - - - public const int NEW_PERMIT_UNDER_21 = 125; - - - public const int NON_US_CITIZEN_DRIVING_LICENSE = 126; - - - public const int OCCUPATIONAL_DRIVING_LICENSE = 127; - - - public const int ONEIDA_TRIBE_OF_INDIANS_IDENTITY_CARD = 128; - - - public const int OPERATOR_LICENSE = 129; - - - public const int OPERATOR_LICENSE_UNDER_18 = 130; - - - public const int OPERATOR_LICENSE_UNDER_21 = 131; - - - public const int PERMANENT_DRIVING_LICENSE = 132; - - - public const int PERMIT_TO_REENTER = 133; - - - public const int PROBATIONARY_AUTO_LICENSE = 134; - - - public const int PROBATIONARY_DRIVING_LICENSE_UNDER_18 = 135; - - - public const int PROBATIONARY_DRIVING_LICENSE_UNDER_21 = 136; - - - public const int PROBATIONARY_VEHICLE_SALES_PERSON_LICENSE = 137; - - - public const int PROVISIONAL_DRIVING_LICENSE = 138; - - - public const int PROVISIONAL_DRIVING_LICENSE_UNDER_18 = 139; - - - public const int PROVISIONAL_DRIVING_LICENSE_UNDER_21 = 140; - - - public const int PROVISIONAL_LICENSE = 141; - - - public const int PROVISIONAL_LICENSE_UNDER_18 = 142; - - - public const int PROVISIONAL_LICENSE_UNDER_21 = 143; - - - public const int PUBLIC_PASSENGER_CHAUFFEUR_LICENSE = 144; - - - public const int RACING_AND_GAMING_COMISSION_CARD = 145; - - - public const int REFUGEE_TRAVEL_DOCUMENT = 146; - - - public const int RENEWAL_PERMIT = 147; - - - public const int RESTRICTED_COMMERCIAL_DRIVER_LICENSE = 148; - - - public const int RESTRICTED_DRIVER_LICENSE = 149; - - - public const int RESTRICTED_PERMIT = 150; - - - public const int SEASONAL_PERMIT = 151; - - - public const int SEASONAL_RESIDENT_IDENTITY_CARD = 152; - - - public const int SEASONAL_CITIZEN_IDENTITY_CARD = 153; - - - public const int SEX_OFFENDER = 154; - - - public const int SOCIAL_SECURITY_CARD = 155; - - - public const int TEMPORARY_DRIVING_LICENSE = 156; - - - public const int TEMPORARY_DRIVING_LICENSE_UNDER_18 = 157; - - - public const int TEMPORARY_DRIVING_LICENSE_UNDER_21 = 158; - - - public const int TEMPORARY_IDENTITY_CARD = 159; - - - public const int TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD = 160; - - - public const int TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_18 = 161; - - - public const int TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_21 = 162; - - - public const int TEMPORARY_VISITOR_DRIVING_LICENSE = 163; - - - public const int TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_18 = 164; - - - public const int TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_21 = 165; - - - public const int UNIFORMED_SERVICES_IDENTITY_CARD = 166; - - - public const int VEHICLE_SALES_PERSON_LICENSE = 167; - - - public const int WORKER_IDENTIFICATION_CREDENTIAL = 168; - - - public const int COMMERCIAL_DRIVING_LICENSE_NOVICE = 169; - - - public const int COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_18 = 170; - - - public const int COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_21 = 171; - - - public const int PASSPORT_CARD = 172; - - - public const int PASSPORT_RESIDENT_CARD = 173; - - - public const int PERSONAL_IDENTIFICATION_VERIFICATION = 174; - - - public const int TEMPORARY_OPERATOR_LICENSE = 175; - - - public const int DRIVING_LICENSE_UNDER_19 = 176; - - - public const int IDENTITY_CARD_UNDER_19 = 177; - - - public const int VISA = 178; - - - public const int TEMPORARY_PASSPORT = 179; - - - public const int VOTING_CARD = 180; - - - public const int HEALTH_CARD = 181; - - - public const int CERTIFICATE_OF_CITIZENSHIP = 182; - - - public const int ADDRESS_CARD = 183; - - - public const int AIRPORT_IMMIGRATION_CARD = 184; - - - public const int ALIEN_REGISTRATION_CARD = 185; - - - public const int APEH_CARD = 186; - - - public const int COUPON_TO_DRIVING_LICENSE = 187; - - - public const int CREW_MEMBER_CERTIFICATE = 188; - - - public const int DOCUMENT_FOR_RETURN = 189; - - - public const int E_CARD = 190; - - - public const int EMPLOYMENT_CARD = 191; - - - public const int HKSAR_IMMIGRATION_FORM = 192; - - - public const int IMMIGRANT_CARD = 193; - - - public const int LABOUR_CARD = 194; - - - public const int LAISSEZ_PASSER = 195; - - - public const int LAWYER_IDENTITY_CERTIFICATE = 196; - - - public const int LICENSE_CARD = 197; - - - public const int PASSPORT_STATELESS = 198; - - - public const int PASSPORT_CHILD = 199; - - - public const int PASSPORT_CONSULAR = 200; - - - public const int PASSPORT_DIPLOMATIC_SERVICE = 201; - - - public const int PASSPORT_OFFICIAL = 202; - - - public const int PASSPORT_PROVISIONAL = 203; - - - public const int PASSPORT_SPECIAL = 204; - - - public const int PERMISSION_TO_THE_LOCAL_BORDER_TRAFFIC = 205; - - - public const int REGISTRATION_CERTIFICATE = 206; - - - public const int SEDESOL_CARD = 207; - - - public const int SOCIAL_CARD = 208; - - - public const int TB_CARD = 209; - - - public const int VEHICLE_PASSPORT = 210; - - - public const int W_DOCUMENT = 211; - - - public const int DIPLOMATIC_IDENTITY_CARD = 212; - - - public const int CONSULAR_IDENTITY_CARD = 213; - - - public const int INCOME_TAX_CARD = 214; - - - public const int RESIDENCE_PERMIT = 215; - - - public const int DOCUMENT_OF_IDENTITY = 216; - - - public const int BORDER_CROSSING_PERMIT = 217; - - - public const int PASSPORT_LIMITED_VALIDITY = 218; - - - public const int SIM_CARD = 219; - - - public const int TAX_CARD = 220; - - - public const int COMPANY_CARD = 221; - - - public const int DOMESTIC_PASSPORT = 222; - - - public const int IDENTITY_CERTIFICATE = 223; - - - public const int RESIDENT_ID_CARD = 224; - - - public const int ARMED_FORCES_IDENTITY_CARD = 225; - - - public const int PROFESSIONAL_CARD = 226; - - - public const int REGISTRATION_STAMP = 227; - - - public const int DRIVER_CARD = 228; - - - public const int DRIVER_TRAINING_CERTIFICATE = 229; - - - public const int QUALIFICATION_DRIVING_LICENSE = 230; - - - public const int MEMBERSHIP_CARD = 231; - - - public const int PUBLIC_VEHICLE_DRIVER_AUTHORITY_CARD = 232; - - - public const int MARINE_LICENSE = 233; - - - public const int TEMPORARY_LEARNER_LICENSE = 234; - - - public const int TEMPORARY_COMMERCIAL_DRIVING_LICENSE = 235; - - - public const int INTERIM_INSTRUCTIONAL_PERMIT = 236; - - - public const int CERTIFICATE_OF_COMPETENCY = 237; - - - public const int CERTIFICATE_OF_PROFICIENCY = 238; - - - public const int TRADE_LICENSE = 239; - - - public const int PASSPORT_PAGE = 240; - + /// + /// Enum NOT_DEFINED for value: 0 + /// + NOT_DEFINED = 0, + + /// + /// Enum PASSPORT for value: 11 + /// + PASSPORT = 11, + + /// + /// Enum IDENTITY_CARD for value: 12 + /// + IDENTITY_CARD = 12, + + /// + /// Enum DIPLOMATIC_PASSPORT for value: 13 + /// + DIPLOMATIC_PASSPORT = 13, + + /// + /// Enum SERVICE_PASSPORT for value: 14 + /// + SERVICE_PASSPORT = 14, + + /// + /// Enum SEAMANS_IDENTITY_DOCUMENT for value: 15 + /// + SEAMANS_IDENTITY_DOCUMENT = 15, + + /// + /// Enum IDENTITY_CARD_FOR_RESIDENCE for value: 16 + /// + IDENTITY_CARD_FOR_RESIDENCE = 16, + + /// + /// Enum TRAVEL_DOCUMENT for value: 17 + /// + TRAVEL_DOCUMENT = 17, + + /// + /// Enum NATIONAL_IDENTITY_CARD for value: 20 + /// + NATIONAL_IDENTITY_CARD = 20, + + /// + /// Enum SOCIAL_IDENTITY_CARD for value: 21 + /// + SOCIAL_IDENTITY_CARD = 21, + + /// + /// Enum ALIENS_IDENTITY_CARD for value: 22 + /// + ALIENS_IDENTITY_CARD = 22, + + /// + /// Enum PRIVILEGED_IDENTITY_CARD for value: 23 + /// + PRIVILEGED_IDENTITY_CARD = 23, + + /// + /// Enum RESIDENCE_PERMIT_IDENTITY_CARD for value: 24 + /// + RESIDENCE_PERMIT_IDENTITY_CARD = 24, + + /// + /// Enum ORIGIN_CARD for value: 25 + /// + ORIGIN_CARD = 25, + + /// + /// Enum EMERGENCY_PASSPORT for value: 26 + /// + EMERGENCY_PASSPORT = 26, + + /// + /// Enum ALIENS_PASSPORT for value: 27 + /// + ALIENS_PASSPORT = 27, + + /// + /// Enum ALTERNATIVE_IDENTITY_CARD for value: 28 + /// + ALTERNATIVE_IDENTITY_CARD = 28, + + /// + /// Enum VISA_ID2 for value: 29 + /// + VISA_ID2 = 29, + + /// + /// Enum VISA_ID3 for value: 30 + /// + VISA_ID3 = 30, + + /// + /// Enum AUTHORIZATION_CARD for value: 32 + /// + AUTHORIZATION_CARD = 32, + + /// + /// Enum BEGINNER_PERMIT for value: 33 + /// + BEGINNER_PERMIT = 33, + + /// + /// Enum BORDER_CROSSING_CARD for value: 34 + /// + BORDER_CROSSING_CARD = 34, + + /// + /// Enum CHAUFFEUR_LICENSE for value: 35 + /// + CHAUFFEUR_LICENSE = 35, + + /// + /// Enum CHAUFFEUR_LICENSE_UNDER_18 for value: 36 + /// + CHAUFFEUR_LICENSE_UNDER_18 = 36, + + /// + /// Enum CHAUFFEUR_LICENSE_UNDER_21 for value: 37 + /// + CHAUFFEUR_LICENSE_UNDER_21 = 37, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE for value: 38 + /// + COMMERCIAL_DRIVING_LICENSE = 38, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_INSTRUCTIONAL_PERMIT for value: 39 + /// + COMMERCIAL_DRIVING_LICENSE_INSTRUCTIONAL_PERMIT = 39, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_UNDER_18 for value: 40 + /// + COMMERCIAL_DRIVING_LICENSE_UNDER_18 = 40, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_UNDER_21 for value: 41 + /// + COMMERCIAL_DRIVING_LICENSE_UNDER_21 = 41, + + /// + /// Enum COMMERCIAL_INSTRUCTION_PERMIT for value: 42 + /// + COMMERCIAL_INSTRUCTION_PERMIT = 42, + + /// + /// Enum COMMERCIAL_NEW_PERMIT for value: 43 + /// + COMMERCIAL_NEW_PERMIT = 43, + + /// + /// Enum CONCEALED_CARRY_LICENSE for value: 44 + /// + CONCEALED_CARRY_LICENSE = 44, + + /// + /// Enum CONCEALED_FIREARM_PERMIT for value: 45 + /// + CONCEALED_FIREARM_PERMIT = 45, + + /// + /// Enum CONDITIONAL_DRIVING_LICENSE for value: 46 + /// + CONDITIONAL_DRIVING_LICENSE = 46, + + /// + /// Enum DEPARTMENT_OF_VETERANS_AFFAIRS_IDENTITY_CARD for value: 47 + /// + DEPARTMENT_OF_VETERANS_AFFAIRS_IDENTITY_CARD = 47, + + /// + /// Enum DIPLOMATIC_DRIVING_LICENSE for value: 48 + /// + DIPLOMATIC_DRIVING_LICENSE = 48, + + /// + /// Enum DRIVING_LICENSE for value: 49 + /// + DRIVING_LICENSE = 49, + + /// + /// Enum DRIVING_LICENSE_INSTRUCTIONAL_PERMIT for value: 50 + /// + DRIVING_LICENSE_INSTRUCTIONAL_PERMIT = 50, + + /// + /// Enum DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_18 for value: 51 + /// + DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_18 = 51, + + /// + /// Enum DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_21 for value: 52 + /// + DRIVING_LICENSE_INSTRUCTIONAL_PERMIT_UNDER_21 = 52, + + /// + /// Enum DRIVING_LICENSE_LEARNERS_PERMIT for value: 53 + /// + DRIVING_LICENSE_LEARNERS_PERMIT = 53, + + /// + /// Enum DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_18 for value: 54 + /// + DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_18 = 54, + + /// + /// Enum DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_21 for value: 55 + /// + DRIVING_LICENSE_LEARNERS_PERMIT_UNDER_21 = 55, + + /// + /// Enum DRIVING_LICENSE_NOVICE for value: 56 + /// + DRIVING_LICENSE_NOVICE = 56, + + /// + /// Enum DRIVING_LICENSE_NOVICE_UNDER_18 for value: 57 + /// + DRIVING_LICENSE_NOVICE_UNDER_18 = 57, + + /// + /// Enum DRIVING_LICENSE_NOVICE_UNDER_21 for value: 58 + /// + DRIVING_LICENSE_NOVICE_UNDER_21 = 58, + + /// + /// Enum DRIVING_LICENSE_REGISTERED_OFFENDER for value: 59 + /// + DRIVING_LICENSE_REGISTERED_OFFENDER = 59, + + /// + /// Enum DRIVING_LICENSE_RESTRICTED_UNDER_18 for value: 60 + /// + DRIVING_LICENSE_RESTRICTED_UNDER_18 = 60, + + /// + /// Enum DRIVING_LICENSE_RESTRICTED_UNDER_21 for value: 61 + /// + DRIVING_LICENSE_RESTRICTED_UNDER_21 = 61, + + /// + /// Enum DRIVING_LICENSE_TEMPORARY_VISITOR for value: 62 + /// + DRIVING_LICENSE_TEMPORARY_VISITOR = 62, + + /// + /// Enum DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_18 for value: 63 + /// + DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_18 = 63, + + /// + /// Enum DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_21 for value: 64 + /// + DRIVING_LICENSE_TEMPORARY_VISITOR_UNDER_21 = 64, + + /// + /// Enum DRIVING_LICENSE_UNDER_18 for value: 65 + /// + DRIVING_LICENSE_UNDER_18 = 65, + + /// + /// Enum DRIVING_LICENSE_UNDER_21 for value: 66 + /// + DRIVING_LICENSE_UNDER_21 = 66, + + /// + /// Enum EMPLOYMENT_DRIVING_PERMIT for value: 67 + /// + EMPLOYMENT_DRIVING_PERMIT = 67, + + /// + /// Enum ENHANCED_CHAUFFEUR_LICENSE for value: 68 + /// + ENHANCED_CHAUFFEUR_LICENSE = 68, + + /// + /// Enum ENHANCED_CHAUFFEUR_LICENSE_UNDER_18 for value: 69 + /// + ENHANCED_CHAUFFEUR_LICENSE_UNDER_18 = 69, + + /// + /// Enum ENHANCED_CHAUFFEUR_LICENSE_UNDER_21 for value: 70 + /// + ENHANCED_CHAUFFEUR_LICENSE_UNDER_21 = 70, + + /// + /// Enum ENHANCED_COMMERCIAL_DRIVING_LICENSE for value: 71 + /// + ENHANCED_COMMERCIAL_DRIVING_LICENSE = 71, + + /// + /// Enum ENHANCED_DRIVING_LICENSE for value: 72 + /// + ENHANCED_DRIVING_LICENSE = 72, + + /// + /// Enum ENHANCED_DRIVING_LICENSE_UNDER_18 for value: 73 + /// + ENHANCED_DRIVING_LICENSE_UNDER_18 = 73, + + /// + /// Enum ENHANCED_DRIVING_LICENSE_UNDER_21 for value: 74 + /// + ENHANCED_DRIVING_LICENSE_UNDER_21 = 74, + + /// + /// Enum ENHANCED_IDENTITY_CARD for value: 75 + /// + ENHANCED_IDENTITY_CARD = 75, + + /// + /// Enum ENHANCED_IDENTITY_CARD_UNDER_18 for value: 76 + /// + ENHANCED_IDENTITY_CARD_UNDER_18 = 76, + + /// + /// Enum ENHANCED_IDENTITY_CARD_UNDER_21 for value: 77 + /// + ENHANCED_IDENTITY_CARD_UNDER_21 = 77, + + /// + /// Enum ENHANCED_OPERATORS_LICENSE for value: 78 + /// + ENHANCED_OPERATORS_LICENSE = 78, + + /// + /// Enum FIREARMS_PERMIT for value: 79 + /// + FIREARMS_PERMIT = 79, + + /// + /// Enum FULL_PROVISIONAL_LICENSE for value: 80 + /// + FULL_PROVISIONAL_LICENSE = 80, + + /// + /// Enum FULL_PROVISIONAL_LICENSE_UNDER_18 for value: 81 + /// + FULL_PROVISIONAL_LICENSE_UNDER_18 = 81, + + /// + /// Enum FULL_PROVISIONAL_LICENSE_UNDER_21 for value: 82 + /// + FULL_PROVISIONAL_LICENSE_UNDER_21 = 82, + + /// + /// Enum GENEVA_CONVENTIONS_IDENTITY_CARD for value: 83 + /// + GENEVA_CONVENTIONS_IDENTITY_CARD = 83, + + /// + /// Enum GRADUATED_DRIVING_LICENSE_UNDER_18 for value: 84 + /// + GRADUATED_DRIVING_LICENSE_UNDER_18 = 84, + + /// + /// Enum GRADUATED_DRIVING_LICENSE_UNDER_21 for value: 85 + /// + GRADUATED_DRIVING_LICENSE_UNDER_21 = 85, + + /// + /// Enum GRADUATED_INSTRUCTION_PERMIT_UNDER_18 for value: 86 + /// + GRADUATED_INSTRUCTION_PERMIT_UNDER_18 = 86, + + /// + /// Enum GRADUATED_INSTRUCTION_PERMIT_UNDER_21 for value: 87 + /// + GRADUATED_INSTRUCTION_PERMIT_UNDER_21 = 87, + + /// + /// Enum GRADUATED_LICENSE_UNDER_18 for value: 88 + /// + GRADUATED_LICENSE_UNDER_18 = 88, + + /// + /// Enum GRADUATED_LICENSE_UNDER_21 for value: 89 + /// + GRADUATED_LICENSE_UNDER_21 = 89, + + /// + /// Enum HANDGUN_CARRY_PERMIT for value: 90 + /// + HANDGUN_CARRY_PERMIT = 90, + + /// + /// Enum IDENTITY_AND_PRIVILEGE_CARD for value: 91 + /// + IDENTITY_AND_PRIVILEGE_CARD = 91, + + /// + /// Enum IDENTITY_CARD_MOBILITY_IMPAIRED for value: 92 + /// + IDENTITY_CARD_MOBILITY_IMPAIRED = 92, + + /// + /// Enum IDENTITY_CARD_REGISTERED_OFFENDER for value: 93 + /// + IDENTITY_CARD_REGISTERED_OFFENDER = 93, + + /// + /// Enum IDENTITY_CARD_TEMPORARY_VISITOR for value: 94 + /// + IDENTITY_CARD_TEMPORARY_VISITOR = 94, + + /// + /// Enum IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_18 for value: 95 + /// + IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_18 = 95, + + /// + /// Enum IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_21 for value: 96 + /// + IDENTITY_CARD_TEMPORARY_VISITOR_UNDER_21 = 96, + + /// + /// Enum IDENTITY_CARD_UNDER_18 for value: 97 + /// + IDENTITY_CARD_UNDER_18 = 97, + + /// + /// Enum IDENTITY_CARD_UNDER_21 for value: 98 + /// + IDENTITY_CARD_UNDER_21 = 98, + + /// + /// Enum OTHER for value: 99 + /// + OTHER = 99, + + /// + /// Enum IGNITION_INTERLOCK_PERMIT for value: 100 + /// + IGNITION_INTERLOCK_PERMIT = 100, + + /// + /// Enum IMMIGRANT_VISA for value: 101 + /// + IMMIGRANT_VISA = 101, + + /// + /// Enum INSTRUCTION_PERMIT for value: 102 + /// + INSTRUCTION_PERMIT = 102, + + /// + /// Enum INSTRUCTION_PERMIT_UNDER_18 for value: 103 + /// + INSTRUCTION_PERMIT_UNDER_18 = 103, + + /// + /// Enum INSTRUCTION_PERMIT_UNDER_21 for value: 104 + /// + INSTRUCTION_PERMIT_UNDER_21 = 104, + + /// + /// Enum INTERIM_DRIVING_LICENSE for value: 105 + /// + INTERIM_DRIVING_LICENSE = 105, + + /// + /// Enum INTERIM_IDENTITY_CARD for value: 106 + /// + INTERIM_IDENTITY_CARD = 106, + + /// + /// Enum INTERMEDIATE_DRIVING_LICENSE for value: 107 + /// + INTERMEDIATE_DRIVING_LICENSE = 107, + + /// + /// Enum INTERMEDIATE_DRIVING_LICENSE_UNDER_18 for value: 108 + /// + INTERMEDIATE_DRIVING_LICENSE_UNDER_18 = 108, + + /// + /// Enum INTERMEDIATE_DRIVING_LICENSE_UNDER_21 for value: 109 + /// + INTERMEDIATE_DRIVING_LICENSE_UNDER_21 = 109, + + /// + /// Enum JUNIOR_DRIVING_LICENSE for value: 110 + /// + JUNIOR_DRIVING_LICENSE = 110, + + /// + /// Enum LEARNER_INSTRUCTIONAL_PERMIT for value: 111 + /// + LEARNER_INSTRUCTIONAL_PERMIT = 111, + + /// + /// Enum LEARNER_LICENSE for value: 112 + /// + LEARNER_LICENSE = 112, + + /// + /// Enum LEARNER_LICENSE_UNDER_18 for value: 113 + /// + LEARNER_LICENSE_UNDER_18 = 113, + + /// + /// Enum LEARNER_LICENSE_UNDER_21 for value: 114 + /// + LEARNER_LICENSE_UNDER_21 = 114, + + /// + /// Enum LEARNER_PERMIT for value: 115 + /// + LEARNER_PERMIT = 115, + + /// + /// Enum LEARNER_PERMIT_UNDER_18 for value: 116 + /// + LEARNER_PERMIT_UNDER_18 = 116, + + /// + /// Enum LEARNER_PERMIT_UNDER_21 for value: 117 + /// + LEARNER_PERMIT_UNDER_21 = 117, + + /// + /// Enum LIMITED_LICENSE for value: 118 + /// + LIMITED_LICENSE = 118, + + /// + /// Enum LIMITED_PERMIT for value: 119 + /// + LIMITED_PERMIT = 119, + + /// + /// Enum LIMITED_TERM_DRIVING_LICENSE for value: 120 + /// + LIMITED_TERM_DRIVING_LICENSE = 120, + + /// + /// Enum LIMITED_TERM_IDENTITY_CARD for value: 121 + /// + LIMITED_TERM_IDENTITY_CARD = 121, + + /// + /// Enum LIQUOR_IDENTITY_CARD for value: 122 + /// + LIQUOR_IDENTITY_CARD = 122, + + /// + /// Enum NEW_PERMIT for value: 123 + /// + NEW_PERMIT = 123, + + /// + /// Enum NEW_PERMIT_UNDER_18 for value: 124 + /// + NEW_PERMIT_UNDER_18 = 124, + + /// + /// Enum NEW_PERMIT_UNDER_21 for value: 125 + /// + NEW_PERMIT_UNDER_21 = 125, + + /// + /// Enum NON_US_CITIZEN_DRIVING_LICENSE for value: 126 + /// + NON_US_CITIZEN_DRIVING_LICENSE = 126, + + /// + /// Enum OCCUPATIONAL_DRIVING_LICENSE for value: 127 + /// + OCCUPATIONAL_DRIVING_LICENSE = 127, + + /// + /// Enum ONEIDA_TRIBE_OF_INDIANS_IDENTITY_CARD for value: 128 + /// + ONEIDA_TRIBE_OF_INDIANS_IDENTITY_CARD = 128, + + /// + /// Enum OPERATOR_LICENSE for value: 129 + /// + OPERATOR_LICENSE = 129, + + /// + /// Enum OPERATOR_LICENSE_UNDER_18 for value: 130 + /// + OPERATOR_LICENSE_UNDER_18 = 130, + + /// + /// Enum OPERATOR_LICENSE_UNDER_21 for value: 131 + /// + OPERATOR_LICENSE_UNDER_21 = 131, + + /// + /// Enum PERMANENT_DRIVING_LICENSE for value: 132 + /// + PERMANENT_DRIVING_LICENSE = 132, + + /// + /// Enum PERMIT_TO_REENTER for value: 133 + /// + PERMIT_TO_REENTER = 133, + + /// + /// Enum PROBATIONARY_AUTO_LICENSE for value: 134 + /// + PROBATIONARY_AUTO_LICENSE = 134, + + /// + /// Enum PROBATIONARY_DRIVING_LICENSE_UNDER_18 for value: 135 + /// + PROBATIONARY_DRIVING_LICENSE_UNDER_18 = 135, + + /// + /// Enum PROBATIONARY_DRIVING_LICENSE_UNDER_21 for value: 136 + /// + PROBATIONARY_DRIVING_LICENSE_UNDER_21 = 136, + + /// + /// Enum PROBATIONARY_VEHICLE_SALES_PERSON_LICENSE for value: 137 + /// + PROBATIONARY_VEHICLE_SALES_PERSON_LICENSE = 137, + + /// + /// Enum PROVISIONAL_DRIVING_LICENSE for value: 138 + /// + PROVISIONAL_DRIVING_LICENSE = 138, + + /// + /// Enum PROVISIONAL_DRIVING_LICENSE_UNDER_18 for value: 139 + /// + PROVISIONAL_DRIVING_LICENSE_UNDER_18 = 139, + + /// + /// Enum PROVISIONAL_DRIVING_LICENSE_UNDER_21 for value: 140 + /// + PROVISIONAL_DRIVING_LICENSE_UNDER_21 = 140, + + /// + /// Enum PROVISIONAL_LICENSE for value: 141 + /// + PROVISIONAL_LICENSE = 141, + + /// + /// Enum PROVISIONAL_LICENSE_UNDER_18 for value: 142 + /// + PROVISIONAL_LICENSE_UNDER_18 = 142, + + /// + /// Enum PROVISIONAL_LICENSE_UNDER_21 for value: 143 + /// + PROVISIONAL_LICENSE_UNDER_21 = 143, + + /// + /// Enum PUBLIC_PASSENGER_CHAUFFEUR_LICENSE for value: 144 + /// + PUBLIC_PASSENGER_CHAUFFEUR_LICENSE = 144, + + /// + /// Enum RACING_AND_GAMING_COMISSION_CARD for value: 145 + /// + RACING_AND_GAMING_COMISSION_CARD = 145, + + /// + /// Enum REFUGEE_TRAVEL_DOCUMENT for value: 146 + /// + REFUGEE_TRAVEL_DOCUMENT = 146, + + /// + /// Enum RENEWAL_PERMIT for value: 147 + /// + RENEWAL_PERMIT = 147, + + /// + /// Enum RESTRICTED_COMMERCIAL_DRIVER_LICENSE for value: 148 + /// + RESTRICTED_COMMERCIAL_DRIVER_LICENSE = 148, + + /// + /// Enum RESTRICTED_DRIVER_LICENSE for value: 149 + /// + RESTRICTED_DRIVER_LICENSE = 149, + + /// + /// Enum RESTRICTED_PERMIT for value: 150 + /// + RESTRICTED_PERMIT = 150, + + /// + /// Enum SEASONAL_PERMIT for value: 151 + /// + SEASONAL_PERMIT = 151, + + /// + /// Enum SEASONAL_RESIDENT_IDENTITY_CARD for value: 152 + /// + SEASONAL_RESIDENT_IDENTITY_CARD = 152, + + /// + /// Enum SEASONAL_CITIZEN_IDENTITY_CARD for value: 153 + /// + SEASONAL_CITIZEN_IDENTITY_CARD = 153, + + /// + /// Enum SEX_OFFENDER for value: 154 + /// + SEX_OFFENDER = 154, + + /// + /// Enum SOCIAL_SECURITY_CARD for value: 155 + /// + SOCIAL_SECURITY_CARD = 155, + + /// + /// Enum TEMPORARY_DRIVING_LICENSE for value: 156 + /// + TEMPORARY_DRIVING_LICENSE = 156, + + /// + /// Enum TEMPORARY_DRIVING_LICENSE_UNDER_18 for value: 157 + /// + TEMPORARY_DRIVING_LICENSE_UNDER_18 = 157, + + /// + /// Enum TEMPORARY_DRIVING_LICENSE_UNDER_21 for value: 158 + /// + TEMPORARY_DRIVING_LICENSE_UNDER_21 = 158, + + /// + /// Enum TEMPORARY_IDENTITY_CARD for value: 159 + /// + TEMPORARY_IDENTITY_CARD = 159, + + /// + /// Enum TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD for value: 160 + /// + TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD = 160, + + /// + /// Enum TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_18 for value: 161 + /// + TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_18 = 161, + + /// + /// Enum TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_21 for value: 162 + /// + TEMPORARY_INSTRUCTION_PERMIT_IDENTITY_CARD_UNDER_21 = 162, + + /// + /// Enum TEMPORARY_VISITOR_DRIVING_LICENSE for value: 163 + /// + TEMPORARY_VISITOR_DRIVING_LICENSE = 163, + + /// + /// Enum TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_18 for value: 164 + /// + TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_18 = 164, + + /// + /// Enum TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_21 for value: 165 + /// + TEMPORARY_VISITOR_DRIVING_LICENSE_UNDER_21 = 165, + + /// + /// Enum UNIFORMED_SERVICES_IDENTITY_CARD for value: 166 + /// + UNIFORMED_SERVICES_IDENTITY_CARD = 166, + + /// + /// Enum VEHICLE_SALES_PERSON_LICENSE for value: 167 + /// + VEHICLE_SALES_PERSON_LICENSE = 167, + + /// + /// Enum WORKER_IDENTIFICATION_CREDENTIAL for value: 168 + /// + WORKER_IDENTIFICATION_CREDENTIAL = 168, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_NOVICE for value: 169 + /// + COMMERCIAL_DRIVING_LICENSE_NOVICE = 169, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_18 for value: 170 + /// + COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_18 = 170, + + /// + /// Enum COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_21 for value: 171 + /// + COMMERCIAL_DRIVING_LICENSE_NOVICE_UNDER_21 = 171, + + /// + /// Enum PASSPORT_CARD for value: 172 + /// + PASSPORT_CARD = 172, + + /// + /// Enum PASSPORT_RESIDENT_CARD for value: 173 + /// + PASSPORT_RESIDENT_CARD = 173, + + /// + /// Enum PERSONAL_IDENTIFICATION_VERIFICATION for value: 174 + /// + PERSONAL_IDENTIFICATION_VERIFICATION = 174, + + /// + /// Enum TEMPORARY_OPERATOR_LICENSE for value: 175 + /// + TEMPORARY_OPERATOR_LICENSE = 175, + + /// + /// Enum DRIVING_LICENSE_UNDER_19 for value: 176 + /// + DRIVING_LICENSE_UNDER_19 = 176, + + /// + /// Enum IDENTITY_CARD_UNDER_19 for value: 177 + /// + IDENTITY_CARD_UNDER_19 = 177, + + /// + /// Enum VISA for value: 178 + /// + VISA = 178, + + /// + /// Enum TEMPORARY_PASSPORT for value: 179 + /// + TEMPORARY_PASSPORT = 179, + + /// + /// Enum VOTING_CARD for value: 180 + /// + VOTING_CARD = 180, + + /// + /// Enum HEALTH_CARD for value: 181 + /// + HEALTH_CARD = 181, + + /// + /// Enum CERTIFICATE_OF_CITIZENSHIP for value: 182 + /// + CERTIFICATE_OF_CITIZENSHIP = 182, + + /// + /// Enum ADDRESS_CARD for value: 183 + /// + ADDRESS_CARD = 183, + + /// + /// Enum AIRPORT_IMMIGRATION_CARD for value: 184 + /// + AIRPORT_IMMIGRATION_CARD = 184, + + /// + /// Enum ALIEN_REGISTRATION_CARD for value: 185 + /// + ALIEN_REGISTRATION_CARD = 185, + + /// + /// Enum APEH_CARD for value: 186 + /// + APEH_CARD = 186, + + /// + /// Enum COUPON_TO_DRIVING_LICENSE for value: 187 + /// + COUPON_TO_DRIVING_LICENSE = 187, + + /// + /// Enum CREW_MEMBER_CERTIFICATE for value: 188 + /// + CREW_MEMBER_CERTIFICATE = 188, + + /// + /// Enum DOCUMENT_FOR_RETURN for value: 189 + /// + DOCUMENT_FOR_RETURN = 189, + + /// + /// Enum E_CARD for value: 190 + /// + E_CARD = 190, + + /// + /// Enum EMPLOYMENT_CARD for value: 191 + /// + EMPLOYMENT_CARD = 191, + + /// + /// Enum HKSAR_IMMIGRATION_FORM for value: 192 + /// + HKSAR_IMMIGRATION_FORM = 192, + + /// + /// Enum IMMIGRANT_CARD for value: 193 + /// + IMMIGRANT_CARD = 193, + + /// + /// Enum LABOUR_CARD for value: 194 + /// + LABOUR_CARD = 194, + + /// + /// Enum LAISSEZ_PASSER for value: 195 + /// + LAISSEZ_PASSER = 195, + + /// + /// Enum LAWYER_IDENTITY_CERTIFICATE for value: 196 + /// + LAWYER_IDENTITY_CERTIFICATE = 196, + + /// + /// Enum LICENSE_CARD for value: 197 + /// + LICENSE_CARD = 197, + + /// + /// Enum PASSPORT_STATELESS for value: 198 + /// + PASSPORT_STATELESS = 198, + + /// + /// Enum PASSPORT_CHILD for value: 199 + /// + PASSPORT_CHILD = 199, + + /// + /// Enum PASSPORT_CONSULAR for value: 200 + /// + PASSPORT_CONSULAR = 200, + + /// + /// Enum PASSPORT_DIPLOMATIC_SERVICE for value: 201 + /// + PASSPORT_DIPLOMATIC_SERVICE = 201, + + /// + /// Enum PASSPORT_OFFICIAL for value: 202 + /// + PASSPORT_OFFICIAL = 202, + + /// + /// Enum PASSPORT_PROVISIONAL for value: 203 + /// + PASSPORT_PROVISIONAL = 203, + + /// + /// Enum PASSPORT_SPECIAL for value: 204 + /// + PASSPORT_SPECIAL = 204, + + /// + /// Enum PERMISSION_TO_THE_LOCAL_BORDER_TRAFFIC for value: 205 + /// + PERMISSION_TO_THE_LOCAL_BORDER_TRAFFIC = 205, + + /// + /// Enum REGISTRATION_CERTIFICATE for value: 206 + /// + REGISTRATION_CERTIFICATE = 206, + + /// + /// Enum SEDESOL_CARD for value: 207 + /// + SEDESOL_CARD = 207, + + /// + /// Enum SOCIAL_CARD for value: 208 + /// + SOCIAL_CARD = 208, + + /// + /// Enum TB_CARD for value: 209 + /// + TB_CARD = 209, + + /// + /// Enum VEHICLE_PASSPORT for value: 210 + /// + VEHICLE_PASSPORT = 210, + + /// + /// Enum W_DOCUMENT for value: 211 + /// + W_DOCUMENT = 211, + + /// + /// Enum DIPLOMATIC_IDENTITY_CARD for value: 212 + /// + DIPLOMATIC_IDENTITY_CARD = 212, + + /// + /// Enum CONSULAR_IDENTITY_CARD for value: 213 + /// + CONSULAR_IDENTITY_CARD = 213, + + /// + /// Enum INCOME_TAX_CARD for value: 214 + /// + INCOME_TAX_CARD = 214, + + /// + /// Enum RESIDENCE_PERMIT for value: 215 + /// + RESIDENCE_PERMIT = 215, + + /// + /// Enum DOCUMENT_OF_IDENTITY for value: 216 + /// + DOCUMENT_OF_IDENTITY = 216, + + /// + /// Enum BORDER_CROSSING_PERMIT for value: 217 + /// + BORDER_CROSSING_PERMIT = 217, + + /// + /// Enum PASSPORT_LIMITED_VALIDITY for value: 218 + /// + PASSPORT_LIMITED_VALIDITY = 218, + + /// + /// Enum SIM_CARD for value: 219 + /// + SIM_CARD = 219, + + /// + /// Enum TAX_CARD for value: 220 + /// + TAX_CARD = 220, + + /// + /// Enum COMPANY_CARD for value: 221 + /// + COMPANY_CARD = 221, + + /// + /// Enum DOMESTIC_PASSPORT for value: 222 + /// + DOMESTIC_PASSPORT = 222, + + /// + /// Enum IDENTITY_CERTIFICATE for value: 223 + /// + IDENTITY_CERTIFICATE = 223, + + /// + /// Enum RESIDENT_ID_CARD for value: 224 + /// + RESIDENT_ID_CARD = 224, + + /// + /// Enum ARMED_FORCES_IDENTITY_CARD for value: 225 + /// + ARMED_FORCES_IDENTITY_CARD = 225, + + /// + /// Enum PROFESSIONAL_CARD for value: 226 + /// + PROFESSIONAL_CARD = 226, + + /// + /// Enum REGISTRATION_STAMP for value: 227 + /// + REGISTRATION_STAMP = 227, + + /// + /// Enum DRIVER_CARD for value: 228 + /// + DRIVER_CARD = 228, + + /// + /// Enum DRIVER_TRAINING_CERTIFICATE for value: 229 + /// + DRIVER_TRAINING_CERTIFICATE = 229, + + /// + /// Enum QUALIFICATION_DRIVING_LICENSE for value: 230 + /// + QUALIFICATION_DRIVING_LICENSE = 230, + + /// + /// Enum MEMBERSHIP_CARD for value: 231 + /// + MEMBERSHIP_CARD = 231, + + /// + /// Enum PUBLIC_VEHICLE_DRIVER_AUTHORITY_CARD for value: 232 + /// + PUBLIC_VEHICLE_DRIVER_AUTHORITY_CARD = 232, + + /// + /// Enum MARINE_LICENSE for value: 233 + /// + MARINE_LICENSE = 233, + + /// + /// Enum TEMPORARY_LEARNER_LICENSE for value: 234 + /// + TEMPORARY_LEARNER_LICENSE = 234, + + /// + /// Enum TEMPORARY_COMMERCIAL_DRIVING_LICENSE for value: 235 + /// + TEMPORARY_COMMERCIAL_DRIVING_LICENSE = 235, + + /// + /// Enum INTERIM_INSTRUCTIONAL_PERMIT for value: 236 + /// + INTERIM_INSTRUCTIONAL_PERMIT = 236, + + /// + /// Enum CERTIFICATE_OF_COMPETENCY for value: 237 + /// + CERTIFICATE_OF_COMPETENCY = 237, + + /// + /// Enum CERTIFICATE_OF_PROFICIENCY for value: 238 + /// + CERTIFICATE_OF_PROFICIENCY = 238, + + /// + /// Enum TRADE_LICENSE for value: 239 + /// + TRADE_LICENSE = 239, + + /// + /// Enum PASSPORT_PAGE for value: 240 + /// + PASSPORT_PAGE = 240, + + /// + /// Enum INVOICE for value: 241 + /// + INVOICE = 241, + + /// + /// Enum PASSENGER_LOCATOR_FORM for value: 242 + /// + PASSENGER_LOCATOR_FORM = 242 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentTypeRecognitionResult.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentTypeRecognitionResult.cs index b453d0e..fba21e6 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentTypeRecognitionResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentTypeRecognitionResult.cs @@ -1,40 +1,50 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class DocumentTypeRecognitionResult + /// + /// Defines DocumentTypeRecognitionResult + /// + public enum DocumentTypeRecognitionResult { + /// + /// Enum OK for value: 0 + /// + OK = 0, - /** Document type determined. The first element in candidates array is recognition result */ - public const int OK = 0; - - /** Document type was not determined. Ongoing processing is not possible */ - public const int UNKNOWN = 15; - - /** To determine document type user should provide more images with different light sources (UV, for example) */ - public const int NEED_MORE_IMAGES = 29; + /// + /// Enum UNKNOWN for value: 15 + /// + UNKNOWN = 15, + /// + /// Enum NEED_MORE_IMAGES for value: 29 + /// + NEED_MORE_IMAGES = 29 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs index e6a7d77..3049e9e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,31 +29,31 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocumentTypesCandidates /// - [DataContract] - public partial class DocumentTypesCandidates : IEquatable, IValidatableObject + [DataContract(Name = "DocumentTypesCandidates")] + public partial class DocumentTypesCandidates : IValidatableObject { + + /// + /// Gets or Sets RecResult + /// + [DataMember(Name = "RecResult", EmitDefaultValue = false)] + public DocumentTypeRecognitionResult? RecResult { get; set; } /// /// Initializes a new instance of the class. /// /// recResult. /// candidates. - public DocumentTypesCandidates(int recResult = default(int), List candidates = default(List)) + public DocumentTypesCandidates(DocumentTypeRecognitionResult? recResult = default(DocumentTypeRecognitionResult?), List candidates = default(List)) { this.RecResult = recResult; this.Candidates = candidates; } - - /// - /// Gets or Sets RecResult - /// - [DataMember(Name="RecResult", EmitDefaultValue=false)] - public int RecResult { get; set; } /// /// Gets or Sets Candidates /// - [DataMember(Name="Candidates", EmitDefaultValue=false)] - public List Candidates { get; set; } + [DataMember(Name = "Candidates", EmitDefaultValue = false)] + public List? Candidates { get; set; } /// /// Returns the string presentation of the object @@ -59,14 +61,14 @@ public partial class DocumentTypesCandidates : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentTypesCandidates {\n"); sb.Append(" RecResult: ").Append(RecResult).Append("\n"); sb.Append(" Candidates: ").Append(Candidates).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,63 +78,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentTypesCandidates); - } - - /// - /// Returns true if DocumentTypesCandidates instances are equal - /// - /// Instance of DocumentTypesCandidates to be compared - /// Boolean - public bool Equals(DocumentTypesCandidates input) - { - if (input == null) - return false; - - return - ( - this.RecResult == input.RecResult || - (this.RecResult != null && - this.RecResult.Equals(input.RecResult)) - ) && - ( - this.Candidates == input.Candidates || - this.Candidates != null && - input.Candidates != null && - this.Candidates.SequenceEqual(input.Candidates) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.RecResult != null) - hashCode = hashCode * 59 + this.RecResult.GetHashCode(); - if (this.Candidates != null) - hashCode = hashCode * 59 + this.Candidates.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs index fd81fe4..8c84816 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,31 +29,31 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocumentTypesCandidatesList /// - [DataContract] - public partial class DocumentTypesCandidatesList : IEquatable, IValidatableObject + [DataContract(Name = "DocumentTypesCandidatesList")] + public partial class DocumentTypesCandidatesList : IValidatableObject { + + /// + /// Gets or Sets RecResult + /// + [DataMember(Name = "RecResult", EmitDefaultValue = false)] + public DocumentTypeRecognitionResult? RecResult { get; set; } /// /// Initializes a new instance of the class. /// /// recResult. /// candidates. - public DocumentTypesCandidatesList(int recResult = default(int), List candidates = default(List)) + public DocumentTypesCandidatesList(DocumentTypeRecognitionResult? recResult = default(DocumentTypeRecognitionResult?), List candidates = default(List)) { this.RecResult = recResult; this.Candidates = candidates; } - - /// - /// Gets or Sets RecResult - /// - [DataMember(Name="RecResult", EmitDefaultValue=false)] - public int RecResult { get; set; } /// /// Gets or Sets Candidates /// - [DataMember(Name="Candidates", EmitDefaultValue=false)] - public List Candidates { get; set; } + [DataMember(Name = "Candidates", EmitDefaultValue = false)] + public List? Candidates { get; set; } /// /// Returns the string presentation of the object @@ -59,14 +61,14 @@ public partial class DocumentTypesCandidatesList : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentTypesCandidatesList {\n"); sb.Append(" RecResult: ").Append(RecResult).Append("\n"); sb.Append(" Candidates: ").Append(Candidates).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,63 +78,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentTypesCandidatesList); - } - - /// - /// Returns true if DocumentTypesCandidatesList instances are equal - /// - /// Instance of DocumentTypesCandidatesList to be compared - /// Boolean - public bool Equals(DocumentTypesCandidatesList input) - { - if (input == null) - return false; - - return - ( - this.RecResult == input.RecResult || - (this.RecResult != null && - this.RecResult.Equals(input.RecResult)) - ) && - ( - this.Candidates == input.Candidates || - this.Candidates != null && - input.Candidates != null && - this.Candidates.SequenceEqual(input.Candidates) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.RecResult != null) - hashCode = hashCode * 59 + this.RecResult.GetHashCode(); - if (this.Candidates != null) - hashCode = hashCode * 59 + this.Candidates.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs index ad58fa5..0ef47c4 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// DocumentTypesCandidatesResult /// - [DataContract] - public partial class DocumentTypesCandidatesResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "DocumentTypesCandidatesResult")] + public partial class DocumentTypesCandidatesResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,16 +42,21 @@ protected DocumentTypesCandidatesResult() { } /// Initializes a new instance of the class. /// /// candidatesList. - public DocumentTypesCandidatesResult(DocumentTypesCandidatesList candidatesList = default(DocumentTypesCandidatesList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.DOCUMENT_TYPE_CANDIDATES). + public DocumentTypesCandidatesResult(DocumentTypesCandidatesList candidatesList = default(DocumentTypesCandidatesList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.DOCUMENT_TYPE_CANDIDATES) : base(bufLength, light, listIdx, pageIdx, resultType) { this.CandidatesList = candidatesList; } - + /// /// Gets or Sets CandidatesList /// - [DataMember(Name="CandidatesList", EmitDefaultValue=false)] - public DocumentTypesCandidatesList CandidatesList { get; set; } + [DataMember(Name = "CandidatesList", EmitDefaultValue = false)] + public DocumentTypesCandidatesList? CandidatesList { get; set; } /// /// Returns the string presentation of the object @@ -56,14 +64,14 @@ protected DocumentTypesCandidatesResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentTypesCandidatesResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" CandidatesList: ").Append(CandidatesList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -74,46 +82,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentTypesCandidatesResult); - } - - /// - /// Returns true if DocumentTypesCandidatesResult instances are equal - /// - /// Instance of DocumentTypesCandidatesResult to be compared - /// Boolean - public bool Equals(DocumentTypesCandidatesResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.CandidatesList == input.CandidatesList || - (this.CandidatesList != null && - this.CandidatesList.Equals(input.CandidatesList)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.CandidatesList != null) - hashCode = hashCode * 59 + this.CandidatesList.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -121,9 +96,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/DocumentsDatabase.cs b/src/Regula.DocumentReader.WebClient/Model/DocumentsDatabase.cs index c1ddd9c..ca0dafb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/DocumentsDatabase.cs +++ b/src/Regula.DocumentReader.WebClient/Model/DocumentsDatabase.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Document database information /// - [DataContract] - public partial class DocumentsDatabase : IEquatable, IValidatableObject + [DataContract(Name = "DocumentsDatabase")] + public partial class DocumentsDatabase : IValidatableObject { /// /// Initializes a new instance of the class. @@ -36,42 +38,42 @@ public partial class DocumentsDatabase : IEquatable, IValida /// Document database description. /// Date the document database was created. /// Document database identifier. - /// Document database version. - public DocumentsDatabase(string description = default(string), string exportDate = default(string), string iD = default(string), string version = default(string)) + /// Document database version. + public DocumentsDatabase(string description = default(string), string exportDate = default(string), string iD = default(string), string varVersion = default(string)) { this.Description = description; this.ExportDate = exportDate; this.ID = iD; - this.Version = version; + this.VarVersion = varVersion; } - + /// /// Document database description /// /// Document database description - [DataMember(Name="Description", EmitDefaultValue=false)] - public string Description { get; set; } + [DataMember(Name = "Description", EmitDefaultValue = false)] + public string? Description { get; set; } /// /// Date the document database was created /// /// Date the document database was created - [DataMember(Name="ExportDate", EmitDefaultValue=false)] - public string ExportDate { get; set; } + [DataMember(Name = "ExportDate", EmitDefaultValue = false)] + public string? ExportDate { get; set; } /// /// Document database identifier /// /// Document database identifier - [DataMember(Name="ID", EmitDefaultValue=false)] - public string ID { get; set; } + [DataMember(Name = "ID", EmitDefaultValue = false)] + public string? ID { get; set; } /// /// Document database version /// /// Document database version - [DataMember(Name="Version", EmitDefaultValue=false)] - public string Version { get; set; } + [DataMember(Name = "Version", EmitDefaultValue = false)] + public string? VarVersion { get; set; } /// /// Returns the string presentation of the object @@ -79,16 +81,16 @@ public partial class DocumentsDatabase : IEquatable, IValida /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class DocumentsDatabase {\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" ExportDate: ").Append(ExportDate).Append("\n"); sb.Append(" ID: ").Append(ID).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -98,76 +100,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as DocumentsDatabase); - } - - /// - /// Returns true if DocumentsDatabase instances are equal - /// - /// Instance of DocumentsDatabase to be compared - /// Boolean - public bool Equals(DocumentsDatabase input) - { - if (input == null) - return false; - - return - ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) - ) && - ( - this.ExportDate == input.ExportDate || - (this.ExportDate != null && - this.ExportDate.Equals(input.ExportDate)) - ) && - ( - this.ID == input.ID || - (this.ID != null && - this.ID.Equals(input.ID)) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Description != null) - hashCode = hashCode * 59 + this.Description.GetHashCode(); - if (this.ExportDate != null) - hashCode = hashCode * 59 + this.ExportDate.GetHashCode(); - if (this.ID != null) - hashCode = hashCode * 59 + this.ID.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLItem.cs b/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLItem.cs new file mode 100644 index 0000000..6a77666 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLItem.cs @@ -0,0 +1,97 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// EncryptedRCLItem + /// + [DataContract(Name = "EncryptedRCLItem")] + public partial class EncryptedRCLItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EncryptedRCLItem() { } + /// + /// Initializes a new instance of the class. + /// + /// Base64 encoded data (required). + public EncryptedRCLItem(byte[] encryptedRCL = default(byte[])) + { + // to ensure "encryptedRCL" is required (not null) + if (encryptedRCL == null) + { + throw new ArgumentNullException("encryptedRCL is a required property for EncryptedRCLItem and cannot be null"); + } + this.EncryptedRCL = encryptedRCL; + } + + /// + /// Base64 encoded data + /// + /// Base64 encoded data + /* + [B@73041dc1 + */ + [DataMember(Name = "EncryptedRCL", IsRequired = true, EmitDefaultValue = true)] + public byte[] EncryptedRCL { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class EncryptedRCLItem {\n"); + sb.Append(" EncryptedRCL: ").Append(EncryptedRCL).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs b/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs index 12ee290..82b3fc8 100644 --- a/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs @@ -1,34 +1,37 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// - /// EncryptedRCLResult + /// Contains encrypted result container list /// - [DataContract] - public partial class EncryptedRCLResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "EncryptedRCLResult")] + public partial class EncryptedRCLResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,25 +42,29 @@ protected EncryptedRCLResult() { } /// Initializes a new instance of the class. /// /// Base64 encoded data (required). - public EncryptedRCLResult(byte[] encryptedRCL = default(byte[]), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.ENCRYPTED_RCL). + public EncryptedRCLResult(byte[] encryptedRCL = default(byte[]), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.ENCRYPTED_RCL) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "encryptedRCL" is required (not null) if (encryptedRCL == null) { - throw new InvalidDataException("encryptedRCL is a required property for EncryptedRCLResult and cannot be null"); - } - else - { - this.EncryptedRCL = encryptedRCL; + throw new ArgumentNullException("encryptedRCL is a required property for EncryptedRCLResult and cannot be null"); } - + this.EncryptedRCL = encryptedRCL; } - + /// /// Base64 encoded data /// /// Base64 encoded data - [DataMember(Name="EncryptedRCL", EmitDefaultValue=true)] + /* + [B@73041dc1 + */ + [DataMember(Name = "EncryptedRCL", IsRequired = true, EmitDefaultValue = true)] public byte[] EncryptedRCL { get; set; } /// @@ -66,14 +73,14 @@ protected EncryptedRCLResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class EncryptedRCLResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" EncryptedRCL: ").Append(EncryptedRCL).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -84,46 +91,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as EncryptedRCLResult); - } - - /// - /// Returns true if EncryptedRCLResult instances are equal - /// - /// Instance of EncryptedRCLResult to be compared - /// Boolean - public bool Equals(EncryptedRCLResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.EncryptedRCL == input.EncryptedRCL || - (this.EncryptedRCL != null && - this.EncryptedRCL.Equals(input.EncryptedRCL)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.EncryptedRCL != null) - hashCode = hashCode * 59 + this.EncryptedRCL.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -131,9 +105,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/ErrorCoordinates.cs b/src/Regula.DocumentReader.WebClient/Model/ErrorCoordinates.cs new file mode 100644 index 0000000..d40275d --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ErrorCoordinates.cs @@ -0,0 +1,110 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ErrorCoordinates + /// + [DataContract(Name = "ErrorCoordinates")] + public partial class ErrorCoordinates : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// left. + /// top. + /// right. + /// bottom. + public ErrorCoordinates(decimal left = default(decimal), decimal top = default(decimal), decimal right = default(decimal), decimal bottom = default(decimal)) + { + this.Left = left; + this.Top = top; + this.Right = right; + this.Bottom = bottom; + } + + /// + /// Gets or Sets Left + /// + [DataMember(Name = "Left", EmitDefaultValue = false)] + public decimal? Left { get; set; } + + /// + /// Gets or Sets Top + /// + [DataMember(Name = "Top", EmitDefaultValue = false)] + public decimal? Top { get; set; } + + /// + /// Gets or Sets Right + /// + [DataMember(Name = "Right", EmitDefaultValue = false)] + public decimal? Right { get; set; } + + /// + /// Gets or Sets Bottom + /// + [DataMember(Name = "Bottom", EmitDefaultValue = false)] + public decimal? Bottom { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ErrorCoordinates {\n"); + sb.Append(" Left: ").Append(Left).Append("\n"); + sb.Append(" Top: ").Append(Top).Append("\n"); + sb.Append(" Right: ").Append(Right).Append("\n"); + sb.Append(" Bottom: ").Append(Bottom).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/AuthenticityResult.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/AuthenticityResult.cs index 6b2c9b8..4dbca9d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/AuthenticityResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/AuthenticityResult.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Linq; +using System.Collections.Generic; namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/Autheticity.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/Autheticity.cs index 8d59238..dd67275 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/Autheticity.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/Autheticity.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { @@ -88,36 +86,36 @@ public static IdentChecks LetterScreenChecks(this AuthenticityCheckList auth) } - private static AuthenticityCheckResult resultByType(this AuthenticityCheckList auth, int type) + private static AuthenticityCheckResult resultByType(this AuthenticityCheckList auth, AuthenticityResultType type) { return auth?.List.FirstOrDefault(t => t.Type == type); } - private static FiberChecks filberOrNull(this AuthenticityCheckList auth, int type) + private static FiberChecks filberOrNull(this AuthenticityCheckList auth, AuthenticityResultType type) { AuthenticityCheckResult result = auth.resultByType(type); return result != null ? new FiberChecks(result) : null; } - private static IdentChecks identOrNull(this AuthenticityCheckList auth, int type) + private static IdentChecks identOrNull(this AuthenticityCheckList auth, AuthenticityResultType type) { AuthenticityCheckResult result = auth.resultByType(type); return result != null ? new IdentChecks(result) : null; } - private static ImageIdentChecks imageIdentOrNull(this AuthenticityCheckList auth, int type) + private static ImageIdentChecks imageIdentOrNull(this AuthenticityCheckList auth, AuthenticityResultType type) { AuthenticityCheckResult result = auth.resultByType(type); return result != null ? new ImageIdentChecks(result) : null; } - private static OCRSecurityTextChecks ocrSecurityTextOrNull(this AuthenticityCheckList auth, int type) + private static OCRSecurityTextChecks ocrSecurityTextOrNull(this AuthenticityCheckList auth, AuthenticityResultType type) { AuthenticityCheckResult result = auth.resultByType(type); return result != null ? new OCRSecurityTextChecks(result) : null; } - private static SecurityFeatureChecks securityFeatureOrNull(this AuthenticityCheckList auth, int type) + private static SecurityFeatureChecks securityFeatureOrNull(this AuthenticityCheckList auth, AuthenticityResultType type) { AuthenticityCheckResult result = auth.resultByType(type); return result != null ? new SecurityFeatureChecks(result) : null; diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/FiberChecks.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/FiberChecks.cs index e048305..501a8f7 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/FiberChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/FiberChecks.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity +namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { public class FiberChecks : AuthenticityResult { diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/IdentChecks.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/IdentChecks.cs index cdaab73..9713681 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/IdentChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/IdentChecks.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { @@ -9,9 +7,9 @@ public class IdentChecks : AuthenticityResult public IdentChecks(AuthenticityCheckResult authenticityCheckResult) : base(authenticityCheckResult) { } - public IdentResult ChecksByElement(int type) + public IdentResult ChecksByElement(SecurityFeatureType type) { - return this.Items()?.FirstOrDefault(t => t.Type == type); + return this.Items()?.FirstOrDefault(t => t.ElementType == type); } } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/ImageIdentChecks.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/ImageIdentChecks.cs index d672ddc..3c8679c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/ImageIdentChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/ImageIdentChecks.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity +namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { public class ImageIdentChecks : AuthenticityResult { diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/OCRSecurityTextChecks.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/OCRSecurityTextChecks.cs index 850692d..3874cbf 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/OCRSecurityTextChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/OCRSecurityTextChecks.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity +namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { public class OCRSecurityTextChecks : AuthenticityResult { diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/SecurityFeatureChecks.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/SecurityFeatureChecks.cs index 8700c0b..eac62c8 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/SecurityFeatureChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/Autheticity/SecurityFeatureChecks.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; namespace Regula.DocumentReader.WebClient.Model.Ext.Autheticity { @@ -9,9 +7,9 @@ public class SecurityFeatureChecks : AuthenticityResult public SecurityFeatureChecks(AuthenticityCheckResult authenticityResult) : base(authenticityResult) { } - public SecurityFeatureResult ChecksByElement(int type) + public SecurityFeatureResult ChecksByElement(SecurityFeatureType type) { - return this.Items()?.FirstOrDefault(t => t.Type == type); + return this.Items()?.FirstOrDefault(t => t.ElementType == type); } } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/ImageDataExt.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/ImageDataExt.cs index c0022da..7ebcccb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/ImageDataExt.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/ImageDataExt.cs @@ -1,5 +1,4 @@ using System; -using System.Transactions; namespace Regula.DocumentReader.WebClient.Model.Ext { diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesExtensions.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesExtensions.cs index 55260e2..d5de775 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesExtensions.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesExtensions.cs @@ -4,7 +4,7 @@ namespace Regula.DocumentReader.WebClient.Model.Ext { public static class ImagesExtensions { - public static ImagesField GetField(this Images imgs, int fieldType) + public static ImagesField GetField(this Images imgs, GraphicFieldType fieldType) { foreach (var field in imgs.FieldList) { @@ -14,7 +14,7 @@ public static ImagesField GetField(this Images imgs, int fieldType) return null; } - public static List GetFields(this Images imgs, int fieldType) + public static List GetFields(this Images imgs, GraphicFieldType fieldType) { var fields = new List(); diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesFieldExtensions.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesFieldExtensions.cs index bc12879..73b27a9 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesFieldExtensions.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/ImagesFieldExtensions.cs @@ -5,7 +5,7 @@ namespace Regula.DocumentReader.WebClient.Model.Ext { public static class ImagesFieldExtensions { - public static byte[] GetValue(this ImagesField field, string source, bool original = false) + public static byte[] GetValue(this ImagesField field, Source source, bool original = false) { string strResult; foreach (var value in field.ValueList) diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/ProcessRequestImage.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/ProcessRequestImage.cs index 7ba83a1..936676c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/ProcessRequestImage.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/ProcessRequestImage.cs @@ -6,7 +6,7 @@ namespace Regula.DocumentReader.WebClient.Model { public partial class ProcessRequestImage { - public ProcessRequestImage(byte[] image, int lightIndex = -1) + public ProcessRequestImage(byte[] image, Light lightIndex = Model.Light.WHITE) { if (image == null) { @@ -15,8 +15,7 @@ public ProcessRequestImage(byte[] image, int lightIndex = -1) ImageData = new ImageDataExt(image); - if (lightIndex >= 0) - Light = lightIndex; + Light = lightIndex; } } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionParams.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionParams.cs index 7f9dcbd..2c12226 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionParams.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionParams.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; namespace Regula.DocumentReader.WebClient.Model.Ext @@ -9,7 +8,7 @@ public RecognitionParams WithCustomParams(Dictionary customParam CustomParams = customParams; return this; } - public RecognitionParams WithResultTypeOutput(List resultTypes) { + public RecognitionParams WithResultTypeOutput(List resultTypes) { ResultTypeOutput = resultTypes; return this; } @@ -25,7 +24,7 @@ public RecognitionParams WithFaceApi(string url) { return this; } - public RecognitionParams WithScenario(string scenario) + public RecognitionParams WithScenario(Scenario scenario) { Scenario = scenario; return this; @@ -37,7 +36,7 @@ public RecognitionParams WithLog(bool log) return this; } - public RecognitionParams WithProcessAuth(int processAuth) + public RecognitionParams WithProcessAuth(AuthenticityResultType processAuth) { ProcessAuth = processAuth; return this; diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionResponse.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionResponse.cs index 2a8705b..b784eb5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionResponse.cs @@ -18,7 +18,7 @@ public RecognitionResponse(ApiResponse apiResponse) public ProcessResponse OriginalResponse => this._apiResponse.Data; - public string Json => this._apiResponse.RawResponse; + public string Json => this._apiResponse.RawContent; public AuthenticityResult PortraitComparison() { @@ -80,7 +80,7 @@ public string Log() } } - public T ResultByType(int type, int? pageIdx=0) where T: ResultItem + public T ResultByType(Result type, int? pageIdx=0) where T: ResultItem { foreach(var item in OriginalResponse.ContainerList.List) { @@ -97,7 +97,7 @@ public T ResultByType(int type, int? pageIdx=0) where T: ResultItem return default; } - public List ResultsByType(int type) where T: ResultItem + public List ResultsByType(Result type) where T: ResultItem { var results = new List(); foreach(var item in OriginalResponse.ContainerList.List) diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/TextExtensions.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/TextExtensions.cs index b784da7..2a9250d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/TextExtensions.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/TextExtensions.cs @@ -3,7 +3,7 @@ namespace Regula.DocumentReader.WebClient.Model.Ext public static class TextExtensions { - public static TextField GetField(this Text txt, int fieldType) + public static TextField GetField(this Text txt, TextFieldType fieldType) { TextField result = null; foreach (var field in txt.FieldList) @@ -16,7 +16,7 @@ public static TextField GetField(this Text txt, int fieldType) return result; } - public static TextField GetField(this Text txt, int fieldType, int lcid) + public static TextField GetField(this Text txt, TextFieldType fieldType, LCID lcid) { foreach (var field in txt.FieldList) { @@ -39,7 +39,7 @@ public static TextField GetField(this Text txt, string fieldName) return result; } - public static TextField GetField(this Text txt, string fieldName, int lcid) + public static TextField GetField(this Text txt, string fieldName, LCID lcid) { foreach (var field in txt.FieldList) { @@ -49,12 +49,12 @@ public static TextField GetField(this Text txt, string fieldName, int lcid) return null; } - public static string GetFieldValue(this Text txt, int fieldType) + public static string GetFieldValue(this Text txt, TextFieldType fieldType) { return txt.GetField(fieldType)?.Value; } - public static string GetFieldValue(this Text txt, int fieldType, int lcid) + public static string GetFieldValue(this Text txt, TextFieldType fieldType, LCID lcid) { return txt.GetField(fieldType, lcid)?.Value; } @@ -64,7 +64,7 @@ public static string GetFieldValue(this Text txt, string fieldName) return txt.GetField(fieldName)?.Value; } - public static string GetFieldValue(this Text txt, string fieldName, int lcid) + public static string GetFieldValue(this Text txt, string fieldName, LCID lcid) { return txt.GetField(fieldName, lcid)?.Value; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Ext/TextFieldExtensions.cs b/src/Regula.DocumentReader.WebClient/Model/Ext/TextFieldExtensions.cs index 7734402..52a75db 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Ext/TextFieldExtensions.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Ext/TextFieldExtensions.cs @@ -2,7 +2,7 @@ namespace Regula.DocumentReader.WebClient.Model.Ext { public static class TextFieldExtensions { - public static string GetValue(this TextField field, string source, bool original = false) + public static string GetValue(this TextField field, Source source, bool original = false) { foreach (var value in field.ValueList) { @@ -19,7 +19,7 @@ public static string GetValue(this TextField field, string source, bool original return null; } - public static int SourceValidity(this TextField field, string source) + public static CheckResult SourceValidity(this TextField field, Source source) { foreach (var sourceValidity in field.ValidityList) { @@ -31,7 +31,7 @@ public static int SourceValidity(this TextField field, string source) return CheckResult.WAS_NOT_DONE; } - public static int CrossSourceComparison(this TextField field, string one, string other) + public static CheckResult CrossSourceComparison(this TextField field, Source one, Source other) { foreach (var comparison in field.ComparisonList) { diff --git a/src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs b/src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs index 697ec54..4ea76ad 100644 --- a/src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,112 +29,146 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Extended document type info and Regula's 'Information Reference Systems' links /// - [DataContract] - public partial class FDSIDList : IEquatable, IValidatableObject + [DataContract(Name = "FDSIDList")] + public partial class FDSIDList : IValidatableObject { + + /// + /// Gets or Sets DType + /// + [DataMember(Name = "dType", IsRequired = true, EmitDefaultValue = true)] + public DocumentType DType { get; set; } + + /// + /// Gets or Sets DFormat + /// + [DataMember(Name = "dFormat", IsRequired = true, EmitDefaultValue = true)] + public DocumentFormat DFormat { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FDSIDList() { } /// /// Initializes a new instance of the class. /// - /// ICAO code of the issuing country. - /// Document identifiers in 'Information Reference Systems'. - /// dType. - /// dFormat. - /// Flag indicating the presence of MRZ on the document. + /// ICAO code of the issuing country (required). + /// Number of elements in the List (required). + /// Document identifiers in 'Information Reference Systems' (required). + /// dType (required). + /// dFormat (required). + /// Flag indicating the presence of MRZ on the document (required). /// Document description. - /// Year of publication of the document. - /// Issuing country name. + /// Year of publication of the document (required). + /// Issuing country name (required). /// Issuing state code. /// Issuing state name. - /// Whether the document is deprecated. - public FDSIDList(string iCAOCode = default(string), List list = default(List), int dType = default(int), int dFormat = default(int), bool? dMRZ = default(bool?), string dDescription = default(string), string dYear = default(string), string dCountryName = default(string), string dStateCode = default(string), string dStateName = default(string), bool? isDeprecated = default(bool?)) + /// Whether the document is deprecated (required). + public FDSIDList(string iCAOCode = default(string), decimal count = default(decimal), List list = default(List), DocumentType dType = default(DocumentType), DocumentFormat dFormat = default(DocumentFormat), bool dMRZ = default(bool), string dDescription = default(string), string dYear = default(string), string dCountryName = default(string), string dStateCode = default(string), string dStateName = default(string), bool isDeprecated = default(bool)) { + // to ensure "iCAOCode" is required (not null) + if (iCAOCode == null) + { + throw new ArgumentNullException("iCAOCode is a required property for FDSIDList and cannot be null"); + } this.ICAOCode = iCAOCode; + this.Count = count; + // to ensure "list" is required (not null) + if (list == null) + { + throw new ArgumentNullException("list is a required property for FDSIDList and cannot be null"); + } this.List = list; this.DType = dType; this.DFormat = dFormat; this.DMRZ = dMRZ; - this.DDescription = dDescription; + // to ensure "dYear" is required (not null) + if (dYear == null) + { + throw new ArgumentNullException("dYear is a required property for FDSIDList and cannot be null"); + } this.DYear = dYear; + // to ensure "dCountryName" is required (not null) + if (dCountryName == null) + { + throw new ArgumentNullException("dCountryName is a required property for FDSIDList and cannot be null"); + } this.DCountryName = dCountryName; + this.IsDeprecated = isDeprecated; + this.DDescription = dDescription; this.DStateCode = dStateCode; this.DStateName = dStateName; - this.IsDeprecated = isDeprecated; } - + /// /// ICAO code of the issuing country /// /// ICAO code of the issuing country - [DataMember(Name="ICAOCode", EmitDefaultValue=false)] + [DataMember(Name = "ICAOCode", IsRequired = true, EmitDefaultValue = true)] public string ICAOCode { get; set; } /// - /// Document identifiers in 'Information Reference Systems' - /// - /// Document identifiers in 'Information Reference Systems' - [DataMember(Name="List", EmitDefaultValue=false)] - public List List { get; set; } - - /// - /// Gets or Sets DType + /// Number of elements in the List /// - [DataMember(Name="dType", EmitDefaultValue=false)] - public int DType { get; set; } + /// Number of elements in the List + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] + public decimal Count { get; set; } /// - /// Gets or Sets DFormat + /// Document identifiers in 'Information Reference Systems' /// - [DataMember(Name="dFormat", EmitDefaultValue=false)] - public int DFormat { get; set; } + /// Document identifiers in 'Information Reference Systems' + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] + public List List { get; set; } /// /// Flag indicating the presence of MRZ on the document /// /// Flag indicating the presence of MRZ on the document - [DataMember(Name="dMRZ", EmitDefaultValue=false)] - public bool? DMRZ { get; set; } + [DataMember(Name = "dMRZ", IsRequired = true, EmitDefaultValue = true)] + public bool DMRZ { get; set; } /// /// Document description /// /// Document description - [DataMember(Name="dDescription", EmitDefaultValue=false)] - public string DDescription { get; set; } + [DataMember(Name = "dDescription", EmitDefaultValue = false)] + public string? DDescription { get; set; } /// /// Year of publication of the document /// /// Year of publication of the document - [DataMember(Name="dYear", EmitDefaultValue=false)] + [DataMember(Name = "dYear", IsRequired = true, EmitDefaultValue = true)] public string DYear { get; set; } /// /// Issuing country name /// /// Issuing country name - [DataMember(Name="dCountryName", EmitDefaultValue=false)] + [DataMember(Name = "dCountryName", IsRequired = true, EmitDefaultValue = true)] public string DCountryName { get; set; } /// /// Issuing state code /// /// Issuing state code - [DataMember(Name="dStateCode", EmitDefaultValue=false)] - public string DStateCode { get; set; } + [DataMember(Name = "dStateCode", EmitDefaultValue = false)] + public string? DStateCode { get; set; } /// /// Issuing state name /// /// Issuing state name - [DataMember(Name="dStateName", EmitDefaultValue=false)] - public string DStateName { get; set; } + [DataMember(Name = "dStateName", EmitDefaultValue = false)] + public string? DStateName { get; set; } /// /// Whether the document is deprecated /// /// Whether the document is deprecated - [DataMember(Name="isDeprecated", EmitDefaultValue=false)] - public bool? IsDeprecated { get; set; } + [DataMember(Name = "isDeprecated", IsRequired = true, EmitDefaultValue = true)] + public bool IsDeprecated { get; set; } /// /// Returns the string presentation of the object @@ -140,9 +176,10 @@ public partial class FDSIDList : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class FDSIDList {\n"); sb.Append(" ICAOCode: ").Append(ICAOCode).Append("\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); sb.Append(" DType: ").Append(DType).Append("\n"); sb.Append(" DFormat: ").Append(DFormat).Append("\n"); @@ -156,7 +193,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -166,139 +203,25 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as FDSIDList); - } - - /// - /// Returns true if FDSIDList instances are equal - /// - /// Instance of FDSIDList to be compared - /// Boolean - public bool Equals(FDSIDList input) - { - if (input == null) - return false; - - return - ( - this.ICAOCode == input.ICAOCode || - (this.ICAOCode != null && - this.ICAOCode.Equals(input.ICAOCode)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ) && - ( - this.DType == input.DType || - (this.DType != null && - this.DType.Equals(input.DType)) - ) && - ( - this.DFormat == input.DFormat || - (this.DFormat != null && - this.DFormat.Equals(input.DFormat)) - ) && - ( - this.DMRZ == input.DMRZ || - (this.DMRZ != null && - this.DMRZ.Equals(input.DMRZ)) - ) && - ( - this.DDescription == input.DDescription || - (this.DDescription != null && - this.DDescription.Equals(input.DDescription)) - ) && - ( - this.DYear == input.DYear || - (this.DYear != null && - this.DYear.Equals(input.DYear)) - ) && - ( - this.DCountryName == input.DCountryName || - (this.DCountryName != null && - this.DCountryName.Equals(input.DCountryName)) - ) && - ( - this.DStateCode == input.DStateCode || - (this.DStateCode != null && - this.DStateCode.Equals(input.DStateCode)) - ) && - ( - this.DStateName == input.DStateName || - (this.DStateName != null && - this.DStateName.Equals(input.DStateName)) - ) && - ( - this.IsDeprecated == input.IsDeprecated || - (this.IsDeprecated != null && - this.IsDeprecated.Equals(input.IsDeprecated)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ICAOCode != null) - hashCode = hashCode * 59 + this.ICAOCode.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - if (this.DType != null) - hashCode = hashCode * 59 + this.DType.GetHashCode(); - if (this.DFormat != null) - hashCode = hashCode * 59 + this.DFormat.GetHashCode(); - if (this.DMRZ != null) - hashCode = hashCode * 59 + this.DMRZ.GetHashCode(); - if (this.DDescription != null) - hashCode = hashCode * 59 + this.DDescription.GetHashCode(); - if (this.DYear != null) - hashCode = hashCode * 59 + this.DYear.GetHashCode(); - if (this.DCountryName != null) - hashCode = hashCode * 59 + this.DCountryName.GetHashCode(); - if (this.DStateCode != null) - hashCode = hashCode * 59 + this.DStateCode.GetHashCode(); - if (this.DStateName != null) - hashCode = hashCode * 59 + this.DStateName.GetHashCode(); - if (this.IsDeprecated != null) - hashCode = hashCode * 59 + this.IsDeprecated.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { // ICAOCode (string) maxLength - if(this.ICAOCode != null && this.ICAOCode.Length > 3) + if (this.ICAOCode != null && this.ICAOCode.Length > 3) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for ICAOCode, length must be less than 3.", new [] { "ICAOCode" }); + yield return new ValidationResult("Invalid value for ICAOCode, length must be less than 3.", new [] { "ICAOCode" }); } // ICAOCode (string) minLength - if(this.ICAOCode != null && this.ICAOCode.Length < 3) + if (this.ICAOCode != null && this.ICAOCode.Length < 3) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for ICAOCode, length must be greater than 3.", new [] { "ICAOCode" }); + yield return new ValidationResult("Invalid value for ICAOCode, length must be greater than 3.", new [] { "ICAOCode" }); } - + yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceApi.cs b/src/Regula.DocumentReader.WebClient/Model/FaceApi.cs index c725d72..8d31f4c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/FaceApi.cs +++ b/src/Regula.DocumentReader.WebClient/Model/FaceApi.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// FaceApi /// - [DataContract] - public partial class FaceApi : IEquatable, IValidatableObject + [DataContract(Name = "FaceApi")] + public partial class FaceApi : IValidatableObject { /// /// Initializes a new instance of the class. @@ -56,75 +58,102 @@ public partial class FaceApi : IEquatable, IValidatableObject this.ChildAgeThreshold = childAgeThreshold; this.ChildDocValidityYears = childDocValidityYears; } - + /// /// The URL of the Regula Face Web service to be used. /// /// The URL of the Regula Face Web service to be used. - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } + /* + https://faceapi.regulaforensics.com + */ + [DataMember(Name = "url", EmitDefaultValue = false)] + public string? Url { get; set; } /// /// The processing mode: \"match\" or \"match+search\". /// /// The processing mode: \"match\" or \"match+search\". - [DataMember(Name="mode", EmitDefaultValue=false)] - public string Mode { get; set; } + /* + match + */ + [DataMember(Name = "mode", EmitDefaultValue = false)] + public string? Mode { get; set; } /// /// Gets or Sets Search /// - [DataMember(Name="search", EmitDefaultValue=false)] - public FaceApiSearch Search { get; set; } + [DataMember(Name = "search", EmitDefaultValue = false)] + public FaceApiSearch? Search { get; set; } /// /// The similarity threshold, 0-100. Above 75 means that the faces' similarity is verified, below 75 is not. /// /// The similarity threshold, 0-100. Above 75 means that the faces' similarity is verified, below 75 is not. - [DataMember(Name="threshold", EmitDefaultValue=false)] - public int Threshold { get; set; } + /* + 75 + */ + [DataMember(Name = "threshold", EmitDefaultValue = false)] + public int? Threshold { get; set; } /// /// The Regula Face Web service requests timeout, ms. /// /// The Regula Face Web service requests timeout, ms. - [DataMember(Name="serviceTimeout", EmitDefaultValue=false)] - public int ServiceTimeout { get; set; } + /* + 3000 + */ + [DataMember(Name = "serviceTimeout", EmitDefaultValue = false)] + public int? ServiceTimeout { get; set; } /// /// Proxy to use, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXY.html\" target=\"_blank\">cURL standard</a>. /// /// Proxy to use, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXY.html\" target=\"_blank\">cURL standard</a>. - [DataMember(Name="proxy", EmitDefaultValue=false)] - public string Proxy { get; set; } + /* + http://localhost:8080 + */ + [DataMember(Name = "proxy", EmitDefaultValue = false)] + public string? Proxy { get; set; } /// /// Username and password to use for proxy authentication, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXYUSERPWD.html\" target=\"_blank\">cURL standard</a>. /// /// Username and password to use for proxy authentication, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXYUSERPWD.html\" target=\"_blank\">cURL standard</a>. - [DataMember(Name="proxy_userpwd", EmitDefaultValue=false)] - public string ProxyUserpwd { get; set; } + /* + user:pass + */ + [DataMember(Name = "proxy_userpwd", EmitDefaultValue = false)] + public string? ProxyUserpwd { get; set; } /// /// Proxy protocol type, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXYTYPE.html\" target=\"_blank\">cURL standard</a>. /// /// Proxy protocol type, should be set according to the <a href=\"https://curl.se/libcurl/c/CURLOPT_PROXYTYPE.html\" target=\"_blank\">cURL standard</a>. - [DataMember(Name="proxy_type", EmitDefaultValue=false)] - public int ProxyType { get; set; } + /* + 0 + */ + [DataMember(Name = "proxy_type", EmitDefaultValue = false)] + public int? ProxyType { get; set; } /// /// The age threshold for the portrait comparison. Default: 13. /// /// The age threshold for the portrait comparison. Default: 13. - [DataMember(Name="childAgeThreshold", EmitDefaultValue=false)] - public int ChildAgeThreshold { get; set; } + /* + 13 + */ + [DataMember(Name = "childAgeThreshold", EmitDefaultValue = false)] + public int? ChildAgeThreshold { get; set; } /// /// Estimated duration of validity for a child's passport, years. Default: 5. /// /// Estimated duration of validity for a child's passport, years. Default: 5. - [DataMember(Name="childDocValidityYears", EmitDefaultValue=false)] - public int ChildDocValidityYears { get; set; } + /* + 5 + */ + [DataMember(Name = "childDocValidityYears", EmitDefaultValue = false)] + public int? ChildDocValidityYears { get; set; } /// /// Returns the string presentation of the object @@ -132,7 +161,7 @@ public partial class FaceApi : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class FaceApi {\n"); sb.Append(" Url: ").Append(Url).Append("\n"); sb.Append(" Mode: ").Append(Mode).Append("\n"); @@ -147,7 +176,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -157,118 +186,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as FaceApi); - } - - /// - /// Returns true if FaceApi instances are equal - /// - /// Instance of FaceApi to be compared - /// Boolean - public bool Equals(FaceApi input) - { - if (input == null) - return false; - - return - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ) && - ( - this.Mode == input.Mode || - (this.Mode != null && - this.Mode.Equals(input.Mode)) - ) && - ( - this.Search == input.Search || - (this.Search != null && - this.Search.Equals(input.Search)) - ) && - ( - this.Threshold == input.Threshold || - (this.Threshold != null && - this.Threshold.Equals(input.Threshold)) - ) && - ( - this.ServiceTimeout == input.ServiceTimeout || - (this.ServiceTimeout != null && - this.ServiceTimeout.Equals(input.ServiceTimeout)) - ) && - ( - this.Proxy == input.Proxy || - (this.Proxy != null && - this.Proxy.Equals(input.Proxy)) - ) && - ( - this.ProxyUserpwd == input.ProxyUserpwd || - (this.ProxyUserpwd != null && - this.ProxyUserpwd.Equals(input.ProxyUserpwd)) - ) && - ( - this.ProxyType == input.ProxyType || - (this.ProxyType != null && - this.ProxyType.Equals(input.ProxyType)) - ) && - ( - this.ChildAgeThreshold == input.ChildAgeThreshold || - (this.ChildAgeThreshold != null && - this.ChildAgeThreshold.Equals(input.ChildAgeThreshold)) - ) && - ( - this.ChildDocValidityYears == input.ChildDocValidityYears || - (this.ChildDocValidityYears != null && - this.ChildDocValidityYears.Equals(input.ChildDocValidityYears)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - if (this.Mode != null) - hashCode = hashCode * 59 + this.Mode.GetHashCode(); - if (this.Search != null) - hashCode = hashCode * 59 + this.Search.GetHashCode(); - if (this.Threshold != null) - hashCode = hashCode * 59 + this.Threshold.GetHashCode(); - if (this.ServiceTimeout != null) - hashCode = hashCode * 59 + this.ServiceTimeout.GetHashCode(); - if (this.Proxy != null) - hashCode = hashCode * 59 + this.Proxy.GetHashCode(); - if (this.ProxyUserpwd != null) - hashCode = hashCode * 59 + this.ProxyUserpwd.GetHashCode(); - if (this.ProxyType != null) - hashCode = hashCode * 59 + this.ProxyType.GetHashCode(); - if (this.ChildAgeThreshold != null) - hashCode = hashCode * 59 + this.ChildAgeThreshold.GetHashCode(); - if (this.ChildDocValidityYears != null) - hashCode = hashCode * 59 + this.ChildDocValidityYears.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceApiSearch.cs b/src/Regula.DocumentReader.WebClient/Model/FaceApiSearch.cs index 3c6520f..bc625dd 100644 --- a/src/Regula.DocumentReader.WebClient/Model/FaceApiSearch.cs +++ b/src/Regula.DocumentReader.WebClient/Model/FaceApiSearch.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// A search filter that can be applied if the \"match+search\" mode is enabled. May include limit, threshold, group_ids. If the group_ids are specified, the search is performed only in these groups. Find more information in the <a href=\"https://dev.regulaforensics.com/FaceSDK-web-openapi/#tag/search/operation/search\" target=\"_blank\">OpenAPI documentation</a>. /// - [DataContract] - public partial class FaceApiSearch : IEquatable, IValidatableObject + [DataContract(Name = "FaceApi_search")] + public partial class FaceApiSearch : IValidatableObject { /// /// Initializes a new instance of the class. @@ -42,27 +44,27 @@ public partial class FaceApiSearch : IEquatable, IValidatableObj this.Threshold = threshold; this.GroupIds = groupIds; } - + /// /// The maximum number of results to be returned. /// /// The maximum number of results to be returned. - [DataMember(Name="limit", EmitDefaultValue=false)] - public int Limit { get; set; } + [DataMember(Name = "limit", EmitDefaultValue = false)] + public int? Limit { get; set; } /// /// The similarity threshold. /// /// The similarity threshold. - [DataMember(Name="threshold", EmitDefaultValue=false)] - public float Threshold { get; set; } + [DataMember(Name = "threshold", EmitDefaultValue = false)] + public float? Threshold { get; set; } /// /// The groups where to conduct the search. /// /// The groups where to conduct the search. - [DataMember(Name="group_ids", EmitDefaultValue=false)] - public List GroupIds { get; set; } + [DataMember(Name = "group_ids", EmitDefaultValue = false)] + public List? GroupIds { get; set; } /// /// Returns the string presentation of the object @@ -70,7 +72,7 @@ public partial class FaceApiSearch : IEquatable, IValidatableObj /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class FaceApiSearch {\n"); sb.Append(" Limit: ").Append(Limit).Append("\n"); sb.Append(" Threshold: ").Append(Threshold).Append("\n"); @@ -78,7 +80,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -88,70 +90,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as FaceApiSearch); - } - - /// - /// Returns true if FaceApiSearch instances are equal - /// - /// Instance of FaceApiSearch to be compared - /// Boolean - public bool Equals(FaceApiSearch input) - { - if (input == null) - return false; - - return - ( - this.Limit == input.Limit || - (this.Limit != null && - this.Limit.Equals(input.Limit)) - ) && - ( - this.Threshold == input.Threshold || - (this.Threshold != null && - this.Threshold.Equals(input.Threshold)) - ) && - ( - this.GroupIds == input.GroupIds || - this.GroupIds != null && - input.GroupIds != null && - this.GroupIds.SequenceEqual(input.GroupIds) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Limit != null) - hashCode = hashCode * 59 + this.Limit.GetHashCode(); - if (this.Threshold != null) - hashCode = hashCode * 59 + this.Threshold.GetHashCode(); - if (this.GroupIds != null) - hashCode = hashCode * 59 + this.GroupIds.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceDetection.cs b/src/Regula.DocumentReader.WebClient/Model/FaceDetection.cs new file mode 100644 index 0000000..d72a452 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FaceDetection.cs @@ -0,0 +1,129 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FaceDetection + /// + [DataContract(Name = "FaceDetection")] + public partial class FaceDetection : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FaceDetection() { } + /// + /// Initializes a new instance of the class. + /// + /// count (required). + /// countFalseDetection (required). + /// res (required). + /// reserved1. + /// reserved2. + public FaceDetection(int count = default(int), int countFalseDetection = default(int), List res = default(List), int reserved1 = default(int), int reserved2 = default(int)) + { + this.Count = count; + this.CountFalseDetection = countFalseDetection; + // to ensure "res" is required (not null) + if (res == null) + { + throw new ArgumentNullException("res is a required property for FaceDetection and cannot be null"); + } + this.Res = res; + this.Reserved1 = reserved1; + this.Reserved2 = reserved2; + } + + /// + /// Gets or Sets Count + /// + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] + public int Count { get; set; } + + /// + /// Gets or Sets CountFalseDetection + /// + [DataMember(Name = "CountFalseDetection", IsRequired = true, EmitDefaultValue = true)] + public int CountFalseDetection { get; set; } + + /// + /// Gets or Sets Res + /// + [DataMember(Name = "Res", IsRequired = true, EmitDefaultValue = true)] + public List Res { get; set; } + + /// + /// Gets or Sets Reserved1 + /// + [DataMember(Name = "Reserved1", EmitDefaultValue = false)] + public int? Reserved1 { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FaceDetection {\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); + sb.Append(" CountFalseDetection: ").Append(CountFalseDetection).Append("\n"); + sb.Append(" Res: ").Append(Res).Append("\n"); + sb.Append(" Reserved1: ").Append(Reserved1).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceDetectionItem.cs b/src/Regula.DocumentReader.WebClient/Model/FaceDetectionItem.cs new file mode 100644 index 0000000..ae8ff5b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FaceDetectionItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FaceDetectionItem + /// + [DataContract(Name = "FaceDetectionItem")] + public partial class FaceDetectionItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FaceDetectionItem() { } + /// + /// Initializes a new instance of the class. + /// + /// faceDetection (required). + public FaceDetectionItem(FaceDetection faceDetection = default(FaceDetection)) + { + // to ensure "faceDetection" is required (not null) + if (faceDetection == null) + { + throw new ArgumentNullException("faceDetection is a required property for FaceDetectionItem and cannot be null"); + } + this.FaceDetection = faceDetection; + } + + /// + /// Gets or Sets FaceDetection + /// + [DataMember(Name = "FaceDetection", IsRequired = true, EmitDefaultValue = true)] + public FaceDetection FaceDetection { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FaceDetectionItem {\n"); + sb.Append(" FaceDetection: ").Append(FaceDetection).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceDetectionResult.cs b/src/Regula.DocumentReader.WebClient/Model/FaceDetectionResult.cs new file mode 100644 index 0000000..aee7740 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FaceDetectionResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FaceDetectionResult + /// + [DataContract(Name = "FaceDetectionResult")] + public partial class FaceDetectionResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FaceDetectionResult() { } + /// + /// Initializes a new instance of the class. + /// + /// faceDetection (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.FACE_DETECTION). + public FaceDetectionResult(FaceDetection faceDetection = default(FaceDetection), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.FACE_DETECTION) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "faceDetection" is required (not null) + if (faceDetection == null) + { + throw new ArgumentNullException("faceDetection is a required property for FaceDetectionResult and cannot be null"); + } + this.FaceDetection = faceDetection; + } + + /// + /// Gets or Sets FaceDetection + /// + [DataMember(Name = "FaceDetection", IsRequired = true, EmitDefaultValue = true)] + public FaceDetection FaceDetection { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FaceDetectionResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" FaceDetection: ").Append(FaceDetection).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FaceItem.cs b/src/Regula.DocumentReader.WebClient/Model/FaceItem.cs new file mode 100644 index 0000000..9ef1cda --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FaceItem.cs @@ -0,0 +1,166 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FaceItem + /// + [DataContract(Name = "FaceItem")] + public partial class FaceItem : IValidatableObject + { + + /// + /// Gets or Sets LightType + /// + [DataMember(Name = "LightType", IsRequired = true, EmitDefaultValue = true)] + public Light LightType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FaceItem() { } + /// + /// Initializes a new instance of the class. + /// + /// coincidenceToPhotoArea (required). + /// faceRect (required). + /// fieldRect (required). + /// graphFieldNumber (required). + /// landmarks (required). + /// lightType (required). + /// orientation (required). + /// probability (required). + public FaceItem(int coincidenceToPhotoArea = default(int), RectangleCoordinates faceRect = default(RectangleCoordinates), RectangleCoordinates fieldRect = default(RectangleCoordinates), int graphFieldNumber = default(int), List landmarks = default(List), Light lightType = default(Light), int orientation = default(int), int probability = default(int)) + { + this.CoincidenceToPhotoArea = coincidenceToPhotoArea; + // to ensure "faceRect" is required (not null) + if (faceRect == null) + { + throw new ArgumentNullException("faceRect is a required property for FaceItem and cannot be null"); + } + this.FaceRect = faceRect; + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) + { + throw new ArgumentNullException("fieldRect is a required property for FaceItem and cannot be null"); + } + this.FieldRect = fieldRect; + this.GraphFieldNumber = graphFieldNumber; + // to ensure "landmarks" is required (not null) + if (landmarks == null) + { + throw new ArgumentNullException("landmarks is a required property for FaceItem and cannot be null"); + } + this.Landmarks = landmarks; + this.LightType = lightType; + this.Orientation = orientation; + this.Probability = probability; + } + + /// + /// Gets or Sets CoincidenceToPhotoArea + /// + [DataMember(Name = "CoincidenceToPhotoArea", IsRequired = true, EmitDefaultValue = true)] + public int CoincidenceToPhotoArea { get; set; } + + /// + /// Gets or Sets FaceRect + /// + [DataMember(Name = "FaceRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates FaceRect { get; set; } + + /// + /// Gets or Sets FieldRect + /// + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates FieldRect { get; set; } + + /// + /// Gets or Sets GraphFieldNumber + /// + [DataMember(Name = "GraphFieldNumber", IsRequired = true, EmitDefaultValue = true)] + public int GraphFieldNumber { get; set; } + + /// + /// Gets or Sets Landmarks + /// + [DataMember(Name = "Landmarks", IsRequired = true, EmitDefaultValue = true)] + public List Landmarks { get; set; } + + /// + /// Gets or Sets Orientation + /// + [DataMember(Name = "Orientation", IsRequired = true, EmitDefaultValue = true)] + public int Orientation { get; set; } + + /// + /// Gets or Sets Probability + /// + [DataMember(Name = "Probability", IsRequired = true, EmitDefaultValue = true)] + public int Probability { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FaceItem {\n"); + sb.Append(" CoincidenceToPhotoArea: ").Append(CoincidenceToPhotoArea).Append("\n"); + sb.Append(" FaceRect: ").Append(FaceRect).Append("\n"); + sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); + sb.Append(" GraphFieldNumber: ").Append(GraphFieldNumber).Append("\n"); + sb.Append(" Landmarks: ").Append(Landmarks).Append("\n"); + sb.Append(" LightType: ").Append(LightType).Append("\n"); + sb.Append(" Orientation: ").Append(Orientation).Append("\n"); + sb.Append(" Probability: ").Append(Probability).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FiberItem.cs b/src/Regula.DocumentReader.WebClient/Model/FiberItem.cs new file mode 100644 index 0000000..5ed4523 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FiberItem.cs @@ -0,0 +1,196 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FiberItem + /// + [DataContract(Name = "FiberItem")] + public partial class FiberItem : IValidatableObject + { + + /// + /// Gets or Sets LightValue + /// + [DataMember(Name = "LightValue", EmitDefaultValue = false)] + public Light? LightValue { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FiberItem() { } + /// + /// Initializes a new instance of the class. + /// + /// For UV_Fibers authenticity result type (required). + /// Expected fibers number. For UV_Fibers authentication result type (required). + /// lightValue. + /// For UV_Background authentication result type. + /// Coordinates of located areas for defined fibers type (required). + /// Fibers width value for located areas (in pixels) (required). + /// Fibers length value for located areas (in pixels) (required). + /// Fibers value for areas (in pixels) (required). + /// Fibers color value (required). + public FiberItem(int rectCount = default(int), int expectedCount = default(int), Light? lightValue = default(Light?), int lightDisp = default(int), List rectArray = default(List), List width = default(List), List length = default(List), List area = default(List), List colorValues = default(List)) + { + this.RectCount = rectCount; + this.ExpectedCount = expectedCount; + // to ensure "rectArray" is required (not null) + if (rectArray == null) + { + throw new ArgumentNullException("rectArray is a required property for FiberItem and cannot be null"); + } + this.RectArray = rectArray; + // to ensure "width" is required (not null) + if (width == null) + { + throw new ArgumentNullException("width is a required property for FiberItem and cannot be null"); + } + this.Width = width; + // to ensure "length" is required (not null) + if (length == null) + { + throw new ArgumentNullException("length is a required property for FiberItem and cannot be null"); + } + this.Length = length; + // to ensure "area" is required (not null) + if (area == null) + { + throw new ArgumentNullException("area is a required property for FiberItem and cannot be null"); + } + this.Area = area; + // to ensure "colorValues" is required (not null) + if (colorValues == null) + { + throw new ArgumentNullException("colorValues is a required property for FiberItem and cannot be null"); + } + this.ColorValues = colorValues; + this.LightValue = lightValue; + this.LightDisp = lightDisp; + } + + /// + /// For UV_Fibers authenticity result type + /// + /// For UV_Fibers authenticity result type + [DataMember(Name = "RectCount", IsRequired = true, EmitDefaultValue = true)] + public int RectCount { get; set; } + + /// + /// Expected fibers number. For UV_Fibers authentication result type + /// + /// Expected fibers number. For UV_Fibers authentication result type + [DataMember(Name = "ExpectedCount", IsRequired = true, EmitDefaultValue = true)] + public int ExpectedCount { get; set; } + + /// + /// For UV_Background authentication result type + /// + /// For UV_Background authentication result type + [DataMember(Name = "LightDisp", EmitDefaultValue = false)] + public int? LightDisp { get; set; } + + /// + /// Coordinates of located areas for defined fibers type + /// + /// Coordinates of located areas for defined fibers type + [DataMember(Name = "RectArray", IsRequired = true, EmitDefaultValue = true)] + public List RectArray { get; set; } + + /// + /// Fibers width value for located areas (in pixels) + /// + /// Fibers width value for located areas (in pixels) + [DataMember(Name = "Width", IsRequired = true, EmitDefaultValue = true)] + public List Width { get; set; } + + /// + /// Fibers length value for located areas (in pixels) + /// + /// Fibers length value for located areas (in pixels) + [DataMember(Name = "Length", IsRequired = true, EmitDefaultValue = true)] + public List Length { get; set; } + + /// + /// Fibers value for areas (in pixels) + /// + /// Fibers value for areas (in pixels) + [DataMember(Name = "Area", IsRequired = true, EmitDefaultValue = true)] + public List Area { get; set; } + + /// + /// Fibers color value + /// + /// Fibers color value + /* + ["BLUE","GREEN","RED"] + */ + [DataMember(Name = "ColorValues", IsRequired = true, EmitDefaultValue = true)] + public List ColorValues { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FiberItem {\n"); + sb.Append(" RectCount: ").Append(RectCount).Append("\n"); + sb.Append(" ExpectedCount: ").Append(ExpectedCount).Append("\n"); + sb.Append(" LightValue: ").Append(LightValue).Append("\n"); + sb.Append(" LightDisp: ").Append(LightDisp).Append("\n"); + sb.Append(" RectArray: ").Append(RectArray).Append("\n"); + sb.Append(" Width: ").Append(Width).Append("\n"); + sb.Append(" Length: ").Append(Length).Append("\n"); + sb.Append(" Area: ").Append(Area).Append("\n"); + sb.Append(" ColorValues: ").Append(ColorValues).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FiberResult.cs b/src/Regula.DocumentReader.WebClient/Model/FiberResult.cs index 28e5056..2835e2f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/FiberResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/FiberResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +30,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// FiberResult /// - [DataContract] - public partial class FiberResult : AuthenticityCheckResultItem, IEquatable, IValidatableObject + [DataContract(Name = "FiberResult")] + public partial class FiberResult : AuthenticityCheckResultItem, IValidatableObject { + + /// + /// Gets or Sets LightValue + /// + [DataMember(Name = "LightValue", EmitDefaultValue = false)] + public Light? LightValue { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,88 +47,114 @@ protected FiberResult() { } /// /// Initializes a new instance of the class. /// - /// For UV_Fibers authenticity result type. - /// Expected fibers number. For UV_Fibers authentication result type. + /// For UV_Fibers authenticity result type (required). + /// Expected fibers number. For UV_Fibers authentication result type (required). /// lightValue. /// For UV_Background authentication result type. - /// Coordinates of located areas for defined fibers type. - /// Fibers width value for located areas (in pixels). - /// Fibers length value for located areas (in pixels). - /// Fibers value for areas (in pixels). - /// Fibers color value. - public FiberResult(int rectCount = default(int), int expectedCount = default(int), int lightValue = default(int), int lightDisp = default(int), List rectArray = default(List), List width = default(List), List length = default(List), List area = default(List), List colorValues = default(List), int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) + /// Coordinates of located areas for defined fibers type (required). + /// Fibers width value for located areas (in pixels) (required). + /// Fibers length value for located areas (in pixels) (required). + /// Fibers value for areas (in pixels) (required). + /// Fibers color value (required). + /// type (required) (default to AuthenticityResultType.UV_FIBERS). + /// elementResult. + /// elementDiagnose. + /// percentValue. + public FiberResult(int rectCount = default(int), int expectedCount = default(int), Light? lightValue = default(Light?), int lightDisp = default(int), List rectArray = default(List), List width = default(List), List length = default(List), List area = default(List), List colorValues = default(List), AuthenticityResultType type = AuthenticityResultType.UV_FIBERS, CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) { this.RectCount = rectCount; this.ExpectedCount = expectedCount; - this.LightValue = lightValue; - this.LightDisp = lightDisp; + // to ensure "rectArray" is required (not null) + if (rectArray == null) + { + throw new ArgumentNullException("rectArray is a required property for FiberResult and cannot be null"); + } this.RectArray = rectArray; + // to ensure "width" is required (not null) + if (width == null) + { + throw new ArgumentNullException("width is a required property for FiberResult and cannot be null"); + } this.Width = width; + // to ensure "length" is required (not null) + if (length == null) + { + throw new ArgumentNullException("length is a required property for FiberResult and cannot be null"); + } this.Length = length; + // to ensure "area" is required (not null) + if (area == null) + { + throw new ArgumentNullException("area is a required property for FiberResult and cannot be null"); + } this.Area = area; + // to ensure "colorValues" is required (not null) + if (colorValues == null) + { + throw new ArgumentNullException("colorValues is a required property for FiberResult and cannot be null"); + } this.ColorValues = colorValues; + this.LightValue = lightValue; + this.LightDisp = lightDisp; } - + /// /// For UV_Fibers authenticity result type /// /// For UV_Fibers authenticity result type - [DataMember(Name="RectCount", EmitDefaultValue=false)] + [DataMember(Name = "RectCount", IsRequired = true, EmitDefaultValue = true)] public int RectCount { get; set; } /// /// Expected fibers number. For UV_Fibers authentication result type /// /// Expected fibers number. For UV_Fibers authentication result type - [DataMember(Name="ExpectedCount", EmitDefaultValue=false)] + [DataMember(Name = "ExpectedCount", IsRequired = true, EmitDefaultValue = true)] public int ExpectedCount { get; set; } - /// - /// Gets or Sets LightValue - /// - [DataMember(Name="LightValue", EmitDefaultValue=false)] - public int LightValue { get; set; } - /// /// For UV_Background authentication result type /// /// For UV_Background authentication result type - [DataMember(Name="LightDisp", EmitDefaultValue=false)] - public int LightDisp { get; set; } + [DataMember(Name = "LightDisp", EmitDefaultValue = false)] + public int? LightDisp { get; set; } /// /// Coordinates of located areas for defined fibers type /// /// Coordinates of located areas for defined fibers type - [DataMember(Name="RectArray", EmitDefaultValue=false)] + [DataMember(Name = "RectArray", IsRequired = true, EmitDefaultValue = true)] public List RectArray { get; set; } /// /// Fibers width value for located areas (in pixels) /// /// Fibers width value for located areas (in pixels) - [DataMember(Name="Width", EmitDefaultValue=false)] + [DataMember(Name = "Width", IsRequired = true, EmitDefaultValue = true)] public List Width { get; set; } /// /// Fibers length value for located areas (in pixels) /// /// Fibers length value for located areas (in pixels) - [DataMember(Name="Length", EmitDefaultValue=false)] + [DataMember(Name = "Length", IsRequired = true, EmitDefaultValue = true)] public List Length { get; set; } /// /// Fibers value for areas (in pixels) /// /// Fibers value for areas (in pixels) - [DataMember(Name="Area", EmitDefaultValue=false)] + [DataMember(Name = "Area", IsRequired = true, EmitDefaultValue = true)] public List Area { get; set; } /// /// Fibers color value /// /// Fibers color value - [DataMember(Name="ColorValues", EmitDefaultValue=false)] + /* + [BLUE, GREEN, RED] + */ + [DataMember(Name = "ColorValues", IsRequired = true, EmitDefaultValue = true)] public List ColorValues { get; set; } /// @@ -128,7 +163,7 @@ protected FiberResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class FiberResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" RectCount: ").Append(RectCount).Append("\n"); @@ -143,7 +178,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -154,107 +189,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as FiberResult); - } - - /// - /// Returns true if FiberResult instances are equal - /// - /// Instance of FiberResult to be compared - /// Boolean - public bool Equals(FiberResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.RectCount == input.RectCount || - (this.RectCount != null && - this.RectCount.Equals(input.RectCount)) - ) && base.Equals(input) && - ( - this.ExpectedCount == input.ExpectedCount || - (this.ExpectedCount != null && - this.ExpectedCount.Equals(input.ExpectedCount)) - ) && base.Equals(input) && - ( - this.LightValue == input.LightValue || - (this.LightValue != null && - this.LightValue.Equals(input.LightValue)) - ) && base.Equals(input) && - ( - this.LightDisp == input.LightDisp || - (this.LightDisp != null && - this.LightDisp.Equals(input.LightDisp)) - ) && base.Equals(input) && - ( - this.RectArray == input.RectArray || - this.RectArray != null && - input.RectArray != null && - this.RectArray.SequenceEqual(input.RectArray) - ) && base.Equals(input) && - ( - this.Width == input.Width || - this.Width != null && - input.Width != null && - this.Width.SequenceEqual(input.Width) - ) && base.Equals(input) && - ( - this.Length == input.Length || - this.Length != null && - input.Length != null && - this.Length.SequenceEqual(input.Length) - ) && base.Equals(input) && - ( - this.Area == input.Area || - this.Area != null && - input.Area != null && - this.Area.SequenceEqual(input.Area) - ) && base.Equals(input) && - ( - this.ColorValues == input.ColorValues || - this.ColorValues != null && - input.ColorValues != null && - this.ColorValues.SequenceEqual(input.ColorValues) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.RectCount != null) - hashCode = hashCode * 59 + this.RectCount.GetHashCode(); - if (this.ExpectedCount != null) - hashCode = hashCode * 59 + this.ExpectedCount.GetHashCode(); - if (this.LightValue != null) - hashCode = hashCode * 59 + this.LightValue.GetHashCode(); - if (this.LightDisp != null) - hashCode = hashCode * 59 + this.LightDisp.GetHashCode(); - if (this.RectArray != null) - hashCode = hashCode * 59 + this.RectArray.GetHashCode(); - if (this.Width != null) - hashCode = hashCode * 59 + this.Width.GetHashCode(); - if (this.Length != null) - hashCode = hashCode * 59 + this.Length.GetHashCode(); - if (this.Area != null) - hashCode = hashCode * 59 + this.Area.GetHashCode(); - if (this.ColorValues != null) - hashCode = hashCode * 59 + this.ColorValues.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -262,9 +203,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/FieldItem.cs b/src/Regula.DocumentReader.WebClient/Model/FieldItem.cs new file mode 100644 index 0000000..67c38ec --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FieldItem.cs @@ -0,0 +1,133 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FieldItem + /// + [DataContract(Name = "FieldItem")] + public partial class FieldItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FieldItem() { } + /// + /// Initializes a new instance of the class. + /// + /// fieldLength (required). + /// fieldPos (required). + /// fieldType (required). + /// tESTRESULT (required). + /// validCheckSum (required). + /// reserved (required). + public FieldItem(int fieldLength = default(int), int fieldPos = default(int), int fieldType = default(int), int tESTRESULT = default(int), int validCheckSum = default(int), int reserved = default(int)) + { + this.FieldLength = fieldLength; + this.FieldPos = fieldPos; + this.FieldType = fieldType; + this.TEST_RESULT = tESTRESULT; + this.ValidCheckSum = validCheckSum; + this.Reserved = reserved; + } + + /// + /// Gets or Sets FieldLength + /// + [DataMember(Name = "FieldLength", IsRequired = true, EmitDefaultValue = true)] + public int FieldLength { get; set; } + + /// + /// Gets or Sets FieldPos + /// + [DataMember(Name = "FieldPos", IsRequired = true, EmitDefaultValue = true)] + public int FieldPos { get; set; } + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", IsRequired = true, EmitDefaultValue = true)] + public int FieldType { get; set; } + + /// + /// Gets or Sets TEST_RESULT + /// + [DataMember(Name = "TEST_RESULT", IsRequired = true, EmitDefaultValue = true)] + public int TEST_RESULT { get; set; } + + /// + /// Gets or Sets ValidCheckSum + /// + [DataMember(Name = "ValidCheckSum", IsRequired = true, EmitDefaultValue = true)] + public int ValidCheckSum { get; set; } + + /// + /// Gets or Sets Reserved + /// + [DataMember(Name = "reserved", IsRequired = true, EmitDefaultValue = true)] + public int Reserved { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FieldItem {\n"); + sb.Append(" FieldLength: ").Append(FieldLength).Append("\n"); + sb.Append(" FieldPos: ").Append(FieldPos).Append("\n"); + sb.Append(" FieldType: ").Append(FieldType).Append("\n"); + sb.Append(" TEST_RESULT: ").Append(TEST_RESULT).Append("\n"); + sb.Append(" ValidCheckSum: ").Append(ValidCheckSum).Append("\n"); + sb.Append(" Reserved: ").Append(Reserved).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/FileImage.cs b/src/Regula.DocumentReader.WebClient/Model/FileImage.cs new file mode 100644 index 0000000..7e160a5 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/FileImage.cs @@ -0,0 +1,102 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// FileImage + /// + [DataContract(Name = "FileImage")] + public partial class FileImage : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FileImage() { } + /// + /// Initializes a new instance of the class. + /// + /// data (required). + /// length (required). + public FileImage(string data = default(string), int length = default(int)) + { + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for FileImage and cannot be null"); + } + this.Data = data; + this.Length = length; + } + + /// + /// Gets or Sets Data + /// + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Gets or Sets Length + /// + [DataMember(Name = "Length", IsRequired = true, EmitDefaultValue = true)] + public int Length { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class FileImage {\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" Length: ").Append(Length).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/GetTransactionsByTagResponse.cs b/src/Regula.DocumentReader.WebClient/Model/GetTransactionsByTagResponse.cs index eb6eb63..09bc224 100644 --- a/src/Regula.DocumentReader.WebClient/Model/GetTransactionsByTagResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Model/GetTransactionsByTagResponse.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// GetTransactionsByTagResponse /// - [DataContract] - public partial class GetTransactionsByTagResponse : IEquatable, IValidatableObject + [DataContract(Name = "GetTransactionsByTagResponse")] + public partial class GetTransactionsByTagResponse : IValidatableObject { /// /// Initializes a new instance of the class. @@ -42,27 +44,27 @@ public partial class GetTransactionsByTagResponse : IEquatable /// Transaction id /// /// Transaction id - [DataMember(Name="id", EmitDefaultValue=false)] - public Guid Id { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public Guid? Id { get; set; } /// /// Transaction status /// /// Transaction status - [DataMember(Name="state", EmitDefaultValue=false)] - public int State { get; set; } + [DataMember(Name = "state", EmitDefaultValue = false)] + public int? State { get; set; } /// /// Last time updated /// /// Last time updated - [DataMember(Name="updatedAt", EmitDefaultValue=false)] - public DateTime UpdatedAt { get; set; } + [DataMember(Name = "updatedAt", EmitDefaultValue = false)] + public DateTime? UpdatedAt { get; set; } /// /// Returns the string presentation of the object @@ -70,7 +72,7 @@ public partial class GetTransactionsByTagResponse : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class GetTransactionsByTagResponse {\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" State: ").Append(State).Append("\n"); @@ -78,7 +80,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -88,69 +90,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as GetTransactionsByTagResponse); - } - - /// - /// Returns true if GetTransactionsByTagResponse instances are equal - /// - /// Instance of GetTransactionsByTagResponse to be compared - /// Boolean - public bool Equals(GetTransactionsByTagResponse input) - { - if (input == null) - return false; - - return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.State == input.State || - (this.State != null && - this.State.Equals(input.State)) - ) && - ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Id != null) - hashCode = hashCode * 59 + this.Id.GetHashCode(); - if (this.State != null) - hashCode = hashCode * 59 + this.State.GetHashCode(); - if (this.UpdatedAt != null) - hashCode = hashCode * 59 + this.UpdatedAt.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/GraphData.cs b/src/Regula.DocumentReader.WebClient/Model/GraphData.cs new file mode 100644 index 0000000..61102b7 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/GraphData.cs @@ -0,0 +1,147 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// GraphData + /// + [DataContract(Name = "GraphData")] + public partial class GraphData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GraphData() { } + /// + /// Initializes a new instance of the class. + /// + /// fieldType (required). + /// fileImage (required). + /// graphicsType (required). + /// originDG (required). + /// originDGTag (required). + /// originEntryView (required). + /// originTagEntry (required). + public GraphData(int fieldType = default(int), FileImage fileImage = default(FileImage), int graphicsType = default(int), int originDG = default(int), int originDGTag = default(int), int originEntryView = default(int), int originTagEntry = default(int)) + { + this.FieldType = fieldType; + // to ensure "fileImage" is required (not null) + if (fileImage == null) + { + throw new ArgumentNullException("fileImage is a required property for GraphData and cannot be null"); + } + this.FileImage = fileImage; + this.GraphicsType = graphicsType; + this.OriginDG = originDG; + this.OriginDGTag = originDGTag; + this.OriginEntryView = originEntryView; + this.OriginTagEntry = originTagEntry; + } + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", IsRequired = true, EmitDefaultValue = true)] + public int FieldType { get; set; } + + /// + /// Gets or Sets FileImage + /// + [DataMember(Name = "File_Image", IsRequired = true, EmitDefaultValue = true)] + public FileImage FileImage { get; set; } + + /// + /// Gets or Sets GraphicsType + /// + [DataMember(Name = "GraphicsType", IsRequired = true, EmitDefaultValue = true)] + public int GraphicsType { get; set; } + + /// + /// Gets or Sets OriginDG + /// + [DataMember(Name = "OriginDG", IsRequired = true, EmitDefaultValue = true)] + public int OriginDG { get; set; } + + /// + /// Gets or Sets OriginDGTag + /// + [DataMember(Name = "OriginDGTag", IsRequired = true, EmitDefaultValue = true)] + public int OriginDGTag { get; set; } + + /// + /// Gets or Sets OriginEntryView + /// + [DataMember(Name = "OriginEntryView", IsRequired = true, EmitDefaultValue = true)] + public int OriginEntryView { get; set; } + + /// + /// Gets or Sets OriginTagEntry + /// + [DataMember(Name = "OriginTagEntry", IsRequired = true, EmitDefaultValue = true)] + public int OriginTagEntry { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class GraphData {\n"); + sb.Append(" FieldType: ").Append(FieldType).Append("\n"); + sb.Append(" FileImage: ").Append(FileImage).Append("\n"); + sb.Append(" GraphicsType: ").Append(GraphicsType).Append("\n"); + sb.Append(" OriginDG: ").Append(OriginDG).Append("\n"); + sb.Append(" OriginDGTag: ").Append(OriginDGTag).Append("\n"); + sb.Append(" OriginEntryView: ").Append(OriginEntryView).Append("\n"); + sb.Append(" OriginTagEntry: ").Append(OriginTagEntry).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/GraphicField.cs b/src/Regula.DocumentReader.WebClient/Model/GraphicField.cs index ac9f592..381678a 100644 --- a/src/Regula.DocumentReader.WebClient/Model/GraphicField.cs +++ b/src/Regula.DocumentReader.WebClient/Model/GraphicField.cs @@ -1,35 +1,43 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// - /// GraphicField + /// Information about one graphic field - abstract class /// - [DataContract] - public partial class GraphicField : IEquatable, IValidatableObject + [DataContract(Name = "GraphicField")] + public partial class GraphicField : IValidatableObject { + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", IsRequired = true, EmitDefaultValue = true)] + public GraphicFieldType FieldType { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,87 +46,51 @@ protected GraphicField() { } /// /// Initializes a new instance of the class. /// + /// fieldRect (required). /// fieldType (required). + /// Graphic field symbolic name (required). /// image (required). - /// fieldRect. - /// Source data group file. Only for Result.RFID_GRAPHICS result.. - /// Index of the source record of the image with biometric information in the information data group. Only for Result.RFID_GRAPHICS result.. - /// Index of the template in the record with biometric data. Only for Result.RFID_GRAPHICS result.. - /// Index of the variant of the biometric data template. Only for Result.RFID_GRAPHICS result.. - public GraphicField(int fieldType = default(int), ImageData image = default(ImageData), RectangleCoordinates fieldRect = default(RectangleCoordinates), int rFIDOriginDG = default(int), int rFIDOriginDGTag = default(int), int rFIDOriginTagEntry = default(int), int rFIDOriginEntryView = default(int)) + public GraphicField(RectangleCoordinates fieldRect = default(RectangleCoordinates), GraphicFieldType fieldType = default(GraphicFieldType), string fieldName = default(string), ImageData image = default(ImageData)) { - // to ensure "fieldType" is required (not null) - if (fieldType == null) + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) { - throw new InvalidDataException("fieldType is a required property for GraphicField and cannot be null"); + throw new ArgumentNullException("fieldRect is a required property for GraphicField and cannot be null"); } - else + this.FieldRect = fieldRect; + this.FieldType = fieldType; + // to ensure "fieldName" is required (not null) + if (fieldName == null) { - this.FieldType = fieldType; + throw new ArgumentNullException("fieldName is a required property for GraphicField and cannot be null"); } - + this.FieldName = fieldName; // to ensure "image" is required (not null) if (image == null) { - throw new InvalidDataException("image is a required property for GraphicField and cannot be null"); + throw new ArgumentNullException("image is a required property for GraphicField and cannot be null"); } - else - { - this.Image = image; - } - - this.FieldRect = fieldRect; - this.RFIDOriginDG = rFIDOriginDG; - this.RFIDOriginDGTag = rFIDOriginDGTag; - this.RFIDOriginTagEntry = rFIDOriginTagEntry; - this.RFIDOriginEntryView = rFIDOriginEntryView; + this.Image = image; } - - /// - /// Gets or Sets FieldType - /// - [DataMember(Name="FieldType", EmitDefaultValue=true)] - public int FieldType { get; set; } - - /// - /// Gets or Sets Image - /// - [DataMember(Name="image", EmitDefaultValue=true)] - public ImageData Image { get; set; } /// /// Gets or Sets FieldRect /// - [DataMember(Name="FieldRect", EmitDefaultValue=false)] + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates FieldRect { get; set; } /// - /// Source data group file. Only for Result.RFID_GRAPHICS result. - /// - /// Source data group file. Only for Result.RFID_GRAPHICS result. - [DataMember(Name="RFID_OriginDG", EmitDefaultValue=false)] - public int RFIDOriginDG { get; set; } - - /// - /// Index of the source record of the image with biometric information in the information data group. Only for Result.RFID_GRAPHICS result. - /// - /// Index of the source record of the image with biometric information in the information data group. Only for Result.RFID_GRAPHICS result. - [DataMember(Name="RFID_OriginDGTag", EmitDefaultValue=false)] - public int RFIDOriginDGTag { get; set; } - - /// - /// Index of the template in the record with biometric data. Only for Result.RFID_GRAPHICS result. + /// Graphic field symbolic name /// - /// Index of the template in the record with biometric data. Only for Result.RFID_GRAPHICS result. - [DataMember(Name="RFID_OriginTagEntry", EmitDefaultValue=false)] - public int RFIDOriginTagEntry { get; set; } + /// Graphic field symbolic name + [DataMember(Name = "FieldName", IsRequired = true, EmitDefaultValue = true)] + public string FieldName { get; set; } /// - /// Index of the variant of the biometric data template. Only for Result.RFID_GRAPHICS result. + /// Gets or Sets Image /// - /// Index of the variant of the biometric data template. Only for Result.RFID_GRAPHICS result. - [DataMember(Name="RFID_OriginEntryView", EmitDefaultValue=false)] - public int RFIDOriginEntryView { get; set; } + [DataMember(Name = "image", IsRequired = true, EmitDefaultValue = true)] + public ImageData Image { get; set; } /// /// Returns the string presentation of the object @@ -126,19 +98,16 @@ protected GraphicField() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class GraphicField {\n"); + sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); sb.Append(" FieldType: ").Append(FieldType).Append("\n"); + sb.Append(" FieldName: ").Append(FieldName).Append("\n"); sb.Append(" Image: ").Append(Image).Append("\n"); - sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); - sb.Append(" RFIDOriginDG: ").Append(RFIDOriginDG).Append("\n"); - sb.Append(" RFIDOriginDGTag: ").Append(RFIDOriginDGTag).Append("\n"); - sb.Append(" RFIDOriginTagEntry: ").Append(RFIDOriginTagEntry).Append("\n"); - sb.Append(" RFIDOriginEntryView: ").Append(RFIDOriginEntryView).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -148,97 +117,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as GraphicField); - } - - /// - /// Returns true if GraphicField instances are equal - /// - /// Instance of GraphicField to be compared - /// Boolean - public bool Equals(GraphicField input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ) && - ( - this.FieldRect == input.FieldRect || - (this.FieldRect != null && - this.FieldRect.Equals(input.FieldRect)) - ) && - ( - this.RFIDOriginDG == input.RFIDOriginDG || - (this.RFIDOriginDG != null && - this.RFIDOriginDG.Equals(input.RFIDOriginDG)) - ) && - ( - this.RFIDOriginDGTag == input.RFIDOriginDGTag || - (this.RFIDOriginDGTag != null && - this.RFIDOriginDGTag.Equals(input.RFIDOriginDGTag)) - ) && - ( - this.RFIDOriginTagEntry == input.RFIDOriginTagEntry || - (this.RFIDOriginTagEntry != null && - this.RFIDOriginTagEntry.Equals(input.RFIDOriginTagEntry)) - ) && - ( - this.RFIDOriginEntryView == input.RFIDOriginEntryView || - (this.RFIDOriginEntryView != null && - this.RFIDOriginEntryView.Equals(input.RFIDOriginEntryView)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - if (this.FieldRect != null) - hashCode = hashCode * 59 + this.FieldRect.GetHashCode(); - if (this.RFIDOriginDG != null) - hashCode = hashCode * 59 + this.RFIDOriginDG.GetHashCode(); - if (this.RFIDOriginDGTag != null) - hashCode = hashCode * 59 + this.RFIDOriginDGTag.GetHashCode(); - if (this.RFIDOriginTagEntry != null) - hashCode = hashCode * 59 + this.RFIDOriginTagEntry.GetHashCode(); - if (this.RFIDOriginEntryView != null) - hashCode = hashCode * 59 + this.RFIDOriginEntryView.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/GraphicFieldType.cs b/src/Regula.DocumentReader.WebClient/Model/GraphicFieldType.cs index 990fda6..c59e9e6 100644 --- a/src/Regula.DocumentReader.WebClient/Model/GraphicFieldType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/GraphicFieldType.cs @@ -1,109 +1,170 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class GraphicFieldType + /// + /// Defines GraphicFieldType + /// + public enum GraphicFieldType { - - /** Document holder photo */ - public const int PORTRAIT = 201; - - /** Fingerprint of document holder */ - public const int FINGERPRINT = 202; - - /** Image of the iris of document holder */ - public const int EYE = 203; - - /** Signature of document holder */ - public const int SIGNATURE = 204; - - /** Barcode image */ - public const int BAR_CODE = 205; - - /** Image of document confirming owner citizenship */ - public const int PROOF_OF_CITIZENSHIP = 206; - - /** Cropped and rotated with perspective compensation (front side) of a document. Single input image can contain multiple document side/pages, which will be returned as separated results. Most coordinates in other types defined on that image. */ - public const int DOCUMENT_FRONT = 207; - - /** Image of the rear side of the document */ - public const int DOCUMENT_REAR = 208; - - /** Area with dynamic color change */ - public const int COLOR_DYNAMIC = 209; - - /** Additional Portrait */ - public const int GHOST_PORTRAIT = 210; - - /** Stamp */ - public const int STAMP = 211; - - /** Contact chip */ - public const int CONTACT_CHIP = 213; - - /** Undefined image type */ - public const int OTHER = 250; - - /** Fingerprint (thumb, left hand) */ - public const int FINGER_LEFT_THUMB = 300; - - /** Fingerprint (index, left hand) */ - public const int FINGER_LEFT_INDEX = 301; - - /** Fingerprint (middle, left hand) */ - public const int FINGER_LEFT_MIDDLE = 302; - - /** Fingerprint (ring, left hand) */ - public const int FINGER_LEFT_RING = 303; - - /** Fingerprint (little, left hand) */ - public const int FINGER_LEFT_LITTLE = 304; - - /** Fingerprint (thumb, right hand) */ - public const int FINGER_RIGHT_THUMB = 305; - - /** Fingerprint (index, right hand) */ - public const int FINGER_RIGHT_INDEX = 306; - - /** Fingerprint (middle, right hand) */ - public const int FINGER_RIGHT_MIDDLE = 307; - - /** Fingerprint (ring, right hand) */ - public const int FINGER_RIGHT_RING = 308; - - /** Fingerprint (little, right hand) */ - public const int FINGER_RIGHT_LITTLE = 309; - - /** Fingerprint (four without thumb on right hand) */ - public const int FINGER_RIGHT_FOUR_FINGERS = 313; - - /** Fingerprint (four without thumb on left hand */ - public const int FINGER_LEFT_FOUR_FINGERS = 314; - - /** Fingerprint (two thumbs) */ - public const int FINGER_TWO_THUMBS = 315; - + /// + /// Enum PORTRAIT for value: 201 + /// + PORTRAIT = 201, + + /// + /// Enum FINGERPRINT for value: 202 + /// + FINGERPRINT = 202, + + /// + /// Enum EYE for value: 203 + /// + EYE = 203, + + /// + /// Enum SIGNATURE for value: 204 + /// + SIGNATURE = 204, + + /// + /// Enum BAR_CODE for value: 205 + /// + BAR_CODE = 205, + + /// + /// Enum PROOF_OF_CITIZENSHIP for value: 206 + /// + PROOF_OF_CITIZENSHIP = 206, + + /// + /// Enum DOCUMENT_FRONT for value: 207 + /// + DOCUMENT_FRONT = 207, + + /// + /// Enum DOCUMENT_REAR for value: 208 + /// + DOCUMENT_REAR = 208, + + /// + /// Enum COLOR_DYNAMIC for value: 209 + /// + COLOR_DYNAMIC = 209, + + /// + /// Enum GHOST_PORTRAIT for value: 210 + /// + GHOST_PORTRAIT = 210, + + /// + /// Enum STAMP for value: 211 + /// + STAMP = 211, + + /// + /// Enum PORTRAIT_OF_CHILD for value: 212 + /// + PORTRAIT_OF_CHILD = 212, + + /// + /// Enum CONTACT_CHIP for value: 213 + /// + CONTACT_CHIP = 213, + + /// + /// Enum OTHER for value: 250 + /// + OTHER = 250, + + /// + /// Enum FINGER_LEFT_THUMB for value: 300 + /// + FINGER_LEFT_THUMB = 300, + + /// + /// Enum FINGER_LEFT_INDEX for value: 301 + /// + FINGER_LEFT_INDEX = 301, + + /// + /// Enum FINGER_LEFT_MIDDLE for value: 302 + /// + FINGER_LEFT_MIDDLE = 302, + + /// + /// Enum FINGER_LEFT_RING for value: 303 + /// + FINGER_LEFT_RING = 303, + + /// + /// Enum FINGER_LEFT_LITTLE for value: 304 + /// + FINGER_LEFT_LITTLE = 304, + + /// + /// Enum FINGER_RIGHT_THUMB for value: 305 + /// + FINGER_RIGHT_THUMB = 305, + + /// + /// Enum FINGER_RIGHT_INDEX for value: 306 + /// + FINGER_RIGHT_INDEX = 306, + + /// + /// Enum FINGER_RIGHT_MIDDLE for value: 307 + /// + FINGER_RIGHT_MIDDLE = 307, + + /// + /// Enum FINGER_RIGHT_RING for value: 308 + /// + FINGER_RIGHT_RING = 308, + + /// + /// Enum FINGER_RIGHT_LITTLE for value: 309 + /// + FINGER_RIGHT_LITTLE = 309, + + /// + /// Enum FINGER_RIGHT_FOUR_FINGERS for value: 313 + /// + FINGER_RIGHT_FOUR_FINGERS = 313, + + /// + /// Enum FINGER_LEFT_FOUR_FINGERS for value: 314 + /// + FINGER_LEFT_FOUR_FINGERS = 314, + + /// + /// Enum FINGER_TWO_THUMBS for value: 315 + /// + FINGER_TWO_THUMBS = 315 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/GraphicFieldsList.cs b/src/Regula.DocumentReader.WebClient/Model/GraphicFieldsList.cs index 78fc60a..fdbaa8e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/GraphicFieldsList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/GraphicFieldsList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// GraphicFieldsList /// - [DataContract] - public partial class GraphicFieldsList : IEquatable, IValidatableObject + [DataContract(Name = "GraphicFieldsList")] + public partial class GraphicFieldsList : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,39 +41,45 @@ protected GraphicFieldsList() { } /// Initializes a new instance of the class. /// /// pArrayFields (required). - public GraphicFieldsList(List pArrayFields = default(List)) + /// Number of pArrayFields array elements (required). + public GraphicFieldsList(List pArrayFields = default(List), decimal nFields = default(decimal)) { // to ensure "pArrayFields" is required (not null) if (pArrayFields == null) { - throw new InvalidDataException("pArrayFields is a required property for GraphicFieldsList and cannot be null"); + throw new ArgumentNullException("pArrayFields is a required property for GraphicFieldsList and cannot be null"); } - else - { - this.PArrayFields = pArrayFields; - } - + this.PArrayFields = pArrayFields; + this.NFields = nFields; } - + /// /// Gets or Sets PArrayFields /// - [DataMember(Name="pArrayFields", EmitDefaultValue=true)] + [DataMember(Name = "pArrayFields", IsRequired = true, EmitDefaultValue = true)] public List PArrayFields { get; set; } + /// + /// Number of pArrayFields array elements + /// + /// Number of pArrayFields array elements + [DataMember(Name = "nFields", IsRequired = true, EmitDefaultValue = true)] + public decimal NFields { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class GraphicFieldsList {\n"); sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); + sb.Append(" NFields: ").Append(NFields).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -81,56 +89,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as GraphicFieldsList); - } - - /// - /// Returns true if GraphicFieldsList instances are equal - /// - /// Instance of GraphicFieldsList to be compared - /// Boolean - public bool Equals(GraphicFieldsList input) - { - if (input == null) - return false; - - return - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/GraphicsResult.cs b/src/Regula.DocumentReader.WebClient/Model/GraphicsResult.cs index 6713880..24b76ef 100644 --- a/src/Regula.DocumentReader.WebClient/Model/GraphicsResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/GraphicsResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Graphic fields extracted from one of the document sources. Returns separate results for each provided page. /// - [DataContract] - public partial class GraphicsResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "GraphicsResult")] + public partial class GraphicsResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected GraphicsResult() { } /// Initializes a new instance of the class. /// /// docGraphicsInfo (required). - public GraphicsResult(GraphicFieldsList docGraphicsInfo = default(GraphicFieldsList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.VISUAL_GRAPHICS). + public GraphicsResult(GraphicFieldsList docGraphicsInfo = default(GraphicFieldsList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.VISUAL_GRAPHICS) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "docGraphicsInfo" is required (not null) if (docGraphicsInfo == null) { - throw new InvalidDataException("docGraphicsInfo is a required property for GraphicsResult and cannot be null"); - } - else - { - this.DocGraphicsInfo = docGraphicsInfo; + throw new ArgumentNullException("docGraphicsInfo is a required property for GraphicsResult and cannot be null"); } - + this.DocGraphicsInfo = docGraphicsInfo; } - + /// /// Gets or Sets DocGraphicsInfo /// - [DataMember(Name="DocGraphicsInfo", EmitDefaultValue=true)] + [DataMember(Name = "DocGraphicsInfo", IsRequired = true, EmitDefaultValue = true)] public GraphicFieldsList DocGraphicsInfo { get; set; } /// @@ -65,14 +69,14 @@ protected GraphicsResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class GraphicsResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" DocGraphicsInfo: ").Append(DocGraphicsInfo).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as GraphicsResult); - } - - /// - /// Returns true if GraphicsResult instances are equal - /// - /// Instance of GraphicsResult to be compared - /// Boolean - public bool Equals(GraphicsResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.DocGraphicsInfo == input.DocGraphicsInfo || - (this.DocGraphicsInfo != null && - this.DocGraphicsInfo.Equals(input.DocGraphicsInfo)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.DocGraphicsInfo != null) - hashCode = hashCode * 59 + this.DocGraphicsInfo.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Healthcheck.cs b/src/Regula.DocumentReader.WebClient/Model/Healthcheck.cs index 3bb58d7..2f654fc 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Healthcheck.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Healthcheck.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Healthcheck /// - [DataContract] - public partial class Healthcheck : IEquatable, IValidatableObject + [DataContract(Name = "Healthcheck")] + public partial class Healthcheck : IValidatableObject { /// /// Initializes a new instance of the class. @@ -44,143 +46,117 @@ protected Healthcheck() { } /// License serial number. (required). /// License validity date. (required). /// List of supported scenarios. (required). - /// Product version. (required). + /// Product version. (required). + /// metadata. /// documentsDatabase. - public Healthcheck(string app = default(string), string licenseId = default(string), string licenseType = default(string), string licenseSerial = default(string), DateTime? licenseValidUntil = default(DateTime?), List scenarios = default(List), string version = default(string), HealthcheckDocumentsDatabase documentsDatabase = default(HealthcheckDocumentsDatabase)) + public Healthcheck(string app = default(string), string licenseId = default(string), string licenseType = default(string), string licenseSerial = default(string), DateTime? licenseValidUntil = default(DateTime?), List scenarios = default(List), string varVersion = default(string), Dictionary metadata = default(Dictionary), HealthcheckDocumentsDatabase documentsDatabase = default(HealthcheckDocumentsDatabase)) { // to ensure "app" is required (not null) if (app == null) { - throw new InvalidDataException("app is a required property for Healthcheck and cannot be null"); + throw new ArgumentNullException("app is a required property for Healthcheck and cannot be null"); } - else - { - this.App = app; - } - + this.App = app; // to ensure "licenseId" is required (not null) if (licenseId == null) { - throw new InvalidDataException("licenseId is a required property for Healthcheck and cannot be null"); + throw new ArgumentNullException("licenseId is a required property for Healthcheck and cannot be null"); } - else - { - this.LicenseId = licenseId; - } - this.LicenseId = licenseId; // to ensure "licenseType" is required (not null) if (licenseType == null) { - throw new InvalidDataException("licenseType is a required property for Healthcheck and cannot be null"); - } - else - { - this.LicenseType = licenseType; + throw new ArgumentNullException("licenseType is a required property for Healthcheck and cannot be null"); } - this.LicenseType = licenseType; // to ensure "licenseSerial" is required (not null) if (licenseSerial == null) { - throw new InvalidDataException("licenseSerial is a required property for Healthcheck and cannot be null"); + throw new ArgumentNullException("licenseSerial is a required property for Healthcheck and cannot be null"); } - else - { - this.LicenseSerial = licenseSerial; - } - this.LicenseSerial = licenseSerial; // to ensure "licenseValidUntil" is required (not null) if (licenseValidUntil == null) { - throw new InvalidDataException("licenseValidUntil is a required property for Healthcheck and cannot be null"); + throw new ArgumentNullException("licenseValidUntil is a required property for Healthcheck and cannot be null"); } - else - { - this.LicenseValidUntil = licenseValidUntil; - } - this.LicenseValidUntil = licenseValidUntil; // to ensure "scenarios" is required (not null) if (scenarios == null) { - throw new InvalidDataException("scenarios is a required property for Healthcheck and cannot be null"); - } - else - { - this.Scenarios = scenarios; + throw new ArgumentNullException("scenarios is a required property for Healthcheck and cannot be null"); } - this.Scenarios = scenarios; - // to ensure "version" is required (not null) - if (version == null) - { - throw new InvalidDataException("version is a required property for Healthcheck and cannot be null"); - } - else + // to ensure "varVersion" is required (not null) + if (varVersion == null) { - this.Version = version; + throw new ArgumentNullException("varVersion is a required property for Healthcheck and cannot be null"); } - - this.Version = version; + this.VarVersion = varVersion; + this.Metadata = metadata; this.DocumentsDatabase = documentsDatabase; } - + /// /// Application name. /// /// Application name. - [DataMember(Name="app", EmitDefaultValue=true)] + [DataMember(Name = "app", IsRequired = true, EmitDefaultValue = true)] public string App { get; set; } /// /// Unique license identifier. /// /// Unique license identifier. - [DataMember(Name="licenseId", EmitDefaultValue=true)] + [DataMember(Name = "licenseId", IsRequired = true, EmitDefaultValue = true)] public string LicenseId { get; set; } /// /// License type. /// /// License type. - [DataMember(Name="licenseType", EmitDefaultValue=true)] + [DataMember(Name = "licenseType", IsRequired = true, EmitDefaultValue = true)] public string LicenseType { get; set; } /// /// License serial number. /// /// License serial number. - [DataMember(Name="licenseSerial", EmitDefaultValue=true)] + [DataMember(Name = "licenseSerial", IsRequired = true, EmitDefaultValue = true)] public string LicenseSerial { get; set; } /// /// License validity date. /// /// License validity date. - [DataMember(Name="licenseValidUntil", EmitDefaultValue=true)] + [DataMember(Name = "licenseValidUntil", IsRequired = true, EmitDefaultValue = true)] public DateTime? LicenseValidUntil { get; set; } /// /// List of supported scenarios. /// /// List of supported scenarios. - [DataMember(Name="scenarios", EmitDefaultValue=true)] + [DataMember(Name = "scenarios", IsRequired = true, EmitDefaultValue = true)] public List Scenarios { get; set; } /// /// Product version. /// /// Product version. - [DataMember(Name="version", EmitDefaultValue=true)] - public string Version { get; set; } + [DataMember(Name = "version", IsRequired = true, EmitDefaultValue = true)] + public string VarVersion { get; set; } + + /// + /// Gets or Sets Metadata + /// + [DataMember(Name = "metadata", EmitDefaultValue = false)] + public Dictionary? Metadata { get; set; } /// /// Gets or Sets DocumentsDatabase /// - [DataMember(Name="documentsDatabase", EmitDefaultValue=false)] - public HealthcheckDocumentsDatabase DocumentsDatabase { get; set; } + [DataMember(Name = "documentsDatabase", EmitDefaultValue = false)] + public HealthcheckDocumentsDatabase? DocumentsDatabase { get; set; } /// /// Returns the string presentation of the object @@ -188,7 +164,7 @@ protected Healthcheck() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class Healthcheck {\n"); sb.Append(" App: ").Append(App).Append("\n"); sb.Append(" LicenseId: ").Append(LicenseId).Append("\n"); @@ -196,12 +172,13 @@ public override string ToString() sb.Append(" LicenseSerial: ").Append(LicenseSerial).Append("\n"); sb.Append(" LicenseValidUntil: ").Append(LicenseValidUntil).Append("\n"); sb.Append(" Scenarios: ").Append(Scenarios).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" Metadata: ").Append(Metadata).Append("\n"); sb.Append(" DocumentsDatabase: ").Append(DocumentsDatabase).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -211,105 +188,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Healthcheck); - } - - /// - /// Returns true if Healthcheck instances are equal - /// - /// Instance of Healthcheck to be compared - /// Boolean - public bool Equals(Healthcheck input) - { - if (input == null) - return false; - - return - ( - this.App == input.App || - (this.App != null && - this.App.Equals(input.App)) - ) && - ( - this.LicenseId == input.LicenseId || - (this.LicenseId != null && - this.LicenseId.Equals(input.LicenseId)) - ) && - ( - this.LicenseType == input.LicenseType || - (this.LicenseType != null && - this.LicenseType.Equals(input.LicenseType)) - ) && - ( - this.LicenseSerial == input.LicenseSerial || - (this.LicenseSerial != null && - this.LicenseSerial.Equals(input.LicenseSerial)) - ) && - ( - this.LicenseValidUntil == input.LicenseValidUntil || - (this.LicenseValidUntil != null && - this.LicenseValidUntil.Equals(input.LicenseValidUntil)) - ) && - ( - this.Scenarios == input.Scenarios || - this.Scenarios != null && - input.Scenarios != null && - this.Scenarios.SequenceEqual(input.Scenarios) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ) && - ( - this.DocumentsDatabase == input.DocumentsDatabase || - (this.DocumentsDatabase != null && - this.DocumentsDatabase.Equals(input.DocumentsDatabase)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.App != null) - hashCode = hashCode * 59 + this.App.GetHashCode(); - if (this.LicenseId != null) - hashCode = hashCode * 59 + this.LicenseId.GetHashCode(); - if (this.LicenseType != null) - hashCode = hashCode * 59 + this.LicenseType.GetHashCode(); - if (this.LicenseSerial != null) - hashCode = hashCode * 59 + this.LicenseSerial.GetHashCode(); - if (this.LicenseValidUntil != null) - hashCode = hashCode * 59 + this.LicenseValidUntil.GetHashCode(); - if (this.Scenarios != null) - hashCode = hashCode * 59 + this.Scenarios.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - if (this.DocumentsDatabase != null) - hashCode = hashCode * 59 + this.DocumentsDatabase.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/HealthcheckDocumentsDatabase.cs b/src/Regula.DocumentReader.WebClient/Model/HealthcheckDocumentsDatabase.cs index 8374551..015c055 100644 --- a/src/Regula.DocumentReader.WebClient/Model/HealthcheckDocumentsDatabase.cs +++ b/src/Regula.DocumentReader.WebClient/Model/HealthcheckDocumentsDatabase.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Database information. /// - [DataContract] - public partial class HealthcheckDocumentsDatabase : IEquatable, IValidatableObject + [DataContract(Name = "Healthcheck_documentsDatabase")] + public partial class HealthcheckDocumentsDatabase : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,84 +41,63 @@ protected HealthcheckDocumentsDatabase() { } /// Initializes a new instance of the class. /// /// Database identifier. (required). - /// Database version. (required). + /// Database version. (required). /// Date of database creation. (required). /// Description of the database contents, such as the list of supported countries and documents. (required). - public HealthcheckDocumentsDatabase(string id = default(string), string version = default(string), DateTime? exportDate = default(DateTime?), string description = default(string)) + public HealthcheckDocumentsDatabase(string id = default(string), string varVersion = default(string), string exportDate = default(string), string description = default(string)) { // to ensure "id" is required (not null) if (id == null) { - throw new InvalidDataException("id is a required property for HealthcheckDocumentsDatabase and cannot be null"); + throw new ArgumentNullException("id is a required property for HealthcheckDocumentsDatabase and cannot be null"); } - else - { - this.Id = id; - } - this.Id = id; - // to ensure "version" is required (not null) - if (version == null) - { - throw new InvalidDataException("version is a required property for HealthcheckDocumentsDatabase and cannot be null"); - } - else + // to ensure "varVersion" is required (not null) + if (varVersion == null) { - this.Version = version; + throw new ArgumentNullException("varVersion is a required property for HealthcheckDocumentsDatabase and cannot be null"); } - - this.Version = version; + this.VarVersion = varVersion; // to ensure "exportDate" is required (not null) if (exportDate == null) { - throw new InvalidDataException("exportDate is a required property for HealthcheckDocumentsDatabase and cannot be null"); - } - else - { - this.ExportDate = exportDate; + throw new ArgumentNullException("exportDate is a required property for HealthcheckDocumentsDatabase and cannot be null"); } - this.ExportDate = exportDate; // to ensure "description" is required (not null) if (description == null) { - throw new InvalidDataException("description is a required property for HealthcheckDocumentsDatabase and cannot be null"); + throw new ArgumentNullException("description is a required property for HealthcheckDocumentsDatabase and cannot be null"); } - else - { - this.Description = description; - } - this.Description = description; } - + /// /// Database identifier. /// /// Database identifier. - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } /// /// Database version. /// /// Database version. - [DataMember(Name="version", EmitDefaultValue=true)] - public string Version { get; set; } + [DataMember(Name = "version", IsRequired = true, EmitDefaultValue = true)] + public string VarVersion { get; set; } /// /// Date of database creation. /// /// Date of database creation. - [DataMember(Name="exportDate", EmitDefaultValue=true)] - [JsonConverter(typeof(OpenAPIDateConverter))] - public DateTime? ExportDate { get; set; } + [DataMember(Name = "exportDate", IsRequired = true, EmitDefaultValue = true)] + public string ExportDate { get; set; } /// /// Description of the database contents, such as the list of supported countries and documents. /// /// Description of the database contents, such as the list of supported countries and documents. - [DataMember(Name="description", EmitDefaultValue=true)] + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] public string Description { get; set; } /// @@ -125,16 +106,16 @@ protected HealthcheckDocumentsDatabase() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class HealthcheckDocumentsDatabase {\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append(" ExportDate: ").Append(ExportDate).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -144,76 +125,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as HealthcheckDocumentsDatabase); - } - - /// - /// Returns true if HealthcheckDocumentsDatabase instances are equal - /// - /// Instance of HealthcheckDocumentsDatabase to be compared - /// Boolean - public bool Equals(HealthcheckDocumentsDatabase input) - { - if (input == null) - return false; - - return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ) && - ( - this.ExportDate == input.ExportDate || - (this.ExportDate != null && - this.ExportDate.Equals(input.ExportDate)) - ) && - ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Id != null) - hashCode = hashCode * 59 + this.Id.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - if (this.ExportDate != null) - hashCode = hashCode * 59 + this.ExportDate.GetHashCode(); - if (this.Description != null) - hashCode = hashCode * 59 + this.Description.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/IdentItem.cs b/src/Regula.DocumentReader.WebClient/Model/IdentItem.cs new file mode 100644 index 0000000..ae75b0c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/IdentItem.cs @@ -0,0 +1,143 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// IdentItem + /// + [DataContract(Name = "IdentItem")] + public partial class IdentItem : IValidatableObject + { + + /// + /// Gets or Sets ElementType + /// + [DataMember(Name = "ElementType", IsRequired = true, EmitDefaultValue = true)] + public SecurityFeatureType ElementType { get; set; } + + /// + /// Gets or Sets LightIndex + /// + [DataMember(Name = "LightIndex", IsRequired = true, EmitDefaultValue = true)] + public Light LightIndex { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected IdentItem() { } + /// + /// Initializes a new instance of the class. + /// + /// elementType (required). + /// lightIndex (required). + /// area. + /// image (required). + /// etalonImage (required). + /// areaList. + public IdentItem(SecurityFeatureType elementType = default(SecurityFeatureType), Light lightIndex = default(Light), RectangleCoordinates area = default(RectangleCoordinates), ImageData image = default(ImageData), ImageData etalonImage = default(ImageData), AreaContainer areaList = default(AreaContainer)) + { + this.ElementType = elementType; + this.LightIndex = lightIndex; + // to ensure "image" is required (not null) + if (image == null) + { + throw new ArgumentNullException("image is a required property for IdentItem and cannot be null"); + } + this.Image = image; + // to ensure "etalonImage" is required (not null) + if (etalonImage == null) + { + throw new ArgumentNullException("etalonImage is a required property for IdentItem and cannot be null"); + } + this.EtalonImage = etalonImage; + this.Area = area; + this.AreaList = areaList; + } + + /// + /// Gets or Sets Area + /// + [DataMember(Name = "Area", EmitDefaultValue = false)] + public RectangleCoordinates? Area { get; set; } + + /// + /// Gets or Sets Image + /// + [DataMember(Name = "Image", IsRequired = true, EmitDefaultValue = true)] + public ImageData Image { get; set; } + + /// + /// Gets or Sets EtalonImage + /// + [DataMember(Name = "EtalonImage", IsRequired = true, EmitDefaultValue = true)] + public ImageData EtalonImage { get; set; } + + /// + /// Gets or Sets AreaList + /// + [DataMember(Name = "AreaList", EmitDefaultValue = false)] + public AreaContainer? AreaList { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class IdentItem {\n"); + sb.Append(" ElementType: ").Append(ElementType).Append("\n"); + sb.Append(" LightIndex: ").Append(LightIndex).Append("\n"); + sb.Append(" Area: ").Append(Area).Append("\n"); + sb.Append(" Image: ").Append(Image).Append("\n"); + sb.Append(" EtalonImage: ").Append(EtalonImage).Append("\n"); + sb.Append(" AreaList: ").Append(AreaList).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/IdentResult.cs b/src/Regula.DocumentReader.WebClient/Model/IdentResult.cs index bacec7f..ee9c4d5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/IdentResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/IdentResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +30,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// IdentResult /// - [DataContract] - public partial class IdentResult : AuthenticityCheckResultItem, IEquatable, IValidatableObject + [DataContract(Name = "IdentResult")] + public partial class IdentResult : AuthenticityCheckResultItem, IValidatableObject { + + /// + /// Gets or Sets ElementType + /// + [DataMember(Name = "ElementType", IsRequired = true, EmitDefaultValue = true)] + public SecurityFeatureType ElementType { get; set; } + + /// + /// Gets or Sets LightIndex + /// + [DataMember(Name = "LightIndex", IsRequired = true, EmitDefaultValue = true)] + public Light LightIndex { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,57 +53,59 @@ protected IdentResult() { } /// /// Initializes a new instance of the class. /// - /// elementType. - /// lightIndex. + /// elementType (required). + /// lightIndex (required). /// area. - /// image. - /// etalonImage. + /// image (required). + /// etalonImage (required). /// areaList. - public IdentResult(int elementType = default(int), int lightIndex = default(int), RectangleCoordinates area = default(RectangleCoordinates), ImageData image = default(ImageData), ImageData etalonImage = default(ImageData), AreaContainer areaList = default(AreaContainer), int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) + /// type (required) (default to AuthenticityResultType.IMAGE_PATTERN). + /// elementResult. + /// elementDiagnose. + /// percentValue. + public IdentResult(SecurityFeatureType elementType = default(SecurityFeatureType), Light lightIndex = default(Light), RectangleCoordinates area = default(RectangleCoordinates), ImageData image = default(ImageData), ImageData etalonImage = default(ImageData), AreaContainer areaList = default(AreaContainer), AuthenticityResultType type = AuthenticityResultType.IMAGE_PATTERN, CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) { this.ElementType = elementType; this.LightIndex = lightIndex; - this.Area = area; + // to ensure "image" is required (not null) + if (image == null) + { + throw new ArgumentNullException("image is a required property for IdentResult and cannot be null"); + } this.Image = image; + // to ensure "etalonImage" is required (not null) + if (etalonImage == null) + { + throw new ArgumentNullException("etalonImage is a required property for IdentResult and cannot be null"); + } this.EtalonImage = etalonImage; + this.Area = area; this.AreaList = areaList; } - - /// - /// Gets or Sets ElementType - /// - [DataMember(Name="ElementType", EmitDefaultValue=false)] - public int ElementType { get; set; } - - /// - /// Gets or Sets LightIndex - /// - [DataMember(Name="LightIndex", EmitDefaultValue=false)] - public int LightIndex { get; set; } /// /// Gets or Sets Area /// - [DataMember(Name="Area", EmitDefaultValue=false)] - public RectangleCoordinates Area { get; set; } + [DataMember(Name = "Area", EmitDefaultValue = false)] + public RectangleCoordinates? Area { get; set; } /// /// Gets or Sets Image /// - [DataMember(Name="Image", EmitDefaultValue=false)] + [DataMember(Name = "Image", IsRequired = true, EmitDefaultValue = true)] public ImageData Image { get; set; } /// /// Gets or Sets EtalonImage /// - [DataMember(Name="EtalonImage", EmitDefaultValue=false)] + [DataMember(Name = "EtalonImage", IsRequired = true, EmitDefaultValue = true)] public ImageData EtalonImage { get; set; } /// /// Gets or Sets AreaList /// - [DataMember(Name="AreaList", EmitDefaultValue=false)] - public AreaContainer AreaList { get; set; } + [DataMember(Name = "AreaList", EmitDefaultValue = false)] + public AreaContainer? AreaList { get; set; } /// /// Returns the string presentation of the object @@ -96,7 +113,7 @@ protected IdentResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class IdentResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" ElementType: ").Append(ElementType).Append("\n"); @@ -108,7 +125,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -119,81 +136,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as IdentResult); - } - - /// - /// Returns true if IdentResult instances are equal - /// - /// Instance of IdentResult to be compared - /// Boolean - public bool Equals(IdentResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.ElementType == input.ElementType || - (this.ElementType != null && - this.ElementType.Equals(input.ElementType)) - ) && base.Equals(input) && - ( - this.LightIndex == input.LightIndex || - (this.LightIndex != null && - this.LightIndex.Equals(input.LightIndex)) - ) && base.Equals(input) && - ( - this.Area == input.Area || - (this.Area != null && - this.Area.Equals(input.Area)) - ) && base.Equals(input) && - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ) && base.Equals(input) && - ( - this.EtalonImage == input.EtalonImage || - (this.EtalonImage != null && - this.EtalonImage.Equals(input.EtalonImage)) - ) && base.Equals(input) && - ( - this.AreaList == input.AreaList || - (this.AreaList != null && - this.AreaList.Equals(input.AreaList)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.ElementType != null) - hashCode = hashCode * 59 + this.ElementType.GetHashCode(); - if (this.LightIndex != null) - hashCode = hashCode * 59 + this.LightIndex.GetHashCode(); - if (this.Area != null) - hashCode = hashCode * 59 + this.Area.GetHashCode(); - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - if (this.EtalonImage != null) - hashCode = hashCode * 59 + this.EtalonImage.GetHashCode(); - if (this.AreaList != null) - hashCode = hashCode * 59 + this.AreaList.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -201,9 +150,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageData.cs b/src/Regula.DocumentReader.WebClient/Model/ImageData.cs index 9dd1825..2af365f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageData.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageData.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageData /// - [DataContract] - public partial class ImageData : IEquatable, IValidatableObject + [DataContract(Name = "ImageData")] + public partial class ImageData : IValidatableObject { /// /// Initializes a new instance of the class. @@ -45,29 +47,28 @@ protected ImageData() { } // to ensure "image" is required (not null) if (image == null) { - throw new InvalidDataException("image is a required property for ImageData and cannot be null"); - } - else - { - this.Image = image; + throw new ArgumentNullException("image is a required property for ImageData and cannot be null"); } - + this.Image = image; this.Format = format; } - + /// /// Base64 encoded image /// /// Base64 encoded image - [DataMember(Name="image", EmitDefaultValue=true)] + /* + Base64 encoded image + */ + [DataMember(Name = "image", IsRequired = true, EmitDefaultValue = true)] public string Image { get; set; } /// /// Image format /// /// Image format - [DataMember(Name="format", EmitDefaultValue=false)] - public string Format { get; set; } + [DataMember(Name = "format", EmitDefaultValue = false)] + public string? Format { get; set; } /// /// Returns the string presentation of the object @@ -75,14 +76,14 @@ protected ImageData() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageData {\n"); sb.Append(" Image: ").Append(Image).Append("\n"); sb.Append(" Format: ").Append(Format).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -92,62 +93,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageData); - } - - /// - /// Returns true if ImageData instances are equal - /// - /// Instance of ImageData to be compared - /// Boolean - public bool Equals(ImageData input) - { - if (input == null) - return false; - - return - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ) && - ( - this.Format == input.Format || - (this.Format != null && - this.Format.Equals(input.Format)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - if (this.Format != null) - hashCode = hashCode * 59 + this.Format.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQA.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQA.cs index b8eba50..f3f56fc 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQA.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQA.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageQA /// - [DataContract] - public partial class ImageQA : IEquatable, IValidatableObject + [DataContract(Name = "ImageQA")] + public partial class ImageQA : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,9 +41,10 @@ public partial class ImageQA : IEquatable, IValidatableObject /// This option enables focus check while performing image quality validation.. /// This option enables glares check while performing image quality validation.. /// This option enables colorness check while performing image quality validation.. + /// This option enables screen capture (moire patterns) check while performing image quality validation.. /// This parameter specifies the necessary margin. Default 0.. /// This parameter controls the quality checks that the image should pass to be considered a valid input during the scanning process.. - public ImageQA(double brightnessThreshold = default(double), int dpiThreshold = default(int), int angleThreshold = default(int), bool? focusCheck = default(bool?), bool? glaresCheck = default(bool?), bool? colornessCheck = default(bool?), int documentPositionIndent = default(int), List expectedPass = default(List)) + public ImageQA(double brightnessThreshold = default(double), int dpiThreshold = default(int), int angleThreshold = default(int), bool focusCheck = default(bool), bool glaresCheck = default(bool), bool colornessCheck = default(bool), bool moireCheck = default(bool), int documentPositionIndent = default(int), List expectedPass = default(List)) { this.BrightnessThreshold = brightnessThreshold; this.DpiThreshold = dpiThreshold; @@ -49,65 +52,73 @@ public partial class ImageQA : IEquatable, IValidatableObject this.FocusCheck = focusCheck; this.GlaresCheck = glaresCheck; this.ColornessCheck = colornessCheck; + this.MoireCheck = moireCheck; this.DocumentPositionIndent = documentPositionIndent; this.ExpectedPass = expectedPass; } - + /// /// Set the threshold for an actual document brightness below which the check fails /// /// Set the threshold for an actual document brightness below which the check fails - [DataMember(Name="brightnessThreshold", EmitDefaultValue=false)] - public double BrightnessThreshold { get; set; } + [DataMember(Name = "brightnessThreshold", EmitDefaultValue = false)] + public double? BrightnessThreshold { get; set; } /// /// This parameter sets threshold for Image QA check of the presented document physical dpi. If actual document dpi is below this threshold, check will fail. /// /// This parameter sets threshold for Image QA check of the presented document physical dpi. If actual document dpi is below this threshold, check will fail. - [DataMember(Name="dpiThreshold", EmitDefaultValue=false)] - public int DpiThreshold { get; set; } + [DataMember(Name = "dpiThreshold", EmitDefaultValue = false)] + public int? DpiThreshold { get; set; } /// /// This parameter sets threshold for Image QA check of the presented document perspective angle in degrees. If actual document perspective angle is above this threshold, check will fail. /// /// This parameter sets threshold for Image QA check of the presented document perspective angle in degrees. If actual document perspective angle is above this threshold, check will fail. - [DataMember(Name="angleThreshold", EmitDefaultValue=false)] - public int AngleThreshold { get; set; } + [DataMember(Name = "angleThreshold", EmitDefaultValue = false)] + public int? AngleThreshold { get; set; } /// /// This option enables focus check while performing image quality validation. /// /// This option enables focus check while performing image quality validation. - [DataMember(Name="focusCheck", EmitDefaultValue=false)] + [DataMember(Name = "focusCheck", EmitDefaultValue = false)] public bool? FocusCheck { get; set; } /// /// This option enables glares check while performing image quality validation. /// /// This option enables glares check while performing image quality validation. - [DataMember(Name="glaresCheck", EmitDefaultValue=false)] + [DataMember(Name = "glaresCheck", EmitDefaultValue = false)] public bool? GlaresCheck { get; set; } /// /// This option enables colorness check while performing image quality validation. /// /// This option enables colorness check while performing image quality validation. - [DataMember(Name="colornessCheck", EmitDefaultValue=false)] + [DataMember(Name = "colornessCheck", EmitDefaultValue = false)] public bool? ColornessCheck { get; set; } + /// + /// This option enables screen capture (moire patterns) check while performing image quality validation. + /// + /// This option enables screen capture (moire patterns) check while performing image quality validation. + [DataMember(Name = "moireCheck", EmitDefaultValue = false)] + public bool? MoireCheck { get; set; } + /// /// This parameter specifies the necessary margin. Default 0. /// /// This parameter specifies the necessary margin. Default 0. - [DataMember(Name="documentPositionIndent", EmitDefaultValue=false)] - public int DocumentPositionIndent { get; set; } + [DataMember(Name = "documentPositionIndent", EmitDefaultValue = false)] + public int? DocumentPositionIndent { get; set; } /// /// This parameter controls the quality checks that the image should pass to be considered a valid input during the scanning process. /// /// This parameter controls the quality checks that the image should pass to be considered a valid input during the scanning process. - [DataMember(Name="expectedPass", EmitDefaultValue=false)] - public List ExpectedPass { get; set; } + [DataMember(Name = "expectedPass", EmitDefaultValue = false)] + public List? ExpectedPass { get; set; } /// /// Returns the string presentation of the object @@ -115,7 +126,7 @@ public partial class ImageQA : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageQA {\n"); sb.Append(" BrightnessThreshold: ").Append(BrightnessThreshold).Append("\n"); sb.Append(" DpiThreshold: ").Append(DpiThreshold).Append("\n"); @@ -123,12 +134,13 @@ public override string ToString() sb.Append(" FocusCheck: ").Append(FocusCheck).Append("\n"); sb.Append(" GlaresCheck: ").Append(GlaresCheck).Append("\n"); sb.Append(" ColornessCheck: ").Append(ColornessCheck).Append("\n"); + sb.Append(" MoireCheck: ").Append(MoireCheck).Append("\n"); sb.Append(" DocumentPositionIndent: ").Append(DocumentPositionIndent).Append("\n"); sb.Append(" ExpectedPass: ").Append(ExpectedPass).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -138,105 +150,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageQA); - } - - /// - /// Returns true if ImageQA instances are equal - /// - /// Instance of ImageQA to be compared - /// Boolean - public bool Equals(ImageQA input) - { - if (input == null) - return false; - - return - ( - this.BrightnessThreshold == input.BrightnessThreshold || - (this.BrightnessThreshold != null && - this.BrightnessThreshold.Equals(input.BrightnessThreshold)) - ) && - ( - this.DpiThreshold == input.DpiThreshold || - (this.DpiThreshold != null && - this.DpiThreshold.Equals(input.DpiThreshold)) - ) && - ( - this.AngleThreshold == input.AngleThreshold || - (this.AngleThreshold != null && - this.AngleThreshold.Equals(input.AngleThreshold)) - ) && - ( - this.FocusCheck == input.FocusCheck || - (this.FocusCheck != null && - this.FocusCheck.Equals(input.FocusCheck)) - ) && - ( - this.GlaresCheck == input.GlaresCheck || - (this.GlaresCheck != null && - this.GlaresCheck.Equals(input.GlaresCheck)) - ) && - ( - this.ColornessCheck == input.ColornessCheck || - (this.ColornessCheck != null && - this.ColornessCheck.Equals(input.ColornessCheck)) - ) && - ( - this.DocumentPositionIndent == input.DocumentPositionIndent || - (this.DocumentPositionIndent != null && - this.DocumentPositionIndent.Equals(input.DocumentPositionIndent)) - ) && - ( - this.ExpectedPass == input.ExpectedPass || - this.ExpectedPass != null && - input.ExpectedPass != null && - this.ExpectedPass.SequenceEqual(input.ExpectedPass) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.BrightnessThreshold != null) - hashCode = hashCode * 59 + this.BrightnessThreshold.GetHashCode(); - if (this.DpiThreshold != null) - hashCode = hashCode * 59 + this.DpiThreshold.GetHashCode(); - if (this.AngleThreshold != null) - hashCode = hashCode * 59 + this.AngleThreshold.GetHashCode(); - if (this.FocusCheck != null) - hashCode = hashCode * 59 + this.FocusCheck.GetHashCode(); - if (this.GlaresCheck != null) - hashCode = hashCode * 59 + this.GlaresCheck.GetHashCode(); - if (this.ColornessCheck != null) - hashCode = hashCode * 59 + this.ColornessCheck.GetHashCode(); - if (this.DocumentPositionIndent != null) - hashCode = hashCode * 59 + this.DocumentPositionIndent.GetHashCode(); - if (this.ExpectedPass != null) - hashCode = hashCode * 59 + this.ExpectedPass.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheck.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheck.cs index 21a6566..ec52ccb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheck.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheck.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,70 +29,78 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageQualityCheck /// - [DataContract] - public partial class ImageQualityCheck : IEquatable, IValidatableObject + [DataContract(Name = "ImageQualityCheck")] + public partial class ImageQualityCheck : IValidatableObject { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "type", IsRequired = true, EmitDefaultValue = true)] + public ImageQualityCheckType Type { get; set; } + + /// + /// Gets or Sets Result + /// + [DataMember(Name = "result", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Result { get; set; } + + /// + /// Gets or Sets FeatureType + /// + [DataMember(Name = "featureType", IsRequired = true, EmitDefaultValue = true)] + public SecurityFeatureType FeatureType { get; set; } /// /// Initializes a new instance of the class. /// - /// type. - /// result. - /// featureType. + [JsonConstructorAttribute] + protected ImageQualityCheck() { } + /// + /// Initializes a new instance of the class. + /// + /// type (required). + /// result (required). + /// featureType (required). /// areas. - /// mean. - /// stdDev. - /// probability. - public ImageQualityCheck(int type = default(int), int result = default(int), int featureType = default(int), AreaArray areas = default(AreaArray), float mean = default(float), float stdDev = default(float), int probability = default(int)) + /// Check mean value (required). + /// Check deviation value (required). + /// Check probability value (required). + public ImageQualityCheck(ImageQualityCheckType type = default(ImageQualityCheckType), CheckResult result = default(CheckResult), SecurityFeatureType featureType = default(SecurityFeatureType), AreaArray areas = default(AreaArray), float mean = default(float), float stdDev = default(float), int probability = default(int)) { this.Type = type; this.Result = result; this.FeatureType = featureType; - this.Areas = areas; this.Mean = mean; this.StdDev = stdDev; this.Probability = probability; + this.Areas = areas; } - - /// - /// Gets or Sets Type - /// - [DataMember(Name="type", EmitDefaultValue=false)] - public int Type { get; set; } - - /// - /// Gets or Sets Result - /// - [DataMember(Name="result", EmitDefaultValue=false)] - public int Result { get; set; } - - /// - /// Gets or Sets FeatureType - /// - [DataMember(Name="featureType", EmitDefaultValue=false)] - public int FeatureType { get; set; } /// /// Gets or Sets Areas /// - [DataMember(Name="areas", EmitDefaultValue=false)] - public AreaArray Areas { get; set; } + [DataMember(Name = "areas", EmitDefaultValue = false)] + public AreaArray? Areas { get; set; } /// - /// Gets or Sets Mean + /// Check mean value /// - [DataMember(Name="mean", EmitDefaultValue=false)] + /// Check mean value + [DataMember(Name = "mean", IsRequired = true, EmitDefaultValue = true)] public float Mean { get; set; } /// - /// Gets or Sets StdDev + /// Check deviation value /// - [DataMember(Name="std_dev", EmitDefaultValue=false)] + /// Check deviation value + [DataMember(Name = "std_dev", IsRequired = true, EmitDefaultValue = true)] public float StdDev { get; set; } /// - /// Gets or Sets Probability + /// Check probability value /// - [DataMember(Name="probability", EmitDefaultValue=false)] + /// Check probability value + [DataMember(Name = "probability", IsRequired = true, EmitDefaultValue = true)] public int Probability { get; set; } /// @@ -99,7 +109,7 @@ public partial class ImageQualityCheck : IEquatable, IValida /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageQualityCheck {\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" Result: ").Append(Result).Append("\n"); @@ -111,7 +121,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -121,97 +131,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageQualityCheck); - } - - /// - /// Returns true if ImageQualityCheck instances are equal - /// - /// Instance of ImageQualityCheck to be compared - /// Boolean - public bool Equals(ImageQualityCheck input) - { - if (input == null) - return false; - - return - ( - this.Type == input.Type || - (this.Type != null && - this.Type.Equals(input.Type)) - ) && - ( - this.Result == input.Result || - (this.Result != null && - this.Result.Equals(input.Result)) - ) && - ( - this.FeatureType == input.FeatureType || - (this.FeatureType != null && - this.FeatureType.Equals(input.FeatureType)) - ) && - ( - this.Areas == input.Areas || - (this.Areas != null && - this.Areas.Equals(input.Areas)) - ) && - ( - this.Mean == input.Mean || - (this.Mean != null && - this.Mean.Equals(input.Mean)) - ) && - ( - this.StdDev == input.StdDev || - (this.StdDev != null && - this.StdDev.Equals(input.StdDev)) - ) && - ( - this.Probability == input.Probability || - (this.Probability != null && - this.Probability.Equals(input.Probability)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Type != null) - hashCode = hashCode * 59 + this.Type.GetHashCode(); - if (this.Result != null) - hashCode = hashCode * 59 + this.Result.GetHashCode(); - if (this.FeatureType != null) - hashCode = hashCode * 59 + this.FeatureType.GetHashCode(); - if (this.Areas != null) - hashCode = hashCode * 59 + this.Areas.GetHashCode(); - if (this.Mean != null) - hashCode = hashCode * 59 + this.Mean.GetHashCode(); - if (this.StdDev != null) - hashCode = hashCode * 59 + this.StdDev.GetHashCode(); - if (this.Probability != null) - hashCode = hashCode * 59 + this.Probability.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckList.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckList.cs index 168aedb..9999956 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageQualityCheckList /// - [DataContract] - public partial class ImageQualityCheckList : IEquatable, IValidatableObject + [DataContract(Name = "ImageQualityCheckList")] + public partial class ImageQualityCheckList : IValidatableObject { + + /// + /// Gets or Sets Result + /// + [DataMember(Name = "result", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Result { get; set; } /// /// Initializes a new instance of the class. /// @@ -40,56 +48,47 @@ protected ImageQualityCheckList() { } /// /// result (required). /// list (required). - public ImageQualityCheckList(int result = default(int), List list = default(List)) + /// Number of List array elements (required). + public ImageQualityCheckList(CheckResult result = default(CheckResult), List list = default(List), decimal count = default(decimal)) { - // to ensure "result" is required (not null) - if (result == null) - { - throw new InvalidDataException("result is a required property for ImageQualityCheckList and cannot be null"); - } - else - { - this.Result = result; - } - + this.Result = result; // to ensure "list" is required (not null) if (list == null) { - throw new InvalidDataException("list is a required property for ImageQualityCheckList and cannot be null"); + throw new ArgumentNullException("list is a required property for ImageQualityCheckList and cannot be null"); } - else - { - this.List = list; - } - + this.List = list; + this.Count = count; } - - /// - /// Gets or Sets Result - /// - [DataMember(Name="result", EmitDefaultValue=true)] - public int Result { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=true)] + [DataMember(Name = "List", IsRequired = true, EmitDefaultValue = true)] public List List { get; set; } + /// + /// Number of List array elements + /// + /// Number of List array elements + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] + public decimal Count { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageQualityCheckList {\n"); sb.Append(" Result: ").Append(Result).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -99,63 +98,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageQualityCheckList); - } - - /// - /// Returns true if ImageQualityCheckList instances are equal - /// - /// Instance of ImageQualityCheckList to be compared - /// Boolean - public bool Equals(ImageQualityCheckList input) - { - if (input == null) - return false; - - return - ( - this.Result == input.Result || - (this.Result != null && - this.Result.Equals(input.Result)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Result != null) - hashCode = hashCode * 59 + this.Result.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckListItem.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckListItem.cs new file mode 100644 index 0000000..ed04a3c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckListItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ImageQualityCheckListItem + /// + [DataContract(Name = "ImageQualityCheckListItem")] + public partial class ImageQualityCheckListItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ImageQualityCheckListItem() { } + /// + /// Initializes a new instance of the class. + /// + /// imageQualityCheckList (required). + public ImageQualityCheckListItem(ImageQualityCheckList imageQualityCheckList = default(ImageQualityCheckList)) + { + // to ensure "imageQualityCheckList" is required (not null) + if (imageQualityCheckList == null) + { + throw new ArgumentNullException("imageQualityCheckList is a required property for ImageQualityCheckListItem and cannot be null"); + } + this.ImageQualityCheckList = imageQualityCheckList; + } + + /// + /// Gets or Sets ImageQualityCheckList + /// + [DataMember(Name = "ImageQualityCheckList", IsRequired = true, EmitDefaultValue = true)] + public ImageQualityCheckList ImageQualityCheckList { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ImageQualityCheckListItem {\n"); + sb.Append(" ImageQualityCheckList: ").Append(ImageQualityCheckList).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckType.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckType.cs index 3cb1718..a6c1ddb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQualityCheckType.cs @@ -1,56 +1,81 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Image quality check type - public class ImageQualityCheckType + /// + /// Image quality check type + public enum ImageQualityCheckType { + /// + /// Enum ImageGlares for value: 0 + /// + ImageGlares = 0, - /** Signals glare presence on the image */ - public const int ImageGlares = 0; + /// + /// Enum ImageFocus for value: 1 + /// + ImageFocus = 1, - /** Signals whether image is in focus */ - public const int ImageFocus = 1; + /// + /// Enum ImageResolution for value: 2 + /// + ImageResolution = 2, - /** Signals if image resolution is below threshold */ - public const int ImageResolution = 2; + /// + /// Enum ImageColorness for value: 3 + /// + ImageColorness = 3, - /** Signals if image is colorless */ - public const int ImageColorness = 3; + /// + /// Enum Perspective for value: 4 + /// + Perspective = 4, - /** Signals if document in the image has prespective distortion above threshold */ - public const int Perspective = 4; + /// + /// Enum Bounds for value: 5 + /// + Bounds = 5, - /** Signals if document is not fully present in the image */ - public const int Bounds = 5; + /// + /// Enum Portrait for value: 7 + /// + Portrait = 7, - /** Signals if an image is captured from screen */ - public const int ScreenCapture = 6; - - /** Signals if the portrait is present */ - public const int Portrait = 7; + /// + /// Enum Brightness for value: 9 + /// + Brightness = 9, + /// + /// Enum Occlusion for value: 10 + /// + Occlusion = 10 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityChecks.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityChecks.cs deleted file mode 100644 index 871c31d..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQualityChecks.cs +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 5.5.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// ImageQualityChecks - /// - [DataContract] - public partial class ImageQualityChecks : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected ImageQualityChecks() { } - /// - /// Initializes a new instance of the class. - /// - /// result (required). - /// list (required). - public ImageQualityChecks(int result = default(int), List list = default(List)) - { - // to ensure "result" is required (not null) - if (result == null) - { - throw new InvalidDataException("result is a required property for ImageQualityChecks and cannot be null"); - } - else - { - this.Result = result; - } - - // to ensure "list" is required (not null) - if (list == null) - { - throw new InvalidDataException("list is a required property for ImageQualityChecks and cannot be null"); - } - else - { - this.List = list; - } - - } - - /// - /// Gets or Sets Result - /// - [DataMember(Name="result", EmitDefaultValue=true)] - public int Result { get; set; } - - /// - /// Gets or Sets List - /// - [DataMember(Name="List", EmitDefaultValue=true)] - public List List { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class ImageQualityChecks {\n"); - sb.Append(" Result: ").Append(Result).Append("\n"); - sb.Append(" List: ").Append(List).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageQualityChecks); - } - - /// - /// Returns true if ImageQualityChecks instances are equal - /// - /// Instance of ImageQualityChecks to be compared - /// Boolean - public bool Equals(ImageQualityChecks input) - { - if (input == null) - return false; - - return - ( - this.Result == input.Result || - (this.Result != null && - this.Result.Equals(input.Result)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Result != null) - hashCode = hashCode * 59 + this.Result.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageQualityResult.cs b/src/Regula.DocumentReader.WebClient/Model/ImageQualityResult.cs index 3bf8fd2..01758dc 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageQualityResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageQualityResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageQualityResult /// - [DataContract] - public partial class ImageQualityResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "ImageQualityResult")] + public partial class ImageQualityResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected ImageQualityResult() { } /// Initializes a new instance of the class. /// /// imageQualityCheckList (required). - public ImageQualityResult(ImageQualityCheckList imageQualityCheckList = default(ImageQualityCheckList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.IMAGE_QUALITY). + public ImageQualityResult(ImageQualityCheckList imageQualityCheckList = default(ImageQualityCheckList), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.IMAGE_QUALITY) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "imageQualityCheckList" is required (not null) if (imageQualityCheckList == null) { - throw new InvalidDataException("imageQualityCheckList is a required property for ImageQualityResult and cannot be null"); - } - else - { - this.ImageQualityCheckList = imageQualityCheckList; + throw new ArgumentNullException("imageQualityCheckList is a required property for ImageQualityResult and cannot be null"); } - + this.ImageQualityCheckList = imageQualityCheckList; } - + /// /// Gets or Sets ImageQualityCheckList /// - [DataMember(Name="ImageQualityCheckList", EmitDefaultValue=true)] + [DataMember(Name = "ImageQualityCheckList", IsRequired = true, EmitDefaultValue = true)] public ImageQualityCheckList ImageQualityCheckList { get; set; } /// @@ -65,14 +69,14 @@ protected ImageQualityResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageQualityResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" ImageQualityCheckList: ").Append(ImageQualityCheckList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageQualityResult); - } - - /// - /// Returns true if ImageQualityResult instances are equal - /// - /// Instance of ImageQualityResult to be compared - /// Boolean - public bool Equals(ImageQualityResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.ImageQualityCheckList == input.ImageQualityCheckList || - (this.ImageQualityCheckList != null && - this.ImageQualityCheckList.Equals(input.ImageQualityCheckList)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.ImageQualityCheckList != null) - hashCode = hashCode * 59 + this.ImageQualityCheckList.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImageTransactionData.cs b/src/Regula.DocumentReader.WebClient/Model/ImageTransactionData.cs index 9267b54..ba2f288 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImageTransactionData.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImageTransactionData.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImageTransactionData /// - [DataContract] - public partial class ImageTransactionData : IEquatable, IValidatableObject + [DataContract(Name = "ImageTransactionData")] + public partial class ImageTransactionData : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,12 +40,12 @@ public partial class ImageTransactionData : IEquatable, I { this.Image = image; } - + /// /// Gets or Sets Image /// - [DataMember(Name="image", EmitDefaultValue=false)] - public ImagesFieldValue Image { get; set; } + [DataMember(Name = "image", EmitDefaultValue = false)] + public ImagesFieldValue? Image { get; set; } /// /// Returns the string presentation of the object @@ -51,13 +53,13 @@ public partial class ImageTransactionData : IEquatable, I /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImageTransactionData {\n"); sb.Append(" Image: ").Append(Image).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -67,55 +69,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImageTransactionData); - } - - /// - /// Returns true if ImageTransactionData instances are equal - /// - /// Instance of ImageTransactionData to be compared - /// Boolean - public bool Equals(ImageTransactionData input) - { - if (input == null) - return false; - - return - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Images.cs b/src/Regula.DocumentReader.WebClient/Model/Images.cs index deb51b7..6e26f7f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Images.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Images.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Images /// - [DataContract] - public partial class Images : IEquatable, IValidatableObject + [DataContract(Name = "Images")] + public partial class Images : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,42 +40,52 @@ protected Images() { } /// /// Initializes a new instance of the class. /// + /// Fields count. + /// Available sources count. /// availableSourceList (required). /// fieldList (required). - public Images(List availableSourceList = default(List), List fieldList = default(List)) + public Images(int fieldCount = default(int), int availableSourceCount = default(int), List availableSourceList = default(List), List fieldList = default(List)) { // to ensure "availableSourceList" is required (not null) if (availableSourceList == null) { - throw new InvalidDataException("availableSourceList is a required property for Images and cannot be null"); - } - else - { - this.AvailableSourceList = availableSourceList; + throw new ArgumentNullException("availableSourceList is a required property for Images and cannot be null"); } - + this.AvailableSourceList = availableSourceList; // to ensure "fieldList" is required (not null) if (fieldList == null) { - throw new InvalidDataException("fieldList is a required property for Images and cannot be null"); - } - else - { - this.FieldList = fieldList; + throw new ArgumentNullException("fieldList is a required property for Images and cannot be null"); } - + this.FieldList = fieldList; + this.FieldCount = fieldCount; + this.AvailableSourceCount = availableSourceCount; } - + + /// + /// Fields count + /// + /// Fields count + [DataMember(Name = "fieldCount", EmitDefaultValue = false)] + public int? FieldCount { get; set; } + + /// + /// Available sources count + /// + /// Available sources count + [DataMember(Name = "availableSourceCount", EmitDefaultValue = false)] + public int? AvailableSourceCount { get; set; } + /// /// Gets or Sets AvailableSourceList /// - [DataMember(Name="availableSourceList", EmitDefaultValue=true)] + [DataMember(Name = "availableSourceList", IsRequired = true, EmitDefaultValue = true)] public List AvailableSourceList { get; set; } /// /// Gets or Sets FieldList /// - [DataMember(Name="fieldList", EmitDefaultValue=true)] + [DataMember(Name = "fieldList", IsRequired = true, EmitDefaultValue = true)] public List FieldList { get; set; } /// @@ -82,14 +94,16 @@ protected Images() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class Images {\n"); + sb.Append(" FieldCount: ").Append(FieldCount).Append("\n"); + sb.Append(" AvailableSourceCount: ").Append(AvailableSourceCount).Append("\n"); sb.Append(" AvailableSourceList: ").Append(AvailableSourceList).Append("\n"); sb.Append(" FieldList: ").Append(FieldList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -99,64 +113,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Images); - } - - /// - /// Returns true if Images instances are equal - /// - /// Instance of Images to be compared - /// Boolean - public bool Equals(Images input) - { - if (input == null) - return false; - - return - ( - this.AvailableSourceList == input.AvailableSourceList || - this.AvailableSourceList != null && - input.AvailableSourceList != null && - this.AvailableSourceList.SequenceEqual(input.AvailableSourceList) - ) && - ( - this.FieldList == input.FieldList || - this.FieldList != null && - input.FieldList != null && - this.FieldList.SequenceEqual(input.FieldList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.AvailableSourceList != null) - hashCode = hashCode * 59 + this.AvailableSourceList.GetHashCode(); - if (this.FieldList != null) - hashCode = hashCode * 59 + this.FieldList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImagesAvailableSource.cs b/src/Regula.DocumentReader.WebClient/Model/ImagesAvailableSource.cs index fb6c082..39e66d0 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImagesAvailableSource.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImagesAvailableSource.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImagesAvailableSource /// - [DataContract] - public partial class ImagesAvailableSource : IEquatable, IValidatableObject + [DataContract(Name = "ImagesAvailableSource")] + public partial class ImagesAvailableSource : IValidatableObject { + + /// + /// Gets or Sets Source + /// + [DataMember(Name = "source", IsRequired = true, EmitDefaultValue = true)] + public Source Source { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,58 +46,35 @@ protected ImagesAvailableSource() { } /// /// Initializes a new instance of the class. /// - /// Same as Result type, but used for safe parsing of not-described values. See Result type. (default to 0). + /// Same as Result type, but used for safe parsing of not-described values. See Result type. (required) (default to 0). /// source (required). - public ImagesAvailableSource(int containerType = 0, string source = default(string)) + public ImagesAvailableSource(int containerType = 0, Source source = default(Source)) { - // to ensure "source" is required (not null) - if (source == null) - { - throw new InvalidDataException("source is a required property for ImagesAvailableSource and cannot be null"); - } - else - { - this.Source = source; - } - - // use default value if no "containerType" provided - if (containerType == null) - { - this.ContainerType = 0; - } - else - { - this.ContainerType = containerType; - } + this.ContainerType = containerType; + this.Source = source; } - + /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. - [DataMember(Name="containerType", EmitDefaultValue=false)] + [DataMember(Name = "containerType", IsRequired = true, EmitDefaultValue = true)] public int ContainerType { get; set; } - /// - /// Gets or Sets Source - /// - [DataMember(Name="source", EmitDefaultValue=true)] - public string Source { get; set; } - /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImagesAvailableSource {\n"); sb.Append(" ContainerType: ").Append(ContainerType).Append("\n"); sb.Append(" Source: ").Append(Source).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -99,62 +84,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImagesAvailableSource); - } - - /// - /// Returns true if ImagesAvailableSource instances are equal - /// - /// Instance of ImagesAvailableSource to be compared - /// Boolean - public bool Equals(ImagesAvailableSource input) - { - if (input == null) - return false; - - return - ( - this.ContainerType == input.ContainerType || - (this.ContainerType != null && - this.ContainerType.Equals(input.ContainerType)) - ) && - ( - this.Source == input.Source || - (this.Source != null && - this.Source.Equals(input.Source)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ContainerType != null) - hashCode = hashCode * 59 + this.ContainerType.GetHashCode(); - if (this.Source != null) - hashCode = hashCode * 59 + this.Source.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImagesField.cs b/src/Regula.DocumentReader.WebClient/Model/ImagesField.cs index 5af43c0..3b6cf6a 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImagesField.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImagesField.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImagesField /// - [DataContract] - public partial class ImagesField : IEquatable, IValidatableObject + [DataContract(Name = "ImagesField")] + public partial class ImagesField : IValidatableObject { + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "fieldType", IsRequired = true, EmitDefaultValue = true)] + public GraphicFieldType FieldType { get; set; } /// /// Initializes a new instance of the class. /// @@ -41,58 +49,44 @@ protected ImagesField() { } /// Human readable field name. Do not bind to this name - use GraphicFieldType instead. (required). /// fieldType (required). /// valueList (required). - public ImagesField(string fieldName = default(string), int fieldType = default(int), List valueList = default(List)) + /// Field value count. + public ImagesField(string fieldName = default(string), GraphicFieldType fieldType = default(GraphicFieldType), List valueList = default(List), decimal valueCount = default(decimal)) { // to ensure "fieldName" is required (not null) if (fieldName == null) { - throw new InvalidDataException("fieldName is a required property for ImagesField and cannot be null"); - } - else - { - this.FieldName = fieldName; + throw new ArgumentNullException("fieldName is a required property for ImagesField and cannot be null"); } - - // to ensure "fieldType" is required (not null) - if (fieldType == null) - { - throw new InvalidDataException("fieldType is a required property for ImagesField and cannot be null"); - } - else - { - this.FieldType = fieldType; - } - + this.FieldName = fieldName; + this.FieldType = fieldType; // to ensure "valueList" is required (not null) if (valueList == null) { - throw new InvalidDataException("valueList is a required property for ImagesField and cannot be null"); - } - else - { - this.ValueList = valueList; + throw new ArgumentNullException("valueList is a required property for ImagesField and cannot be null"); } - + this.ValueList = valueList; + this.ValueCount = valueCount; } - + /// /// Human readable field name. Do not bind to this name - use GraphicFieldType instead. /// /// Human readable field name. Do not bind to this name - use GraphicFieldType instead. - [DataMember(Name="fieldName", EmitDefaultValue=true)] + [DataMember(Name = "fieldName", IsRequired = true, EmitDefaultValue = true)] public string FieldName { get; set; } /// - /// Gets or Sets FieldType + /// Gets or Sets ValueList /// - [DataMember(Name="fieldType", EmitDefaultValue=true)] - public int FieldType { get; set; } + [DataMember(Name = "valueList", IsRequired = true, EmitDefaultValue = true)] + public List ValueList { get; set; } /// - /// Gets or Sets ValueList + /// Field value count /// - [DataMember(Name="valueList", EmitDefaultValue=true)] - public List ValueList { get; set; } + /// Field value count + [DataMember(Name = "valueCount", EmitDefaultValue = false)] + public decimal? ValueCount { get; set; } /// /// Returns the string presentation of the object @@ -100,15 +94,16 @@ protected ImagesField() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImagesField {\n"); sb.Append(" FieldName: ").Append(FieldName).Append("\n"); sb.Append(" FieldType: ").Append(FieldType).Append("\n"); sb.Append(" ValueList: ").Append(ValueList).Append("\n"); + sb.Append(" ValueCount: ").Append(ValueCount).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -118,70 +113,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImagesField); - } - - /// - /// Returns true if ImagesField instances are equal - /// - /// Instance of ImagesField to be compared - /// Boolean - public bool Equals(ImagesField input) - { - if (input == null) - return false; - - return - ( - this.FieldName == input.FieldName || - (this.FieldName != null && - this.FieldName.Equals(input.FieldName)) - ) && - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.ValueList == input.ValueList || - this.ValueList != null && - input.ValueList != null && - this.ValueList.SequenceEqual(input.ValueList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldName != null) - hashCode = hashCode * 59 + this.FieldName.GetHashCode(); - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.ValueList != null) - hashCode = hashCode * 59 + this.ValueList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs b/src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs index 0e3f49e..9ce835b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImagesFieldValue /// - [DataContract] - public partial class ImagesFieldValue : IEquatable, IValidatableObject + [DataContract(Name = "ImagesFieldValue")] + public partial class ImagesFieldValue : IValidatableObject { + + /// + /// Gets or Sets Source + /// + [DataMember(Name = "source", IsRequired = true, EmitDefaultValue = true)] + public Source Source { get; set; } + + /// + /// Gets or Sets LightIndex + /// + [DataMember(Name = "lightIndex", IsRequired = true, EmitDefaultValue = true)] + public Light LightIndex { get; set; } /// /// Initializes a new instance of the class. /// @@ -39,7 +53,7 @@ protected ImagesFieldValue() { } /// Initializes a new instance of the class. /// /// source (required). - /// Base64 encoded image (required). + /// Base64 encoded image. /// Base64 encoded image. /// Original page index. /// Page index of the image from input list (required). @@ -47,122 +61,71 @@ protected ImagesFieldValue() { } /// Same as Result type, but used for safe parsing of not-described values. See Result type. (required) (default to 0). /// fieldRect. /// rfidOrigin. - public ImagesFieldValue(string source = default(string), string value = default(string), string originalValue = default(string), int originalPageIndex = default(int), int pageIndex = default(int), int lightIndex = default(int), int containerType = 0, RectangleCoordinates fieldRect = default(RectangleCoordinates), RfidOrigin rfidOrigin = default(RfidOrigin)) + public ImagesFieldValue(Source source = default(Source), string value = default(string), string originalValue = default(string), int originalPageIndex = default(int), int pageIndex = default(int), Light lightIndex = default(Light), int containerType = 0, RectangleCoordinates fieldRect = default(RectangleCoordinates), RfidOrigin rfidOrigin = default(RfidOrigin)) { - // to ensure "source" is required (not null) - if (source == null) - { - throw new InvalidDataException("source is a required property for ImagesFieldValue and cannot be null"); - } - else - { - this.Source = source; - } - - // to ensure "value" is required (not null) - if (value == null) - { - throw new InvalidDataException("value is a required property for ImagesFieldValue and cannot be null"); - } - else - { - this.Value = value; - } - - // to ensure "pageIndex" is required (not null) - if (pageIndex == null) - { - throw new InvalidDataException("pageIndex is a required property for ImagesFieldValue and cannot be null"); - } - else - { - this.PageIndex = pageIndex; - } - - // to ensure "lightIndex" is required (not null) - if (lightIndex == null) - { - throw new InvalidDataException("lightIndex is a required property for ImagesFieldValue and cannot be null"); - } - else - { - this.LightIndex = lightIndex; - } - - // to ensure "containerType" is required (not null) - if (containerType == null) - { - throw new InvalidDataException("containerType is a required property for ImagesFieldValue and cannot be null"); - } - else - { - this.ContainerType = containerType; - } - + this.Source = source; + this.PageIndex = pageIndex; + this.LightIndex = lightIndex; + this.ContainerType = containerType; + this.Value = value; this.OriginalValue = originalValue; this.OriginalPageIndex = originalPageIndex; this.FieldRect = fieldRect; this.RfidOrigin = rfidOrigin; } - - /// - /// Gets or Sets Source - /// - [DataMember(Name="source", EmitDefaultValue=true)] - public string Source { get; set; } /// /// Base64 encoded image /// /// Base64 encoded image - [DataMember(Name="value", EmitDefaultValue=true)] - public string Value { get; set; } + /* + Base64 encoded image + */ + [DataMember(Name = "value", EmitDefaultValue = false)] + public string? Value { get; set; } /// /// Base64 encoded image /// /// Base64 encoded image - [DataMember(Name="originalValue", EmitDefaultValue=false)] - public string OriginalValue { get; set; } + /* + Base64 encoded image + */ + [DataMember(Name = "originalValue", EmitDefaultValue = false)] + public string? OriginalValue { get; set; } /// /// Original page index /// /// Original page index - [DataMember(Name="originalPageIndex", EmitDefaultValue=false)] - public int OriginalPageIndex { get; set; } + [DataMember(Name = "originalPageIndex", EmitDefaultValue = false)] + public int? OriginalPageIndex { get; set; } /// /// Page index of the image from input list /// /// Page index of the image from input list - [DataMember(Name="pageIndex", EmitDefaultValue=true)] + [DataMember(Name = "pageIndex", IsRequired = true, EmitDefaultValue = true)] public int PageIndex { get; set; } - /// - /// Gets or Sets LightIndex - /// - [DataMember(Name="lightIndex", EmitDefaultValue=true)] - public int LightIndex { get; set; } - /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. - [DataMember(Name="containerType", EmitDefaultValue=true)] + [DataMember(Name = "containerType", IsRequired = true, EmitDefaultValue = true)] public int ContainerType { get; set; } /// /// Gets or Sets FieldRect /// - [DataMember(Name="fieldRect", EmitDefaultValue=false)] - public RectangleCoordinates FieldRect { get; set; } + [DataMember(Name = "fieldRect", EmitDefaultValue = false)] + public RectangleCoordinates? FieldRect { get; set; } /// /// Gets or Sets RfidOrigin /// - [DataMember(Name="rfidOrigin", EmitDefaultValue=false)] - public RfidOrigin RfidOrigin { get; set; } + [DataMember(Name = "rfidOrigin", EmitDefaultValue = false)] + public RfidOrigin? RfidOrigin { get; set; } /// /// Returns the string presentation of the object @@ -170,7 +133,7 @@ protected ImagesFieldValue() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImagesFieldValue {\n"); sb.Append(" Source: ").Append(Source).Append("\n"); sb.Append(" Value: ").Append(Value).Append("\n"); @@ -184,7 +147,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -194,111 +157,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImagesFieldValue); - } - - /// - /// Returns true if ImagesFieldValue instances are equal - /// - /// Instance of ImagesFieldValue to be compared - /// Boolean - public bool Equals(ImagesFieldValue input) - { - if (input == null) - return false; - - return - ( - this.Source == input.Source || - (this.Source != null && - this.Source.Equals(input.Source)) - ) && - ( - this.Value == input.Value || - (this.Value != null && - this.Value.Equals(input.Value)) - ) && - ( - this.OriginalValue == input.OriginalValue || - (this.OriginalValue != null && - this.OriginalValue.Equals(input.OriginalValue)) - ) && - ( - this.OriginalPageIndex == input.OriginalPageIndex || - (this.OriginalPageIndex != null && - this.OriginalPageIndex.Equals(input.OriginalPageIndex)) - ) && - ( - this.PageIndex == input.PageIndex || - (this.PageIndex != null && - this.PageIndex.Equals(input.PageIndex)) - ) && - ( - this.LightIndex == input.LightIndex || - (this.LightIndex != null && - this.LightIndex.Equals(input.LightIndex)) - ) && - ( - this.ContainerType == input.ContainerType || - (this.ContainerType != null && - this.ContainerType.Equals(input.ContainerType)) - ) && - ( - this.FieldRect == input.FieldRect || - (this.FieldRect != null && - this.FieldRect.Equals(input.FieldRect)) - ) && - ( - this.RfidOrigin == input.RfidOrigin || - (this.RfidOrigin != null && - this.RfidOrigin.Equals(input.RfidOrigin)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Source != null) - hashCode = hashCode * 59 + this.Source.GetHashCode(); - if (this.Value != null) - hashCode = hashCode * 59 + this.Value.GetHashCode(); - if (this.OriginalValue != null) - hashCode = hashCode * 59 + this.OriginalValue.GetHashCode(); - if (this.OriginalPageIndex != null) - hashCode = hashCode * 59 + this.OriginalPageIndex.GetHashCode(); - if (this.PageIndex != null) - hashCode = hashCode * 59 + this.PageIndex.GetHashCode(); - if (this.LightIndex != null) - hashCode = hashCode * 59 + this.LightIndex.GetHashCode(); - if (this.ContainerType != null) - hashCode = hashCode * 59 + this.ContainerType.GetHashCode(); - if (this.FieldRect != null) - hashCode = hashCode * 59 + this.FieldRect.GetHashCode(); - if (this.RfidOrigin != null) - hashCode = hashCode * 59 + this.RfidOrigin.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ImagesItem.cs b/src/Regula.DocumentReader.WebClient/Model/ImagesItem.cs new file mode 100644 index 0000000..56af960 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ImagesItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ImagesItem + /// + [DataContract(Name = "ImagesItem")] + public partial class ImagesItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ImagesItem() { } + /// + /// Initializes a new instance of the class. + /// + /// images (required). + public ImagesItem(Images images = default(Images)) + { + // to ensure "images" is required (not null) + if (images == null) + { + throw new ArgumentNullException("images is a required property for ImagesItem and cannot be null"); + } + this.Images = images; + } + + /// + /// Gets or Sets Images + /// + [DataMember(Name = "Images", IsRequired = true, EmitDefaultValue = true)] + public Images Images { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ImagesItem {\n"); + sb.Append(" Images: ").Append(Images).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs b/src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs index 9bfc43c..f47b00b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ImagesResult /// - [DataContract] - public partial class ImagesResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "ImagesResult")] + public partial class ImagesResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected ImagesResult() { } /// Initializes a new instance of the class. /// /// images (required). - public ImagesResult(Images images = default(Images), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.IMAGES). + public ImagesResult(Images images = default(Images), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.IMAGES) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "images" is required (not null) if (images == null) { - throw new InvalidDataException("images is a required property for ImagesResult and cannot be null"); - } - else - { - this.Images = images; + throw new ArgumentNullException("images is a required property for ImagesResult and cannot be null"); } - + this.Images = images; } - + /// /// Gets or Sets Images /// - [DataMember(Name="Images", EmitDefaultValue=true)] + [DataMember(Name = "Images", IsRequired = true, EmitDefaultValue = true)] public Images Images { get; set; } /// @@ -65,14 +69,14 @@ protected ImagesResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ImagesResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" Images: ").Append(Images).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ImagesResult); - } - - /// - /// Returns true if ImagesResult instances are equal - /// - /// Instance of ImagesResult to be compared - /// Boolean - public bool Equals(ImagesResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.Images == input.Images || - (this.Images != null && - this.Images.Equals(input.Images)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.Images != null) - hashCode = hashCode * 59 + this.Images.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/InData.cs b/src/Regula.DocumentReader.WebClient/Model/InData.cs index 07198cf..d7096f8 100644 --- a/src/Regula.DocumentReader.WebClient/Model/InData.cs +++ b/src/Regula.DocumentReader.WebClient/Model/InData.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// InData /// - [DataContract] - public partial class InData : IEquatable, IValidatableObject + [DataContract(Name = "InData")] + public partial class InData : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,18 +42,18 @@ public partial class InData : IEquatable, IValidatableObject this.Video = video; this.Images = images; } - + /// /// Gets or Sets Video /// - [DataMember(Name="video", EmitDefaultValue=false)] - public InDataVideo Video { get; set; } + [DataMember(Name = "video", EmitDefaultValue = false)] + public InDataVideo? Video { get; set; } /// /// Gets or Sets Images /// - [DataMember(Name="images", EmitDefaultValue=false)] - public List Images { get; set; } + [DataMember(Name = "images", EmitDefaultValue = false)] + public List? Images { get; set; } /// /// Returns the string presentation of the object @@ -59,14 +61,14 @@ public partial class InData : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class InData {\n"); sb.Append(" Video: ").Append(Video).Append("\n"); sb.Append(" Images: ").Append(Images).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,63 +78,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InData); - } - - /// - /// Returns true if InData instances are equal - /// - /// Instance of InData to be compared - /// Boolean - public bool Equals(InData input) - { - if (input == null) - return false; - - return - ( - this.Video == input.Video || - (this.Video != null && - this.Video.Equals(input.Video)) - ) && - ( - this.Images == input.Images || - this.Images != null && - input.Images != null && - this.Images.SequenceEqual(input.Images) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Video != null) - hashCode = hashCode * 59 + this.Video.GetHashCode(); - if (this.Images != null) - hashCode = hashCode * 59 + this.Images.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/InDataRfidSession.cs b/src/Regula.DocumentReader.WebClient/Model/InDataRfidSession.cs deleted file mode 100644 index 8eceb64..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/InDataRfidSession.cs +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.1.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// InDataRfidSession - /// - [DataContract] - public partial class InDataRfidSession : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// Image url. - public InDataRfidSession(string url = default(string)) - { - this.Url = url; - } - - /// - /// Image url - /// - /// Image url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class InDataRfidSession {\n"); - sb.Append(" Url: ").Append(Url).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InDataRfidSession); - } - - /// - /// Returns true if InDataRfidSession instances are equal - /// - /// Instance of InDataRfidSession to be compared - /// Boolean - public bool Equals(InDataRfidSession input) - { - if (input == null) - return false; - - return - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/InDataTransactionImagesFieldValue.cs b/src/Regula.DocumentReader.WebClient/Model/InDataTransactionImagesFieldValue.cs index 1ecd17b..d60cb73 100644 --- a/src/Regula.DocumentReader.WebClient/Model/InDataTransactionImagesFieldValue.cs +++ b/src/Regula.DocumentReader.WebClient/Model/InDataTransactionImagesFieldValue.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// InDataTransactionImagesFieldValue /// - [DataContract] - public partial class InDataTransactionImagesFieldValue : IEquatable, IValidatableObject + [DataContract(Name = "InDataTransactionImagesFieldValue")] + public partial class InDataTransactionImagesFieldValue : IValidatableObject { + + /// + /// Gets or Sets Light + /// + [DataMember(Name = "light", EmitDefaultValue = false)] + public Light? Light { get; set; } /// /// Initializes a new instance of the class. /// @@ -37,39 +45,33 @@ public partial class InDataTransactionImagesFieldValue : IEquatablelistIdx. /// Page index of the image from input list. /// Image url. - public InDataTransactionImagesFieldValue(int light = default(int), int listIdx = default(int), int pageIdx = default(int), string url = default(string)) + public InDataTransactionImagesFieldValue(Light? light = default(Light?), int listIdx = default(int), int pageIdx = default(int), string url = default(string)) { this.Light = light; this.ListIdx = listIdx; this.PageIdx = pageIdx; this.Url = url; } - - /// - /// Gets or Sets Light - /// - [DataMember(Name="light", EmitDefaultValue=false)] - public int Light { get; set; } /// /// Gets or Sets ListIdx /// - [DataMember(Name="listIdx", EmitDefaultValue=false)] - public int ListIdx { get; set; } + [DataMember(Name = "listIdx", EmitDefaultValue = false)] + public int? ListIdx { get; set; } /// /// Page index of the image from input list /// /// Page index of the image from input list - [DataMember(Name="pageIdx", EmitDefaultValue=false)] - public int PageIdx { get; set; } + [DataMember(Name = "pageIdx", EmitDefaultValue = false)] + public int? PageIdx { get; set; } /// /// Image url /// /// Image url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } + [DataMember(Name = "url", EmitDefaultValue = false)] + public string? Url { get; set; } /// /// Returns the string presentation of the object @@ -77,7 +79,7 @@ public partial class InDataTransactionImagesFieldValue : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class InDataTransactionImagesFieldValue {\n"); sb.Append(" Light: ").Append(Light).Append("\n"); sb.Append(" ListIdx: ").Append(ListIdx).Append("\n"); @@ -86,7 +88,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -96,76 +98,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InDataTransactionImagesFieldValue); - } - - /// - /// Returns true if InDataTransactionImagesFieldValue instances are equal - /// - /// Instance of InDataTransactionImagesFieldValue to be compared - /// Boolean - public bool Equals(InDataTransactionImagesFieldValue input) - { - if (input == null) - return false; - - return - ( - this.Light == input.Light || - (this.Light != null && - this.Light.Equals(input.Light)) - ) && - ( - this.ListIdx == input.ListIdx || - (this.ListIdx != null && - this.ListIdx.Equals(input.ListIdx)) - ) && - ( - this.PageIdx == input.PageIdx || - (this.PageIdx != null && - this.PageIdx.Equals(input.PageIdx)) - ) && - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Light != null) - hashCode = hashCode * 59 + this.Light.GetHashCode(); - if (this.ListIdx != null) - hashCode = hashCode * 59 + this.ListIdx.GetHashCode(); - if (this.PageIdx != null) - hashCode = hashCode * 59 + this.PageIdx.GetHashCode(); - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/InDataVideo.cs b/src/Regula.DocumentReader.WebClient/Model/InDataVideo.cs index d423b9f..dcd4cad 100644 --- a/src/Regula.DocumentReader.WebClient/Model/InDataVideo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/InDataVideo.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Video /// - [DataContract] - public partial class InDataVideo : IEquatable, IValidatableObject + [DataContract(Name = "InData_video")] + public partial class InDataVideo : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,20 +42,20 @@ public partial class InDataVideo : IEquatable, IValidatableObject this.Metadata = metadata; this.Url = url; } - + /// /// A free-form object containing video's extended attributes. /// /// A free-form object containing video's extended attributes. - [DataMember(Name="metadata", EmitDefaultValue=false)] - public Dictionary Metadata { get; set; } + [DataMember(Name = "metadata", EmitDefaultValue = false)] + public Dictionary? Metadata { get; set; } /// /// Video url /// /// Video url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } + [DataMember(Name = "url", EmitDefaultValue = false)] + public string? Url { get; set; } /// /// Returns the string presentation of the object @@ -61,14 +63,14 @@ public partial class InDataVideo : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class InDataVideo {\n"); sb.Append(" Metadata: ").Append(Metadata).Append("\n"); sb.Append(" Url: ").Append(Url).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -78,63 +80,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InDataVideo); - } - - /// - /// Returns true if InDataVideo instances are equal - /// - /// Instance of InDataVideo to be compared - /// Boolean - public bool Equals(InDataVideo input) - { - if (input == null) - return false; - - return - ( - this.Metadata == input.Metadata || - this.Metadata != null && - input.Metadata != null && - this.Metadata.SequenceEqual(input.Metadata) - ) && - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Metadata != null) - hashCode = hashCode * 59 + this.Metadata.GetHashCode(); - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/InlineResponse200.cs b/src/Regula.DocumentReader.WebClient/Model/InlineResponse200.cs deleted file mode 100644 index ca603c0..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/InlineResponse200.cs +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// InlineResponse200 - /// - [DataContract] - public partial class InlineResponse200 : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// outData. - /// inData. - /// tag. - /// transactionId. - public InlineResponse200(OutData outData = default(OutData), InData inData = default(InData), string tag = default(string), Guid transactionId = default(Guid)) - { - this.OutData = outData; - this.InData = inData; - this.Tag = tag; - this.TransactionId = transactionId; - } - - /// - /// Gets or Sets OutData - /// - [DataMember(Name="OutData", EmitDefaultValue=false)] - public OutData OutData { get; set; } - - /// - /// Gets or Sets InData - /// - [DataMember(Name="InData", EmitDefaultValue=false)] - public InData InData { get; set; } - - /// - /// Gets or Sets Tag - /// - [DataMember(Name="tag", EmitDefaultValue=false)] - public string Tag { get; set; } - - /// - /// Gets or Sets TransactionId - /// - [DataMember(Name="transactionId", EmitDefaultValue=false)] - public Guid TransactionId { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class InlineResponse200 {\n"); - sb.Append(" OutData: ").Append(OutData).Append("\n"); - sb.Append(" InData: ").Append(InData).Append("\n"); - sb.Append(" Tag: ").Append(Tag).Append("\n"); - sb.Append(" TransactionId: ").Append(TransactionId).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InlineResponse200); - } - - /// - /// Returns true if InlineResponse200 instances are equal - /// - /// Instance of InlineResponse200 to be compared - /// Boolean - public bool Equals(InlineResponse200 input) - { - if (input == null) - return false; - - return - ( - this.OutData == input.OutData || - (this.OutData != null && - this.OutData.Equals(input.OutData)) - ) && - ( - this.InData == input.InData || - (this.InData != null && - this.InData.Equals(input.InData)) - ) && - ( - this.Tag == input.Tag || - (this.Tag != null && - this.Tag.Equals(input.Tag)) - ) && - ( - this.TransactionId == input.TransactionId || - (this.TransactionId != null && - this.TransactionId.Equals(input.TransactionId)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.OutData != null) - hashCode = hashCode * 59 + this.OutData.GetHashCode(); - if (this.InData != null) - hashCode = hashCode * 59 + this.InData.GetHashCode(); - if (this.Tag != null) - hashCode = hashCode * 59 + this.Tag.GetHashCode(); - if (this.TransactionId != null) - hashCode = hashCode * 59 + this.TransactionId.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/InlineResponse2001.cs b/src/Regula.DocumentReader.WebClient/Model/InlineResponse2001.cs deleted file mode 100644 index d520767..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/InlineResponse2001.cs +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// InlineResponse2001 - /// - [DataContract] - public partial class InlineResponse2001 : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// chipPage. - /// processingFinished. - /// containerList. - /// transactionInfo. - /// Base64 encoded transaction processing log. - /// Free-form object provided in request. See passBackObject property of ProcessRequest.. - /// morePagesAvailable. - /// Time the document processing has taken, ms.. - /// coreLibResultCode. - public InlineResponse2001(int chipPage = default(int), int processingFinished = default(int), ContainerList containerList = default(ContainerList), TransactionInfo transactionInfo = default(TransactionInfo), string log = default(string), Dictionary passBackObject = default(Dictionary), int morePagesAvailable = default(int), int elapsedTime = default(int), int coreLibResultCode = default(int)) - { - this.ChipPage = chipPage; - this.ProcessingFinished = processingFinished; - this.ContainerList = containerList; - this.TransactionInfo = transactionInfo; - this.Log = log; - this.PassBackObject = passBackObject; - this.MorePagesAvailable = morePagesAvailable; - this.ElapsedTime = elapsedTime; - this.CoreLibResultCode = coreLibResultCode; - } - - /// - /// Gets or Sets ChipPage - /// - [DataMember(Name="ChipPage", EmitDefaultValue=false)] - public int ChipPage { get; set; } - - /// - /// Gets or Sets ProcessingFinished - /// - [DataMember(Name="ProcessingFinished", EmitDefaultValue=false)] - public int ProcessingFinished { get; set; } - - /// - /// Gets or Sets ContainerList - /// - [DataMember(Name="ContainerList", EmitDefaultValue=false)] - public ContainerList ContainerList { get; set; } - - /// - /// Gets or Sets TransactionInfo - /// - [DataMember(Name="TransactionInfo", EmitDefaultValue=false)] - public TransactionInfo TransactionInfo { get; set; } - - /// - /// Base64 encoded transaction processing log - /// - /// Base64 encoded transaction processing log - [DataMember(Name="log", EmitDefaultValue=false)] - public string Log { get; set; } - - /// - /// Free-form object provided in request. See passBackObject property of ProcessRequest. - /// - /// Free-form object provided in request. See passBackObject property of ProcessRequest. - [DataMember(Name="passBackObject", EmitDefaultValue=false)] - public Dictionary PassBackObject { get; set; } - - /// - /// Gets or Sets MorePagesAvailable - /// - [DataMember(Name="morePagesAvailable", EmitDefaultValue=false)] - public int MorePagesAvailable { get; set; } - - /// - /// Time the document processing has taken, ms. - /// - /// Time the document processing has taken, ms. - [DataMember(Name="elapsedTime", EmitDefaultValue=false)] - public int ElapsedTime { get; set; } - - /// - /// Gets or Sets CoreLibResultCode - /// - [DataMember(Name="CoreLibResultCode", EmitDefaultValue=false)] - public int CoreLibResultCode { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class InlineResponse2001 {\n"); - sb.Append(" ChipPage: ").Append(ChipPage).Append("\n"); - sb.Append(" ProcessingFinished: ").Append(ProcessingFinished).Append("\n"); - sb.Append(" ContainerList: ").Append(ContainerList).Append("\n"); - sb.Append(" TransactionInfo: ").Append(TransactionInfo).Append("\n"); - sb.Append(" Log: ").Append(Log).Append("\n"); - sb.Append(" PassBackObject: ").Append(PassBackObject).Append("\n"); - sb.Append(" MorePagesAvailable: ").Append(MorePagesAvailable).Append("\n"); - sb.Append(" ElapsedTime: ").Append(ElapsedTime).Append("\n"); - sb.Append(" CoreLibResultCode: ").Append(CoreLibResultCode).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as InlineResponse2001); - } - - /// - /// Returns true if InlineResponse2001 instances are equal - /// - /// Instance of InlineResponse2001 to be compared - /// Boolean - public bool Equals(InlineResponse2001 input) - { - if (input == null) - return false; - - return - ( - this.ChipPage == input.ChipPage || - (this.ChipPage != null && - this.ChipPage.Equals(input.ChipPage)) - ) && - ( - this.ProcessingFinished == input.ProcessingFinished || - (this.ProcessingFinished != null && - this.ProcessingFinished.Equals(input.ProcessingFinished)) - ) && - ( - this.ContainerList == input.ContainerList || - (this.ContainerList != null && - this.ContainerList.Equals(input.ContainerList)) - ) && - ( - this.TransactionInfo == input.TransactionInfo || - (this.TransactionInfo != null && - this.TransactionInfo.Equals(input.TransactionInfo)) - ) && - ( - this.Log == input.Log || - (this.Log != null && - this.Log.Equals(input.Log)) - ) && - ( - this.PassBackObject == input.PassBackObject || - this.PassBackObject != null && - input.PassBackObject != null && - this.PassBackObject.SequenceEqual(input.PassBackObject) - ) && - ( - this.MorePagesAvailable == input.MorePagesAvailable || - (this.MorePagesAvailable != null && - this.MorePagesAvailable.Equals(input.MorePagesAvailable)) - ) && - ( - this.ElapsedTime == input.ElapsedTime || - (this.ElapsedTime != null && - this.ElapsedTime.Equals(input.ElapsedTime)) - ) && - ( - this.CoreLibResultCode == input.CoreLibResultCode || - (this.CoreLibResultCode != null && - this.CoreLibResultCode.Equals(input.CoreLibResultCode)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ChipPage != null) - hashCode = hashCode * 59 + this.ChipPage.GetHashCode(); - if (this.ProcessingFinished != null) - hashCode = hashCode * 59 + this.ProcessingFinished.GetHashCode(); - if (this.ContainerList != null) - hashCode = hashCode * 59 + this.ContainerList.GetHashCode(); - if (this.TransactionInfo != null) - hashCode = hashCode * 59 + this.TransactionInfo.GetHashCode(); - if (this.Log != null) - hashCode = hashCode * 59 + this.Log.GetHashCode(); - if (this.PassBackObject != null) - hashCode = hashCode * 59 + this.PassBackObject.GetHashCode(); - if (this.MorePagesAvailable != null) - hashCode = hashCode * 59 + this.MorePagesAvailable.GetHashCode(); - if (this.ElapsedTime != null) - hashCode = hashCode * 59 + this.ElapsedTime.GetHashCode(); - if (this.CoreLibResultCode != null) - hashCode = hashCode * 59 + this.CoreLibResultCode.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/InputBarcodeType.cs b/src/Regula.DocumentReader.WebClient/Model/InputBarcodeType.cs index 75b6405..8670081 100644 --- a/src/Regula.DocumentReader.WebClient/Model/InputBarcodeType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/InputBarcodeType.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -28,9 +30,7 @@ namespace Regula.DocumentReader.WebClient.Model /// Enumeration contains the types of barcodes that can be processed /// /// Enumeration contains the types of barcodes that can be processed - [JsonConverter(typeof(StringEnumConverter))] - public enum InputBarcodeType { /// @@ -152,7 +152,6 @@ public enum InputBarcodeType /// [EnumMember(Value = "bct_JABCODE")] JABCODE = 20 - } } diff --git a/src/Regula.DocumentReader.WebClient/Model/InputImageQualityChecks.cs b/src/Regula.DocumentReader.WebClient/Model/InputImageQualityChecks.cs index 39edaaf..2213fe5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/InputImageQualityChecks.cs +++ b/src/Regula.DocumentReader.WebClient/Model/InputImageQualityChecks.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -28,9 +30,7 @@ namespace Regula.DocumentReader.WebClient.Model /// Input image quality checks for the document processing /// /// Input image quality checks for the document processing - [JsonConverter(typeof(StringEnumConverter))] - public enum InputImageQualityChecks { /// @@ -86,7 +86,6 @@ public enum InputImageQualityChecks /// [EnumMember(Value = "occlusionCheck")] Occlusion = 9 - } } diff --git a/src/Regula.DocumentReader.WebClient/Model/LCID.cs b/src/Regula.DocumentReader.WebClient/Model/LCID.cs index 5f11262..97f8206 100644 --- a/src/Regula.DocumentReader.WebClient/Model/LCID.cs +++ b/src/Regula.DocumentReader.WebClient/Model/LCID.cs @@ -1,455 +1,866 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Locale id. Used to tag same typed fields declared in several languages. For example: name can be provided in both native and latin variants. Based on Microsoft locale id (https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f). - public class LCID + /// + /// Locale id. Used to tag same typed fields declared in several languages. For example: name can be provided in both native and latin variants. Based on Microsoft locale id (https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f). + public enum LCID { - - /** Latin */ - public const int LATIN = 0; - - /** Afrikaans */ - public const int AFRIKAANS = 1078; - - /** Albanian */ - public const int ALBANIAN = 1052; - - /** Arabic (Algeria) */ - public const int ARABIC_ALGERIA = 5121; - - /** Arabic (Bahrain) */ - public const int ARABIC_BAHRAIN = 15361; - - /** Arabic (Egypt) */ - public const int ARABIC_EGYPT = 3073; - - /** Arabic (Iraq) */ - public const int ARABIC_IRAQ = 2049; - - /** Arabic (Jordan) */ - public const int ARABIC_JORDAN = 11265; - - /** Arabic (Kuwait) */ - public const int ARABIC_KUWAIT = 13313; - - /** Arabic (Lebanon) */ - public const int ARABIC_LEBANON = 12289; - - /** Arabic (Libya) */ - public const int ARABIC_LIBYA = 4097; - - /** Arabic (Morocco) */ - public const int ARABIC_MOROCCO = 6145; - - /** Arabic (Oman) */ - public const int ARABIC_OMAN = 8193; - - /** Arabic (Qatar) */ - public const int ARABIC_QATAR = 16385; - - /** Arabic (Saudi Arabia) */ - public const int ARABIC_SAUDI_ARABIA = 1025; - - /** Arabic (Syria) */ - public const int ARABIC_SYRIA = 10241; - - /** Arabic (Tunisia) */ - public const int ARABIC_TUNISIA = 7169; - - /** Arabic (U.A.E.) */ - public const int ARABIC_UAE = 14337; - - /** Arabic (Yemen) */ - public const int ARABIC_YEMEN = 9217; - - /** Armenian */ - public const int ARABIC_ARMENIAN = 1067; - - /** Azeri (Cyrillic) */ - public const int AZERI_CYRILIC = 2092; - - /** Azeri (Latin) */ - public const int AZERI_LATIN = 1068; - - /** Basque */ - public const int BASQUE = 1069; - - /** Belarusian */ - public const int BELARUSIAN = 1059; - - /** Bulgarian */ - public const int BULGARIAN = 1026; - - /** Catalan */ - public const int CATALAN = 1027; - - /** Chinese (HongKong S.A.R.) */ - public const int CHINESE_HONGKONG_SAR = 3076; - - /** Chinese (Macao S.A.R.) */ - public const int CHINESE_MACAO_SAR = 5124; - - /** Chinese */ - public const int CHINESE = 2052; - - /** Chinese (Singapore) */ - public const int CHINESE_SINGAPORE = 4100; - - /** Chinese (Taiwan) */ - public const int CHINESE_TAIWAN = 1028; - - /** Croatian */ - public const int CROATIAN = 1050; - - /** Czech */ - public const int CZECH = 1029; - - /** Danish */ - public const int DANISH = 1030; - - /** Divehi */ - public const int DIVEHI = 1125; - - /** Dutch (Belgium) */ - public const int DUTCH_BELGIUM = 2067; - - /** Dutch (Netherlands) */ - public const int DUTCH_NETHERLANDS = 1043; - - /** English (Australia) */ - public const int ENGLISH_AUSTRALIA = 3081; - - /** English (Belize) */ - public const int ENGLISH_BELIZE = 10249; - - /** English (Canada) */ - public const int ENGLISH_CANADA = 4105; - - /** English (Caribbean) */ - public const int ENGLISH_CARRIBEAN = 9225; - - /** English (Ireland) */ - public const int ENGLISH_IRELAND = 6153; - - /** English (Jamaica) */ - public const int ENGLISH_JAMAICA = 8201; - - /** English (New Zealand) */ - public const int ENGLISH_NEW_ZEALAND = 5129; - - /** English (Philippines) */ - public const int ENGLISH_PHILIPPINES = 13321; - - /** English (South Africa) */ - public const int ENGLISH_SOUTH_AFRICA = 7177; - - /** English (Trinidad) */ - public const int ENGLISH_TRINIDAD = 11273; - - /** English (United Kingdom) */ - public const int ENGLISH_UK = 2057; - - /** English (United States) */ - public const int ENGLISH_US = 1033; - - /** English (Zimbabwe) */ - public const int ENGLISH_ZIMBABWE = 12297; - - /** Estonian */ - public const int ESTONIAN = 1061; - - /** Faeroese */ - public const int FAEROESE = 1080; - - /** Farsi */ - public const int FARSI = 1065; - - /** Finnish */ - public const int FINNISH = 1035; - - /** French (Belgium) */ - public const int FRENCH_BELGIUM = 2060; - - /** French (Canada) */ - public const int FRENCH_CANADA = 3084; - - /** French (France) */ - public const int FRENCH_FRANCE = 1036; - - /** French (Luxembourg) */ - public const int FRENCH_LUXEMBOURG = 5132; - - /** French (Monaco) */ - public const int FRENCH_MONACO = 6156; - - /** French (Switzerland) */ - public const int FRENCH_SWITZERLAND = 4108; - - /** Galician */ - public const int FYRO_MACEDONIAN = 1071; - - /** Georgian */ - public const int GALICIAN = 1110; - - /** German (Austria) */ - public const int GEORGIAN = 1079; - - /** German (Germany) */ - public const int GERMAN_AUSTRIA = 3079; - - /** German (Liechtenstein) */ - public const int GERMAN_GERMANY = 1031; - - /** German (Luxembourg) */ - public const int GERMAN_LIECHTENSTEIN = 5127; - - /** German (Switzerland) */ - public const int GERMAN_LUXEMBOURG = 4103; - - /** Greek */ - public const int GERMAN_SWITZERLAND = 2055; - - /** Gujarati */ - public const int GREEK = 1032; - - /** Hebrew */ - public const int GUJARATI = 1095; - - /** Hindi (India) */ - public const int HEBREW = 1037; - - /** Hungarian */ - public const int HINDI_INDIA = 1081; - - /** Icelandic */ - public const int HUNGARIAN = 1038; - - /** Indonesian */ - public const int ICELANDIC = 1039; - - /** Italian (Italy) */ - public const int INDONESIAN = 1057; - - /** Italian (Switzerland) */ - public const int ITALIAN_ITALY = 1040; - - /** Japanese */ - public const int ITALIAN_SWITZERLAND = 2064; - - /** Kannada */ - public const int JAPANESE = 1041; - - /** Kazakh */ - public const int KANNADA = 1099; - - /** Konkani */ - public const int KAZAKH = 1087; - - /** Korean */ - public const int KONKANI = 1111; - - /** Kyrgyz (Cyrillic) */ - public const int KOREAN = 1042; - - /** Latvian */ - public const int KYRGYZ_CYRILICK = 1088; - - /** Lithuanian */ - public const int LATVIAN = 1062; - - /** FYRO Macedonian */ - public const int LITHUANIAN = 1063; - - /** Malay (Malaysia) */ - public const int MALAY_MALAYSIA = 1086; - - /** Malay (Brunei Darussalam) */ - public const int MALAY_BRUNEI_DARUSSALAM = 2110; - - /** Marathi */ - public const int MARATHI = 1102; - - /** Mongolian (Cyrillic) */ - public const int MONGOLIAN_CYRILIC = 1104; - - /** Norwegian (Bokmal) */ - public const int NORWEGIAN_BOKMAL = 1044; - - /** Norwegian (Nynorsk) */ - public const int NORWEGIAN_NYORSK = 2068; - - /** Polish */ - public const int POLISH = 1045; - - /** Portuguese (Brazil) */ - public const int PORTUGUESE_BRAZIL = 1046; - - /** Portuguese (Portugal) */ - public const int PORTUGUESE_PORTUGAL = 2070; - - /** Punjabi */ - public const int PUNJABI = 1094; - - /** Rhaeto-Romanic */ - public const int RHAETO_ROMANIC = 1047; - - /** Romanian */ - public const int ROMANIAN = 1048; - - /** Russian */ - public const int RUSSIAN = 1049; - - /** Sanskrit */ - public const int SANSKRIT = 1103; - - /** Serbian (Cyrillic) */ - public const int SERBIAN_CYRILIC = 3098; - - /** Serbian (Latin) */ - public const int SERBIAN_LATIN = 2074; - - /** Slovak */ - public const int SLOVAK = 1051; - - /** Slovenian */ - public const int SLOVENIAN = 1060; - - /** Spanish (Argentina) */ - public const int SPANISH_ARGENTINA = 11274; - - /** Spanish (Bolivia) */ - public const int SPANISH_BOLIVIA = 16394; - - /** Spanish (Chile) */ - public const int SPANISH_CHILE = 13322; - - /** Spanish (Colombia) */ - public const int SPANICH_COLOMBIA = 9226; - - /** Spanish (Costa Rica) */ - public const int SPANISH_COSTA_RICA = 5130; - - /** Spanish (Dominican Republic) */ - public const int SPANISH_DOMINICAN_REPUBLIC = 7178; - - /** Spanish (Ecuador) */ - public const int SPANISH_ECUADOR = 12298; - - /** Spanish (El Salvador) */ - public const int SPANISH_EL_SALVADOR = 17418; - - /** Spanish (Guatemala) */ - public const int SPANISH_GUATEMALA = 4106; - - /** Spanish (Honduras) */ - public const int SPANISH_HONDURAS = 18442; - - /** Spanish (Mexico) */ - public const int SPANISH_MEXICO = 2058; - - /** Spanish (Nicaragua) */ - public const int SPANISH_NICARAGUA = 19466; - - /** Spanish (Panama) */ - public const int SPANISH_PANAMA = 6154; - - /** Spanish (Paraguay) */ - public const int SPANISH_PARAGUAY = 15370; - - /** Spanish (Peru) */ - public const int SPANISH_PERU = 10250; - - /** Spanish (Puerto Rico) */ - public const int SPANISH_PUERTO_RICO = 20490; - - /** Spanish (Traditional Sort) */ - public const int SPANISH_TRADITIONAL_SORT = 1034; - - /** Spanish (International Sort) */ - public const int SPANISH_INTERNATIONAL_SORT = 3082; - - /** Spanish (Uruguay) */ - public const int SPANISH_URUGUAY = 14346; - - /** Spanish (Venezuela) */ - public const int SPANISH_VENEZUELA = 8202; - - /** Swahili */ - public const int SWAHILI = 1089; - - /** Swedish */ - public const int SWEDISH = 1053; - - /** Swedish (Finland) */ - public const int SWEDISH_FINLAND = 2077; - - /** Syriac */ - public const int SYRIAC = 1114; - - /** Tamil */ - public const int TAMIL = 1097; - - /** Tatar */ - public const int TATAR = 1092; - - /** Telugu */ - public const int TELUGU = 1098; - - /** Thai (Thailand) */ - public const int THAI_THAILAND = 1054; - - /** Turkish */ - public const int TURKISH = 1055; - - /** Tajik (Cyrillic) */ - public const int TAJIK_CYRILLIC = 1064; - - /** Turkmen */ - public const int TURKMEN = 1090; - - /** Ukrainian */ - public const int UKRAINIAN = 1058; - - /** Urdu */ - public const int URDU = 1056; - - /** Uzbek (Cyrillic) */ - public const int UZBEK_CYRILIC = 2115; - - /** Uzbek (Latin) */ - public const int UZBEK_LATIN = 1091; - - /** Vietnamese */ - public const int VIETNAMESE = 1066; - - /** CTC Simplified */ - public const int CTC_SIMPLIFIED = 50001; - - /** CTC Traditional */ - public const int CTC_TRADITIONAL = 50002; - + /// + /// Enum LATIN for value: 0 + /// + LATIN = 0, + + /// + /// Enum AFRIKAANS for value: 1078 + /// + AFRIKAANS = 1078, + + /// + /// Enum ALBANIAN for value: 1052 + /// + ALBANIAN = 1052, + + /// + /// Enum ARABIC_ALGERIA for value: 5121 + /// + ARABIC_ALGERIA = 5121, + + /// + /// Enum ARABIC_BAHRAIN for value: 15361 + /// + ARABIC_BAHRAIN = 15361, + + /// + /// Enum ARABIC_EGYPT for value: 3073 + /// + ARABIC_EGYPT = 3073, + + /// + /// Enum ARABIC_IRAQ for value: 2049 + /// + ARABIC_IRAQ = 2049, + + /// + /// Enum ARABIC_JORDAN for value: 11265 + /// + ARABIC_JORDAN = 11265, + + /// + /// Enum ARABIC_KUWAIT for value: 13313 + /// + ARABIC_KUWAIT = 13313, + + /// + /// Enum ARABIC_LEBANON for value: 12289 + /// + ARABIC_LEBANON = 12289, + + /// + /// Enum ARABIC_LIBYA for value: 4097 + /// + ARABIC_LIBYA = 4097, + + /// + /// Enum ARABIC_MOROCCO for value: 6145 + /// + ARABIC_MOROCCO = 6145, + + /// + /// Enum ARABIC_OMAN for value: 8193 + /// + ARABIC_OMAN = 8193, + + /// + /// Enum ARABIC_QATAR for value: 16385 + /// + ARABIC_QATAR = 16385, + + /// + /// Enum ARABIC_SAUDI_ARABIA for value: 1025 + /// + ARABIC_SAUDI_ARABIA = 1025, + + /// + /// Enum ARABIC_SYRIA for value: 10241 + /// + ARABIC_SYRIA = 10241, + + /// + /// Enum ARABIC_TUNISIA for value: 7169 + /// + ARABIC_TUNISIA = 7169, + + /// + /// Enum ARABIC_UAE for value: 14337 + /// + ARABIC_UAE = 14337, + + /// + /// Enum ARABIC_YEMEN for value: 9217 + /// + ARABIC_YEMEN = 9217, + + /// + /// Enum ARABIC_ARMENIAN for value: 1067 + /// + ARABIC_ARMENIAN = 1067, + + /// + /// Enum AZERI_CYRILIC for value: 2092 + /// + AZERI_CYRILIC = 2092, + + /// + /// Enum AZERI_LATIN for value: 1068 + /// + AZERI_LATIN = 1068, + + /// + /// Enum BASQUE for value: 1069 + /// + BASQUE = 1069, + + /// + /// Enum BELARUSIAN for value: 1059 + /// + BELARUSIAN = 1059, + + /// + /// Enum BULGARIAN for value: 1026 + /// + BULGARIAN = 1026, + + /// + /// Enum BURMESE for value: 1109 + /// + BURMESE = 1109, + + /// + /// Enum CATALAN for value: 1027 + /// + CATALAN = 1027, + + /// + /// Enum CHINESE_HONGKONG_SAR for value: 3076 + /// + CHINESE_HONGKONG_SAR = 3076, + + /// + /// Enum CHINESE_MACAO_SAR for value: 5124 + /// + CHINESE_MACAO_SAR = 5124, + + /// + /// Enum CHINESE for value: 2052 + /// + CHINESE = 2052, + + /// + /// Enum CHINESE_SINGAPORE for value: 4100 + /// + CHINESE_SINGAPORE = 4100, + + /// + /// Enum CHINESE_TAIWAN for value: 1028 + /// + CHINESE_TAIWAN = 1028, + + /// + /// Enum CROATIAN for value: 1050 + /// + CROATIAN = 1050, + + /// + /// Enum CZECH for value: 1029 + /// + CZECH = 1029, + + /// + /// Enum DANISH for value: 1030 + /// + DANISH = 1030, + + /// + /// Enum DIVEHI for value: 1125 + /// + DIVEHI = 1125, + + /// + /// Enum DUTCH_BELGIUM for value: 2067 + /// + DUTCH_BELGIUM = 2067, + + /// + /// Enum DUTCH_NETHERLANDS for value: 1043 + /// + DUTCH_NETHERLANDS = 1043, + + /// + /// Enum ENGLISH_AUSTRALIA for value: 3081 + /// + ENGLISH_AUSTRALIA = 3081, + + /// + /// Enum ENGLISH_BELIZE for value: 10249 + /// + ENGLISH_BELIZE = 10249, + + /// + /// Enum ENGLISH_CANADA for value: 4105 + /// + ENGLISH_CANADA = 4105, + + /// + /// Enum ENGLISH_CARRIBEAN for value: 9225 + /// + ENGLISH_CARRIBEAN = 9225, + + /// + /// Enum ENGLISH_IRELAND for value: 6153 + /// + ENGLISH_IRELAND = 6153, + + /// + /// Enum ENGLISH_JAMAICA for value: 8201 + /// + ENGLISH_JAMAICA = 8201, + + /// + /// Enum ENGLISH_NEW_ZEALAND for value: 5129 + /// + ENGLISH_NEW_ZEALAND = 5129, + + /// + /// Enum ENGLISH_PHILIPPINES for value: 13321 + /// + ENGLISH_PHILIPPINES = 13321, + + /// + /// Enum ENGLISH_SOUTH_AFRICA for value: 7177 + /// + ENGLISH_SOUTH_AFRICA = 7177, + + /// + /// Enum ENGLISH_TRINIDAD for value: 11273 + /// + ENGLISH_TRINIDAD = 11273, + + /// + /// Enum ENGLISH_UK for value: 2057 + /// + ENGLISH_UK = 2057, + + /// + /// Enum ENGLISH_US for value: 1033 + /// + ENGLISH_US = 1033, + + /// + /// Enum ENGLISH_ZIMBABWE for value: 12297 + /// + ENGLISH_ZIMBABWE = 12297, + + /// + /// Enum ESTONIAN for value: 1061 + /// + ESTONIAN = 1061, + + /// + /// Enum FAEROESE for value: 1080 + /// + FAEROESE = 1080, + + /// + /// Enum FARSI for value: 1065 + /// + FARSI = 1065, + + /// + /// Enum FINNISH for value: 1035 + /// + FINNISH = 1035, + + /// + /// Enum FRENCH_BELGIUM for value: 2060 + /// + FRENCH_BELGIUM = 2060, + + /// + /// Enum FRENCH_CANADA for value: 3084 + /// + FRENCH_CANADA = 3084, + + /// + /// Enum FRENCH_FRANCE for value: 1036 + /// + FRENCH_FRANCE = 1036, + + /// + /// Enum FRENCH_LUXEMBOURG for value: 5132 + /// + FRENCH_LUXEMBOURG = 5132, + + /// + /// Enum FRENCH_MONACO for value: 6156 + /// + FRENCH_MONACO = 6156, + + /// + /// Enum FRENCH_SWITZERLAND for value: 4108 + /// + FRENCH_SWITZERLAND = 4108, + + /// + /// Enum FYRO_MACEDONIAN for value: 1071 + /// + FYRO_MACEDONIAN = 1071, + + /// + /// Enum GALICIAN for value: 1110 + /// + GALICIAN = 1110, + + /// + /// Enum GEORGIAN for value: 1079 + /// + GEORGIAN = 1079, + + /// + /// Enum GERMAN_AUSTRIA for value: 3079 + /// + GERMAN_AUSTRIA = 3079, + + /// + /// Enum GERMAN_GERMANY for value: 1031 + /// + GERMAN_GERMANY = 1031, + + /// + /// Enum GERMAN_LIECHTENSTEIN for value: 5127 + /// + GERMAN_LIECHTENSTEIN = 5127, + + /// + /// Enum GERMAN_LUXEMBOURG for value: 4103 + /// + GERMAN_LUXEMBOURG = 4103, + + /// + /// Enum GERMAN_SWITZERLAND for value: 2055 + /// + GERMAN_SWITZERLAND = 2055, + + /// + /// Enum GREEK for value: 1032 + /// + GREEK = 1032, + + /// + /// Enum GUJARATI for value: 1095 + /// + GUJARATI = 1095, + + /// + /// Enum HEBREW for value: 1037 + /// + HEBREW = 1037, + + /// + /// Enum HINDI_INDIA for value: 1081 + /// + HINDI_INDIA = 1081, + + /// + /// Enum HUNGARIAN for value: 1038 + /// + HUNGARIAN = 1038, + + /// + /// Enum ICELANDIC for value: 1039 + /// + ICELANDIC = 1039, + + /// + /// Enum INDONESIAN for value: 1057 + /// + INDONESIAN = 1057, + + /// + /// Enum ITALIAN_ITALY for value: 1040 + /// + ITALIAN_ITALY = 1040, + + /// + /// Enum ITALIAN_SWITZERLAND for value: 2064 + /// + ITALIAN_SWITZERLAND = 2064, + + /// + /// Enum JAPANESE for value: 1041 + /// + JAPANESE = 1041, + + /// + /// Enum KANNADA for value: 1099 + /// + KANNADA = 1099, + + /// + /// Enum KAZAKH for value: 1087 + /// + KAZAKH = 1087, + + /// + /// Enum KHMER for value: 1107 + /// + KHMER = 1107, + + /// + /// Enum KONKANI for value: 1111 + /// + KONKANI = 1111, + + /// + /// Enum KOREAN for value: 1042 + /// + KOREAN = 1042, + + /// + /// Enum KYRGYZ_CYRILICK for value: 1088 + /// + KYRGYZ_CYRILICK = 1088, + + /// + /// Enum LATVIAN for value: 1062 + /// + LATVIAN = 1062, + + /// + /// Enum LITHUANIAN for value: 1063 + /// + LITHUANIAN = 1063, + + /// + /// Enum MALAY_MALAYSIA for value: 1086 + /// + MALAY_MALAYSIA = 1086, + + /// + /// Enum MALAY_BRUNEI_DARUSSALAM for value: 2110 + /// + MALAY_BRUNEI_DARUSSALAM = 2110, + + /// + /// Enum MALTESE for value: 1082 + /// + MALTESE = 1082, + + /// + /// Enum MARATHI for value: 1102 + /// + MARATHI = 1102, + + /// + /// Enum MONGOLIAN_CYRILIC for value: 1104 + /// + MONGOLIAN_CYRILIC = 1104, + + /// + /// Enum NORWEGIAN_BOKMAL for value: 1044 + /// + NORWEGIAN_BOKMAL = 1044, + + /// + /// Enum NORWEGIAN_NYORSK for value: 2068 + /// + NORWEGIAN_NYORSK = 2068, + + /// + /// Enum POLISH for value: 1045 + /// + POLISH = 1045, + + /// + /// Enum PORTUGUESE_BRAZIL for value: 1046 + /// + PORTUGUESE_BRAZIL = 1046, + + /// + /// Enum PORTUGUESE_PORTUGAL for value: 2070 + /// + PORTUGUESE_PORTUGAL = 2070, + + /// + /// Enum PUNJABI for value: 1094 + /// + PUNJABI = 1094, + + /// + /// Enum RHAETO_ROMANIC for value: 1047 + /// + RHAETO_ROMANIC = 1047, + + /// + /// Enum ROMANIAN for value: 1048 + /// + ROMANIAN = 1048, + + /// + /// Enum RUSSIAN for value: 1049 + /// + RUSSIAN = 1049, + + /// + /// Enum SANSKRIT for value: 1103 + /// + SANSKRIT = 1103, + + /// + /// Enum SERBIAN_CYRILIC for value: 3098 + /// + SERBIAN_CYRILIC = 3098, + + /// + /// Enum SERBIAN_LATIN for value: 2074 + /// + SERBIAN_LATIN = 2074, + + /// + /// Enum SINHALA for value: 1115 + /// + SINHALA = 1115, + + /// + /// Enum SLOVAK for value: 1051 + /// + SLOVAK = 1051, + + /// + /// Enum SLOVENIAN for value: 1060 + /// + SLOVENIAN = 1060, + + /// + /// Enum SPANISH_ARGENTINA for value: 11274 + /// + SPANISH_ARGENTINA = 11274, + + /// + /// Enum SPANISH_BOLIVIA for value: 16394 + /// + SPANISH_BOLIVIA = 16394, + + /// + /// Enum SPANISH_CHILE for value: 13322 + /// + SPANISH_CHILE = 13322, + + /// + /// Enum SPANICH_COLOMBIA for value: 9226 + /// + SPANICH_COLOMBIA = 9226, + + /// + /// Enum SPANISH_COSTA_RICA for value: 5130 + /// + SPANISH_COSTA_RICA = 5130, + + /// + /// Enum SPANISH_DOMINICAN_REPUBLIC for value: 7178 + /// + SPANISH_DOMINICAN_REPUBLIC = 7178, + + /// + /// Enum SPANISH_ECUADOR for value: 12298 + /// + SPANISH_ECUADOR = 12298, + + /// + /// Enum SPANISH_EL_SALVADOR for value: 17418 + /// + SPANISH_EL_SALVADOR = 17418, + + /// + /// Enum SPANISH_GUATEMALA for value: 4106 + /// + SPANISH_GUATEMALA = 4106, + + /// + /// Enum SPANISH_HONDURAS for value: 18442 + /// + SPANISH_HONDURAS = 18442, + + /// + /// Enum SPANISH_MEXICO for value: 2058 + /// + SPANISH_MEXICO = 2058, + + /// + /// Enum SPANISH_NICARAGUA for value: 19466 + /// + SPANISH_NICARAGUA = 19466, + + /// + /// Enum SPANISH_PANAMA for value: 6154 + /// + SPANISH_PANAMA = 6154, + + /// + /// Enum SPANISH_PARAGUAY for value: 15370 + /// + SPANISH_PARAGUAY = 15370, + + /// + /// Enum SPANISH_PERU for value: 10250 + /// + SPANISH_PERU = 10250, + + /// + /// Enum SPANISH_PUERTO_RICO for value: 20490 + /// + SPANISH_PUERTO_RICO = 20490, + + /// + /// Enum SPANISH_TRADITIONAL_SORT for value: 1034 + /// + SPANISH_TRADITIONAL_SORT = 1034, + + /// + /// Enum SPANISH_INTERNATIONAL_SORT for value: 3082 + /// + SPANISH_INTERNATIONAL_SORT = 3082, + + /// + /// Enum SPANISH_URUGUAY for value: 14346 + /// + SPANISH_URUGUAY = 14346, + + /// + /// Enum SPANISH_VENEZUELA for value: 8202 + /// + SPANISH_VENEZUELA = 8202, + + /// + /// Enum SWAHILI for value: 1089 + /// + SWAHILI = 1089, + + /// + /// Enum SWEDISH for value: 1053 + /// + SWEDISH = 1053, + + /// + /// Enum SWEDISH_FINLAND for value: 2077 + /// + SWEDISH_FINLAND = 2077, + + /// + /// Enum SYRIAC for value: 1114 + /// + SYRIAC = 1114, + + /// + /// Enum TAMIL for value: 1097 + /// + TAMIL = 1097, + + /// + /// Enum TATAR for value: 1092 + /// + TATAR = 1092, + + /// + /// Enum TELUGU for value: 1098 + /// + TELUGU = 1098, + + /// + /// Enum THAI_THAILAND for value: 1054 + /// + THAI_THAILAND = 1054, + + /// + /// Enum TURKISH for value: 1055 + /// + TURKISH = 1055, + + /// + /// Enum TAJIK_CYRILLIC for value: 1064 + /// + TAJIK_CYRILLIC = 1064, + + /// + /// Enum TURKMEN for value: 1090 + /// + TURKMEN = 1090, + + /// + /// Enum UKRAINIAN for value: 1058 + /// + UKRAINIAN = 1058, + + /// + /// Enum URDU for value: 1056 + /// + URDU = 1056, + + /// + /// Enum UZBEK_CYRILIC for value: 2115 + /// + UZBEK_CYRILIC = 2115, + + /// + /// Enum UZBEK_LATIN for value: 1091 + /// + UZBEK_LATIN = 1091, + + /// + /// Enum VIETNAMESE for value: 1066 + /// + VIETNAMESE = 1066, + + /// + /// Enum CTC_SIMPLIFIED for value: 50001 + /// + CTC_SIMPLIFIED = 50001, + + /// + /// Enum CTC_TRADITIONAL for value: 50002 + /// + CTC_TRADITIONAL = 50002, + + /// + /// Enum BENGALI_BANGLADESH for value: 2117 + /// + BENGALI_BANGLADESH = 2117, + + /// + /// Enum BENGALI_INDIA for value: 1093 + /// + BENGALI_INDIA = 1093, + + /// + /// Enum ASSAMESE for value: 1101 + /// + ASSAMESE = 1101, + + /// + /// Enum ORIYA for value: 1096 + /// + ORIYA = 1096, + + /// + /// Enum MALAYALAM for value: 1100 + /// + MALAYALAM = 1100, + + /// + /// Enum LAO for value: 1108 + /// + LAO = 1108, + + /// + /// Enum SINDHI_INDIA for value: 1113 + /// + SINDHI_INDIA = 1113, + + /// + /// Enum AMHARIC for value: 1118 + /// + AMHARIC = 1118, + + /// + /// Enum KASHMIRI for value: 1120 + /// + KASHMIRI = 1120, + + /// + /// Enum NEPALI for value: 1121 + /// + NEPALI = 1121, + + /// + /// Enum PASHTO for value: 1123 + /// + PASHTO = 1123, + + /// + /// Enum SINDHI for value: 2137 + /// + SINDHI = 2137, + + /// + /// Enum ARABIC for value: 4096 + /// + ARABIC = 4096, + + /// + /// Enum BANK_CARD_NUMBER for value: 10000 + /// + BANK_CARD_NUMBER = 10000, + + /// + /// Enum BANK_CARD_EXPIRY_DATE for value: 10001 + /// + BANK_CARD_EXPIRY_DATE = 10001, + + /// + /// Enum BANK_CARD_NAME for value: 10002 + /// + BANK_CARD_NAME = 10002, + + /// + /// Enum BANK_CARD for value: 10003 + /// + BANK_CARD = 10003, + + /// + /// Enum BANK_CARD_CVV2 for value: 10004 + /// + BANK_CARD_CVV2 = 10004, + + /// + /// Enum ABKHAZIAN for value: 10011 + /// + ABKHAZIAN = 10011, + + /// + /// Enum KARAKALPAK for value: 10012 + /// + KARAKALPAK = 10012, + + /// + /// Enum URDU_DETECTION for value: 10560 + /// + URDU_DETECTION = 10560 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs b/src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs index d0425d9..60c3c43 100644 --- a/src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Lexical data analysis allows you to compare the results of reading the text data of the MRZ, the document filling area, barcodes and data from the memory of the RFID chip for an additional assessment of the authenticity of the document. Single result for all pages. Consider using Result.TEXT type for more simplicity. /// - [DataContract] - public partial class LexicalAnalysisResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "LexicalAnalysisResult")] + public partial class LexicalAnalysisResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,16 +41,26 @@ protected LexicalAnalysisResult() { } /// /// Initializes a new instance of the class. /// - /// listVerifiedFields. - public LexicalAnalysisResult(ListVerifiedFields listVerifiedFields = default(ListVerifiedFields), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// listVerifiedFields (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.LEXICAL_ANALYSIS). + public LexicalAnalysisResult(ListVerifiedFields listVerifiedFields = default(ListVerifiedFields), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.LEXICAL_ANALYSIS) : base(bufLength, light, listIdx, pageIdx, resultType) { + // to ensure "listVerifiedFields" is required (not null) + if (listVerifiedFields == null) + { + throw new ArgumentNullException("listVerifiedFields is a required property for LexicalAnalysisResult and cannot be null"); + } this.ListVerifiedFields = listVerifiedFields; } - + /// /// Gets or Sets ListVerifiedFields /// - [DataMember(Name="ListVerifiedFields", EmitDefaultValue=false)] + [DataMember(Name = "ListVerifiedFields", IsRequired = true, EmitDefaultValue = true)] public ListVerifiedFields ListVerifiedFields { get; set; } /// @@ -56,14 +69,14 @@ protected LexicalAnalysisResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class LexicalAnalysisResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" ListVerifiedFields: ").Append(ListVerifiedFields).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -74,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as LexicalAnalysisResult); - } - - /// - /// Returns true if LexicalAnalysisResult instances are equal - /// - /// Instance of LexicalAnalysisResult to be compared - /// Boolean - public bool Equals(LexicalAnalysisResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.ListVerifiedFields == input.ListVerifiedFields || - (this.ListVerifiedFields != null && - this.ListVerifiedFields.Equals(input.ListVerifiedFields)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.ListVerifiedFields != null) - hashCode = hashCode * 59 + this.ListVerifiedFields.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -121,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/LicenseItem.cs b/src/Regula.DocumentReader.WebClient/Model/LicenseItem.cs new file mode 100644 index 0000000..a9e0bc2 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/LicenseItem.cs @@ -0,0 +1,97 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// LicenseItem + /// + [DataContract(Name = "LicenseItem")] + public partial class LicenseItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected LicenseItem() { } + /// + /// Initializes a new instance of the class. + /// + /// Base64 encoded data (required). + public LicenseItem(byte[] license = default(byte[])) + { + // to ensure "license" is required (not null) + if (license == null) + { + throw new ArgumentNullException("license is a required property for LicenseItem and cannot be null"); + } + this.License = license; + } + + /// + /// Base64 encoded data + /// + /// Base64 encoded data + /* + [B@37672764 + */ + [DataMember(Name = "License", IsRequired = true, EmitDefaultValue = true)] + public byte[] License { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class LicenseItem {\n"); + sb.Append(" License: ").Append(License).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs b/src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs index ab65b9c..236ed4d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs @@ -1,34 +1,37 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { /// - /// LicenseResult + /// Contains license /// - [DataContract] - public partial class LicenseResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "LicenseResult")] + public partial class LicenseResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,25 +42,29 @@ protected LicenseResult() { } /// Initializes a new instance of the class. /// /// Base64 encoded data (required). - public LicenseResult(byte[] license = default(byte[]), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.LICENSE). + public LicenseResult(byte[] license = default(byte[]), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.LICENSE) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "license" is required (not null) if (license == null) { - throw new InvalidDataException("license is a required property for LicenseResult and cannot be null"); - } - else - { - this.License = license; + throw new ArgumentNullException("license is a required property for LicenseResult and cannot be null"); } - + this.License = license; } - + /// /// Base64 encoded data /// /// Base64 encoded data - [DataMember(Name="License", EmitDefaultValue=true)] + /* + [B@37672764 + */ + [DataMember(Name = "License", IsRequired = true, EmitDefaultValue = true)] public byte[] License { get; set; } /// @@ -66,14 +73,14 @@ protected LicenseResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class LicenseResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" License: ").Append(License).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -84,46 +91,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as LicenseResult); - } - - /// - /// Returns true if LicenseResult instances are equal - /// - /// Instance of LicenseResult to be compared - /// Boolean - public bool Equals(LicenseResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.License == input.License || - (this.License != null && - this.License.Equals(input.License)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.License != null) - hashCode = hashCode * 59 + this.License.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -131,9 +105,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Light.cs b/src/Regula.DocumentReader.WebClient/Model/Light.cs index cc278a8..dfa0186 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Light.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Light.cs @@ -1,44 +1,246 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Image light index - public class Light + /// + /// Image light index + public enum Light: long { + /// + /// Enum OFF for value: 0 + /// + OFF = 0, + + /// + /// Enum OVI for value: 1 + /// + OVI = 1, + + /// + /// Enum WHITE_TOP for value: 2 + /// + WHITE_TOP = 2, + + /// + /// Enum WHITE_SIDE for value: 4 + /// + WHITE_SIDE = 4, + + /// + /// Enum WHITE_FRONT for value: 8388608 + /// + WHITE_FRONT = 8388608, + + /// + /// Enum WHITE for value: 6 + /// + WHITE = 6, + + /// + /// Enum IR_TOP for value: 8 + /// + IR_TOP = 8, + + /// + /// Enum IR_SIDE for value: 16 + /// + IR_SIDE = 16, + + /// + /// Enum IR_FRONT for value: 16777216 + /// + IR_FRONT = 16777216, + + /// + /// Enum IR for value: 24 + /// + IR = 24, + + /// + /// Enum WHITE_GRAY for value: 33554432 + /// + WHITE_GRAY = 33554432, + + /// + /// Enum UV for value: 128 + /// + UV = 128, + + /// + /// Enum OVD for value: 67108864 + /// + OVD = 67108864, + + /// + /// Enum VIDEODETECTION for value: 134217728 + /// + VIDEODETECTION = 134217728, + + /// + /// Enum IR_870_OBL for value: 268435456 + /// + IR_870_OBL = 268435456, - /** No Light */ - public const int OFF = 0; + /// + /// Enum IR_LUMINESCENCE for value: 256 + /// + IR_LUMINESCENCE = 256, - /** White */ - public const int WHITE = 6; + /// + /// Enum AXIAL_WHITE_LEFT for value: 1024 + /// + AXIAL_WHITE_LEFT = 1024, - /** Infrared */ - public const int IR = 24; + /// + /// Enum AXIAL_WHITE_RIGHT for value: 2048 + /// + AXIAL_WHITE_RIGHT = 2048, - /** Ultraviolet */ - public const int UV = 128; + /// + /// Enum AXIAL_WHITE_FRONT for value: 512 + /// + AXIAL_WHITE_FRONT = 512, + /// + /// Enum IR_720 for value: 4096 + /// + IR_720 = 4096, + + /// + /// Enum IR_940 for value: 8192 + /// + IR_940 = 8192, + + /// + /// Enum AXIAL_WHITE_FULL for value: 3072 + /// + AXIAL_WHITE_FULL = 3072, + + /// + /// Enum RAW_DATA for value: 2147483648 + /// + RAW_DATA = 2147483648, + + /// + /// Enum RAW_DATA_GRBG for value: 2415919104 + /// + RAW_DATA_GRBG = 2415919104, + + /// + /// Enum RAW_DATA_GBGR for value: 2684354560 + /// + RAW_DATA_GBGR = 2684354560, + + /// + /// Enum RAW_DATA_RGGB for value: 2952790016 + /// + RAW_DATA_RGGB = 2952790016, + + /// + /// Enum RAW_DATA_BGGR for value: 3221225472 + /// + RAW_DATA_BGGR = 3221225472, + + /// + /// Enum TRANSMITTED for value: 32 + /// + TRANSMITTED = 32, + + /// + /// Enum TRANSMITTED_IR for value: 64 + /// + TRANSMITTED_IR = 64, + + /// + /// Enum ANTI_STOKES for value: 65536 + /// + ANTI_STOKES = 65536, + + /// + /// Enum TRANSMITTED_IR940 for value: 16384 + /// + TRANSMITTED_IR940 = 16384, + + /// + /// Enum OVD_RIGHT for value: 262144 + /// + OVD_RIGHT = 262144, + + /// + /// Enum OVD_LEFT for value: 131072 + /// + OVD_LEFT = 131072, + + /// + /// Enum IR_700 for value: 32768 + /// + IR_700 = 32768, + + /// + /// Enum IR_870 for value: 16777216 + /// + IR_870 = 16777216, + + /// + /// Enum HOLO for value: 67108864 + /// + HOLO = 67108864, + + /// + /// Enum IR_BOTTOM for value: 64 + /// + IR_BOTTOM = 64, + + /// + /// Enum WHITE_BOTTOM for value: 32 + /// + WHITE_BOTTOM = 32, + + /// + /// Enum UVC for value: 524288 + /// + UVC = 524288, + + /// + /// Enum UVB for value: 1048576 + /// + UVB = 1048576, + + /// + /// Enum WHITE_OBL for value: 2097152 + /// + WHITE_OBL = 2097152, + + /// + /// Enum WHITE_SPECIAL for value: 4194304 + /// + WHITE_SPECIAL = 4194304 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/ListTransactionsByTagResponse.cs b/src/Regula.DocumentReader.WebClient/Model/ListTransactionsByTagResponse.cs index ce5be83..db209bc 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ListTransactionsByTagResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ListTransactionsByTagResponse.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ListTransactionsByTagResponse /// - [DataContract] - public partial class ListTransactionsByTagResponse : IEquatable, IValidatableObject + [DataContract(Name = "ListTransactionsByTagResponse")] + public partial class ListTransactionsByTagResponse : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,18 +42,18 @@ public partial class ListTransactionsByTagResponse : IEquatable /// Gets or Sets Items /// - [DataMember(Name="items", EmitDefaultValue=false)] - public List Items { get; set; } + [DataMember(Name = "items", EmitDefaultValue = false)] + public List? Items { get; set; } /// /// Gets or Sets Metadata /// - [DataMember(Name="metadata", EmitDefaultValue=false)] - public Dictionary Metadata { get; set; } + [DataMember(Name = "metadata", EmitDefaultValue = false)] + public Dictionary? Metadata { get; set; } /// /// Returns the string presentation of the object @@ -59,14 +61,14 @@ public partial class ListTransactionsByTagResponse : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ListTransactionsByTagResponse {\n"); sb.Append(" Items: ").Append(Items).Append("\n"); sb.Append(" Metadata: ").Append(Metadata).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,64 +78,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ListTransactionsByTagResponse); - } - - /// - /// Returns true if ListTransactionsByTagResponse instances are equal - /// - /// Instance of ListTransactionsByTagResponse to be compared - /// Boolean - public bool Equals(ListTransactionsByTagResponse input) - { - if (input == null) - return false; - - return - ( - this.Items == input.Items || - this.Items != null && - input.Items != null && - this.Items.SequenceEqual(input.Items) - ) && - ( - this.Metadata == input.Metadata || - this.Metadata != null && - input.Metadata != null && - this.Metadata.SequenceEqual(input.Metadata) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Items != null) - hashCode = hashCode * 59 + this.Items.GetHashCode(); - if (this.Metadata != null) - hashCode = hashCode * 59 + this.Metadata.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs b/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs index 850e92e..2d8894b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,37 +29,66 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ListVerifiedFields /// - [DataContract] - public partial class ListVerifiedFields : IEquatable, IValidatableObject + [DataContract(Name = "ListVerifiedFields")] + public partial class ListVerifiedFields : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// pFieldMaps. - public ListVerifiedFields(List pFieldMaps = default(List)) + [JsonConstructorAttribute] + protected ListVerifiedFields() { } + /// + /// Initializes a new instance of the class. + /// + /// Number of pFieldMaps array elements (required). + /// pFieldMaps (required). + /// pDateFormat. + public ListVerifiedFields(decimal count = default(decimal), List pFieldMaps = default(List), string pDateFormat = default(string)) { + this.Count = count; + // to ensure "pFieldMaps" is required (not null) + if (pFieldMaps == null) + { + throw new ArgumentNullException("pFieldMaps is a required property for ListVerifiedFields and cannot be null"); + } this.PFieldMaps = pFieldMaps; + this.PDateFormat = pDateFormat; } - + + /// + /// Number of pFieldMaps array elements + /// + /// Number of pFieldMaps array elements + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] + public decimal Count { get; set; } + /// /// Gets or Sets PFieldMaps /// - [DataMember(Name="pFieldMaps", EmitDefaultValue=false)] + [DataMember(Name = "pFieldMaps", IsRequired = true, EmitDefaultValue = true)] public List PFieldMaps { get; set; } + /// + /// Gets or Sets PDateFormat + /// + [DataMember(Name = "pDateFormat", EmitDefaultValue = false)] + public string? PDateFormat { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ListVerifiedFields {\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" PFieldMaps: ").Append(PFieldMaps).Append("\n"); + sb.Append(" PDateFormat: ").Append(PDateFormat).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -67,56 +98,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ListVerifiedFields); - } - - /// - /// Returns true if ListVerifiedFields instances are equal - /// - /// Instance of ListVerifiedFields to be compared - /// Boolean - public bool Equals(ListVerifiedFields input) - { - if (input == null) - return false; - - return - ( - this.PFieldMaps == input.PFieldMaps || - this.PFieldMaps != null && - input.PFieldMaps != null && - this.PFieldMaps.SequenceEqual(input.PFieldMaps) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PFieldMaps != null) - hashCode = hashCode * 59 + this.PFieldMaps.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFieldsItem.cs b/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFieldsItem.cs new file mode 100644 index 0000000..c43d41b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ListVerifiedFieldsItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ListVerifiedFieldsItem + /// + [DataContract(Name = "ListVerifiedFieldsItem")] + public partial class ListVerifiedFieldsItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ListVerifiedFieldsItem() { } + /// + /// Initializes a new instance of the class. + /// + /// listVerifiedFields (required). + public ListVerifiedFieldsItem(ListVerifiedFields listVerifiedFields = default(ListVerifiedFields)) + { + // to ensure "listVerifiedFields" is required (not null) + if (listVerifiedFields == null) + { + throw new ArgumentNullException("listVerifiedFields is a required property for ListVerifiedFieldsItem and cannot be null"); + } + this.ListVerifiedFields = listVerifiedFields; + } + + /// + /// Gets or Sets ListVerifiedFields + /// + [DataMember(Name = "ListVerifiedFields", IsRequired = true, EmitDefaultValue = true)] + public ListVerifiedFields ListVerifiedFields { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ListVerifiedFieldsItem {\n"); + sb.Append(" ListVerifiedFields: ").Append(ListVerifiedFields).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/LivenessParams.cs b/src/Regula.DocumentReader.WebClient/Model/LivenessParams.cs index 5ecdeb5..d99297f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/LivenessParams.cs +++ b/src/Regula.DocumentReader.WebClient/Model/LivenessParams.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// LivenessParams /// - [DataContract] - public partial class LivenessParams : IEquatable, IValidatableObject + [DataContract(Name = "LivenessParams")] + public partial class LivenessParams : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,7 +41,7 @@ public partial class LivenessParams : IEquatable, IValidatableO /// This parameter is used to enable Electronic device detection. /// This parameter is used to enable Black and white copy check. /// This parameter is used to enable Dynaprint check. - public LivenessParams(bool? checkOVI = default(bool?), bool? checkMLI = default(bool?), bool? checkHolo = default(bool?), bool? checkED = default(bool?), bool? checkBlackAndWhiteCopy = default(bool?), bool? checkDynaprint = default(bool?)) + public LivenessParams(bool checkOVI = default(bool), bool checkMLI = default(bool), bool checkHolo = default(bool), bool checkED = default(bool), bool checkBlackAndWhiteCopy = default(bool), bool checkDynaprint = default(bool)) { this.CheckOVI = checkOVI; this.CheckMLI = checkMLI; @@ -48,47 +50,47 @@ public partial class LivenessParams : IEquatable, IValidatableO this.CheckBlackAndWhiteCopy = checkBlackAndWhiteCopy; this.CheckDynaprint = checkDynaprint; } - + /// /// This parameter is used to enable OVI check /// /// This parameter is used to enable OVI check - [DataMember(Name="checkOVI", EmitDefaultValue=false)] + [DataMember(Name = "checkOVI", EmitDefaultValue = false)] public bool? CheckOVI { get; set; } /// /// This parameter is used to enable MLI check /// /// This parameter is used to enable MLI check - [DataMember(Name="checkMLI", EmitDefaultValue=false)] + [DataMember(Name = "checkMLI", EmitDefaultValue = false)] public bool? CheckMLI { get; set; } /// /// This parameter is used to enable Hologram detection /// /// This parameter is used to enable Hologram detection - [DataMember(Name="checkHolo", EmitDefaultValue=false)] + [DataMember(Name = "checkHolo", EmitDefaultValue = false)] public bool? CheckHolo { get; set; } /// /// This parameter is used to enable Electronic device detection /// /// This parameter is used to enable Electronic device detection - [DataMember(Name="checkED", EmitDefaultValue=false)] + [DataMember(Name = "checkED", EmitDefaultValue = false)] public bool? CheckED { get; set; } /// /// This parameter is used to enable Black and white copy check /// /// This parameter is used to enable Black and white copy check - [DataMember(Name="checkBlackAndWhiteCopy", EmitDefaultValue=false)] + [DataMember(Name = "checkBlackAndWhiteCopy", EmitDefaultValue = false)] public bool? CheckBlackAndWhiteCopy { get; set; } /// /// This parameter is used to enable Dynaprint check /// /// This parameter is used to enable Dynaprint check - [DataMember(Name="checkDynaprint", EmitDefaultValue=false)] + [DataMember(Name = "checkDynaprint", EmitDefaultValue = false)] public bool? CheckDynaprint { get; set; } /// @@ -97,7 +99,7 @@ public partial class LivenessParams : IEquatable, IValidatableO /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class LivenessParams {\n"); sb.Append(" CheckOVI: ").Append(CheckOVI).Append("\n"); sb.Append(" CheckMLI: ").Append(CheckMLI).Append("\n"); @@ -108,7 +110,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -118,90 +120,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as LivenessParams); - } - - /// - /// Returns true if LivenessParams instances are equal - /// - /// Instance of LivenessParams to be compared - /// Boolean - public bool Equals(LivenessParams input) - { - if (input == null) - return false; - - return - ( - this.CheckOVI == input.CheckOVI || - (this.CheckOVI != null && - this.CheckOVI.Equals(input.CheckOVI)) - ) && - ( - this.CheckMLI == input.CheckMLI || - (this.CheckMLI != null && - this.CheckMLI.Equals(input.CheckMLI)) - ) && - ( - this.CheckHolo == input.CheckHolo || - (this.CheckHolo != null && - this.CheckHolo.Equals(input.CheckHolo)) - ) && - ( - this.CheckED == input.CheckED || - (this.CheckED != null && - this.CheckED.Equals(input.CheckED)) - ) && - ( - this.CheckBlackAndWhiteCopy == input.CheckBlackAndWhiteCopy || - (this.CheckBlackAndWhiteCopy != null && - this.CheckBlackAndWhiteCopy.Equals(input.CheckBlackAndWhiteCopy)) - ) && - ( - this.CheckDynaprint == input.CheckDynaprint || - (this.CheckDynaprint != null && - this.CheckDynaprint.Equals(input.CheckDynaprint)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.CheckOVI != null) - hashCode = hashCode * 59 + this.CheckOVI.GetHashCode(); - if (this.CheckMLI != null) - hashCode = hashCode * 59 + this.CheckMLI.GetHashCode(); - if (this.CheckHolo != null) - hashCode = hashCode * 59 + this.CheckHolo.GetHashCode(); - if (this.CheckED != null) - hashCode = hashCode * 59 + this.CheckED.GetHashCode(); - if (this.CheckBlackAndWhiteCopy != null) - hashCode = hashCode * 59 + this.CheckBlackAndWhiteCopy.GetHashCode(); - if (this.CheckDynaprint != null) - hashCode = hashCode * 59 + this.CheckDynaprint.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/LogLevel.cs b/src/Regula.DocumentReader.WebClient/Model/LogLevel.cs index 97e4688..2574c70 100644 --- a/src/Regula.DocumentReader.WebClient/Model/LogLevel.cs +++ b/src/Regula.DocumentReader.WebClient/Model/LogLevel.cs @@ -1,46 +1,66 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class LogLevel + /// + /// Defines LogLevel + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum LogLevel { + /// + /// Enum FATAL_ERROR for value: FatalError + /// + [EnumMember(Value = "FatalError")] + FATAL_ERROR = 1, - - public const string FATAL_ERROR = "FatalError"; + /// + /// Enum ERROR for value: Error + /// + [EnumMember(Value = "Error")] + ERROR = 2, - - public const string ERROR = "Error"; + /// + /// Enum WARNING for value: Warning + /// + [EnumMember(Value = "Warning")] + WARNING = 3, - - public const string WARNING = "Warning"; - - - public const string INFO = "Info"; - - - public const string DEBUG = "Debug"; + /// + /// Enum INFO for value: Info + /// + [EnumMember(Value = "Info")] + INFO = 4, + /// + /// Enum DEBUG for value: Debug + /// + [EnumMember(Value = "Debug")] + DEBUG = 5 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZDetectorResult.cs b/src/Regula.DocumentReader.WebClient/Model/MRZDetectorResult.cs new file mode 100644 index 0000000..f2867f9 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZDetectorResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZDetectorResult + /// + [DataContract(Name = "MRZDetectorResult")] + public partial class MRZDetectorResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZDetectorResult() { } + /// + /// Initializes a new instance of the class. + /// + /// resultMRZDetector (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.MRZ_DETECTOR). + public MRZDetectorResult(ResultMRZDetector resultMRZDetector = default(ResultMRZDetector), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.MRZ_DETECTOR) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "resultMRZDetector" is required (not null) + if (resultMRZDetector == null) + { + throw new ArgumentNullException("resultMRZDetector is a required property for MRZDetectorResult and cannot be null"); + } + this.ResultMRZDetector = resultMRZDetector; + } + + /// + /// Gets or Sets ResultMRZDetector + /// + [DataMember(Name = "ResultMRZDetector", IsRequired = true, EmitDefaultValue = true)] + public ResultMRZDetector ResultMRZDetector { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZDetectorResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" ResultMRZDetector: ").Append(ResultMRZDetector).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZFormat.cs b/src/Regula.DocumentReader.WebClient/Model/MRZFormat.cs index eef6dc5..990f5db 100644 --- a/src/Regula.DocumentReader.WebClient/Model/MRZFormat.cs +++ b/src/Regula.DocumentReader.WebClient/Model/MRZFormat.cs @@ -1,49 +1,72 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class MRZFormat + /// + /// Defines MRZFormat + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum MRZFormat { + /// + /// Enum IDL for value: 1x30 + /// + [EnumMember(Value = "1x30")] + IDL = 1, - - public const string IDL = "1x30"; + /// + /// Enum ID1 for value: 3x30 + /// + [EnumMember(Value = "3x30")] + ID1 = 2, - - public const string ID1 = "3x30"; + /// + /// Enum ID2 for value: 2x36 + /// + [EnumMember(Value = "2x36")] + ID2 = 3, - - public const string ID2 = "2x36"; + /// + /// Enum ID3 for value: 2x44 + /// + [EnumMember(Value = "2x44")] + ID3 = 4, - - public const string ID3 = "2x44"; - - - public const string CAN = "1x6"; - - - public const string ID1_2_30 = "2x30"; + /// + /// Enum CAN for value: 1x6 + /// + [EnumMember(Value = "1x6")] + CAN = 5, + /// + /// Enum ID1_2_30 for value: 2x30 + /// + [EnumMember(Value = "2x30")] + ID1_2_30 = 6 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZPositionResult.cs b/src/Regula.DocumentReader.WebClient/Model/MRZPositionResult.cs new file mode 100644 index 0000000..f30ba79 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZPositionResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZPositionResult + /// + [DataContract(Name = "MRZPositionResult")] + public partial class MRZPositionResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZPositionResult() { } + /// + /// Initializes a new instance of the class. + /// + /// mrzPosition (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.MRZ_POSITION). + public MRZPositionResult(MrzPosition mrzPosition = default(MrzPosition), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.MRZ_POSITION) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "mrzPosition" is required (not null) + if (mrzPosition == null) + { + throw new ArgumentNullException("mrzPosition is a required property for MRZPositionResult and cannot be null"); + } + this.MrzPosition = mrzPosition; + } + + /// + /// Gets or Sets MrzPosition + /// + [DataMember(Name = "MrzPosition", IsRequired = true, EmitDefaultValue = true)] + public MrzPosition MrzPosition { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZPositionResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" MrzPosition: ").Append(MrzPosition).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZRowsItem.cs b/src/Regula.DocumentReader.WebClient/Model/MRZRowsItem.cs new file mode 100644 index 0000000..2cdb8e1 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZRowsItem.cs @@ -0,0 +1,111 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZRowsItem + /// + [DataContract(Name = "MRZRowsItem")] + public partial class MRZRowsItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZRowsItem() { } + /// + /// Initializes a new instance of the class. + /// + /// length (required). + /// maxLength (required). + /// symbols (required). + public MRZRowsItem(int length = default(int), int maxLength = default(int), List symbols = default(List)) + { + this.Length = length; + this.MaxLength = maxLength; + // to ensure "symbols" is required (not null) + if (symbols == null) + { + throw new ArgumentNullException("symbols is a required property for MRZRowsItem and cannot be null"); + } + this.Symbols = symbols; + } + + /// + /// Gets or Sets Length + /// + [DataMember(Name = "length", IsRequired = true, EmitDefaultValue = true)] + public int Length { get; set; } + + /// + /// Gets or Sets MaxLength + /// + [DataMember(Name = "maxLength", IsRequired = true, EmitDefaultValue = true)] + public int MaxLength { get; set; } + + /// + /// Gets or Sets Symbols + /// + [DataMember(Name = "symbols", IsRequired = true, EmitDefaultValue = true)] + public List Symbols { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZRowsItem {\n"); + sb.Append(" Length: ").Append(Length).Append("\n"); + sb.Append(" MaxLength: ").Append(MaxLength).Append("\n"); + sb.Append(" Symbols: ").Append(Symbols).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZTestQuality.cs b/src/Regula.DocumentReader.WebClient/Model/MRZTestQuality.cs new file mode 100644 index 0000000..2ade6aa --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZTestQuality.cs @@ -0,0 +1,174 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZTestQuality + /// + [DataContract(Name = "MRZTestQuality")] + public partial class MRZTestQuality : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZTestQuality() { } + /// + /// Initializes a new instance of the class. + /// + /// cHECKSUMS (required). + /// cONTRASTPRINT (required). + /// dOCFORMAT (required). + /// mRZFORMAT (required). + /// pRINTPOSITION (required). + /// sTAINMRZ (required). + /// sYMBOLSPARAM (required). + /// strCount (required). + /// strings (required). + /// tEXTUALFILLING (required). + public MRZTestQuality(int cHECKSUMS = default(int), int cONTRASTPRINT = default(int), int dOCFORMAT = default(int), int mRZFORMAT = default(int), int pRINTPOSITION = default(int), int sTAINMRZ = default(int), int sYMBOLSPARAM = default(int), int strCount = default(int), List strings = default(List), int tEXTUALFILLING = default(int)) + { + this.CHECK_SUMS = cHECKSUMS; + this.CONTRAST_PRINT = cONTRASTPRINT; + this.DOC_FORMAT = dOCFORMAT; + this.MRZ_FORMAT = mRZFORMAT; + this.PRINT_POSITION = pRINTPOSITION; + this.STAIN_MRZ = sTAINMRZ; + this.SYMBOLS_PARAM = sYMBOLSPARAM; + this.StrCount = strCount; + // to ensure "strings" is required (not null) + if (strings == null) + { + throw new ArgumentNullException("strings is a required property for MRZTestQuality and cannot be null"); + } + this.Strings = strings; + this.TEXTUAL_FILLING = tEXTUALFILLING; + } + + /// + /// Gets or Sets CHECK_SUMS + /// + [DataMember(Name = "CHECK_SUMS", IsRequired = true, EmitDefaultValue = true)] + public int CHECK_SUMS { get; set; } + + /// + /// Gets or Sets CONTRAST_PRINT + /// + [DataMember(Name = "CONTRAST_PRINT", IsRequired = true, EmitDefaultValue = true)] + public int CONTRAST_PRINT { get; set; } + + /// + /// Gets or Sets DOC_FORMAT + /// + [DataMember(Name = "DOC_FORMAT", IsRequired = true, EmitDefaultValue = true)] + public int DOC_FORMAT { get; set; } + + /// + /// Gets or Sets MRZ_FORMAT + /// + [DataMember(Name = "MRZ_FORMAT", IsRequired = true, EmitDefaultValue = true)] + public int MRZ_FORMAT { get; set; } + + /// + /// Gets or Sets PRINT_POSITION + /// + [DataMember(Name = "PRINT_POSITION", IsRequired = true, EmitDefaultValue = true)] + public int PRINT_POSITION { get; set; } + + /// + /// Gets or Sets STAIN_MRZ + /// + [DataMember(Name = "STAIN_MRZ", IsRequired = true, EmitDefaultValue = true)] + public int STAIN_MRZ { get; set; } + + /// + /// Gets or Sets SYMBOLS_PARAM + /// + [DataMember(Name = "SYMBOLS_PARAM", IsRequired = true, EmitDefaultValue = true)] + public int SYMBOLS_PARAM { get; set; } + + /// + /// Gets or Sets StrCount + /// + [DataMember(Name = "StrCount", IsRequired = true, EmitDefaultValue = true)] + public int StrCount { get; set; } + + /// + /// Gets or Sets Strings + /// + [DataMember(Name = "Strings", IsRequired = true, EmitDefaultValue = true)] + public List Strings { get; set; } + + /// + /// Gets or Sets TEXTUAL_FILLING + /// + [DataMember(Name = "TEXTUAL_FILLING", IsRequired = true, EmitDefaultValue = true)] + public int TEXTUAL_FILLING { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZTestQuality {\n"); + sb.Append(" CHECK_SUMS: ").Append(CHECK_SUMS).Append("\n"); + sb.Append(" CONTRAST_PRINT: ").Append(CONTRAST_PRINT).Append("\n"); + sb.Append(" DOC_FORMAT: ").Append(DOC_FORMAT).Append("\n"); + sb.Append(" MRZ_FORMAT: ").Append(MRZ_FORMAT).Append("\n"); + sb.Append(" PRINT_POSITION: ").Append(PRINT_POSITION).Append("\n"); + sb.Append(" STAIN_MRZ: ").Append(STAIN_MRZ).Append("\n"); + sb.Append(" SYMBOLS_PARAM: ").Append(SYMBOLS_PARAM).Append("\n"); + sb.Append(" StrCount: ").Append(StrCount).Append("\n"); + sb.Append(" Strings: ").Append(Strings).Append("\n"); + sb.Append(" TEXTUAL_FILLING: ").Append(TEXTUAL_FILLING).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityItem.cs b/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityItem.cs new file mode 100644 index 0000000..7dae218 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZTestQualityItem + /// + [DataContract(Name = "MRZTestQualityItem")] + public partial class MRZTestQualityItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZTestQualityItem() { } + /// + /// Initializes a new instance of the class. + /// + /// mRZTestQuality (required). + public MRZTestQualityItem(MRZTestQuality mRZTestQuality = default(MRZTestQuality)) + { + // to ensure "mRZTestQuality" is required (not null) + if (mRZTestQuality == null) + { + throw new ArgumentNullException("mRZTestQuality is a required property for MRZTestQualityItem and cannot be null"); + } + this.MRZTestQuality = mRZTestQuality; + } + + /// + /// Gets or Sets MRZTestQuality + /// + [DataMember(Name = "MRZTestQuality", IsRequired = true, EmitDefaultValue = true)] + public MRZTestQuality MRZTestQuality { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZTestQualityItem {\n"); + sb.Append(" MRZTestQuality: ").Append(MRZTestQuality).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityResult.cs b/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityResult.cs new file mode 100644 index 0000000..5269e7e --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MRZTestQualityResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MRZTestQualityResult + /// + [DataContract(Name = "MRZTestQualityResult")] + public partial class MRZTestQualityResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MRZTestQualityResult() { } + /// + /// Initializes a new instance of the class. + /// + /// mRZTestQuality (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.MRZ_TEST_QUALITY). + public MRZTestQualityResult(MRZTestQuality mRZTestQuality = default(MRZTestQuality), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.MRZ_TEST_QUALITY) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "mRZTestQuality" is required (not null) + if (mRZTestQuality == null) + { + throw new ArgumentNullException("mRZTestQuality is a required property for MRZTestQualityResult and cannot be null"); + } + this.MRZTestQuality = mRZTestQuality; + } + + /// + /// Gets or Sets MRZTestQuality + /// + [DataMember(Name = "MRZTestQuality", IsRequired = true, EmitDefaultValue = true)] + public MRZTestQuality MRZTestQuality { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MRZTestQualityResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" MRZTestQuality: ").Append(MRZTestQuality).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MeasureSystem.cs b/src/Regula.DocumentReader.WebClient/Model/MeasureSystem.cs index 9534ac2..c4dc0cc 100644 --- a/src/Regula.DocumentReader.WebClient/Model/MeasureSystem.cs +++ b/src/Regula.DocumentReader.WebClient/Model/MeasureSystem.cs @@ -1,37 +1,45 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class MeasureSystem + /// + /// Defines MeasureSystem + /// + public enum MeasureSystem { + /// + /// Enum METRIC for value: 0 + /// + METRIC = 0, - /** Metric system of measurement, where things are measured in meters and grams */ - public const int METRIC = 0; - - /** Imperial System of Measurement, where things are measured in feet, inches and pounds */ - public const int IMPERIAL = 1; - + /// + /// Enum IMPERIAL for value: 1 + /// + IMPERIAL = 1 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/MrzDetectModeEnum.cs b/src/Regula.DocumentReader.WebClient/Model/MrzDetectModeEnum.cs index 201fb38..75dcad1 100644 --- a/src/Regula.DocumentReader.WebClient/Model/MrzDetectModeEnum.cs +++ b/src/Regula.DocumentReader.WebClient/Model/MrzDetectModeEnum.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -28,29 +30,22 @@ namespace Regula.DocumentReader.WebClient.Model /// Make better MRZ detection on complex noisy backgrounds, like BW photocopy of some documents. /// /// Make better MRZ detection on complex noisy backgrounds, like BW photocopy of some documents. - - [JsonConverter(typeof(StringEnumConverter))] - public enum MrzDetectModeEnum { /// /// Enum eMDM_Default for value: 0 /// - [EnumMember(Value = "0")] - eMDM_Default = 1, + eMDM_Default = 0, /// /// Enum eMDM_ResizeBinarizeWindow for value: 1 /// - [EnumMember(Value = "1")] - eMDM_ResizeBinarizeWindow = 2, + eMDM_ResizeBinarizeWindow = 1, /// /// Enum eMDM_BlurBeforeBinarization for value: 2 /// - [EnumMember(Value = "2")] - eMDM_BlurBeforeBinarization = 3 - + eMDM_BlurBeforeBinarization = 2 } } diff --git a/src/Regula.DocumentReader.WebClient/Model/MrzPosition.cs b/src/Regula.DocumentReader.WebClient/Model/MrzPosition.cs new file mode 100644 index 0000000..0bf8b87 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MrzPosition.cs @@ -0,0 +1,242 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MrzPosition + /// + [DataContract(Name = "MrzPosition")] + public partial class MrzPosition : IValidatableObject + { + + /// + /// Gets or Sets DocFormat + /// + [DataMember(Name = "docFormat", IsRequired = true, EmitDefaultValue = true)] + public DocumentFormat DocFormat { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MrzPosition() { } + /// + /// Initializes a new instance of the class. + /// + /// docFormat (required). + /// Document rotation angle (required). + /// Document width (required). + /// Document height (required). + /// center (required). + /// leftBottom (required). + /// leftTop (required). + /// rightBottom (required). + /// rightTop (required). + /// dpi (required). + /// inverse. + /// objArea. + /// objIntAngleDev. + /// perspectiveTr. + /// resultStatus. + public MrzPosition(DocumentFormat docFormat = default(DocumentFormat), decimal angle = default(decimal), int width = default(int), int height = default(int), Point center = default(Point), Point leftBottom = default(Point), Point leftTop = default(Point), Point rightBottom = default(Point), Point rightTop = default(Point), int dpi = default(int), int inverse = default(int), int objArea = default(int), int objIntAngleDev = default(int), int perspectiveTr = default(int), int resultStatus = default(int)) + { + this.DocFormat = docFormat; + this.Angle = angle; + this.Width = width; + this.Height = height; + // to ensure "center" is required (not null) + if (center == null) + { + throw new ArgumentNullException("center is a required property for MrzPosition and cannot be null"); + } + this.Center = center; + // to ensure "leftBottom" is required (not null) + if (leftBottom == null) + { + throw new ArgumentNullException("leftBottom is a required property for MrzPosition and cannot be null"); + } + this.LeftBottom = leftBottom; + // to ensure "leftTop" is required (not null) + if (leftTop == null) + { + throw new ArgumentNullException("leftTop is a required property for MrzPosition and cannot be null"); + } + this.LeftTop = leftTop; + // to ensure "rightBottom" is required (not null) + if (rightBottom == null) + { + throw new ArgumentNullException("rightBottom is a required property for MrzPosition and cannot be null"); + } + this.RightBottom = rightBottom; + // to ensure "rightTop" is required (not null) + if (rightTop == null) + { + throw new ArgumentNullException("rightTop is a required property for MrzPosition and cannot be null"); + } + this.RightTop = rightTop; + this.Dpi = dpi; + this.Inverse = inverse; + this.ObjArea = objArea; + this.ObjIntAngleDev = objIntAngleDev; + this.PerspectiveTr = perspectiveTr; + this.ResultStatus = resultStatus; + } + + /// + /// Document rotation angle + /// + /// Document rotation angle + [DataMember(Name = "Angle", IsRequired = true, EmitDefaultValue = true)] + public decimal Angle { get; set; } + + /// + /// Document width + /// + /// Document width + [DataMember(Name = "Width", IsRequired = true, EmitDefaultValue = true)] + public int Width { get; set; } + + /// + /// Document height + /// + /// Document height + [DataMember(Name = "Height", IsRequired = true, EmitDefaultValue = true)] + public int Height { get; set; } + + /// + /// Gets or Sets Center + /// + [DataMember(Name = "Center", IsRequired = true, EmitDefaultValue = true)] + public Point Center { get; set; } + + /// + /// Gets or Sets LeftBottom + /// + [DataMember(Name = "LeftBottom", IsRequired = true, EmitDefaultValue = true)] + public Point LeftBottom { get; set; } + + /// + /// Gets or Sets LeftTop + /// + [DataMember(Name = "LeftTop", IsRequired = true, EmitDefaultValue = true)] + public Point LeftTop { get; set; } + + /// + /// Gets or Sets RightBottom + /// + [DataMember(Name = "RightBottom", IsRequired = true, EmitDefaultValue = true)] + public Point RightBottom { get; set; } + + /// + /// Gets or Sets RightTop + /// + [DataMember(Name = "RightTop", IsRequired = true, EmitDefaultValue = true)] + public Point RightTop { get; set; } + + /// + /// Gets or Sets Dpi + /// + [DataMember(Name = "Dpi", IsRequired = true, EmitDefaultValue = true)] + public int Dpi { get; set; } + + /// + /// Gets or Sets Inverse + /// + [DataMember(Name = "Inverse", EmitDefaultValue = false)] + public int? Inverse { get; set; } + + /// + /// Gets or Sets ObjArea + /// + [DataMember(Name = "ObjArea", EmitDefaultValue = false)] + public int? ObjArea { get; set; } + + /// + /// Gets or Sets ObjIntAngleDev + /// + [DataMember(Name = "ObjIntAngleDev", EmitDefaultValue = false)] + public int? ObjIntAngleDev { get; set; } + + /// + /// Gets or Sets PerspectiveTr + /// + [DataMember(Name = "PerspectiveTr", EmitDefaultValue = false)] + public int? PerspectiveTr { get; set; } + + /// + /// Gets or Sets ResultStatus + /// + [DataMember(Name = "ResultStatus", EmitDefaultValue = false)] + public int? ResultStatus { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MrzPosition {\n"); + sb.Append(" DocFormat: ").Append(DocFormat).Append("\n"); + sb.Append(" Angle: ").Append(Angle).Append("\n"); + sb.Append(" Width: ").Append(Width).Append("\n"); + sb.Append(" Height: ").Append(Height).Append("\n"); + sb.Append(" Center: ").Append(Center).Append("\n"); + sb.Append(" LeftBottom: ").Append(LeftBottom).Append("\n"); + sb.Append(" LeftTop: ").Append(LeftTop).Append("\n"); + sb.Append(" RightBottom: ").Append(RightBottom).Append("\n"); + sb.Append(" RightTop: ").Append(RightTop).Append("\n"); + sb.Append(" Dpi: ").Append(Dpi).Append("\n"); + sb.Append(" Inverse: ").Append(Inverse).Append("\n"); + sb.Append(" ObjArea: ").Append(ObjArea).Append("\n"); + sb.Append(" ObjIntAngleDev: ").Append(ObjIntAngleDev).Append("\n"); + sb.Append(" PerspectiveTr: ").Append(PerspectiveTr).Append("\n"); + sb.Append(" ResultStatus: ").Append(ResultStatus).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/MrzPositionItem.cs b/src/Regula.DocumentReader.WebClient/Model/MrzPositionItem.cs new file mode 100644 index 0000000..50bd25e --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/MrzPositionItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// MrzPositionItem + /// + [DataContract(Name = "MrzPositionItem")] + public partial class MrzPositionItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MrzPositionItem() { } + /// + /// Initializes a new instance of the class. + /// + /// mrzPosition (required). + public MrzPositionItem(MrzPosition mrzPosition = default(MrzPosition)) + { + // to ensure "mrzPosition" is required (not null) + if (mrzPosition == null) + { + throw new ArgumentNullException("mrzPosition is a required property for MrzPositionItem and cannot be null"); + } + this.MrzPosition = mrzPosition; + } + + /// + /// Gets or Sets MrzPosition + /// + [DataMember(Name = "MrzPosition", IsRequired = true, EmitDefaultValue = true)] + public MrzPosition MrzPosition { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MrzPositionItem {\n"); + sb.Append(" MrzPosition: ").Append(MrzPosition).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextItem.cs b/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextItem.cs new file mode 100644 index 0000000..50eb7b0 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextItem.cs @@ -0,0 +1,198 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// OCRSecurityTextItem + /// + [DataContract(Name = "OCRSecurityTextItem")] + public partial class OCRSecurityTextItem : IValidatableObject + { + + /// + /// Gets or Sets CriticalFlag + /// + [DataMember(Name = "CriticalFlag", IsRequired = true, EmitDefaultValue = true)] + public Critical CriticalFlag { get; set; } + + /// + /// Gets or Sets LightType + /// + [DataMember(Name = "LightType", IsRequired = true, EmitDefaultValue = true)] + public Light LightType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected OCRSecurityTextItem() { } + /// + /// Initializes a new instance of the class. + /// + /// criticalFlag (required). + /// lightType (required). + /// fieldRect (required). + /// etalonResultType (required). + /// etalonFieldType (required). + /// etalonLightType (required). + /// etalonFieldRect (required). + /// securityTextResultOCR (required). + /// etalonResultOCR (required). + /// reserved1. + /// reserved2. + public OCRSecurityTextItem(Critical criticalFlag = default(Critical), Light lightType = default(Light), RectangleCoordinates fieldRect = default(RectangleCoordinates), int etalonResultType = default(int), int etalonFieldType = default(int), int etalonLightType = default(int), RectangleCoordinates etalonFieldRect = default(RectangleCoordinates), string securityTextResultOCR = default(string), string etalonResultOCR = default(string), int reserved1 = default(int), int reserved2 = default(int)) + { + this.CriticalFlag = criticalFlag; + this.LightType = lightType; + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) + { + throw new ArgumentNullException("fieldRect is a required property for OCRSecurityTextItem and cannot be null"); + } + this.FieldRect = fieldRect; + this.EtalonResultType = etalonResultType; + this.EtalonFieldType = etalonFieldType; + this.EtalonLightType = etalonLightType; + // to ensure "etalonFieldRect" is required (not null) + if (etalonFieldRect == null) + { + throw new ArgumentNullException("etalonFieldRect is a required property for OCRSecurityTextItem and cannot be null"); + } + this.EtalonFieldRect = etalonFieldRect; + // to ensure "securityTextResultOCR" is required (not null) + if (securityTextResultOCR == null) + { + throw new ArgumentNullException("securityTextResultOCR is a required property for OCRSecurityTextItem and cannot be null"); + } + this.SecurityTextResultOCR = securityTextResultOCR; + // to ensure "etalonResultOCR" is required (not null) + if (etalonResultOCR == null) + { + throw new ArgumentNullException("etalonResultOCR is a required property for OCRSecurityTextItem and cannot be null"); + } + this.EtalonResultOCR = etalonResultOCR; + this.Reserved1 = reserved1; + this.Reserved2 = reserved2; + } + + /// + /// Gets or Sets FieldRect + /// + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates FieldRect { get; set; } + + /// + /// Gets or Sets EtalonResultType + /// + [DataMember(Name = "EtalonResultType", IsRequired = true, EmitDefaultValue = true)] + public int EtalonResultType { get; set; } + + /// + /// Gets or Sets EtalonFieldType + /// + [DataMember(Name = "EtalonFieldType", IsRequired = true, EmitDefaultValue = true)] + public int EtalonFieldType { get; set; } + + /// + /// Gets or Sets EtalonLightType + /// + [DataMember(Name = "EtalonLightType", IsRequired = true, EmitDefaultValue = true)] + public int EtalonLightType { get; set; } + + /// + /// Gets or Sets EtalonFieldRect + /// + [DataMember(Name = "EtalonFieldRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates EtalonFieldRect { get; set; } + + /// + /// Gets or Sets SecurityTextResultOCR + /// + [DataMember(Name = "SecurityTextResultOCR", IsRequired = true, EmitDefaultValue = true)] + public string SecurityTextResultOCR { get; set; } + + /// + /// Gets or Sets EtalonResultOCR + /// + [DataMember(Name = "EtalonResultOCR", IsRequired = true, EmitDefaultValue = true)] + public string EtalonResultOCR { get; set; } + + /// + /// Gets or Sets Reserved1 + /// + [DataMember(Name = "Reserved1", EmitDefaultValue = false)] + public int? Reserved1 { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class OCRSecurityTextItem {\n"); + sb.Append(" CriticalFlag: ").Append(CriticalFlag).Append("\n"); + sb.Append(" LightType: ").Append(LightType).Append("\n"); + sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); + sb.Append(" EtalonResultType: ").Append(EtalonResultType).Append("\n"); + sb.Append(" EtalonFieldType: ").Append(EtalonFieldType).Append("\n"); + sb.Append(" EtalonLightType: ").Append(EtalonLightType).Append("\n"); + sb.Append(" EtalonFieldRect: ").Append(EtalonFieldRect).Append("\n"); + sb.Append(" SecurityTextResultOCR: ").Append(SecurityTextResultOCR).Append("\n"); + sb.Append(" EtalonResultOCR: ").Append(EtalonResultOCR).Append("\n"); + sb.Append(" Reserved1: ").Append(Reserved1).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs b/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs index 1119507..196f7a4 100644 --- a/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +30,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// OCRSecurityTextResult /// - [DataContract] - public partial class OCRSecurityTextResult : AuthenticityCheckResultItem, IEquatable, IValidatableObject + [DataContract(Name = "OCRSecurityTextResult")] + public partial class OCRSecurityTextResult : AuthenticityCheckResultItem, IValidatableObject { + + /// + /// Gets or Sets CriticalFlag + /// + [DataMember(Name = "CriticalFlag", IsRequired = true, EmitDefaultValue = true)] + public Critical CriticalFlag { get; set; } + + /// + /// Gets or Sets LightType + /// + [DataMember(Name = "LightType", IsRequired = true, EmitDefaultValue = true)] + public Light LightType { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,89 +53,109 @@ protected OCRSecurityTextResult() { } /// /// Initializes a new instance of the class. /// - /// criticalFlag. - /// lightType. - /// fieldRect. - /// etalonResultType. - /// etalonFieldType. - /// etalonLightType. - /// securityTextResultOCR. - /// etalonResultOCR. + /// criticalFlag (required). + /// lightType (required). + /// fieldRect (required). + /// etalonResultType (required). + /// etalonFieldType (required). + /// etalonLightType (required). + /// etalonFieldRect (required). + /// securityTextResultOCR (required). + /// etalonResultOCR (required). /// reserved1. /// reserved2. - public OCRSecurityTextResult(int criticalFlag = default(int), int lightType = default(int), RectangleCoordinates fieldRect = default(RectangleCoordinates), int etalonResultType = default(int), int etalonFieldType = default(int), int etalonLightType = default(int), string securityTextResultOCR = default(string), string etalonResultOCR = default(string), int reserved1 = default(int), int reserved2 = default(int), int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) + /// type (required) (default to AuthenticityResultType.OCR_SECURITY_TEXT). + /// elementResult. + /// elementDiagnose. + /// percentValue. + public OCRSecurityTextResult(Critical criticalFlag = default(Critical), Light lightType = default(Light), RectangleCoordinates fieldRect = default(RectangleCoordinates), int etalonResultType = default(int), int etalonFieldType = default(int), int etalonLightType = default(int), RectangleCoordinates etalonFieldRect = default(RectangleCoordinates), string securityTextResultOCR = default(string), string etalonResultOCR = default(string), int reserved1 = default(int), int reserved2 = default(int), AuthenticityResultType type = AuthenticityResultType.OCR_SECURITY_TEXT, CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) { this.CriticalFlag = criticalFlag; this.LightType = lightType; + // to ensure "fieldRect" is required (not null) + if (fieldRect == null) + { + throw new ArgumentNullException("fieldRect is a required property for OCRSecurityTextResult and cannot be null"); + } this.FieldRect = fieldRect; this.EtalonResultType = etalonResultType; this.EtalonFieldType = etalonFieldType; this.EtalonLightType = etalonLightType; + // to ensure "etalonFieldRect" is required (not null) + if (etalonFieldRect == null) + { + throw new ArgumentNullException("etalonFieldRect is a required property for OCRSecurityTextResult and cannot be null"); + } + this.EtalonFieldRect = etalonFieldRect; + // to ensure "securityTextResultOCR" is required (not null) + if (securityTextResultOCR == null) + { + throw new ArgumentNullException("securityTextResultOCR is a required property for OCRSecurityTextResult and cannot be null"); + } this.SecurityTextResultOCR = securityTextResultOCR; + // to ensure "etalonResultOCR" is required (not null) + if (etalonResultOCR == null) + { + throw new ArgumentNullException("etalonResultOCR is a required property for OCRSecurityTextResult and cannot be null"); + } this.EtalonResultOCR = etalonResultOCR; this.Reserved1 = reserved1; this.Reserved2 = reserved2; } - - /// - /// Gets or Sets CriticalFlag - /// - [DataMember(Name="CriticalFlag", EmitDefaultValue=false)] - public int CriticalFlag { get; set; } - - /// - /// Gets or Sets LightType - /// - [DataMember(Name="LightType", EmitDefaultValue=false)] - public int LightType { get; set; } /// /// Gets or Sets FieldRect /// - [DataMember(Name="FieldRect", EmitDefaultValue=false)] + [DataMember(Name = "FieldRect", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates FieldRect { get; set; } /// /// Gets or Sets EtalonResultType /// - [DataMember(Name="EtalonResultType", EmitDefaultValue=false)] + [DataMember(Name = "EtalonResultType", IsRequired = true, EmitDefaultValue = true)] public int EtalonResultType { get; set; } /// /// Gets or Sets EtalonFieldType /// - [DataMember(Name="EtalonFieldType", EmitDefaultValue=false)] + [DataMember(Name = "EtalonFieldType", IsRequired = true, EmitDefaultValue = true)] public int EtalonFieldType { get; set; } /// /// Gets or Sets EtalonLightType /// - [DataMember(Name="EtalonLightType", EmitDefaultValue=false)] + [DataMember(Name = "EtalonLightType", IsRequired = true, EmitDefaultValue = true)] public int EtalonLightType { get; set; } + /// + /// Gets or Sets EtalonFieldRect + /// + [DataMember(Name = "EtalonFieldRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates EtalonFieldRect { get; set; } + /// /// Gets or Sets SecurityTextResultOCR /// - [DataMember(Name="SecurityTextResultOCR", EmitDefaultValue=false)] + [DataMember(Name = "SecurityTextResultOCR", IsRequired = true, EmitDefaultValue = true)] public string SecurityTextResultOCR { get; set; } /// /// Gets or Sets EtalonResultOCR /// - [DataMember(Name="EtalonResultOCR", EmitDefaultValue=false)] + [DataMember(Name = "EtalonResultOCR", IsRequired = true, EmitDefaultValue = true)] public string EtalonResultOCR { get; set; } /// /// Gets or Sets Reserved1 /// - [DataMember(Name="Reserved1", EmitDefaultValue=false)] - public int Reserved1 { get; set; } + [DataMember(Name = "Reserved1", EmitDefaultValue = false)] + public int? Reserved1 { get; set; } /// /// Gets or Sets Reserved2 /// - [DataMember(Name="Reserved2", EmitDefaultValue=false)] - public int Reserved2 { get; set; } + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } /// /// Returns the string presentation of the object @@ -128,7 +163,7 @@ protected OCRSecurityTextResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class OCRSecurityTextResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" CriticalFlag: ").Append(CriticalFlag).Append("\n"); @@ -137,6 +172,7 @@ public override string ToString() sb.Append(" EtalonResultType: ").Append(EtalonResultType).Append("\n"); sb.Append(" EtalonFieldType: ").Append(EtalonFieldType).Append("\n"); sb.Append(" EtalonLightType: ").Append(EtalonLightType).Append("\n"); + sb.Append(" EtalonFieldRect: ").Append(EtalonFieldRect).Append("\n"); sb.Append(" SecurityTextResultOCR: ").Append(SecurityTextResultOCR).Append("\n"); sb.Append(" EtalonResultOCR: ").Append(EtalonResultOCR).Append("\n"); sb.Append(" Reserved1: ").Append(Reserved1).Append("\n"); @@ -144,7 +180,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -155,109 +191,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OCRSecurityTextResult); - } - - /// - /// Returns true if OCRSecurityTextResult instances are equal - /// - /// Instance of OCRSecurityTextResult to be compared - /// Boolean - public bool Equals(OCRSecurityTextResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.CriticalFlag == input.CriticalFlag || - (this.CriticalFlag != null && - this.CriticalFlag.Equals(input.CriticalFlag)) - ) && base.Equals(input) && - ( - this.LightType == input.LightType || - (this.LightType != null && - this.LightType.Equals(input.LightType)) - ) && base.Equals(input) && - ( - this.FieldRect == input.FieldRect || - (this.FieldRect != null && - this.FieldRect.Equals(input.FieldRect)) - ) && base.Equals(input) && - ( - this.EtalonResultType == input.EtalonResultType || - (this.EtalonResultType != null && - this.EtalonResultType.Equals(input.EtalonResultType)) - ) && base.Equals(input) && - ( - this.EtalonFieldType == input.EtalonFieldType || - (this.EtalonFieldType != null && - this.EtalonFieldType.Equals(input.EtalonFieldType)) - ) && base.Equals(input) && - ( - this.EtalonLightType == input.EtalonLightType || - (this.EtalonLightType != null && - this.EtalonLightType.Equals(input.EtalonLightType)) - ) && base.Equals(input) && - ( - this.SecurityTextResultOCR == input.SecurityTextResultOCR || - (this.SecurityTextResultOCR != null && - this.SecurityTextResultOCR.Equals(input.SecurityTextResultOCR)) - ) && base.Equals(input) && - ( - this.EtalonResultOCR == input.EtalonResultOCR || - (this.EtalonResultOCR != null && - this.EtalonResultOCR.Equals(input.EtalonResultOCR)) - ) && base.Equals(input) && - ( - this.Reserved1 == input.Reserved1 || - (this.Reserved1 != null && - this.Reserved1.Equals(input.Reserved1)) - ) && base.Equals(input) && - ( - this.Reserved2 == input.Reserved2 || - (this.Reserved2 != null && - this.Reserved2.Equals(input.Reserved2)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.CriticalFlag != null) - hashCode = hashCode * 59 + this.CriticalFlag.GetHashCode(); - if (this.LightType != null) - hashCode = hashCode * 59 + this.LightType.GetHashCode(); - if (this.FieldRect != null) - hashCode = hashCode * 59 + this.FieldRect.GetHashCode(); - if (this.EtalonResultType != null) - hashCode = hashCode * 59 + this.EtalonResultType.GetHashCode(); - if (this.EtalonFieldType != null) - hashCode = hashCode * 59 + this.EtalonFieldType.GetHashCode(); - if (this.EtalonLightType != null) - hashCode = hashCode * 59 + this.EtalonLightType.GetHashCode(); - if (this.SecurityTextResultOCR != null) - hashCode = hashCode * 59 + this.SecurityTextResultOCR.GetHashCode(); - if (this.EtalonResultOCR != null) - hashCode = hashCode * 59 + this.EtalonResultOCR.GetHashCode(); - if (this.Reserved1 != null) - hashCode = hashCode * 59 + this.Reserved1.GetHashCode(); - if (this.Reserved2 != null) - hashCode = hashCode * 59 + this.Reserved2.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -265,9 +205,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs b/src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs index bb5232d..3819e35 100644 --- a/src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs +++ b/src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,116 +29,163 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains information about one document type candidate /// - [DataContract] - public partial class OneCandidate : IEquatable, IValidatableObject + [DataContract(Name = "OneCandidate")] + public partial class OneCandidate : IValidatableObject { + + /// + /// Gets or Sets RFIDPresence + /// + [DataMember(Name = "RFID_Presence", IsRequired = true, EmitDefaultValue = true)] + public RfidLocation RFIDPresence { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected OneCandidate() { } /// /// Initializes a new instance of the class. /// - /// Document name. - /// Unique document type template identifier (Regula's internal numeric code). - /// A measure of the likelihood of correct recognition in the analysis of this type of document. - /// rFIDPresence. - /// fDSIDList. - /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document. - /// Set of authentication options provided for this type of document (combination of Authenticity enum). - /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme. - /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity. - public OneCandidate(string documentName = default(string), int iD = default(int), decimal p = default(decimal), int rFIDPresence = default(int), FDSIDList fDSIDList = default(FDSIDList), int necessaryLights = default(int), int checkAuthenticity = default(int), int uVExp = default(int), int authenticityNecessaryLights = default(int)) + /// Document name (required). + /// Unique document type template identifier (Regula's internal numeric code) (required). + /// A measure of the likelihood of correct recognition in the analysis of this type of document (required). + /// true if the document of the given type is rotated by 180 degrees (required). + /// rFIDPresence (required). + /// fDSIDList (required). + /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document (required). + /// Set of authentication options provided for this type of document (combination of Authenticity enum) (required). + /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme (required). + /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity (required). + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme (required). + /// rotationAngle. + public OneCandidate(string documentName = default(string), int iD = default(int), decimal p = default(decimal), int rotated180 = default(int), RfidLocation rFIDPresence = default(RfidLocation), FDSIDList fDSIDList = default(FDSIDList), int necessaryLights = default(int), int checkAuthenticity = default(int), int uVExp = default(int), int authenticityNecessaryLights = default(int), decimal oVIExp = default(decimal), int rotationAngle = default(int)) { + // to ensure "documentName" is required (not null) + if (documentName == null) + { + throw new ArgumentNullException("documentName is a required property for OneCandidate and cannot be null"); + } this.DocumentName = documentName; this.ID = iD; this.P = p; + this.Rotated180 = rotated180; this.RFIDPresence = rFIDPresence; + // to ensure "fDSIDList" is required (not null) + if (fDSIDList == null) + { + throw new ArgumentNullException("fDSIDList is a required property for OneCandidate and cannot be null"); + } this.FDSIDList = fDSIDList; this.NecessaryLights = necessaryLights; this.CheckAuthenticity = checkAuthenticity; this.UVExp = uVExp; this.AuthenticityNecessaryLights = authenticityNecessaryLights; + this.OVIExp = oVIExp; + this.RotationAngle = rotationAngle; } - + /// /// Document name /// /// Document name - [DataMember(Name="DocumentName", EmitDefaultValue=false)] + [DataMember(Name = "DocumentName", IsRequired = true, EmitDefaultValue = true)] public string DocumentName { get; set; } /// /// Unique document type template identifier (Regula's internal numeric code) /// /// Unique document type template identifier (Regula's internal numeric code) - [DataMember(Name="ID", EmitDefaultValue=false)] + [DataMember(Name = "ID", IsRequired = true, EmitDefaultValue = true)] public int ID { get; set; } /// /// A measure of the likelihood of correct recognition in the analysis of this type of document /// /// A measure of the likelihood of correct recognition in the analysis of this type of document - [DataMember(Name="P", EmitDefaultValue=false)] + /* + 0.9913095831871032 + */ + [DataMember(Name = "P", IsRequired = true, EmitDefaultValue = true)] public decimal P { get; set; } /// - /// Gets or Sets RFIDPresence + /// true if the document of the given type is rotated by 180 degrees /// - [DataMember(Name="RFID_Presence", EmitDefaultValue=false)] - public int RFIDPresence { get; set; } + /// true if the document of the given type is rotated by 180 degrees + [DataMember(Name = "Rotated180", IsRequired = true, EmitDefaultValue = true)] + public int Rotated180 { get; set; } /// /// Gets or Sets FDSIDList /// - [DataMember(Name="FDSIDList", EmitDefaultValue=false)] + [DataMember(Name = "FDSIDList", IsRequired = true, EmitDefaultValue = true)] public FDSIDList FDSIDList { get; set; } /// /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document /// /// Combination of lighting scheme identifiers (Light enum) required to conduct OCR for this type of document - [DataMember(Name="NecessaryLights", EmitDefaultValue=false)] + [DataMember(Name = "NecessaryLights", IsRequired = true, EmitDefaultValue = true)] public int NecessaryLights { get; set; } /// /// Set of authentication options provided for this type of document (combination of Authenticity enum) /// /// Set of authentication options provided for this type of document (combination of Authenticity enum) - [DataMember(Name="CheckAuthenticity", EmitDefaultValue=false)] + [DataMember(Name = "CheckAuthenticity", IsRequired = true, EmitDefaultValue = true)] public int CheckAuthenticity { get; set; } /// /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme /// /// The required exposure value of the camera when receiving images of a document of this type for a UV lighting scheme - [DataMember(Name="UVExp", EmitDefaultValue=false)] + [DataMember(Name = "UVExp", IsRequired = true, EmitDefaultValue = true)] public int UVExp { get; set; } /// /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity /// /// Combination of lighting scheme identifiers (combination of Light enum) needed to perform all authenticity checks specified in CheckAuthenticity - [DataMember(Name="AuthenticityNecessaryLights", EmitDefaultValue=false)] + [DataMember(Name = "AuthenticityNecessaryLights", IsRequired = true, EmitDefaultValue = true)] public int AuthenticityNecessaryLights { get; set; } + /// + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme + /// + /// Camera exposure value necessary when obtaining document images of the given type for AXIAL lighting scheme + [DataMember(Name = "OVIExp", IsRequired = true, EmitDefaultValue = true)] + public decimal OVIExp { get; set; } + + /// + /// Gets or Sets RotationAngle + /// + [DataMember(Name = "RotationAngle", EmitDefaultValue = false)] + public int? RotationAngle { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class OneCandidate {\n"); sb.Append(" DocumentName: ").Append(DocumentName).Append("\n"); sb.Append(" ID: ").Append(ID).Append("\n"); sb.Append(" P: ").Append(P).Append("\n"); + sb.Append(" Rotated180: ").Append(Rotated180).Append("\n"); sb.Append(" RFIDPresence: ").Append(RFIDPresence).Append("\n"); sb.Append(" FDSIDList: ").Append(FDSIDList).Append("\n"); sb.Append(" NecessaryLights: ").Append(NecessaryLights).Append("\n"); sb.Append(" CheckAuthenticity: ").Append(CheckAuthenticity).Append("\n"); sb.Append(" UVExp: ").Append(UVExp).Append("\n"); sb.Append(" AuthenticityNecessaryLights: ").Append(AuthenticityNecessaryLights).Append("\n"); + sb.Append(" OVIExp: ").Append(OVIExp).Append("\n"); + sb.Append(" RotationAngle: ").Append(RotationAngle).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -146,124 +195,23 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OneCandidate); - } - - /// - /// Returns true if OneCandidate instances are equal - /// - /// Instance of OneCandidate to be compared - /// Boolean - public bool Equals(OneCandidate input) - { - if (input == null) - return false; - - return - ( - this.DocumentName == input.DocumentName || - (this.DocumentName != null && - this.DocumentName.Equals(input.DocumentName)) - ) && - ( - this.ID == input.ID || - (this.ID != null && - this.ID.Equals(input.ID)) - ) && - ( - this.P == input.P || - (this.P != null && - this.P.Equals(input.P)) - ) && - ( - this.RFIDPresence == input.RFIDPresence || - (this.RFIDPresence != null && - this.RFIDPresence.Equals(input.RFIDPresence)) - ) && - ( - this.FDSIDList == input.FDSIDList || - (this.FDSIDList != null && - this.FDSIDList.Equals(input.FDSIDList)) - ) && - ( - this.NecessaryLights == input.NecessaryLights || - (this.NecessaryLights != null && - this.NecessaryLights.Equals(input.NecessaryLights)) - ) && - ( - this.CheckAuthenticity == input.CheckAuthenticity || - (this.CheckAuthenticity != null && - this.CheckAuthenticity.Equals(input.CheckAuthenticity)) - ) && - ( - this.UVExp == input.UVExp || - (this.UVExp != null && - this.UVExp.Equals(input.UVExp)) - ) && - ( - this.AuthenticityNecessaryLights == input.AuthenticityNecessaryLights || - (this.AuthenticityNecessaryLights != null && - this.AuthenticityNecessaryLights.Equals(input.AuthenticityNecessaryLights)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.DocumentName != null) - hashCode = hashCode * 59 + this.DocumentName.GetHashCode(); - if (this.ID != null) - hashCode = hashCode * 59 + this.ID.GetHashCode(); - if (this.P != null) - hashCode = hashCode * 59 + this.P.GetHashCode(); - if (this.RFIDPresence != null) - hashCode = hashCode * 59 + this.RFIDPresence.GetHashCode(); - if (this.FDSIDList != null) - hashCode = hashCode * 59 + this.FDSIDList.GetHashCode(); - if (this.NecessaryLights != null) - hashCode = hashCode * 59 + this.NecessaryLights.GetHashCode(); - if (this.CheckAuthenticity != null) - hashCode = hashCode * 59 + this.CheckAuthenticity.GetHashCode(); - if (this.UVExp != null) - hashCode = hashCode * 59 + this.UVExp.GetHashCode(); - if (this.AuthenticityNecessaryLights != null) - hashCode = hashCode * 59 + this.AuthenticityNecessaryLights.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - - // P (decimal) maximum - if(this.P > (decimal)1) + if (this.P > (decimal)1) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for P, must be a value less than or equal to 1.", new [] { "P" }); + yield return new ValidationResult("Invalid value for P, must be a value less than or equal to 1.", new [] { "P" }); } // P (decimal) minimum - if(this.P < (decimal)0) + if (this.P < (decimal)0) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for P, must be a value greater than or equal to 0.", new [] { "P" }); + yield return new ValidationResult("Invalid value for P, must be a value greater than or equal to 0.", new [] { "P" }); } yield break; diff --git a/src/Regula.DocumentReader.WebClient/Model/OneCandidateItem.cs b/src/Regula.DocumentReader.WebClient/Model/OneCandidateItem.cs new file mode 100644 index 0000000..87bd49e --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/OneCandidateItem.cs @@ -0,0 +1,108 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// OneCandidateItem + /// + [DataContract(Name = "OneCandidateItem")] + public partial class OneCandidateItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected OneCandidateItem() { } + /// + /// Initializes a new instance of the class. + /// + /// oneCandidate (required). + public OneCandidateItem(OneCandidate oneCandidate = default(OneCandidate)) + { + // to ensure "oneCandidate" is required (not null) + if (oneCandidate == null) + { + throw new ArgumentNullException("oneCandidate is a required property for OneCandidateItem and cannot be null"); + } + this.OneCandidate = oneCandidate; + } + + /// + /// Gets or Sets OneCandidate + /// + [DataMember(Name = "OneCandidate", IsRequired = true, EmitDefaultValue = true)] + public OneCandidate OneCandidate { get; set; } + + /// + /// Gets or Sets XMLBuffer + /// + [DataMember(Name = "XML_buffer", EmitDefaultValue = false)] + public string? XMLBuffer { get; private set; } + + /// + /// Returns false as XMLBuffer should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeXMLBuffer() + { + return false; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class OneCandidateItem {\n"); + sb.Append(" OneCandidate: ").Append(OneCandidate).Append("\n"); + sb.Append(" XMLBuffer: ").Append(XMLBuffer).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/OriginalGraphicsResult.cs b/src/Regula.DocumentReader.WebClient/Model/OriginalGraphicsResult.cs deleted file mode 100644 index bf0edf6..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/OriginalGraphicsResult.cs +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// OriginalGraphicsResult - /// - [DataContract] - public partial class OriginalGraphicsResult : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// Count of array fields. - /// pArrayFields. - public OriginalGraphicsResult(int nFields = default(int), List pArrayFields = default(List)) - { - this.NFields = nFields; - this.PArrayFields = pArrayFields; - } - - /// - /// Count of array fields - /// - /// Count of array fields - [DataMember(Name="nFields", EmitDefaultValue=false)] - public int NFields { get; set; } - - /// - /// Gets or Sets PArrayFields - /// - [DataMember(Name="pArrayFields", EmitDefaultValue=false)] - public List PArrayFields { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class OriginalGraphicsResult {\n"); - sb.Append(" NFields: ").Append(NFields).Append("\n"); - sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OriginalGraphicsResult); - } - - /// - /// Returns true if OriginalGraphicsResult instances are equal - /// - /// Instance of OriginalGraphicsResult to be compared - /// Boolean - public bool Equals(OriginalGraphicsResult input) - { - if (input == null) - return false; - - return - ( - this.NFields == input.NFields || - (this.NFields != null && - this.NFields.Equals(input.NFields)) - ) && - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.NFields != null) - hashCode = hashCode * 59 + this.NFields.GetHashCode(); - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/OriginalSymbol.cs b/src/Regula.DocumentReader.WebClient/Model/OriginalSymbol.cs index b304e9a..42ace8d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/OriginalSymbol.cs +++ b/src/Regula.DocumentReader.WebClient/Model/OriginalSymbol.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,14 +29,19 @@ namespace Regula.DocumentReader.WebClient.Model /// /// OriginalSymbol /// - [DataContract] - public partial class OriginalSymbol : IEquatable, IValidatableObject + [DataContract(Name = "OriginalSymbol")] + public partial class OriginalSymbol : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// Unicode symbol code. - /// Probability of correctness reading of a single character. + [JsonConstructorAttribute] + protected OriginalSymbol() { } + /// + /// Initializes a new instance of the class. + /// + /// Unicode symbol code (required). + /// Probability of correctness reading of a single character (required). /// rect. public OriginalSymbol(long code = default(long), int probability = default(int), RectangleCoordinates rect = default(RectangleCoordinates)) { @@ -42,26 +49,26 @@ public partial class OriginalSymbol : IEquatable, IValidatableO this.Probability = probability; this.Rect = rect; } - + /// /// Unicode symbol code /// /// Unicode symbol code - [DataMember(Name="code", EmitDefaultValue=false)] + [DataMember(Name = "code", IsRequired = true, EmitDefaultValue = true)] public long Code { get; set; } /// /// Probability of correctness reading of a single character /// /// Probability of correctness reading of a single character - [DataMember(Name="probability", EmitDefaultValue=false)] + [DataMember(Name = "probability", IsRequired = true, EmitDefaultValue = true)] public int Probability { get; set; } /// /// Gets or Sets Rect /// - [DataMember(Name="rect", EmitDefaultValue=false)] - public RectangleCoordinates Rect { get; set; } + [DataMember(Name = "rect", EmitDefaultValue = false)] + public RectangleCoordinates? Rect { get; set; } /// /// Returns the string presentation of the object @@ -69,7 +76,7 @@ public partial class OriginalSymbol : IEquatable, IValidatableO /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class OriginalSymbol {\n"); sb.Append(" Code: ").Append(Code).Append("\n"); sb.Append(" Probability: ").Append(Probability).Append("\n"); @@ -77,7 +84,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -87,82 +94,23 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OriginalSymbol); - } - - /// - /// Returns true if OriginalSymbol instances are equal - /// - /// Instance of OriginalSymbol to be compared - /// Boolean - public bool Equals(OriginalSymbol input) - { - if (input == null) - return false; - - return - ( - this.Code == input.Code || - (this.Code != null && - this.Code.Equals(input.Code)) - ) && - ( - this.Probability == input.Probability || - (this.Probability != null && - this.Probability.Equals(input.Probability)) - ) && - ( - this.Rect == input.Rect || - (this.Rect != null && - this.Rect.Equals(input.Rect)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Code != null) - hashCode = hashCode * 59 + this.Code.GetHashCode(); - if (this.Probability != null) - hashCode = hashCode * 59 + this.Probability.GetHashCode(); - if (this.Rect != null) - hashCode = hashCode * 59 + this.Rect.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - - // Probability (int) maximum - if(this.Probability > (int)100) + if (this.Probability > (int)100) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Probability, must be a value less than or equal to 100.", new [] { "Probability" }); + yield return new ValidationResult("Invalid value for Probability, must be a value less than or equal to 100.", new [] { "Probability" }); } // Probability (int) minimum - if(this.Probability < (int)0) + if (this.Probability < (int)0) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Probability, must be a value greater than or equal to 0.", new [] { "Probability" }); + yield return new ValidationResult("Invalid value for Probability, must be a value greater than or equal to 0.", new [] { "Probability" }); } yield break; diff --git a/src/Regula.DocumentReader.WebClient/Model/OutData.cs b/src/Regula.DocumentReader.WebClient/Model/OutData.cs index 07b1811..24966af 100644 --- a/src/Regula.DocumentReader.WebClient/Model/OutData.cs +++ b/src/Regula.DocumentReader.WebClient/Model/OutData.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// OutData /// - [DataContract] - public partial class OutData : IEquatable, IValidatableObject + [DataContract(Name = "OutData")] + public partial class OutData : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,19 +42,19 @@ public partial class OutData : IEquatable, IValidatableObject this.Url = url; this.Images = images; } - + /// /// Response url /// /// Response url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } + [DataMember(Name = "url", EmitDefaultValue = false)] + public string? Url { get; set; } /// /// Gets or Sets Images /// - [DataMember(Name="images", EmitDefaultValue=false)] - public List Images { get; set; } + [DataMember(Name = "images", EmitDefaultValue = false)] + public List? Images { get; set; } /// /// Returns the string presentation of the object @@ -60,14 +62,14 @@ public partial class OutData : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class OutData {\n"); sb.Append(" Url: ").Append(Url).Append("\n"); sb.Append(" Images: ").Append(Images).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -77,63 +79,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OutData); - } - - /// - /// Returns true if OutData instances are equal - /// - /// Instance of OutData to be compared - /// Boolean - public bool Equals(OutData input) - { - if (input == null) - return false; - - return - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ) && - ( - this.Images == input.Images || - this.Images != null && - input.Images != null && - this.Images.SequenceEqual(input.Images) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - if (this.Images != null) - hashCode = hashCode * 59 + this.Images.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/OutDataTransactionImagesFieldValue.cs b/src/Regula.DocumentReader.WebClient/Model/OutDataTransactionImagesFieldValue.cs index 8b747da..f99d250 100644 --- a/src/Regula.DocumentReader.WebClient/Model/OutDataTransactionImagesFieldValue.cs +++ b/src/Regula.DocumentReader.WebClient/Model/OutDataTransactionImagesFieldValue.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// OutDataTransactionImagesFieldValue /// - [DataContract] - public partial class OutDataTransactionImagesFieldValue : IEquatable, IValidatableObject + [DataContract(Name = "OutDataTransactionImagesFieldValue")] + public partial class OutDataTransactionImagesFieldValue : IValidatableObject { + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "fieldType", EmitDefaultValue = false)] + public GraphicFieldType? FieldType { get; set; } + + /// + /// Gets or Sets Light + /// + [DataMember(Name = "light", EmitDefaultValue = false)] + public Light? Light { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,7 +52,7 @@ public partial class OutDataTransactionImagesFieldValue : IEquatablelistIdx. /// Page index of the image from input list. /// Image url. - public OutDataTransactionImagesFieldValue(int fieldType = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), string url = default(string)) + public OutDataTransactionImagesFieldValue(GraphicFieldType? fieldType = default(GraphicFieldType?), Light? light = default(Light?), int listIdx = default(int), int pageIdx = default(int), string url = default(string)) { this.FieldType = fieldType; this.Light = light; @@ -46,38 +60,26 @@ public partial class OutDataTransactionImagesFieldValue : IEquatable - /// Gets or Sets FieldType - /// - [DataMember(Name="fieldType", EmitDefaultValue=false)] - public int FieldType { get; set; } - - /// - /// Gets or Sets Light - /// - [DataMember(Name="light", EmitDefaultValue=false)] - public int Light { get; set; } /// /// Gets or Sets ListIdx /// - [DataMember(Name="listIdx", EmitDefaultValue=false)] - public int ListIdx { get; set; } + [DataMember(Name = "listIdx", EmitDefaultValue = false)] + public int? ListIdx { get; set; } /// /// Page index of the image from input list /// /// Page index of the image from input list - [DataMember(Name="pageIdx", EmitDefaultValue=false)] - public int PageIdx { get; set; } + [DataMember(Name = "pageIdx", EmitDefaultValue = false)] + public int? PageIdx { get; set; } /// /// Image url /// /// Image url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } + [DataMember(Name = "url", EmitDefaultValue = false)] + public string? Url { get; set; } /// /// Returns the string presentation of the object @@ -85,7 +87,7 @@ public partial class OutDataTransactionImagesFieldValue : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class OutDataTransactionImagesFieldValue {\n"); sb.Append(" FieldType: ").Append(FieldType).Append("\n"); sb.Append(" Light: ").Append(Light).Append("\n"); @@ -95,7 +97,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -105,83 +107,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as OutDataTransactionImagesFieldValue); - } - - /// - /// Returns true if OutDataTransactionImagesFieldValue instances are equal - /// - /// Instance of OutDataTransactionImagesFieldValue to be compared - /// Boolean - public bool Equals(OutDataTransactionImagesFieldValue input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.Light == input.Light || - (this.Light != null && - this.Light.Equals(input.Light)) - ) && - ( - this.ListIdx == input.ListIdx || - (this.ListIdx != null && - this.ListIdx.Equals(input.ListIdx)) - ) && - ( - this.PageIdx == input.PageIdx || - (this.PageIdx != null && - this.PageIdx.Equals(input.PageIdx)) - ) && - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.Light != null) - hashCode = hashCode * 59 + this.Light.GetHashCode(); - if (this.ListIdx != null) - hashCode = hashCode * 59 + this.ListIdx.GetHashCode(); - if (this.PageIdx != null) - hashCode = hashCode * 59 + this.PageIdx.GetHashCode(); - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/PArrayField.cs b/src/Regula.DocumentReader.WebClient/Model/PArrayField.cs index ef7e66b..700946c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/PArrayField.cs +++ b/src/Regula.DocumentReader.WebClient/Model/PArrayField.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,94 +29,109 @@ namespace Regula.DocumentReader.WebClient.Model /// /// PArrayField /// - [DataContract] - public partial class PArrayField : IEquatable, IValidatableObject + [DataContract(Name = "pArrayField")] + public partial class PArrayField : IValidatableObject { + + /// + /// Gets or Sets BcTypeDECODE + /// + [DataMember(Name = "bcType_DECODE", IsRequired = true, EmitDefaultValue = true)] + public BarcodeType BcTypeDECODE { get; set; } /// /// Initializes a new instance of the class. /// - /// bcAngleDETECT. - /// bcCodeResult. - /// bcCountModule. - /// bcDataModule. + [JsonConstructorAttribute] + protected PArrayField() { } + /// + /// Initializes a new instance of the class. + /// + /// bcAngleDETECT (required). + /// bcCodeResult (required). + /// bcCountModule (required). + /// bcDataModule (required). /// bcPDF417INFO. - /// bcROIDETECT. + /// bcROIDETECT (required). /// bcTextDecoderTypes. /// bcTextFieldType. - /// bcTypeDECODE. - /// bcTypeDETECT. - public PArrayField(float bcAngleDETECT = default(float), int bcCodeResult = default(int), int bcCountModule = default(int), List bcDataModule = default(List), BcPDF417INFO bcPDF417INFO = default(BcPDF417INFO), BcROIDETECT bcROIDETECT = default(BcROIDETECT), int bcTextDecoderTypes = default(int), int bcTextFieldType = default(int), int bcTypeDECODE = default(int), int bcTypeDETECT = default(int)) + /// bcTypeDECODE (required). + /// bcTypeDETECT (required). + public PArrayField(float bcAngleDETECT = default(float), int bcCodeResult = default(int), int bcCountModule = default(int), List bcDataModule = default(List), BcPDF417INFO bcPDF417INFO = default(BcPDF417INFO), BcROIDETECT bcROIDETECT = default(BcROIDETECT), int bcTextDecoderTypes = default(int), int bcTextFieldType = default(int), BarcodeType bcTypeDECODE = default(BarcodeType), int bcTypeDETECT = default(int)) { this.BcAngleDETECT = bcAngleDETECT; this.BcCodeResult = bcCodeResult; this.BcCountModule = bcCountModule; + // to ensure "bcDataModule" is required (not null) + if (bcDataModule == null) + { + throw new ArgumentNullException("bcDataModule is a required property for PArrayField and cannot be null"); + } this.BcDataModule = bcDataModule; - this.BcPDF417INFO = bcPDF417INFO; + // to ensure "bcROIDETECT" is required (not null) + if (bcROIDETECT == null) + { + throw new ArgumentNullException("bcROIDETECT is a required property for PArrayField and cannot be null"); + } this.BcROIDETECT = bcROIDETECT; - this.BcTextDecoderTypes = bcTextDecoderTypes; - this.BcTextFieldType = bcTextFieldType; this.BcTypeDECODE = bcTypeDECODE; this.BcTypeDETECT = bcTypeDETECT; + this.BcPDF417INFO = bcPDF417INFO; + this.BcTextDecoderTypes = bcTextDecoderTypes; + this.BcTextFieldType = bcTextFieldType; } - + /// /// Gets or Sets BcAngleDETECT /// - [DataMember(Name="bcAngle_DETECT", EmitDefaultValue=false)] + [DataMember(Name = "bcAngle_DETECT", IsRequired = true, EmitDefaultValue = true)] public float BcAngleDETECT { get; set; } /// /// Gets or Sets BcCodeResult /// - [DataMember(Name="bcCodeResult", EmitDefaultValue=false)] + [DataMember(Name = "bcCodeResult", IsRequired = true, EmitDefaultValue = true)] public int BcCodeResult { get; set; } /// /// Gets or Sets BcCountModule /// - [DataMember(Name="bcCountModule", EmitDefaultValue=false)] + [DataMember(Name = "bcCountModule", IsRequired = true, EmitDefaultValue = true)] public int BcCountModule { get; set; } /// /// Gets or Sets BcDataModule /// - [DataMember(Name="bcDataModule", EmitDefaultValue=false)] + [DataMember(Name = "bcDataModule", IsRequired = true, EmitDefaultValue = true)] public List BcDataModule { get; set; } /// /// Gets or Sets BcPDF417INFO /// - [DataMember(Name="bcPDF417INFO", EmitDefaultValue=false)] - public BcPDF417INFO BcPDF417INFO { get; set; } + [DataMember(Name = "bcPDF417INFO", EmitDefaultValue = false)] + public BcPDF417INFO? BcPDF417INFO { get; set; } /// /// Gets or Sets BcROIDETECT /// - [DataMember(Name="bcROI_DETECT", EmitDefaultValue=false)] + [DataMember(Name = "bcROI_DETECT", IsRequired = true, EmitDefaultValue = true)] public BcROIDETECT BcROIDETECT { get; set; } /// /// Gets or Sets BcTextDecoderTypes /// - [DataMember(Name="bcTextDecoderTypes", EmitDefaultValue=false)] - public int BcTextDecoderTypes { get; set; } + [DataMember(Name = "bcTextDecoderTypes", EmitDefaultValue = false)] + public int? BcTextDecoderTypes { get; set; } /// /// Gets or Sets BcTextFieldType /// - [DataMember(Name="bcTextFieldType", EmitDefaultValue=false)] - public int BcTextFieldType { get; set; } - - /// - /// Gets or Sets BcTypeDECODE - /// - [DataMember(Name="bcType_DECODE", EmitDefaultValue=false)] - public int BcTypeDECODE { get; set; } + [DataMember(Name = "bcTextFieldType", EmitDefaultValue = false)] + public int? BcTextFieldType { get; set; } /// /// Gets or Sets BcTypeDETECT /// - [DataMember(Name="bcType_DETECT", EmitDefaultValue=false)] + [DataMember(Name = "bcType_DETECT", IsRequired = true, EmitDefaultValue = true)] public int BcTypeDETECT { get; set; } /// @@ -123,7 +140,7 @@ public partial class PArrayField : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class PArrayField {\n"); sb.Append(" BcAngleDETECT: ").Append(BcAngleDETECT).Append("\n"); sb.Append(" BcCodeResult: ").Append(BcCodeResult).Append("\n"); @@ -138,7 +155,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -148,119 +165,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as PArrayField); - } - - /// - /// Returns true if PArrayField instances are equal - /// - /// Instance of PArrayField to be compared - /// Boolean - public bool Equals(PArrayField input) - { - if (input == null) - return false; - - return - ( - this.BcAngleDETECT == input.BcAngleDETECT || - (this.BcAngleDETECT != null && - this.BcAngleDETECT.Equals(input.BcAngleDETECT)) - ) && - ( - this.BcCodeResult == input.BcCodeResult || - (this.BcCodeResult != null && - this.BcCodeResult.Equals(input.BcCodeResult)) - ) && - ( - this.BcCountModule == input.BcCountModule || - (this.BcCountModule != null && - this.BcCountModule.Equals(input.BcCountModule)) - ) && - ( - this.BcDataModule == input.BcDataModule || - this.BcDataModule != null && - input.BcDataModule != null && - this.BcDataModule.SequenceEqual(input.BcDataModule) - ) && - ( - this.BcPDF417INFO == input.BcPDF417INFO || - (this.BcPDF417INFO != null && - this.BcPDF417INFO.Equals(input.BcPDF417INFO)) - ) && - ( - this.BcROIDETECT == input.BcROIDETECT || - (this.BcROIDETECT != null && - this.BcROIDETECT.Equals(input.BcROIDETECT)) - ) && - ( - this.BcTextDecoderTypes == input.BcTextDecoderTypes || - (this.BcTextDecoderTypes != null && - this.BcTextDecoderTypes.Equals(input.BcTextDecoderTypes)) - ) && - ( - this.BcTextFieldType == input.BcTextFieldType || - (this.BcTextFieldType != null && - this.BcTextFieldType.Equals(input.BcTextFieldType)) - ) && - ( - this.BcTypeDECODE == input.BcTypeDECODE || - (this.BcTypeDECODE != null && - this.BcTypeDECODE.Equals(input.BcTypeDECODE)) - ) && - ( - this.BcTypeDETECT == input.BcTypeDETECT || - (this.BcTypeDETECT != null && - this.BcTypeDETECT.Equals(input.BcTypeDETECT)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.BcAngleDETECT != null) - hashCode = hashCode * 59 + this.BcAngleDETECT.GetHashCode(); - if (this.BcCodeResult != null) - hashCode = hashCode * 59 + this.BcCodeResult.GetHashCode(); - if (this.BcCountModule != null) - hashCode = hashCode * 59 + this.BcCountModule.GetHashCode(); - if (this.BcDataModule != null) - hashCode = hashCode * 59 + this.BcDataModule.GetHashCode(); - if (this.BcPDF417INFO != null) - hashCode = hashCode * 59 + this.BcPDF417INFO.GetHashCode(); - if (this.BcROIDETECT != null) - hashCode = hashCode * 59 + this.BcROIDETECT.GetHashCode(); - if (this.BcTextDecoderTypes != null) - hashCode = hashCode * 59 + this.BcTextDecoderTypes.GetHashCode(); - if (this.BcTextFieldType != null) - hashCode = hashCode * 59 + this.BcTextFieldType.GetHashCode(); - if (this.BcTypeDECODE != null) - hashCode = hashCode * 59 + this.BcTypeDECODE.GetHashCode(); - if (this.BcTypeDETECT != null) - hashCode = hashCode * 59 + this.BcTypeDETECT.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ParsedData.cs b/src/Regula.DocumentReader.WebClient/Model/ParsedData.cs new file mode 100644 index 0000000..53fd280 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ParsedData.cs @@ -0,0 +1,83 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ParsedData + /// + [DataContract(Name = "ParsedData")] + public partial class ParsedData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// parsingNotifications. + public ParsedData(List parsingNotifications = default(List)) + { + this.ParsingNotifications = parsingNotifications; + } + + /// + /// Gets or Sets ParsingNotifications + /// + [DataMember(Name = "ParsingNotifications", EmitDefaultValue = false)] + public List? ParsingNotifications { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ParsedData {\n"); + sb.Append(" ParsingNotifications: ").Append(ParsingNotifications).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/ParsingNotificationCodes.cs b/src/Regula.DocumentReader.WebClient/Model/ParsingNotificationCodes.cs index a28e301..55a3d3d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ParsingNotificationCodes.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ParsingNotificationCodes.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -28,1343 +30,1117 @@ namespace Regula.DocumentReader.WebClient.Model /// The enumeration contains possible values of notification codes returned during the RFID chip processing. /// /// The enumeration contains possible values of notification codes returned during the RFID chip processing. - - [JsonConverter(typeof(StringEnumConverter))] - - public enum ParsingNotificationCodes + public enum ParsingNotificationCodes: long { /// - /// Enum ntfLDS_ASN_Certificate_IncorrectVersion for value: -1879048191 + /// Enum ntfLDS_ASN_Certificate_IncorrectVersion for value: 2415919105 /// - [EnumMember(Value = "-1879048191")] - ntfLDS_ASN_Certificate_IncorrectVersion = 1, + ntfLDS_ASN_Certificate_IncorrectVersion = 2415919105, /// - /// Enum ntfLDS_ASN_Certificate_NonMatchingSignatureAlgorithm for value: -1879048190 + /// Enum ntfLDS_ASN_Certificate_NonMatchingSignatureAlgorithm for value: 2415919106 /// - [EnumMember(Value = "-1879048190")] - ntfLDS_ASN_Certificate_NonMatchingSignatureAlgorithm = 2, + ntfLDS_ASN_Certificate_NonMatchingSignatureAlgorithm = 2415919106, /// - /// Enum ntfLDS_ASN_Certificate_IncorrectTimeCoding for value: -1879048189 + /// Enum ntfLDS_ASN_Certificate_IncorrectTimeCoding for value: 2415919107 /// - [EnumMember(Value = "-1879048189")] - ntfLDS_ASN_Certificate_IncorrectTimeCoding = 3, + ntfLDS_ASN_Certificate_IncorrectTimeCoding = 2415919107, /// - /// Enum ntfLDS_ASN_Certificate_IncorrectUseOfGeneralizedTime for value: -1879048188 + /// Enum ntfLDS_ASN_Certificate_IncorrectUseOfGeneralizedTime for value: 2415919108 /// - [EnumMember(Value = "-1879048188")] - ntfLDS_ASN_Certificate_IncorrectUseOfGeneralizedTime = 4, + ntfLDS_ASN_Certificate_IncorrectUseOfGeneralizedTime = 2415919108, /// - /// Enum ntfLDS_ASN_Certificate_EmptyIssuer for value: -1879048187 + /// Enum ntfLDS_ASN_Certificate_EmptyIssuer for value: 2415919109 /// - [EnumMember(Value = "-1879048187")] - ntfLDS_ASN_Certificate_EmptyIssuer = 5, + ntfLDS_ASN_Certificate_EmptyIssuer = 2415919109, /// - /// Enum ntfLDS_ASN_Certificate_EmptySubject for value: -1879048186 + /// Enum ntfLDS_ASN_Certificate_EmptySubject for value: 2415919110 /// - [EnumMember(Value = "-1879048186")] - ntfLDS_ASN_Certificate_EmptySubject = 6, + ntfLDS_ASN_Certificate_EmptySubject = 2415919110, /// - /// Enum ntfLDS_ASN_Certificate_UnsupportedCriticalExtension for value: -1879048184 + /// Enum ntfLDS_ASN_Certificate_UnsupportedCriticalExtension for value: 2415919112 /// - [EnumMember(Value = "-1879048184")] - ntfLDS_ASN_Certificate_UnsupportedCriticalExtension = 7, + ntfLDS_ASN_Certificate_UnsupportedCriticalExtension = 2415919112, /// - /// Enum ntfLDS_ASN_Certificate_ForcedDefaultCSCARole for value: -1879048178 + /// Enum ntfLDS_ASN_Certificate_ForcedDefaultCSCARole for value: 2415919118 /// - [EnumMember(Value = "-1879048178")] - ntfLDS_ASN_Certificate_ForcedDefaultCSCARole = 8, + ntfLDS_ASN_Certificate_ForcedDefaultCSCARole = 2415919118, /// - /// Enum ntfLDS_ASN_Certificate_ForcedDefaultDSRole for value: -1879048177 + /// Enum ntfLDS_ASN_Certificate_ForcedDefaultDSRole for value: 2415919119 /// - [EnumMember(Value = "-1879048177")] - ntfLDS_ASN_Certificate_ForcedDefaultDSRole = 9, + ntfLDS_ASN_Certificate_ForcedDefaultDSRole = 2415919119, /// - /// Enum ntfLDS_ASN_Certificate_IncorrectIssuerSubjectDS for value: -1879048176 + /// Enum ntfLDS_ASN_Certificate_IncorrectIssuerSubjectDS for value: 2415919120 /// - [EnumMember(Value = "-1879048176")] - ntfLDS_ASN_Certificate_IncorrectIssuerSubjectDS = 10, + ntfLDS_ASN_Certificate_IncorrectIssuerSubjectDS = 2415919120, /// - /// Enum ntfLDS_ASN_Certificate_DuplicatingExtensions for value: -1879048169 + /// Enum ntfLDS_ASN_Certificate_DuplicatingExtensions for value: 2415919127 /// - [EnumMember(Value = "-1879048169")] - ntfLDS_ASN_Certificate_DuplicatingExtensions = 11, + ntfLDS_ASN_Certificate_DuplicatingExtensions = 2415919127, /// - /// Enum ntfLDS_ICAO_Certificate_Version_Missed for value: -1879047680 + /// Enum ntfLDS_ICAO_Certificate_Version_Missed for value: 2415919616 /// - [EnumMember(Value = "-1879047680")] - ntfLDS_ICAO_Certificate_Version_Missed = 12, + ntfLDS_ICAO_Certificate_Version_Missed = 2415919616, /// - /// Enum ntfLDS_ICAO_Certificate_Version_Incorrect for value: -1879047679 + /// Enum ntfLDS_ICAO_Certificate_Version_Incorrect for value: 2415919617 /// - [EnumMember(Value = "-1879047679")] - ntfLDS_ICAO_Certificate_Version_Incorrect = 13, + ntfLDS_ICAO_Certificate_Version_Incorrect = 2415919617, /// - /// Enum ntfLDS_ICAO_Certificate_Issuer_Country_Missed for value: -1879047678 + /// Enum ntfLDS_ICAO_Certificate_Issuer_Country_Missed for value: 2415919618 /// - [EnumMember(Value = "-1879047678")] - ntfLDS_ICAO_Certificate_Issuer_Country_Missed = 14, + ntfLDS_ICAO_Certificate_Issuer_Country_Missed = 2415919618, /// - /// Enum ntfLDS_ICAO_Certificate_Issuer_CommonName_Missed for value: -1879047677 + /// Enum ntfLDS_ICAO_Certificate_Issuer_CommonName_Missed for value: 2415919619 /// - [EnumMember(Value = "-1879047677")] - ntfLDS_ICAO_Certificate_Issuer_CommonName_Missed = 15, + ntfLDS_ICAO_Certificate_Issuer_CommonName_Missed = 2415919619, /// - /// Enum ntfLDS_ICAO_Certificate_Issuer_CountryNonCompliant for value: -1879047676 + /// Enum ntfLDS_ICAO_Certificate_Issuer_CountryNonCompliant for value: 2415919620 /// - [EnumMember(Value = "-1879047676")] - ntfLDS_ICAO_Certificate_Issuer_CountryNonCompliant = 16, + ntfLDS_ICAO_Certificate_Issuer_CountryNonCompliant = 2415919620, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_Country_Missed for value: -1879047675 + /// Enum ntfLDS_ICAO_Certificate_Subject_Country_Missed for value: 2415919621 /// - [EnumMember(Value = "-1879047675")] - ntfLDS_ICAO_Certificate_Subject_Country_Missed = 17, + ntfLDS_ICAO_Certificate_Subject_Country_Missed = 2415919621, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_CommonName_Missed for value: -1879047674 + /// Enum ntfLDS_ICAO_Certificate_Subject_CommonName_Missed for value: 2415919622 /// - [EnumMember(Value = "-1879047674")] - ntfLDS_ICAO_Certificate_Subject_CommonName_Missed = 18, + ntfLDS_ICAO_Certificate_Subject_CommonName_Missed = 2415919622, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_CountryNonCompliant for value: -1879047673 + /// Enum ntfLDS_ICAO_Certificate_Subject_CountryNonCompliant for value: 2415919623 /// - [EnumMember(Value = "-1879047673")] - ntfLDS_ICAO_Certificate_Subject_CountryNonCompliant = 19, + ntfLDS_ICAO_Certificate_Subject_CountryNonCompliant = 2415919623, /// - /// Enum ntfLDS_ICAO_Certificate_UsingNonCompliantData for value: -1879047672 + /// Enum ntfLDS_ICAO_Certificate_UsingNonCompliantData for value: 2415919624 /// - [EnumMember(Value = "-1879047672")] - ntfLDS_ICAO_Certificate_UsingNonCompliantData = 20, + ntfLDS_ICAO_Certificate_UsingNonCompliantData = 2415919624, /// - /// Enum ntfLDS_ICAO_Certificate_UnsupportedSignatureAlgorithm for value: -1879047671 + /// Enum ntfLDS_ICAO_Certificate_UnsupportedSignatureAlgorithm for value: 2415919625 /// - [EnumMember(Value = "-1879047671")] - ntfLDS_ICAO_Certificate_UnsupportedSignatureAlgorithm = 21, + ntfLDS_ICAO_Certificate_UnsupportedSignatureAlgorithm = 2415919625, /// - /// Enum ntfLDS_ICAO_Certificate_UnsupportedPublicKeyAlgorithm for value: -1879047670 + /// Enum ntfLDS_ICAO_Certificate_UnsupportedPublicKeyAlgorithm for value: 2415919626 /// - [EnumMember(Value = "-1879047670")] - ntfLDS_ICAO_Certificate_UnsupportedPublicKeyAlgorithm = 22, + ntfLDS_ICAO_Certificate_UnsupportedPublicKeyAlgorithm = 2415919626, /// - /// Enum ntfLDS_ICAO_Certificate_MissedExtensions for value: -1879047669 + /// Enum ntfLDS_ICAO_Certificate_MissedExtensions for value: 2415919627 /// - [EnumMember(Value = "-1879047669")] - ntfLDS_ICAO_Certificate_MissedExtensions = 23, + ntfLDS_ICAO_Certificate_MissedExtensions = 2415919627, /// - /// Enum ntfLDS_ICAO_Certificate_Validity for value: -1879047668 + /// Enum ntfLDS_ICAO_Certificate_Validity for value: 2415919628 /// - [EnumMember(Value = "-1879047668")] - ntfLDS_ICAO_Certificate_Validity = 24, + ntfLDS_ICAO_Certificate_Validity = 2415919628, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_UsingNonCompliantData for value: -1879047667 + /// Enum ntfLDS_ICAO_Certificate_Ext_UsingNonCompliantData for value: 2415919629 /// - [EnumMember(Value = "-1879047667")] - ntfLDS_ICAO_Certificate_Ext_UsingNonCompliantData = 25, + ntfLDS_ICAO_Certificate_Ext_UsingNonCompliantData = 2415919629, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_Missed for value: -1879047666 + /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_Missed for value: 2415919630 /// - [EnumMember(Value = "-1879047666")] - ntfLDS_ICAO_Certificate_Ext_KeyUsage_Missed = 26, + ntfLDS_ICAO_Certificate_Ext_KeyUsage_Missed = 2415919630, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_NotCritical for value: -1879047665 + /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_NotCritical for value: 2415919631 /// - [EnumMember(Value = "-1879047665")] - ntfLDS_ICAO_Certificate_Ext_KeyUsage_NotCritical = 27, + ntfLDS_ICAO_Certificate_Ext_KeyUsage_NotCritical = 2415919631, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_IncorrectData for value: -1879047664 + /// Enum ntfLDS_ICAO_Certificate_Ext_KeyUsage_IncorrectData for value: 2415919632 /// - [EnumMember(Value = "-1879047664")] - ntfLDS_ICAO_Certificate_Ext_KeyUsage_IncorrectData = 28, + ntfLDS_ICAO_Certificate_Ext_KeyUsage_IncorrectData = 2415919632, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_Missed for value: -1879047663 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_Missed for value: 2415919633 /// - [EnumMember(Value = "-1879047663")] - ntfLDS_ICAO_Certificate_Ext_BasicC_Missed = 29, + ntfLDS_ICAO_Certificate_Ext_BasicC_Missed = 2415919633, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage1 for value: -1879047662 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage1 for value: 2415919634 /// - [EnumMember(Value = "-1879047662")] - ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage1 = 30, + ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage1 = 2415919634, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage2 for value: -1879047661 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage2 for value: 2415919635 /// - [EnumMember(Value = "-1879047661")] - ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage2 = 31, + ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectUsage2 = 2415919635, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_NotCritical for value: -1879047660 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_NotCritical for value: 2415919636 /// - [EnumMember(Value = "-1879047660")] - ntfLDS_ICAO_Certificate_Ext_BasicC_NotCritical = 32, + ntfLDS_ICAO_Certificate_Ext_BasicC_NotCritical = 2415919636, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectData for value: -1879047659 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectData for value: 2415919637 /// - [EnumMember(Value = "-1879047659")] - ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectData = 33, + ntfLDS_ICAO_Certificate_Ext_BasicC_IncorrectData = 2415919637, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Missed for value: -1879047658 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Missed for value: 2415919638 /// - [EnumMember(Value = "-1879047658")] - ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Missed = 34, + ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Missed = 2415919638, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Incorrect for value: -1879047657 + /// Enum ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Incorrect for value: 2415919639 /// - [EnumMember(Value = "-1879047657")] - ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Incorrect = 35, + ntfLDS_ICAO_Certificate_Ext_BasicC_PathLenC_Incorrect = 2415919639, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_NotCritical for value: -1879047656 + /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_NotCritical for value: 2415919640 /// - [EnumMember(Value = "-1879047656")] - ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_NotCritical = 36, + ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_NotCritical = 2415919640, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectUsage for value: -1879047655 + /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectUsage for value: 2415919641 /// - [EnumMember(Value = "-1879047655")] - ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectUsage = 37, + ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectUsage = 2415919641, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectData for value: -1879047654 + /// Enum ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectData for value: 2415919642 /// - [EnumMember(Value = "-1879047654")] - ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectData = 38, + ntfLDS_ICAO_Certificate_Ext_ExtKeyUsage_IncorrectData = 2415919642, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_Missed for value: -1879047653 + /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_Missed for value: 2415919643 /// - [EnumMember(Value = "-1879047653")] - ntfLDS_ICAO_Certificate_Ext_AuthKeyID_Missed = 39, + ntfLDS_ICAO_Certificate_Ext_AuthKeyID_Missed = 2415919643, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_IncorrectData for value: -1879047652 + /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_IncorrectData for value: 2415919644 /// - [EnumMember(Value = "-1879047652")] - ntfLDS_ICAO_Certificate_Ext_AuthKeyID_IncorrectData = 40, + ntfLDS_ICAO_Certificate_Ext_AuthKeyID_IncorrectData = 2415919644, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_KeyID_Missed for value: -1879047651 + /// Enum ntfLDS_ICAO_Certificate_Ext_AuthKeyID_KeyID_Missed for value: 2415919645 /// - [EnumMember(Value = "-1879047651")] - ntfLDS_ICAO_Certificate_Ext_AuthKeyID_KeyID_Missed = 41, + ntfLDS_ICAO_Certificate_Ext_AuthKeyID_KeyID_Missed = 2415919645, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_Missed for value: -1879047650 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_Missed for value: 2415919646 /// - [EnumMember(Value = "-1879047650")] - ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_Missed = 42, + ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_Missed = 2415919646, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_IncorrectData for value: -1879047649 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_IncorrectData for value: 2415919647 /// - [EnumMember(Value = "-1879047649")] - ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_IncorrectData = 43, + ntfLDS_ICAO_Certificate_Ext_SubjectKeyID_IncorrectData = 2415919647, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Missed for value: -1879047648 + /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Missed for value: 2415919648 /// - [EnumMember(Value = "-1879047648")] - ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Missed = 44, + ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Missed = 2415919648, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_IncorrectData for value: -1879047647 + /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_IncorrectData for value: 2415919649 /// - [EnumMember(Value = "-1879047647")] - ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_IncorrectData = 45, + ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_IncorrectData = 2415919649, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Empty for value: -1879047646 + /// Enum ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Empty for value: 2415919650 /// - [EnumMember(Value = "-1879047646")] - ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Empty = 46, + ntfLDS_ICAO_Certificate_Ext_PrivateKeyUP_Empty = 2415919650, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Missed for value: -1879047645 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Missed for value: 2415919651 /// - [EnumMember(Value = "-1879047645")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Missed = 47, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Missed = 2415919651, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_IncorrectData for value: -1879047644 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_IncorrectData for value: 2415919652 /// - [EnumMember(Value = "-1879047644")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_IncorrectData = 48, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_IncorrectData = 2415919652, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Empty for value: -1879047643 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Empty for value: 2415919653 /// - [EnumMember(Value = "-1879047643")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Empty = 49, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Empty = 2415919653, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_NonCompliant for value: -1879047642 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_NonCompliant for value: 2415919654 /// - [EnumMember(Value = "-1879047642")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_NonCompliant = 50, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_NonCompliant = 2415919654, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Critical for value: -1879047640 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Critical for value: 2415919656 /// - [EnumMember(Value = "-1879047640")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Critical = 51, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_Critical = 2415919656, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Empty for value: -1879047639 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Empty for value: 2415919657 /// - [EnumMember(Value = "-1879047639")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Empty = 52, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Empty = 2415919657, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Incorrect for value: -1879047638 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Incorrect for value: 2415919658 /// - [EnumMember(Value = "-1879047638")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Incorrect = 53, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_Incorrect = 2415919658, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_NonCompliant for value: -1879047637 + /// Enum ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_NonCompliant for value: 2415919659 /// - [EnumMember(Value = "-1879047637")] - ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_NonCompliant = 54, + ntfLDS_ICAO_Certificate_Ext_SubjectAltName_DN_NonCompliant = 2415919659, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Missed for value: -1879047636 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Missed for value: 2415919660 /// - [EnumMember(Value = "-1879047636")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Missed = 55, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Missed = 2415919660, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_IncorrectData for value: -1879047635 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_IncorrectData for value: 2415919661 /// - [EnumMember(Value = "-1879047635")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_IncorrectData = 56, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_IncorrectData = 2415919661, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Empty for value: -1879047634 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Empty for value: 2415919662 /// - [EnumMember(Value = "-1879047634")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Empty = 57, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Empty = 2415919662, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_NonCompliant for value: -1879047633 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_NonCompliant for value: 2415919663 /// - [EnumMember(Value = "-1879047633")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_NonCompliant = 58, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_NonCompliant = 2415919663, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Critical for value: -1879047631 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Critical for value: 2415919665 /// - [EnumMember(Value = "-1879047631")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Critical = 59, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_Critical = 2415919665, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Empty for value: -1879047630 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Empty for value: 2415919666 /// - [EnumMember(Value = "-1879047630")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Empty = 60, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Empty = 2415919666, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Incorrect for value: -1879047629 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Incorrect for value: 2415919667 /// - [EnumMember(Value = "-1879047629")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Incorrect = 61, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_Incorrect = 2415919667, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_NonCompliant for value: -1879047628 + /// Enum ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_NonCompliant for value: 2415919668 /// - [EnumMember(Value = "-1879047628")] - ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_NonCompliant = 62, + ntfLDS_ICAO_Certificate_Ext_IssuerAltName_DN_NonCompliant = 2415919668, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Missed for value: -1879047627 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Missed for value: 2415919669 /// - [EnumMember(Value = "-1879047627")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_Missed = 63, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_Missed = 2415919669, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_IncorrectData for value: -1879047626 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_IncorrectData for value: 2415919670 /// - [EnumMember(Value = "-1879047626")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_IncorrectData = 64, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_IncorrectData = 2415919670, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Version for value: -1879047625 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Version for value: 2415919671 /// - [EnumMember(Value = "-1879047625")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_Version = 65, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_Version = 2415919671, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes for value: -1879047624 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes for value: 2415919672 /// - [EnumMember(Value = "-1879047624")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes = 66, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes = 2415919672, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes_Empty for value: -1879047623 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes_Empty for value: 2415919673 /// - [EnumMember(Value = "-1879047623")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes_Empty = 67, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_DocTypes_Empty = 2415919673, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_IncorrectData for value: -1879047622 + /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_IncorrectData for value: 2415919674 /// - [EnumMember(Value = "-1879047622")] - ntfLDS_ICAO_Certificate_Ext_CertPolicies_IncorrectData = 68, + ntfLDS_ICAO_Certificate_Ext_CertPolicies_IncorrectData = 2415919674, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_Empty for value: -1879047621 + /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_Empty for value: 2415919675 /// - [EnumMember(Value = "-1879047621")] - ntfLDS_ICAO_Certificate_Ext_CertPolicies_Empty = 69, + ntfLDS_ICAO_Certificate_Ext_CertPolicies_Empty = 2415919675, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_PolicyID_Missed for value: -1879047620 + /// Enum ntfLDS_ICAO_Certificate_Ext_CertPolicies_PolicyID_Missed for value: 2415919676 /// - [EnumMember(Value = "-1879047620")] - ntfLDS_ICAO_Certificate_Ext_CertPolicies_PolicyID_Missed = 70, + ntfLDS_ICAO_Certificate_Ext_CertPolicies_PolicyID_Missed = 2415919676, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Missed for value: -1879047619 + /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Missed for value: 2415919677 /// - [EnumMember(Value = "-1879047619")] - ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Missed = 71, + ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Missed = 2415919677, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_IncorrectData for value: -1879047618 + /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_IncorrectData for value: 2415919678 /// - [EnumMember(Value = "-1879047618")] - ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_IncorrectData = 72, + ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_IncorrectData = 2415919678, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Empty for value: -1879047617 + /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Empty for value: 2415919679 /// - [EnumMember(Value = "-1879047617")] - ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Empty = 73, + ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_Empty = 2415919679, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_PointMissed for value: -1879047616 + /// Enum ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_PointMissed for value: 2415919680 /// - [EnumMember(Value = "-1879047616")] - ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_PointMissed = 74, + ntfLDS_ICAO_Certificate_Ext_CRLDistPoint_PointMissed = 2415919680, /// - /// Enum ntfLDS_ICAO_Certificate_SN_NonCompliant for value: -1879047615 + /// Enum ntfLDS_ICAO_Certificate_SN_NonCompliant for value: 2415919681 /// - [EnumMember(Value = "-1879047615")] - ntfLDS_ICAO_Certificate_SN_NonCompliant = 75, + ntfLDS_ICAO_Certificate_SN_NonCompliant = 2415919681, /// - /// Enum ntfLDS_ICAO_Certificate_Issuer_SN_NonCompliant for value: -1879047614 + /// Enum ntfLDS_ICAO_Certificate_Issuer_SN_NonCompliant for value: 2415919682 /// - [EnumMember(Value = "-1879047614")] - ntfLDS_ICAO_Certificate_Issuer_SN_NonCompliant = 76, + ntfLDS_ICAO_Certificate_Issuer_SN_NonCompliant = 2415919682, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_SN_NonCompliant for value: -1879047613 + /// Enum ntfLDS_ICAO_Certificate_Subject_SN_NonCompliant for value: 2415919683 /// - [EnumMember(Value = "-1879047613")] - ntfLDS_ICAO_Certificate_Subject_SN_NonCompliant = 77, + ntfLDS_ICAO_Certificate_Subject_SN_NonCompliant = 2415919683, /// - /// Enum ntfLDS_ICAO_Certificate_Issuer_AttributeNonCompliant for value: -1879047612 + /// Enum ntfLDS_ICAO_Certificate_Issuer_AttributeNonCompliant for value: 2415919684 /// - [EnumMember(Value = "-1879047612")] - ntfLDS_ICAO_Certificate_Issuer_AttributeNonCompliant = 78, + ntfLDS_ICAO_Certificate_Issuer_AttributeNonCompliant = 2415919684, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_AttributeNonCompliant for value: -1879047611 + /// Enum ntfLDS_ICAO_Certificate_Subject_AttributeNonCompliant for value: 2415919685 /// - [EnumMember(Value = "-1879047611")] - ntfLDS_ICAO_Certificate_Subject_AttributeNonCompliant = 79, + ntfLDS_ICAO_Certificate_Subject_AttributeNonCompliant = 2415919685, /// - /// Enum ntfLDS_ICAO_Certificate_IssuerSubject_Country_NonMatching for value: -1879047610 + /// Enum ntfLDS_ICAO_Certificate_IssuerSubject_Country_NonMatching for value: 2415919686 /// - [EnumMember(Value = "-1879047610")] - ntfLDS_ICAO_Certificate_IssuerSubject_Country_NonMatching = 80, + ntfLDS_ICAO_Certificate_IssuerSubject_Country_NonMatching = 2415919686, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_CSCA_AltNames_NonMatching for value: -1879047609 + /// Enum ntfLDS_ICAO_Certificate_Ext_CSCA_AltNames_NonMatching for value: 2415919687 /// - [EnumMember(Value = "-1879047609")] - ntfLDS_ICAO_Certificate_Ext_CSCA_AltNames_NonMatching = 81, + ntfLDS_ICAO_Certificate_Ext_CSCA_AltNames_NonMatching = 2415919687, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_IncorrectData for value: -1879047608 + /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_IncorrectData for value: 2415919688 /// - [EnumMember(Value = "-1879047608")] - ntfLDS_ICAO_Certificate_Ext_NameChange_IncorrectData = 82, + ntfLDS_ICAO_Certificate_Ext_NameChange_IncorrectData = 2415919688, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_NonCompliant for value: -1879047607 + /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_NonCompliant for value: 2415919689 /// - [EnumMember(Value = "-1879047607")] - ntfLDS_ICAO_Certificate_Ext_NameChange_NonCompliant = 83, + ntfLDS_ICAO_Certificate_Ext_NameChange_NonCompliant = 2415919689, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_Critical for value: -1879047606 + /// Enum ntfLDS_ICAO_Certificate_Ext_NameChange_Critical for value: 2415919690 /// - [EnumMember(Value = "-1879047606")] - ntfLDS_ICAO_Certificate_Ext_NameChange_Critical = 84, + ntfLDS_ICAO_Certificate_Ext_NameChange_Critical = 2415919690, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_NonCompliant for value: -1879047605 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_NonCompliant for value: 2415919691 /// - [EnumMember(Value = "-1879047605")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_NonCompliant = 85, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_NonCompliant = 2415919691, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Critical for value: -1879047604 + /// Enum ntfLDS_ICAO_Certificate_Ext_DocTypeList_Critical for value: 2415919692 /// - [EnumMember(Value = "-1879047604")] - ntfLDS_ICAO_Certificate_Ext_DocTypeList_Critical = 86, + ntfLDS_ICAO_Certificate_Ext_DocTypeList_Critical = 2415919692, /// - /// Enum ntfLDS_ICAO_Certificate_Ext_Optional_Critical for value: -1879047603 + /// Enum ntfLDS_ICAO_Certificate_Ext_Optional_Critical for value: 2415919693 /// - [EnumMember(Value = "-1879047603")] - ntfLDS_ICAO_Certificate_Ext_Optional_Critical = 87, + ntfLDS_ICAO_Certificate_Ext_Optional_Critical = 2415919693, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_NonCompliant for value: -1879047602 + /// Enum ntfLDS_ICAO_Certificate_Subject_NonCompliant for value: 2415919694 /// - [EnumMember(Value = "-1879047602")] - ntfLDS_ICAO_Certificate_Subject_NonCompliant = 88, + ntfLDS_ICAO_Certificate_Subject_NonCompliant = 2415919694, /// - /// Enum ntfLDS_ICAO_Certificate_Subject_CommonNameNonCompliant for value: -1879047601 + /// Enum ntfLDS_ICAO_Certificate_Subject_CommonNameNonCompliant for value: 2415919695 /// - [EnumMember(Value = "-1879047601")] - ntfLDS_ICAO_Certificate_Subject_CommonNameNonCompliant = 89, + ntfLDS_ICAO_Certificate_Subject_CommonNameNonCompliant = 2415919695, /// - /// Enum ntfLDS_ICAO_COM_LDS_Version_Incorrect for value: -1879048160 + /// Enum ntfLDS_ICAO_COM_LDS_Version_Incorrect for value: 2415919136 /// - [EnumMember(Value = "-1879048160")] - ntfLDS_ICAO_COM_LDS_Version_Incorrect = 90, + ntfLDS_ICAO_COM_LDS_Version_Incorrect = 2415919136, /// - /// Enum ntfLDS_ICAO_COM_LDS_Version_Missing for value: -1879048159 + /// Enum ntfLDS_ICAO_COM_LDS_Version_Missing for value: 2415919137 /// - [EnumMember(Value = "-1879048159")] - ntfLDS_ICAO_COM_LDS_Version_Missing = 91, + ntfLDS_ICAO_COM_LDS_Version_Missing = 2415919137, /// - /// Enum ntfLDS_ICAO_COM_Unicode_Version_Incorrect for value: -1879048158 + /// Enum ntfLDS_ICAO_COM_Unicode_Version_Incorrect for value: 2415919138 /// - [EnumMember(Value = "-1879048158")] - ntfLDS_ICAO_COM_Unicode_Version_Incorrect = 92, + ntfLDS_ICAO_COM_Unicode_Version_Incorrect = 2415919138, /// - /// Enum ntfLDS_ICAO_COM_Unicode_Version_Missing for value: -1879048157 + /// Enum ntfLDS_ICAO_COM_Unicode_Version_Missing for value: 2415919139 /// - [EnumMember(Value = "-1879048157")] - ntfLDS_ICAO_COM_Unicode_Version_Missing = 93, + ntfLDS_ICAO_COM_Unicode_Version_Missing = 2415919139, /// - /// Enum ntfLDS_ICAO_COM_DGPM_Incorrect for value: -1879048156 + /// Enum ntfLDS_ICAO_COM_DGPM_Incorrect for value: 2415919140 /// - [EnumMember(Value = "-1879048156")] - ntfLDS_ICAO_COM_DGPM_Incorrect = 94, + ntfLDS_ICAO_COM_DGPM_Incorrect = 2415919140, /// - /// Enum ntfLDS_ICAO_COM_DGPM_Missing for value: -1879048155 + /// Enum ntfLDS_ICAO_COM_DGPM_Missing for value: 2415919141 /// - [EnumMember(Value = "-1879048155")] - ntfLDS_ICAO_COM_DGPM_Missing = 95, + ntfLDS_ICAO_COM_DGPM_Missing = 2415919141, /// - /// Enum ntfLDS_ICAO_COM_DGPM_Unexpected for value: -1879048154 + /// Enum ntfLDS_ICAO_COM_DGPM_Unexpected for value: 2415919142 /// - [EnumMember(Value = "-1879048154")] - ntfLDS_ICAO_COM_DGPM_Unexpected = 96, + ntfLDS_ICAO_COM_DGPM_Unexpected = 2415919142, /// - /// Enum ntfLDS_ICAO_Application_LDSVersion_Unsupported for value: -1879048144 + /// Enum ntfLDS_ICAO_Application_LDSVersion_Unsupported for value: 2415919152 /// - [EnumMember(Value = "-1879048144")] - ntfLDS_ICAO_Application_LDSVersion_Unsupported = 97, + ntfLDS_ICAO_Application_LDSVersion_Unsupported = 2415919152, /// - /// Enum ntfLDS_ICAO_Application_UnicodeVersion_Unsupported for value: -1879048143 + /// Enum ntfLDS_ICAO_Application_UnicodeVersion_Unsupported for value: 2415919153 /// - [EnumMember(Value = "-1879048143")] - ntfLDS_ICAO_Application_UnicodeVersion_Unsupported = 98, + ntfLDS_ICAO_Application_UnicodeVersion_Unsupported = 2415919153, /// - /// Enum ntfLDS_ICAO_Application_LDSVersion_Inconsistent for value: -1879048142 + /// Enum ntfLDS_ICAO_Application_LDSVersion_Inconsistent for value: 2415919154 /// - [EnumMember(Value = "-1879048142")] - ntfLDS_ICAO_Application_LDSVersion_Inconsistent = 99, + ntfLDS_ICAO_Application_LDSVersion_Inconsistent = 2415919154, /// - /// Enum ntfLDS_ICAO_Application_UnicodeVersion_Inconsistent for value: -1879048141 + /// Enum ntfLDS_ICAO_Application_UnicodeVersion_Inconsistent for value: 2415919155 /// - [EnumMember(Value = "-1879048141")] - ntfLDS_ICAO_Application_UnicodeVersion_Inconsistent = 100, + ntfLDS_ICAO_Application_UnicodeVersion_Inconsistent = 2415919155, /// - /// Enum ntfLDS_ASN_SignedData_OID_Incorrect for value: -1879047936 + /// Enum ntfLDS_ASN_SignedData_OID_Incorrect for value: 2415919360 /// - [EnumMember(Value = "-1879047936")] - ntfLDS_ASN_SignedData_OID_Incorrect = 101, + ntfLDS_ASN_SignedData_OID_Incorrect = 2415919360, /// - /// Enum ntfLDS_ASN_SignedData_Version_Incorrect for value: -1879047776 + /// Enum ntfLDS_ASN_SignedData_Version_Incorrect for value: 2415919520 /// - [EnumMember(Value = "-1879047776")] - ntfLDS_ASN_SignedData_Version_Incorrect = 102, + ntfLDS_ASN_SignedData_Version_Incorrect = 2415919520, /// - /// Enum ntfLDS_ASN_SignedData_ContentOID_Incorrect for value: -1879047775 + /// Enum ntfLDS_ASN_SignedData_ContentOID_Incorrect for value: 2415919521 /// - [EnumMember(Value = "-1879047775")] - ntfLDS_ASN_SignedData_ContentOID_Incorrect = 103, + ntfLDS_ASN_SignedData_ContentOID_Incorrect = 2415919521, /// - /// Enum ntfLDS_ICAO_SignedData_Version_Incorrect for value: -1879047935 + /// Enum ntfLDS_ICAO_SignedData_Version_Incorrect for value: 2415919361 /// - [EnumMember(Value = "-1879047935")] - ntfLDS_ICAO_SignedData_Version_Incorrect = 104, + ntfLDS_ICAO_SignedData_Version_Incorrect = 2415919361, /// - /// Enum ntfLDS_ICAO_SignedData_DigestAlgorithms_Empty for value: -1879047934 + /// Enum ntfLDS_ICAO_SignedData_DigestAlgorithms_Empty for value: 2415919362 /// - [EnumMember(Value = "-1879047934")] - ntfLDS_ICAO_SignedData_DigestAlgorithms_Empty = 105, + ntfLDS_ICAO_SignedData_DigestAlgorithms_Empty = 2415919362, /// - /// Enum ntfLDS_ICAO_SignedData_DigestAlgorithms_Unsupported for value: -1879047933 + /// Enum ntfLDS_ICAO_SignedData_DigestAlgorithms_Unsupported for value: 2415919363 /// - [EnumMember(Value = "-1879047933")] - ntfLDS_ICAO_SignedData_DigestAlgorithms_Unsupported = 106, + ntfLDS_ICAO_SignedData_DigestAlgorithms_Unsupported = 2415919363, /// - /// Enum ntfLDS_ICAO_SignedData_SignerInfos_MultipleEntries for value: -1879047927 + /// Enum ntfLDS_ICAO_SignedData_SignerInfos_MultipleEntries for value: 2415919369 /// - [EnumMember(Value = "-1879047927")] - ntfLDS_ICAO_SignedData_SignerInfos_MultipleEntries = 107, + ntfLDS_ICAO_SignedData_SignerInfos_MultipleEntries = 2415919369, /// - /// Enum ntfLDS_ICAO_SignedData_Certificates_Missed for value: -1879047760 + /// Enum ntfLDS_ICAO_SignedData_Certificates_Missed for value: 2415919536 /// - [EnumMember(Value = "-1879047760")] - ntfLDS_ICAO_SignedData_Certificates_Missed = 108, + ntfLDS_ICAO_SignedData_Certificates_Missed = 2415919536, /// - /// Enum ntfLDS_ICAO_SignedData_Certificates_Empty for value: -1879047759 + /// Enum ntfLDS_ICAO_SignedData_Certificates_Empty for value: 2415919537 /// - [EnumMember(Value = "-1879047759")] - ntfLDS_ICAO_SignedData_Certificates_Empty = 109, + ntfLDS_ICAO_SignedData_Certificates_Empty = 2415919537, /// - /// Enum ntfLDS_ICAO_SignedData_CRLs_IncorrectUsage for value: -1879047758 + /// Enum ntfLDS_ICAO_SignedData_CRLs_IncorrectUsage for value: 2415919538 /// - [EnumMember(Value = "-1879047758")] - ntfLDS_ICAO_SignedData_CRLs_IncorrectUsage = 110, + ntfLDS_ICAO_SignedData_CRLs_IncorrectUsage = 2415919538, /// - /// Enum ntfLDS_ICAO_LDSObject_IncorrectContentOID for value: -1879047932 + /// Enum ntfLDS_ICAO_LDSObject_IncorrectContentOID for value: 2415919364 /// - [EnumMember(Value = "-1879047932")] - ntfLDS_ICAO_LDSObject_IncorrectContentOID = 111, + ntfLDS_ICAO_LDSObject_IncorrectContentOID = 2415919364, /// - /// Enum ntfLDS_ICAO_LDSObject_DGNumber_Incorrect for value: -1879047931 + /// Enum ntfLDS_ICAO_LDSObject_DGNumber_Incorrect for value: 2415919365 /// - [EnumMember(Value = "-1879047931")] - ntfLDS_ICAO_LDSObject_DGNumber_Incorrect = 112, + ntfLDS_ICAO_LDSObject_DGNumber_Incorrect = 2415919365, /// - /// Enum ntfLDS_ICAO_LDSObject_DGHash_Missing for value: -1879047930 + /// Enum ntfLDS_ICAO_LDSObject_DGHash_Missing for value: 2415919366 /// - [EnumMember(Value = "-1879047930")] - ntfLDS_ICAO_LDSObject_DGHash_Missing = 113, + ntfLDS_ICAO_LDSObject_DGHash_Missing = 2415919366, /// - /// Enum ntfLDS_ICAO_LDSObject_DGHash_Extra for value: -1879047929 + /// Enum ntfLDS_ICAO_LDSObject_DGHash_Extra for value: 2415919367 /// - [EnumMember(Value = "-1879047929")] - ntfLDS_ICAO_LDSObject_DGHash_Extra = 114, + ntfLDS_ICAO_LDSObject_DGHash_Extra = 2415919367, /// - /// Enum ntfLDS_ICAO_LDSObject_Version_Incorrect for value: -1879047928 + /// Enum ntfLDS_ICAO_LDSObject_Version_Incorrect for value: 2415919368 /// - [EnumMember(Value = "-1879047928")] - ntfLDS_ICAO_LDSObject_Version_Incorrect = 115, + ntfLDS_ICAO_LDSObject_Version_Incorrect = 2415919368, /// - /// Enum ntfLDS_ICAO_MasterList_Version_Incorrect for value: -1879047744 + /// Enum ntfLDS_ICAO_MasterList_Version_Incorrect for value: 2415919552 /// - [EnumMember(Value = "-1879047744")] - ntfLDS_ICAO_MasterList_Version_Incorrect = 116, + ntfLDS_ICAO_MasterList_Version_Incorrect = 2415919552, /// - /// Enum ntfLDS_ICAO_DeviationList_Version_Incorrect for value: -1879047736 + /// Enum ntfLDS_ICAO_DeviationList_Version_Incorrect for value: 2415919560 /// - [EnumMember(Value = "-1879047736")] - ntfLDS_ICAO_DeviationList_Version_Incorrect = 117, + ntfLDS_ICAO_DeviationList_Version_Incorrect = 2415919560, /// - /// Enum ntfLDS_BSI_DefectList_Version_Incorrect for value: -1879047728 + /// Enum ntfLDS_BSI_DefectList_Version_Incorrect for value: 2415919568 /// - [EnumMember(Value = "-1879047728")] - ntfLDS_BSI_DefectList_Version_Incorrect = 118, + ntfLDS_BSI_DefectList_Version_Incorrect = 2415919568, /// - /// Enum ntfLDS_BSI_BlackList_Version_Incorrect for value: -1879047720 + /// Enum ntfLDS_BSI_BlackList_Version_Incorrect for value: 2415919576 /// - [EnumMember(Value = "-1879047720")] - ntfLDS_BSI_BlackList_Version_Incorrect = 119, + ntfLDS_BSI_BlackList_Version_Incorrect = 2415919576, /// - /// Enum ntfLDS_ASN_SignerInfo_Version_Incorrect for value: -1879047926 + /// Enum ntfLDS_ASN_SignerInfo_Version_Incorrect for value: 2415919370 /// - [EnumMember(Value = "-1879047926")] - ntfLDS_ASN_SignerInfo_Version_Incorrect = 120, + ntfLDS_ASN_SignerInfo_Version_Incorrect = 2415919370, /// - /// Enum ntfLDS_ASN_SignerInfo_SID_IncorrectChoice for value: -1879047925 + /// Enum ntfLDS_ASN_SignerInfo_SID_IncorrectChoice for value: 2415919371 /// - [EnumMember(Value = "-1879047925")] - ntfLDS_ASN_SignerInfo_SID_IncorrectChoice = 121, + ntfLDS_ASN_SignerInfo_SID_IncorrectChoice = 2415919371, /// - /// Enum ntfLDS_ASN_SignerInfo_SID_DigestAlgorithmNotListed for value: -1879047924 + /// Enum ntfLDS_ASN_SignerInfo_SID_DigestAlgorithmNotListed for value: 2415919372 /// - [EnumMember(Value = "-1879047924")] - ntfLDS_ASN_SignerInfo_SID_DigestAlgorithmNotListed = 122, + ntfLDS_ASN_SignerInfo_SID_DigestAlgorithmNotListed = 2415919372, /// - /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Missing for value: -1879047923 + /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Missing for value: 2415919373 /// - [EnumMember(Value = "-1879047923")] - ntfLDS_ASN_SignerInfo_MessageDigestAttr_Missing = 123, + ntfLDS_ASN_SignerInfo_MessageDigestAttr_Missing = 2415919373, /// - /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Data for value: -1879047922 + /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Data for value: 2415919374 /// - [EnumMember(Value = "-1879047922")] - ntfLDS_ASN_SignerInfo_MessageDigestAttr_Data = 124, + ntfLDS_ASN_SignerInfo_MessageDigestAttr_Data = 2415919374, /// - /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Value for value: -1879047921 + /// Enum ntfLDS_ASN_SignerInfo_MessageDigestAttr_Value for value: 2415919375 /// - [EnumMember(Value = "-1879047921")] - ntfLDS_ASN_SignerInfo_MessageDigestAttr_Value = 125, + ntfLDS_ASN_SignerInfo_MessageDigestAttr_Value = 2415919375, /// - /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Missing for value: -1879047920 + /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Missing for value: 2415919376 /// - [EnumMember(Value = "-1879047920")] - ntfLDS_ASN_SignerInfo_ContentTypeAttr_Missing = 126, + ntfLDS_ASN_SignerInfo_ContentTypeAttr_Missing = 2415919376, /// - /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Data for value: -1879047919 + /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Data for value: 2415919377 /// - [EnumMember(Value = "-1879047919")] - ntfLDS_ASN_SignerInfo_ContentTypeAttr_Data = 127, + ntfLDS_ASN_SignerInfo_ContentTypeAttr_Data = 2415919377, /// - /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Value for value: -1879047918 + /// Enum ntfLDS_ASN_SignerInfo_ContentTypeAttr_Value for value: 2415919378 /// - [EnumMember(Value = "-1879047918")] - ntfLDS_ASN_SignerInfo_ContentTypeAttr_Value = 128, + ntfLDS_ASN_SignerInfo_ContentTypeAttr_Value = 2415919378, /// - /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Missing for value: -1879047909 + /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Missing for value: 2415919387 /// - [EnumMember(Value = "-1879047909")] - ntfLDS_ASN_SignerInfo_SigningTimeAttr_Missing = 129, + ntfLDS_ASN_SignerInfo_SigningTimeAttr_Missing = 2415919387, /// - /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Data for value: -1879047908 + /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Data for value: 2415919388 /// - [EnumMember(Value = "-1879047908")] - ntfLDS_ASN_SignerInfo_SigningTimeAttr_Data = 130, + ntfLDS_ASN_SignerInfo_SigningTimeAttr_Data = 2415919388, /// - /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Value for value: -1879047907 + /// Enum ntfLDS_ASN_SignerInfo_SigningTimeAttr_Value for value: 2415919389 /// - [EnumMember(Value = "-1879047907")] - ntfLDS_ASN_SignerInfo_SigningTimeAttr_Value = 131, + ntfLDS_ASN_SignerInfo_SigningTimeAttr_Value = 2415919389, /// - /// Enum ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Missing for value: -1879047906 + /// Enum ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Missing for value: 2415919390 /// - [EnumMember(Value = "-1879047906")] - ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Missing = 132, + ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Missing = 2415919390, /// - /// Enum ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Data for value: -1879047905 + /// Enum ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Data for value: 2415919391 /// - [EnumMember(Value = "-1879047905")] - ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Data = 133, + ntfLDS_ASN_SignerInfo_ListContentDescriptionAttr_Data = 2415919391, /// - /// Enum ntfLDS_Auth_SignerInfo_Certificate_Validity for value: -1879047915 + /// Enum ntfLDS_Auth_SignerInfo_Certificate_Validity for value: 2415919381 /// - [EnumMember(Value = "-1879047915")] - ntfLDS_Auth_SignerInfo_Certificate_Validity = 134, + ntfLDS_Auth_SignerInfo_Certificate_Validity = 2415919381, /// - /// Enum ntfLDS_Auth_SignerInfo_Certificate_RootIsNotTrusted for value: -1879047914 + /// Enum ntfLDS_Auth_SignerInfo_Certificate_RootIsNotTrusted for value: 2415919382 /// - [EnumMember(Value = "-1879047914")] - ntfLDS_Auth_SignerInfo_Certificate_RootIsNotTrusted = 135, + ntfLDS_Auth_SignerInfo_Certificate_RootIsNotTrusted = 2415919382, /// - /// Enum ntfLDS_Auth_SignerInfo_Certificate_CantFindCSCA for value: -1879047913 + /// Enum ntfLDS_Auth_SignerInfo_Certificate_CantFindCSCA for value: 2415919383 /// - [EnumMember(Value = "-1879047913")] - ntfLDS_Auth_SignerInfo_Certificate_CantFindCSCA = 136, + ntfLDS_Auth_SignerInfo_Certificate_CantFindCSCA = 2415919383, /// - /// Enum ntfLDS_Auth_SignerInfo_Certificate_Revoked for value: -1879047912 + /// Enum ntfLDS_Auth_SignerInfo_Certificate_Revoked for value: 2415919384 /// - [EnumMember(Value = "-1879047912")] - ntfLDS_Auth_SignerInfo_Certificate_Revoked = 137, + ntfLDS_Auth_SignerInfo_Certificate_Revoked = 2415919384, /// - /// Enum ntfLDS_Auth_SignerInfo_Certificate_SignatureInvalid for value: -1879047911 + /// Enum ntfLDS_Auth_SignerInfo_Certificate_SignatureInvalid for value: 2415919385 /// - [EnumMember(Value = "-1879047911")] - ntfLDS_Auth_SignerInfo_Certificate_SignatureInvalid = 138, + ntfLDS_Auth_SignerInfo_Certificate_SignatureInvalid = 2415919385, /// - /// Enum ntfLDS_UnsupportedImageFormat for value: -1879047910 + /// Enum ntfLDS_UnsupportedImageFormat for value: 2415919386 /// - [EnumMember(Value = "-1879047910")] - ntfLDS_UnsupportedImageFormat = 139, + ntfLDS_UnsupportedImageFormat = 2415919386, /// /// Enum ntfLDS_MRZ_DocumentType_Unknown for value: 139272 /// - [EnumMember(Value = "139272")] - ntfLDS_MRZ_DocumentType_Unknown = 140, + ntfLDS_MRZ_DocumentType_Unknown = 139272, /// /// Enum ntfLDS_MRZ_IssuingState_SyntaxError for value: 139273 /// - [EnumMember(Value = "139273")] - ntfLDS_MRZ_IssuingState_SyntaxError = 141, + ntfLDS_MRZ_IssuingState_SyntaxError = 139273, /// /// Enum ntfLDS_MRZ_Name_IsVoid for value: 139274 /// - [EnumMember(Value = "139274")] - ntfLDS_MRZ_Name_IsVoid = 142, + ntfLDS_MRZ_Name_IsVoid = 139274, /// /// Enum ntfLDS_MRZ_Number_IncorrectChecksum for value: 139277 /// - [EnumMember(Value = "139277")] - ntfLDS_MRZ_Number_IncorrectChecksum = 143, + ntfLDS_MRZ_Number_IncorrectChecksum = 139277, /// /// Enum ntfLDS_MRZ_Nationality_SyntaxError for value: 139278 /// - [EnumMember(Value = "139278")] - ntfLDS_MRZ_Nationality_SyntaxError = 144, + ntfLDS_MRZ_Nationality_SyntaxError = 139278, /// /// Enum ntfLDS_MRZ_DOB_SyntaxError for value: 139279 /// - [EnumMember(Value = "139279")] - ntfLDS_MRZ_DOB_SyntaxError = 145, + ntfLDS_MRZ_DOB_SyntaxError = 139279, /// /// Enum ntfLDS_MRZ_DOB_Error for value: 139280 /// - [EnumMember(Value = "139280")] - ntfLDS_MRZ_DOB_Error = 146, + ntfLDS_MRZ_DOB_Error = 139280, /// /// Enum ntfLDS_MRZ_DOB_IncorrectChecksum for value: 139281 /// - [EnumMember(Value = "139281")] - ntfLDS_MRZ_DOB_IncorrectChecksum = 147, + ntfLDS_MRZ_DOB_IncorrectChecksum = 139281, /// /// Enum ntfLDS_MRZ_Sex_Incorrect for value: 139282 /// - [EnumMember(Value = "139282")] - ntfLDS_MRZ_Sex_Incorrect = 148, + ntfLDS_MRZ_Sex_Incorrect = 139282, /// /// Enum ntfLDS_MRZ_DOE_SyntaxError for value: 139283 /// - [EnumMember(Value = "139283")] - ntfLDS_MRZ_DOE_SyntaxError = 149, + ntfLDS_MRZ_DOE_SyntaxError = 139283, /// /// Enum ntfLDS_MRZ_DOE_Error for value: 139284 /// - [EnumMember(Value = "139284")] - ntfLDS_MRZ_DOE_Error = 150, + ntfLDS_MRZ_DOE_Error = 139284, /// /// Enum ntfLDS_MRZ_DOE_IncorrectChecksum for value: 139285 /// - [EnumMember(Value = "139285")] - ntfLDS_MRZ_DOE_IncorrectChecksum = 151, + ntfLDS_MRZ_DOE_IncorrectChecksum = 139285, /// /// Enum ntfLDS_MRZ_OptionalData_IncorrectChecksum for value: 139286 /// - [EnumMember(Value = "139286")] - ntfLDS_MRZ_OptionalData_IncorrectChecksum = 152, + ntfLDS_MRZ_OptionalData_IncorrectChecksum = 139286, /// /// Enum ntfLDS_MRZ_IncorrectChecksum for value: 139287 /// - [EnumMember(Value = "139287")] - ntfLDS_MRZ_IncorrectChecksum = 153, + ntfLDS_MRZ_IncorrectChecksum = 139287, /// /// Enum ntfLDS_MRZ_Incorrect for value: 139288 /// - [EnumMember(Value = "139288")] - ntfLDS_MRZ_Incorrect = 154, + ntfLDS_MRZ_Incorrect = 139288, /// - /// Enum ntfLDS_Biometrics_FormatOwner_Missing for value: -1878982656 + /// Enum ntfLDS_Biometrics_FormatOwner_Missing for value: 2415984640 /// - [EnumMember(Value = "-1878982656")] - ntfLDS_Biometrics_FormatOwner_Missing = 155, + ntfLDS_Biometrics_FormatOwner_Missing = 2415984640, /// - /// Enum ntfLDS_Biometrics_FormatOwner_Incorrect for value: -1878917120 + /// Enum ntfLDS_Biometrics_FormatOwner_Incorrect for value: 2416050176 /// - [EnumMember(Value = "-1878917120")] - ntfLDS_Biometrics_FormatOwner_Incorrect = 156, + ntfLDS_Biometrics_FormatOwner_Incorrect = 2416050176, /// - /// Enum ntfLDS_Biometrics_FormatType_Missing for value: -1878851584 + /// Enum ntfLDS_Biometrics_FormatType_Missing for value: 2416115712 /// - [EnumMember(Value = "-1878851584")] - ntfLDS_Biometrics_FormatType_Missing = 157, + ntfLDS_Biometrics_FormatType_Missing = 2416115712, /// - /// Enum ntfLDS_Biometrics_FormatType_Incorrect for value: -1878786048 + /// Enum ntfLDS_Biometrics_FormatType_Incorrect for value: 2416181248 /// - [EnumMember(Value = "-1878786048")] - ntfLDS_Biometrics_FormatType_Incorrect = 158, + ntfLDS_Biometrics_FormatType_Incorrect = 2416181248, /// - /// Enum ntfLDS_Biometrics_Type_Incorrect for value: -1878720512 + /// Enum ntfLDS_Biometrics_Type_Incorrect for value: 2416246784 /// - [EnumMember(Value = "-1878720512")] - ntfLDS_Biometrics_Type_Incorrect = 159, + ntfLDS_Biometrics_Type_Incorrect = 2416246784, /// - /// Enum ntfLDS_Biometrics_SubType_Missing for value: -1878654976 + /// Enum ntfLDS_Biometrics_SubType_Missing for value: 2416312320 /// - [EnumMember(Value = "-1878654976")] - ntfLDS_Biometrics_SubType_Missing = 160, + ntfLDS_Biometrics_SubType_Missing = 2416312320, /// - /// Enum ntfLDS_Biometrics_SubType_Incorrect for value: -1878589440 + /// Enum ntfLDS_Biometrics_SubType_Incorrect for value: 2416377856 /// - [EnumMember(Value = "-1878589440")] - ntfLDS_Biometrics_SubType_Incorrect = 161, + ntfLDS_Biometrics_SubType_Incorrect = 2416377856, /// - /// Enum ntfLDS_Biometrics_BDB_Image_Missing for value: -1878523904 + /// Enum ntfLDS_Biometrics_BDB_Image_Missing for value: 2416443392 /// - [EnumMember(Value = "-1878523904")] - ntfLDS_Biometrics_BDB_Image_Missing = 162, + ntfLDS_Biometrics_BDB_Image_Missing = 2416443392, /// - /// Enum ntfLDS_Biometrics_BDB_FormatID_Incorrect for value: -1878458368 + /// Enum ntfLDS_Biometrics_BDB_FormatID_Incorrect for value: 2416508928 /// - [EnumMember(Value = "-1878458368")] - ntfLDS_Biometrics_BDB_FormatID_Incorrect = 163, + ntfLDS_Biometrics_BDB_FormatID_Incorrect = 2416508928, /// - /// Enum ntfLDS_Biometrics_BDB_Version_Incorrect for value: -1878392832 + /// Enum ntfLDS_Biometrics_BDB_Version_Incorrect for value: 2416574464 /// - [EnumMember(Value = "-1878392832")] - ntfLDS_Biometrics_BDB_Version_Incorrect = 164, + ntfLDS_Biometrics_BDB_Version_Incorrect = 2416574464, /// - /// Enum ntfLDS_Biometrics_BDB_DataLength_Incorrect for value: -1878327296 + /// Enum ntfLDS_Biometrics_BDB_DataLength_Incorrect for value: 2416640000 /// - [EnumMember(Value = "-1878327296")] - ntfLDS_Biometrics_BDB_DataLength_Incorrect = 165, + ntfLDS_Biometrics_BDB_DataLength_Incorrect = 2416640000, /// - /// Enum ntfLDS_Biometrics_BDB_Data_Gender for value: -1877999616 + /// Enum ntfLDS_Biometrics_BDB_Data_Gender for value: 2416967680 /// - [EnumMember(Value = "-1877999616")] - ntfLDS_Biometrics_BDB_Data_Gender = 166, + ntfLDS_Biometrics_BDB_Data_Gender = 2416967680, /// - /// Enum ntfLDS_Biometrics_BDB_Data_EyeColor for value: -1877934080 + /// Enum ntfLDS_Biometrics_BDB_Data_EyeColor for value: 2417033216 /// - [EnumMember(Value = "-1877934080")] - ntfLDS_Biometrics_BDB_Data_EyeColor = 167, + ntfLDS_Biometrics_BDB_Data_EyeColor = 2417033216, /// - /// Enum ntfLDS_Biometrics_BDB_Data_HairColor for value: -1877868544 + /// Enum ntfLDS_Biometrics_BDB_Data_HairColor for value: 2417098752 /// - [EnumMember(Value = "-1877868544")] - ntfLDS_Biometrics_BDB_Data_HairColor = 168, + ntfLDS_Biometrics_BDB_Data_HairColor = 2417098752, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Yaw for value: -1877803008 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Yaw for value: 2417164288 /// - [EnumMember(Value = "-1877803008")] - ntfLDS_Biometrics_BDB_Data_PoseAngle_Yaw = 169, + ntfLDS_Biometrics_BDB_Data_PoseAngle_Yaw = 2417164288, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Pitch for value: -1877737472 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Pitch for value: 2417229824 /// - [EnumMember(Value = "-1877737472")] - ntfLDS_Biometrics_BDB_Data_PoseAngle_Pitch = 170, + ntfLDS_Biometrics_BDB_Data_PoseAngle_Pitch = 2417229824, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Roll for value: -1877671936 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngle_Roll for value: 2417295360 /// - [EnumMember(Value = "-1877671936")] - ntfLDS_Biometrics_BDB_Data_PoseAngle_Roll = 171, + ntfLDS_Biometrics_BDB_Data_PoseAngle_Roll = 2417295360, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Yaw for value: -1877606400 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Yaw for value: 2417360896 /// - [EnumMember(Value = "-1877606400")] - ntfLDS_Biometrics_BDB_Data_PoseAngleU_Yaw = 172, + ntfLDS_Biometrics_BDB_Data_PoseAngleU_Yaw = 2417360896, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Pitch for value: -1877540864 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Pitch for value: 2417426432 /// - [EnumMember(Value = "-1877540864")] - ntfLDS_Biometrics_BDB_Data_PoseAngleU_Pitch = 173, + ntfLDS_Biometrics_BDB_Data_PoseAngleU_Pitch = 2417426432, /// - /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Roll for value: -1877475328 + /// Enum ntfLDS_Biometrics_BDB_Data_PoseAngleU_Roll for value: 2417491968 /// - [EnumMember(Value = "-1877475328")] - ntfLDS_Biometrics_BDB_Data_PoseAngleU_Roll = 174, + ntfLDS_Biometrics_BDB_Data_PoseAngleU_Roll = 2417491968, /// - /// Enum ntfLDS_Biometrics_BDB_Data_FaceImageType for value: -1877409792 + /// Enum ntfLDS_Biometrics_BDB_Data_FaceImageType for value: 2417557504 /// - [EnumMember(Value = "-1877409792")] - ntfLDS_Biometrics_BDB_Data_FaceImageType = 175, + ntfLDS_Biometrics_BDB_Data_FaceImageType = 2417557504, /// - /// Enum ntfLDS_Biometrics_BDB_Data_ImageDataType for value: -1877344256 + /// Enum ntfLDS_Biometrics_BDB_Data_ImageDataType for value: 2417623040 /// - [EnumMember(Value = "-1877344256")] - ntfLDS_Biometrics_BDB_Data_ImageDataType = 176, + ntfLDS_Biometrics_BDB_Data_ImageDataType = 2417623040, /// - /// Enum ntfLDS_SI_PACE_Info_UnsupportedStdParameters for value: -1862270976 + /// Enum ntfLDS_SI_PACE_Info_UnsupportedStdParameters for value: 2432696320 /// - [EnumMember(Value = "-1862270976")] - ntfLDS_SI_PACE_Info_UnsupportedStdParameters = 177, + ntfLDS_SI_PACE_Info_UnsupportedStdParameters = 2432696320, /// - /// Enum ntfLDS_SI_PACE_Info_DeprecatedVersion for value: -1862270975 + /// Enum ntfLDS_SI_PACE_Info_DeprecatedVersion for value: 2432696321 /// - [EnumMember(Value = "-1862270975")] - ntfLDS_SI_PACE_Info_DeprecatedVersion = 178, + ntfLDS_SI_PACE_Info_DeprecatedVersion = 2432696321, /// - /// Enum ntfLDS_SI_PACE_DomainParams_UsingStdRef for value: -1862270974 + /// Enum ntfLDS_SI_PACE_DomainParams_UsingStdRef for value: 2432696322 /// - [EnumMember(Value = "-1862270974")] - ntfLDS_SI_PACE_DomainParams_UsingStdRef = 179, + ntfLDS_SI_PACE_DomainParams_UsingStdRef = 2432696322, /// - /// Enum ntfLDS_SI_PACE_DomainParams_UnsupportedAlgorithm for value: -1862270973 + /// Enum ntfLDS_SI_PACE_DomainParams_UnsupportedAlgorithm for value: 2432696323 /// - [EnumMember(Value = "-1862270973")] - ntfLDS_SI_PACE_DomainParams_UnsupportedAlgorithm = 180, + ntfLDS_SI_PACE_DomainParams_UnsupportedAlgorithm = 2432696323, /// - /// Enum ntfLDS_SI_CA_Info_IncorrectVersion for value: -1862270972 + /// Enum ntfLDS_SI_CA_Info_IncorrectVersion for value: 2432696324 /// - [EnumMember(Value = "-1862270972")] - ntfLDS_SI_CA_Info_IncorrectVersion = 181, + ntfLDS_SI_CA_Info_IncorrectVersion = 2432696324, /// - /// Enum ntfLDS_SI_CA_PublicKey_UnsupportedAlgorithm for value: -1862270971 + /// Enum ntfLDS_SI_CA_PublicKey_UnsupportedAlgorithm for value: 2432696325 /// - [EnumMember(Value = "-1862270971")] - ntfLDS_SI_CA_PublicKey_UnsupportedAlgorithm = 182, + ntfLDS_SI_CA_PublicKey_UnsupportedAlgorithm = 2432696325, /// - /// Enum ntfLDS_SI_CA_DomainParams_UnsupportedAlgorithm for value: -1862270970 + /// Enum ntfLDS_SI_CA_DomainParams_UnsupportedAlgorithm for value: 2432696326 /// - [EnumMember(Value = "-1862270970")] - ntfLDS_SI_CA_DomainParams_UnsupportedAlgorithm = 183, + ntfLDS_SI_CA_DomainParams_UnsupportedAlgorithm = 2432696326, /// - /// Enum ntfLDS_SI_TA_Info_IncorrectVersion for value: -1862270969 + /// Enum ntfLDS_SI_TA_Info_IncorrectVersion for value: 2432696327 /// - [EnumMember(Value = "-1862270969")] - ntfLDS_SI_TA_Info_IncorrectVersion = 184, + ntfLDS_SI_TA_Info_IncorrectVersion = 2432696327, /// - /// Enum ntfLDS_SI_TA_Info_FileIDForVersion2 for value: -1862270968 + /// Enum ntfLDS_SI_TA_Info_FileIDForVersion2 for value: 2432696328 /// - [EnumMember(Value = "-1862270968")] - ntfLDS_SI_TA_Info_FileIDForVersion2 = 185, + ntfLDS_SI_TA_Info_FileIDForVersion2 = 2432696328, /// - /// Enum ntfLDS_SI_eIDSecurity_UnsupportedDigestAlgorithm for value: -1862270967 + /// Enum ntfLDS_SI_eIDSecurity_UnsupportedDigestAlgorithm for value: 2432696329 /// - [EnumMember(Value = "-1862270967")] - ntfLDS_SI_eIDSecurity_UnsupportedDigestAlgorithm = 186, + ntfLDS_SI_eIDSecurity_UnsupportedDigestAlgorithm = 2432696329, /// - /// Enum ntfLDS_SI_RI_Info_IncorrectVersion for value: -1862270966 + /// Enum ntfLDS_SI_RI_Info_IncorrectVersion for value: 2432696330 /// - [EnumMember(Value = "-1862270966")] - ntfLDS_SI_RI_Info_IncorrectVersion = 187, + ntfLDS_SI_RI_Info_IncorrectVersion = 2432696330, /// - /// Enum ntfLDS_SI_RI_DomainParams_UnsupportedAlgorithm for value: -1862270965 + /// Enum ntfLDS_SI_RI_DomainParams_UnsupportedAlgorithm for value: 2432696331 /// - [EnumMember(Value = "-1862270965")] - ntfLDS_SI_RI_DomainParams_UnsupportedAlgorithm = 188, + ntfLDS_SI_RI_DomainParams_UnsupportedAlgorithm = 2432696331, /// - /// Enum ntfLDS_SI_AA_Info_IncorrectVersion for value: -1862270964 + /// Enum ntfLDS_SI_AA_Info_IncorrectVersion for value: 2432696332 /// - [EnumMember(Value = "-1862270964")] - ntfLDS_SI_AA_Info_IncorrectVersion = 189, + ntfLDS_SI_AA_Info_IncorrectVersion = 2432696332, /// - /// Enum ntfLDS_SI_AA_Info_UnsupportedAlgorithm for value: -1862270963 + /// Enum ntfLDS_SI_AA_Info_UnsupportedAlgorithm for value: 2432696333 /// - [EnumMember(Value = "-1862270963")] - ntfLDS_SI_AA_Info_UnsupportedAlgorithm = 190, + ntfLDS_SI_AA_Info_UnsupportedAlgorithm = 2432696333, /// - /// Enum ntfLDS_SI_AA_Info_InconsistentAlgorithmReference for value: -1862270962 + /// Enum ntfLDS_SI_AA_Info_InconsistentAlgorithmReference for value: 2432696334 /// - [EnumMember(Value = "-1862270962")] - ntfLDS_SI_AA_Info_InconsistentAlgorithmReference = 191, + ntfLDS_SI_AA_Info_InconsistentAlgorithmReference = 2432696334, /// - /// Enum ntfLDS_SI_Storage_PACE_Info_NotAvailable for value: -1862270720 + /// Enum ntfLDS_SI_Storage_PACE_Info_NotAvailable for value: 2432696576 /// - [EnumMember(Value = "-1862270720")] - ntfLDS_SI_Storage_PACE_Info_NotAvailable = 192, + ntfLDS_SI_Storage_PACE_Info_NotAvailable = 2432696576, /// - /// Enum ntfLDS_SI_Storage_PACE_Info_NoStdParameters for value: -1862270719 + /// Enum ntfLDS_SI_Storage_PACE_Info_NoStdParameters for value: 2432696577 /// - [EnumMember(Value = "-1862270719")] - ntfLDS_SI_Storage_PACE_Info_NoStdParameters = 193, + ntfLDS_SI_Storage_PACE_Info_NoStdParameters = 2432696577, /// - /// Enum ntfLDS_SI_Storage_PACE_Info_NoMatchingDomainParams for value: -1862270718 + /// Enum ntfLDS_SI_Storage_PACE_Info_NoMatchingDomainParams for value: 2432696578 /// - [EnumMember(Value = "-1862270718")] - ntfLDS_SI_Storage_PACE_Info_NoMatchingDomainParams = 194, + ntfLDS_SI_Storage_PACE_Info_NoMatchingDomainParams = 2432696578, /// - /// Enum ntfLDS_SI_Storage_CA_Info_NotAvailable for value: -1862270717 + /// Enum ntfLDS_SI_Storage_CA_Info_NotAvailable for value: 2432696579 /// - [EnumMember(Value = "-1862270717")] - ntfLDS_SI_Storage_CA_Info_NotAvailable = 195, + ntfLDS_SI_Storage_CA_Info_NotAvailable = 2432696579, /// - /// Enum ntfLDS_SI_Storage_CA_DomainParams_NoRequiredOption for value: -1862270716 + /// Enum ntfLDS_SI_Storage_CA_DomainParams_NoRequiredOption for value: 2432696580 /// - [EnumMember(Value = "-1862270716")] - ntfLDS_SI_Storage_CA_DomainParams_NoRequiredOption = 196, + ntfLDS_SI_Storage_CA_DomainParams_NoRequiredOption = 2432696580, /// - /// Enum ntfLDS_SI_Storage_CA_DomainParams_NotAvailable for value: -1862270715 + /// Enum ntfLDS_SI_Storage_CA_DomainParams_NotAvailable for value: 2432696581 /// - [EnumMember(Value = "-1862270715")] - ntfLDS_SI_Storage_CA_DomainParams_NotAvailable = 197, + ntfLDS_SI_Storage_CA_DomainParams_NotAvailable = 2432696581, /// - /// Enum ntfLDS_SI_Storage_CA_AnonymousInfos for value: -1862270714 + /// Enum ntfLDS_SI_Storage_CA_AnonymousInfos for value: 2432696582 /// - [EnumMember(Value = "-1862270714")] - ntfLDS_SI_Storage_CA_AnonymousInfos = 198, + ntfLDS_SI_Storage_CA_AnonymousInfos = 2432696582, /// - /// Enum ntfLDS_SI_Storage_CA_Info_NoMatchingDomainParams for value: -1862270713 + /// Enum ntfLDS_SI_Storage_CA_Info_NoMatchingDomainParams for value: 2432696583 /// - [EnumMember(Value = "-1862270713")] - ntfLDS_SI_Storage_CA_Info_NoMatchingDomainParams = 199, + ntfLDS_SI_Storage_CA_Info_NoMatchingDomainParams = 2432696583, /// - /// Enum ntfLDS_SI_Storage_CA_Info_NoMatchingPublicKey for value: -1862270712 + /// Enum ntfLDS_SI_Storage_CA_Info_NoMatchingPublicKey for value: 2432696584 /// - [EnumMember(Value = "-1862270712")] - ntfLDS_SI_Storage_CA_Info_NoMatchingPublicKey = 200, + ntfLDS_SI_Storage_CA_Info_NoMatchingPublicKey = 2432696584, /// - /// Enum ntfLDS_SI_Storage_CA_IncorrectInfosQuantity for value: -1862270711 + /// Enum ntfLDS_SI_Storage_CA_IncorrectInfosQuantity for value: 2432696585 /// - [EnumMember(Value = "-1862270711")] - ntfLDS_SI_Storage_CA_IncorrectInfosQuantity = 201, + ntfLDS_SI_Storage_CA_IncorrectInfosQuantity = 2432696585, /// - /// Enum ntfLDS_SI_Storage_TA_Info_NotAvailable for value: -1862270710 + /// Enum ntfLDS_SI_Storage_TA_Info_NotAvailable for value: 2432696586 /// - [EnumMember(Value = "-1862270710")] - ntfLDS_SI_Storage_TA_Info_NotAvailable = 202, + ntfLDS_SI_Storage_TA_Info_NotAvailable = 2432696586, /// - /// Enum ntfLDS_SI_Storage_CardInfoLocator_MultipleEntries for value: -1862270709 + /// Enum ntfLDS_SI_Storage_CardInfoLocator_MultipleEntries for value: 2432696587 /// - [EnumMember(Value = "-1862270709")] - ntfLDS_SI_Storage_CardInfoLocator_MultipleEntries = 203, + ntfLDS_SI_Storage_CardInfoLocator_MultipleEntries = 2432696587, /// - /// Enum ntfLDS_SI_Storage_eIDSecurityInfo_MultipleEntries for value: -1862270708 + /// Enum ntfLDS_SI_Storage_eIDSecurityInfo_MultipleEntries for value: 2432696588 /// - [EnumMember(Value = "-1862270708")] - ntfLDS_SI_Storage_eIDSecurityInfo_MultipleEntries = 204, + ntfLDS_SI_Storage_eIDSecurityInfo_MultipleEntries = 2432696588, /// - /// Enum ntfLDS_SI_Storage_PrivilegedTI_MultipleEntries for value: -1862270707 + /// Enum ntfLDS_SI_Storage_PrivilegedTI_MultipleEntries for value: 2432696589 /// - [EnumMember(Value = "-1862270707")] - ntfLDS_SI_Storage_PrivilegedTI_MultipleEntries = 205, + ntfLDS_SI_Storage_PrivilegedTI_MultipleEntries = 2432696589, /// - /// Enum ntfLDS_SI_Storage_PrivilegedTI_IncorrectUsage for value: -1862270706 + /// Enum ntfLDS_SI_Storage_PrivilegedTI_IncorrectUsage for value: 2432696590 /// - [EnumMember(Value = "-1862270706")] - ntfLDS_SI_Storage_PrivilegedTI_IncorrectUsage = 206, + ntfLDS_SI_Storage_PrivilegedTI_IncorrectUsage = 2432696590, /// - /// Enum ntfLDS_SI_Storage_RI_DomainParams_MultipleEntries for value: -1862270705 + /// Enum ntfLDS_SI_Storage_RI_DomainParams_MultipleEntries for value: 2432696591 /// - [EnumMember(Value = "-1862270705")] - ntfLDS_SI_Storage_RI_DomainParams_MultipleEntries = 207, + ntfLDS_SI_Storage_RI_DomainParams_MultipleEntries = 2432696591, /// - /// Enum ntfLDS_SI_Storage_PACEInfos_NonConsistant for value: -1862270704 + /// Enum ntfLDS_SI_Storage_PACEInfos_NonConsistant for value: 2432696592 /// - [EnumMember(Value = "-1862270704")] - ntfLDS_SI_Storage_PACEInfos_NonConsistant = 208, + ntfLDS_SI_Storage_PACEInfos_NonConsistant = 2432696592, /// - /// Enum ntfLDS_CVCertificate_Profile_IncorrectVersion for value: -1862270463 + /// Enum ntfLDS_CVCertificate_Profile_IncorrectVersion for value: 2432696833 /// - [EnumMember(Value = "-1862270463")] - ntfLDS_CVCertificate_Profile_IncorrectVersion = 209, + ntfLDS_CVCertificate_Profile_IncorrectVersion = 2432696833, /// - /// Enum ntfLDS_CVCertificate_Validity for value: -1862270462 + /// Enum ntfLDS_CVCertificate_Validity for value: 2432696834 /// - [EnumMember(Value = "-1862270462")] - ntfLDS_CVCertificate_Validity = 210, + ntfLDS_CVCertificate_Validity = 2432696834, /// - /// Enum ntfLDS_CVCertificate_NonCVCADomainParameters for value: -1862270461 + /// Enum ntfLDS_CVCertificate_NonCVCADomainParameters for value: 2432696835 /// - [EnumMember(Value = "-1862270461")] - ntfLDS_CVCertificate_NonCVCADomainParameters = 211, + ntfLDS_CVCertificate_NonCVCADomainParameters = 2432696835, /// - /// Enum ntfLDS_CV_Certificate_PrivateKey_IncorrectVersion for value: -1862270460 + /// Enum ntfLDS_CV_Certificate_PrivateKey_IncorrectVersion for value: 2432696836 /// - [EnumMember(Value = "-1862270460")] - ntfLDS_CV_Certificate_PrivateKey_IncorrectVersion = 212, + ntfLDS_CV_Certificate_PrivateKey_IncorrectVersion = 2432696836, /// - /// Enum ntfLDS_TA_PACEStaticBindingUsed for value: -1862270208 + /// Enum ntfLDS_TA_PACEStaticBindingUsed for value: 2432697088 /// - [EnumMember(Value = "-1862270208")] - ntfLDS_TA_PACEStaticBindingUsed = 213, + ntfLDS_TA_PACEStaticBindingUsed = 2432697088, /// - /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_Validity for value: -1845493483 + /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_Validity for value: 2449473813 /// - [EnumMember(Value = "-1845493483")] - ntfLDS_Auth_MLSignerInfo_Certificate_Validity = 214, + ntfLDS_Auth_MLSignerInfo_Certificate_Validity = 2449473813, /// - /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_RootIsNotTrusted for value: -1845493482 + /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_RootIsNotTrusted for value: 2449473814 /// - [EnumMember(Value = "-1845493482")] - ntfLDS_Auth_MLSignerInfo_Certificate_RootIsNotTrusted = 215, + ntfLDS_Auth_MLSignerInfo_Certificate_RootIsNotTrusted = 2449473814, /// - /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_CantFindCSCA for value: -1845493481 + /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_CantFindCSCA for value: 2449473815 /// - [EnumMember(Value = "-1845493481")] - ntfLDS_Auth_MLSignerInfo_Certificate_CantFindCSCA = 216, + ntfLDS_Auth_MLSignerInfo_Certificate_CantFindCSCA = 2449473815, /// - /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_Revoked for value: -1845493480 + /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_Revoked for value: 2449473816 /// - [EnumMember(Value = "-1845493480")] - ntfLDS_Auth_MLSignerInfo_Certificate_Revoked = 217, + ntfLDS_Auth_MLSignerInfo_Certificate_Revoked = 2449473816, /// - /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_SignatureInvalid for value: -1845493479 + /// Enum ntfLDS_Auth_MLSignerInfo_Certificate_SignatureInvalid for value: 2449473817 /// - [EnumMember(Value = "-1845493479")] - ntfLDS_Auth_MLSignerInfo_Certificate_SignatureInvalid = 218, + ntfLDS_Auth_MLSignerInfo_Certificate_SignatureInvalid = 2449473817, /// - /// Enum ntfLDS_ICAO_Certificate_Chain_Country_NonMatching for value: -1879047600 + /// Enum ntfLDS_ICAO_Certificate_Chain_Country_NonMatching for value: 2415919696 /// - [EnumMember(Value = "-1879047600")] - ntfLDS_ICAO_Certificate_Chain_Country_NonMatching = 219, + ntfLDS_ICAO_Certificate_Chain_Country_NonMatching = 2415919696, /// - /// Enum ntfLDS_ICAO_Certificate_VisualMrz_Country_NonMatching for value: -1879047599 + /// Enum ntfLDS_ICAO_Certificate_VisualMrz_Country_NonMatching for value: 2415919697 /// - [EnumMember(Value = "-1879047599")] - ntfLDS_ICAO_Certificate_VisualMrz_Country_NonMatching = 220, + ntfLDS_ICAO_Certificate_VisualMrz_Country_NonMatching = 2415919697, /// /// Enum ntfLDS_MRZ_CountryCode_VisualMrz_NonMatching for value: 139289 /// - [EnumMember(Value = "139289")] - ntfLDS_MRZ_CountryCode_VisualMrz_NonMatching = 221, + ntfLDS_MRZ_CountryCode_VisualMrz_NonMatching = 139289, /// - /// Enum ntfLDS_ICAO_Certificate_MRZ_Country_NonMatching for value: -1879047598 + /// Enum ntfLDS_ICAO_Certificate_MRZ_Country_NonMatching for value: 2415919698 /// - [EnumMember(Value = "-1879047598")] - ntfLDS_ICAO_Certificate_MRZ_Country_NonMatching = 222 - + ntfLDS_ICAO_Certificate_MRZ_Country_NonMatching = 2415919698 } } diff --git a/src/Regula.DocumentReader.WebClient/Model/PerDocumentConfig.cs b/src/Regula.DocumentReader.WebClient/Model/PerDocumentConfig.cs index 6ab4246..1622303 100644 --- a/src/Regula.DocumentReader.WebClient/Model/PerDocumentConfig.cs +++ b/src/Regula.DocumentReader.WebClient/Model/PerDocumentConfig.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// PerDocumentConfig /// - [DataContract] - public partial class PerDocumentConfig : IEquatable, IValidatableObject + [DataContract(Name = "PerDocumentConfig")] + public partial class PerDocumentConfig : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,20 +42,23 @@ public partial class PerDocumentConfig : IEquatable, IValida this.DocID = docID; this.ExcludeAuthChecks = excludeAuthChecks; } - + /// /// Specific template IDs, for which apply current custom configuration /// /// Specific template IDs, for which apply current custom configuration - [DataMember(Name="docID", EmitDefaultValue=false)] - public List DocID { get; set; } + [DataMember(Name = "docID", EmitDefaultValue = false)] + public List? DocID { get; set; } /// /// Contains items from AuthenticityResultType as sum via OR operation /// /// Contains items from AuthenticityResultType as sum via OR operation - [DataMember(Name="excludeAuthChecks", EmitDefaultValue=false)] - public int ExcludeAuthChecks { get; set; } + /* + 2 + */ + [DataMember(Name = "excludeAuthChecks", EmitDefaultValue = false)] + public int? ExcludeAuthChecks { get; set; } /// /// Returns the string presentation of the object @@ -61,14 +66,14 @@ public partial class PerDocumentConfig : IEquatable, IValida /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class PerDocumentConfig {\n"); sb.Append(" DocID: ").Append(DocID).Append("\n"); sb.Append(" ExcludeAuthChecks: ").Append(ExcludeAuthChecks).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -78,63 +83,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as PerDocumentConfig); - } - - /// - /// Returns true if PerDocumentConfig instances are equal - /// - /// Instance of PerDocumentConfig to be compared - /// Boolean - public bool Equals(PerDocumentConfig input) - { - if (input == null) - return false; - - return - ( - this.DocID == input.DocID || - this.DocID != null && - input.DocID != null && - this.DocID.SequenceEqual(input.DocID) - ) && - ( - this.ExcludeAuthChecks == input.ExcludeAuthChecks || - (this.ExcludeAuthChecks != null && - this.ExcludeAuthChecks.Equals(input.ExcludeAuthChecks)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.DocID != null) - hashCode = hashCode * 59 + this.DocID.GetHashCode(); - if (this.ExcludeAuthChecks != null) - hashCode = hashCode * 59 + this.ExcludeAuthChecks.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/PhotoIdentItem.cs b/src/Regula.DocumentReader.WebClient/Model/PhotoIdentItem.cs new file mode 100644 index 0000000..796d0d6 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/PhotoIdentItem.cs @@ -0,0 +1,193 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// PhotoIdentItem + /// + [DataContract(Name = "PhotoIdentItem")] + public partial class PhotoIdentItem : IValidatableObject + { + + /// + /// Gets or Sets LightIndex + /// + [DataMember(Name = "LightIndex", IsRequired = true, EmitDefaultValue = true)] + public Light LightIndex { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected PhotoIdentItem() { } + /// + /// Initializes a new instance of the class. + /// + /// lightIndex (required). + /// area (required). + /// sourceImage (required). + /// resultImages (required). + /// fieldTypesCount. + /// fieldTypesList. + /// step. + /// angle. + /// reserved1. + /// reserved2. + /// reserved3. + public PhotoIdentItem(Light lightIndex = default(Light), RectangleCoordinates area = default(RectangleCoordinates), ImageData sourceImage = default(ImageData), RawImageContainerList resultImages = default(RawImageContainerList), int fieldTypesCount = default(int), List fieldTypesList = default(List), int step = default(int), int angle = default(int), int reserved1 = default(int), int reserved2 = default(int), int reserved3 = default(int)) + { + this.LightIndex = lightIndex; + // to ensure "area" is required (not null) + if (area == null) + { + throw new ArgumentNullException("area is a required property for PhotoIdentItem and cannot be null"); + } + this.Area = area; + // to ensure "sourceImage" is required (not null) + if (sourceImage == null) + { + throw new ArgumentNullException("sourceImage is a required property for PhotoIdentItem and cannot be null"); + } + this.SourceImage = sourceImage; + // to ensure "resultImages" is required (not null) + if (resultImages == null) + { + throw new ArgumentNullException("resultImages is a required property for PhotoIdentItem and cannot be null"); + } + this.ResultImages = resultImages; + this.FieldTypesCount = fieldTypesCount; + this.FieldTypesList = fieldTypesList; + this.Step = step; + this.Angle = angle; + this.Reserved1 = reserved1; + this.Reserved2 = reserved2; + this.Reserved3 = reserved3; + } + + /// + /// Gets or Sets Area + /// + [DataMember(Name = "Area", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates Area { get; set; } + + /// + /// Gets or Sets SourceImage + /// + [DataMember(Name = "SourceImage", IsRequired = true, EmitDefaultValue = true)] + public ImageData SourceImage { get; set; } + + /// + /// Gets or Sets ResultImages + /// + [DataMember(Name = "ResultImages", IsRequired = true, EmitDefaultValue = true)] + public RawImageContainerList ResultImages { get; set; } + + /// + /// Gets or Sets FieldTypesCount + /// + [DataMember(Name = "FieldTypesCount", EmitDefaultValue = false)] + public int? FieldTypesCount { get; set; } + + /// + /// Gets or Sets FieldTypesList + /// + [DataMember(Name = "FieldTypesList", EmitDefaultValue = false)] + public List? FieldTypesList { get; set; } + + /// + /// Gets or Sets Step + /// + [DataMember(Name = "Step", EmitDefaultValue = false)] + public int? Step { get; set; } + + /// + /// Gets or Sets Angle + /// + [DataMember(Name = "Angle", EmitDefaultValue = false)] + public int? Angle { get; set; } + + /// + /// Gets or Sets Reserved1 + /// + [DataMember(Name = "Reserved1", EmitDefaultValue = false)] + public int? Reserved1 { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } + + /// + /// Gets or Sets Reserved3 + /// + [DataMember(Name = "Reserved3", EmitDefaultValue = false)] + public int? Reserved3 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class PhotoIdentItem {\n"); + sb.Append(" LightIndex: ").Append(LightIndex).Append("\n"); + sb.Append(" Area: ").Append(Area).Append("\n"); + sb.Append(" SourceImage: ").Append(SourceImage).Append("\n"); + sb.Append(" ResultImages: ").Append(ResultImages).Append("\n"); + sb.Append(" FieldTypesCount: ").Append(FieldTypesCount).Append("\n"); + sb.Append(" FieldTypesList: ").Append(FieldTypesList).Append("\n"); + sb.Append(" Step: ").Append(Step).Append("\n"); + sb.Append(" Angle: ").Append(Angle).Append("\n"); + sb.Append(" Reserved1: ").Append(Reserved1).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); + sb.Append(" Reserved3: ").Append(Reserved3).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/PhotoIdentResult.cs b/src/Regula.DocumentReader.WebClient/Model/PhotoIdentResult.cs index 4b3d55e..a6b9d10 100644 --- a/src/Regula.DocumentReader.WebClient/Model/PhotoIdentResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/PhotoIdentResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +30,15 @@ namespace Regula.DocumentReader.WebClient.Model /// /// PhotoIdentResult /// - [DataContract] - public partial class PhotoIdentResult : AuthenticityCheckResultItem, IEquatable, IValidatableObject + [DataContract(Name = "PhotoIdentResult")] + public partial class PhotoIdentResult : AuthenticityCheckResultItem, IValidatableObject { + + /// + /// Gets or Sets LightIndex + /// + [DataMember(Name = "LightIndex", IsRequired = true, EmitDefaultValue = true)] + public Light LightIndex { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,81 +47,110 @@ protected PhotoIdentResult() { } /// /// Initializes a new instance of the class. /// - /// lightIndex. - /// area. - /// sourceImage. - /// resultImages. + /// lightIndex (required). + /// area (required). + /// sourceImage (required). + /// resultImages (required). /// fieldTypesCount. /// fieldTypesList. /// step. /// angle. + /// reserved1. + /// reserved2. /// reserved3. - public PhotoIdentResult(int lightIndex = default(int), RectangleCoordinates area = default(RectangleCoordinates), ImageData sourceImage = default(ImageData), RawImageContainerList resultImages = default(RawImageContainerList), int fieldTypesCount = default(int), List fieldTypesList = default(List), int step = default(int), int angle = default(int), int reserved3 = default(int), int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) + /// type (required) (default to AuthenticityResultType.IPI). + /// elementResult. + /// elementDiagnose. + /// percentValue. + public PhotoIdentResult(Light lightIndex = default(Light), RectangleCoordinates area = default(RectangleCoordinates), ImageData sourceImage = default(ImageData), RawImageContainerList resultImages = default(RawImageContainerList), int fieldTypesCount = default(int), List fieldTypesList = default(List), int step = default(int), int angle = default(int), int reserved1 = default(int), int reserved2 = default(int), int reserved3 = default(int), AuthenticityResultType type = AuthenticityResultType.IPI, CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) { this.LightIndex = lightIndex; + // to ensure "area" is required (not null) + if (area == null) + { + throw new ArgumentNullException("area is a required property for PhotoIdentResult and cannot be null"); + } this.Area = area; + // to ensure "sourceImage" is required (not null) + if (sourceImage == null) + { + throw new ArgumentNullException("sourceImage is a required property for PhotoIdentResult and cannot be null"); + } this.SourceImage = sourceImage; + // to ensure "resultImages" is required (not null) + if (resultImages == null) + { + throw new ArgumentNullException("resultImages is a required property for PhotoIdentResult and cannot be null"); + } this.ResultImages = resultImages; this.FieldTypesCount = fieldTypesCount; this.FieldTypesList = fieldTypesList; this.Step = step; this.Angle = angle; + this.Reserved1 = reserved1; + this.Reserved2 = reserved2; this.Reserved3 = reserved3; } - - /// - /// Gets or Sets LightIndex - /// - [DataMember(Name="LightIndex", EmitDefaultValue=false)] - public int LightIndex { get; set; } /// /// Gets or Sets Area /// - [DataMember(Name="Area", EmitDefaultValue=false)] + [DataMember(Name = "Area", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates Area { get; set; } /// /// Gets or Sets SourceImage /// - [DataMember(Name="SourceImage", EmitDefaultValue=false)] + [DataMember(Name = "SourceImage", IsRequired = true, EmitDefaultValue = true)] public ImageData SourceImage { get; set; } /// /// Gets or Sets ResultImages /// - [DataMember(Name="ResultImages", EmitDefaultValue=false)] + [DataMember(Name = "ResultImages", IsRequired = true, EmitDefaultValue = true)] public RawImageContainerList ResultImages { get; set; } /// /// Gets or Sets FieldTypesCount /// - [DataMember(Name="FieldTypesCount", EmitDefaultValue=false)] - public int FieldTypesCount { get; set; } + [DataMember(Name = "FieldTypesCount", EmitDefaultValue = false)] + public int? FieldTypesCount { get; set; } /// /// Gets or Sets FieldTypesList /// - [DataMember(Name="FieldTypesList", EmitDefaultValue=false)] - public List FieldTypesList { get; set; } + [DataMember(Name = "FieldTypesList", EmitDefaultValue = false)] + public List? FieldTypesList { get; set; } /// /// Gets or Sets Step /// - [DataMember(Name="Step", EmitDefaultValue=false)] - public int Step { get; set; } + [DataMember(Name = "Step", EmitDefaultValue = false)] + public int? Step { get; set; } /// /// Gets or Sets Angle /// - [DataMember(Name="Angle", EmitDefaultValue=false)] - public int Angle { get; set; } + [DataMember(Name = "Angle", EmitDefaultValue = false)] + public int? Angle { get; set; } + + /// + /// Gets or Sets Reserved1 + /// + [DataMember(Name = "Reserved1", EmitDefaultValue = false)] + public int? Reserved1 { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } /// /// Gets or Sets Reserved3 /// - [DataMember(Name="Reserved3", EmitDefaultValue=false)] - public int Reserved3 { get; set; } + [DataMember(Name = "Reserved3", EmitDefaultValue = false)] + public int? Reserved3 { get; set; } /// /// Returns the string presentation of the object @@ -120,7 +158,7 @@ protected PhotoIdentResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class PhotoIdentResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" LightIndex: ").Append(LightIndex).Append("\n"); @@ -131,11 +169,13 @@ public override string ToString() sb.Append(" FieldTypesList: ").Append(FieldTypesList).Append("\n"); sb.Append(" Step: ").Append(Step).Append("\n"); sb.Append(" Angle: ").Append(Angle).Append("\n"); + sb.Append(" Reserved1: ").Append(Reserved1).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); sb.Append(" Reserved3: ").Append(Reserved3).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -146,103 +186,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as PhotoIdentResult); - } - - /// - /// Returns true if PhotoIdentResult instances are equal - /// - /// Instance of PhotoIdentResult to be compared - /// Boolean - public bool Equals(PhotoIdentResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.LightIndex == input.LightIndex || - (this.LightIndex != null && - this.LightIndex.Equals(input.LightIndex)) - ) && base.Equals(input) && - ( - this.Area == input.Area || - (this.Area != null && - this.Area.Equals(input.Area)) - ) && base.Equals(input) && - ( - this.SourceImage == input.SourceImage || - (this.SourceImage != null && - this.SourceImage.Equals(input.SourceImage)) - ) && base.Equals(input) && - ( - this.ResultImages == input.ResultImages || - (this.ResultImages != null && - this.ResultImages.Equals(input.ResultImages)) - ) && base.Equals(input) && - ( - this.FieldTypesCount == input.FieldTypesCount || - (this.FieldTypesCount != null && - this.FieldTypesCount.Equals(input.FieldTypesCount)) - ) && base.Equals(input) && - ( - this.FieldTypesList == input.FieldTypesList || - this.FieldTypesList != null && - input.FieldTypesList != null && - this.FieldTypesList.SequenceEqual(input.FieldTypesList) - ) && base.Equals(input) && - ( - this.Step == input.Step || - (this.Step != null && - this.Step.Equals(input.Step)) - ) && base.Equals(input) && - ( - this.Angle == input.Angle || - (this.Angle != null && - this.Angle.Equals(input.Angle)) - ) && base.Equals(input) && - ( - this.Reserved3 == input.Reserved3 || - (this.Reserved3 != null && - this.Reserved3.Equals(input.Reserved3)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.LightIndex != null) - hashCode = hashCode * 59 + this.LightIndex.GetHashCode(); - if (this.Area != null) - hashCode = hashCode * 59 + this.Area.GetHashCode(); - if (this.SourceImage != null) - hashCode = hashCode * 59 + this.SourceImage.GetHashCode(); - if (this.ResultImages != null) - hashCode = hashCode * 59 + this.ResultImages.GetHashCode(); - if (this.FieldTypesCount != null) - hashCode = hashCode * 59 + this.FieldTypesCount.GetHashCode(); - if (this.FieldTypesList != null) - hashCode = hashCode * 59 + this.FieldTypesList.GetHashCode(); - if (this.Step != null) - hashCode = hashCode * 59 + this.Step.GetHashCode(); - if (this.Angle != null) - hashCode = hashCode * 59 + this.Angle.GetHashCode(); - if (this.Reserved3 != null) - hashCode = hashCode * 59 + this.Reserved3.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -250,9 +200,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/Point.cs b/src/Regula.DocumentReader.WebClient/Model/Point.cs index e1fe496..0fb0ba1 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Point.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Point.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,30 +29,35 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Point /// - [DataContract] - public partial class Point : IEquatable, IValidatableObject + [DataContract(Name = "Point")] + public partial class Point : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// x. - /// y. + [JsonConstructorAttribute] + protected Point() { } + /// + /// Initializes a new instance of the class. + /// + /// x (required). + /// y (required). public Point(int x = default(int), int y = default(int)) { this.X = x; this.Y = y; } - + /// /// Gets or Sets X /// - [DataMember(Name="x", EmitDefaultValue=false)] + [DataMember(Name = "x", IsRequired = true, EmitDefaultValue = true)] public int X { get; set; } /// /// Gets or Sets Y /// - [DataMember(Name="y", EmitDefaultValue=false)] + [DataMember(Name = "y", IsRequired = true, EmitDefaultValue = true)] public int Y { get; set; } /// @@ -59,14 +66,14 @@ public partial class Point : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class Point {\n"); sb.Append(" X: ").Append(X).Append("\n"); sb.Append(" Y: ").Append(Y).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,62 +83,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Point); - } - - /// - /// Returns true if Point instances are equal - /// - /// Instance of Point to be compared - /// Boolean - public bool Equals(Point input) - { - if (input == null) - return false; - - return - ( - this.X == input.X || - (this.X != null && - this.X.Equals(input.X)) - ) && - ( - this.Y == input.Y || - (this.Y != null && - this.Y.Equals(input.Y)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.X != null) - hashCode = hashCode * 59 + this.X.GetHashCode(); - if (this.Y != null) - hashCode = hashCode * 59 + this.Y.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/PointArray.cs b/src/Regula.DocumentReader.WebClient/Model/PointArray.cs index 4e82cbc..ec38c49 100644 --- a/src/Regula.DocumentReader.WebClient/Model/PointArray.cs +++ b/src/Regula.DocumentReader.WebClient/Model/PointArray.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,22 +29,32 @@ namespace Regula.DocumentReader.WebClient.Model /// /// PointArray /// - [DataContract] - public partial class PointArray : IEquatable, IValidatableObject + [DataContract(Name = "PointArray")] + public partial class PointArray : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// pointsList. + [JsonConstructorAttribute] + protected PointArray() { } + /// + /// Initializes a new instance of the class. + /// + /// pointsList (required). public PointArray(List pointsList = default(List)) { + // to ensure "pointsList" is required (not null) + if (pointsList == null) + { + throw new ArgumentNullException("pointsList is a required property for PointArray and cannot be null"); + } this.PointsList = pointsList; } - + /// /// Gets or Sets PointsList /// - [DataMember(Name="PointsList", EmitDefaultValue=false)] + [DataMember(Name = "PointsList", IsRequired = true, EmitDefaultValue = true)] public List PointsList { get; set; } /// @@ -51,13 +63,13 @@ public partial class PointArray : IEquatable, IValidatableObject /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class PointArray {\n"); sb.Append(" PointsList: ").Append(PointsList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -67,56 +79,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as PointArray); - } - - /// - /// Returns true if PointArray instances are equal - /// - /// Instance of PointArray to be compared - /// Boolean - public bool Equals(PointArray input) - { - if (input == null) - return false; - - return - ( - this.PointsList == input.PointsList || - this.PointsList != null && - input.PointsList != null && - this.PointsList.SequenceEqual(input.PointsList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PointsList != null) - hashCode = hashCode * 59 + this.PointsList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/PointsContainer.cs b/src/Regula.DocumentReader.WebClient/Model/PointsContainer.cs index 6ac3aa5..43d7809 100644 --- a/src/Regula.DocumentReader.WebClient/Model/PointsContainer.cs +++ b/src/Regula.DocumentReader.WebClient/Model/PointsContainer.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,30 +29,40 @@ namespace Regula.DocumentReader.WebClient.Model /// /// PointsContainer /// - [DataContract] - public partial class PointsContainer : IEquatable, IValidatableObject + [DataContract(Name = "PointsContainer")] + public partial class PointsContainer : IValidatableObject { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected PointsContainer() { } /// /// Initializes a new instance of the class. /// /// pointCount. - /// pointsList. + /// pointsList (required). public PointsContainer(int pointCount = default(int), List pointsList = default(List)) { - this.PointCount = pointCount; + // to ensure "pointsList" is required (not null) + if (pointsList == null) + { + throw new ArgumentNullException("pointsList is a required property for PointsContainer and cannot be null"); + } this.PointsList = pointsList; + this.PointCount = pointCount; } - + /// /// Gets or Sets PointCount /// - [DataMember(Name="PointCount", EmitDefaultValue=false)] - public int PointCount { get; set; } + [DataMember(Name = "PointCount", EmitDefaultValue = false)] + public int? PointCount { get; set; } /// /// Gets or Sets PointsList /// - [DataMember(Name="PointsList", EmitDefaultValue=false)] + [DataMember(Name = "PointsList", IsRequired = true, EmitDefaultValue = true)] public List PointsList { get; set; } /// @@ -59,14 +71,14 @@ public partial class PointsContainer : IEquatable, IValidatabl /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class PointsContainer {\n"); sb.Append(" PointCount: ").Append(PointCount).Append("\n"); sb.Append(" PointsList: ").Append(PointsList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,63 +88,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as PointsContainer); - } - - /// - /// Returns true if PointsContainer instances are equal - /// - /// Instance of PointsContainer to be compared - /// Boolean - public bool Equals(PointsContainer input) - { - if (input == null) - return false; - - return - ( - this.PointCount == input.PointCount || - (this.PointCount != null && - this.PointCount.Equals(input.PointCount)) - ) && - ( - this.PointsList == input.PointsList || - this.PointsList != null && - input.PointsList != null && - this.PointsList.SequenceEqual(input.PointsList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PointCount != null) - hashCode = hashCode * 59 + this.PointCount.GetHashCode(); - if (this.PointsList != null) - hashCode = hashCode * 59 + this.PointsList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessParams.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessParams.cs index e002ebc..eec7e6d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessParams.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessParams.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,51 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ProcessParams /// - [DataContract] - public partial class ProcessParams : IEquatable, IValidatableObject + [DataContract(Name = "ProcessParams")] + public partial class ProcessParams : IValidatableObject { + + /// + /// Gets or Sets Scenario + /// + [DataMember(Name = "scenario", IsRequired = true, EmitDefaultValue = true)] + public Scenario Scenario { get; set; } + + /// + /// Gets or Sets MeasureSystem + /// + [DataMember(Name = "measureSystem", EmitDefaultValue = false)] + public MeasureSystem? MeasureSystem { get; set; } + + /// + /// Gets or Sets LogLevel + /// + [DataMember(Name = "logLevel", EmitDefaultValue = false)] + public LogLevel? LogLevel { get; set; } + + /// + /// Gets or Sets ForceDocFormat + /// + [DataMember(Name = "forceDocFormat", EmitDefaultValue = false)] + public DocumentFormat? ForceDocFormat { get; set; } + + /// + /// Gets or Sets ConvertCase + /// + [DataMember(Name = "convertCase", EmitDefaultValue = false)] + public TextPostProcessing? ConvertCase { get; set; } + + /// + /// Gets or Sets ProcessAuth + /// + [DataMember(Name = "processAuth", EmitDefaultValue = false)] + public AuthenticityResultType? ProcessAuth { get; set; } + + /// + /// Gets or Sets MrzDetectMode + /// + [DataMember(Name = "mrzDetectMode", EmitDefaultValue = false)] + public MrzDetectModeEnum? MrzDetectMode { get; set; } /// /// Initializes a new instance of the class. /// @@ -40,6 +84,7 @@ protected ProcessParams() { } /// /// This parameter is used to generate separate DTC-VC data container from RFID session data.. /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default.. + /// This parameter is used to enable document liveness check.. /// The list of LCID types to ignore during the recognition. If empty, values with all LCID types will be extracted. Narrowing down the list can reduce processing time. Empty by default.. /// This parameter allows processing an image that contains a person and a document and compare the portrait photo from the document with the person's face. /// This parameter allows comparing faces on Regula Face Web Service. @@ -83,7 +128,7 @@ protected ProcessParams() { } /// When enabled, the Surname and GivenNames fields from MRZ will be divided into ft_First_Name, ft_Second_Name, ft_Third_Name, ft_Fourth_Name, ft_Last_Name fields. Disabled by default.. /// When enabled, OCR of perforated fields in the document template will not be performed. Disabled by default.. /// List of specific eligible document types from DocumentType enum to recognize from. You may, for example, specify only passports to be recognized by setting this property. Empty by default.. - /// Authenticity checks that should be performed regardless of the document type. The available checks are listed in the eRPRM_Authenticity enum. Note that only supported by your license checks can be added. . + /// processAuth. /// This parameter is used to specify the document reader device type from which input images were captured. Default 0.. /// This parameter is used to specify the document reader device type from which input images were captured. Default 0.. /// This parameter is used to specify the document reader device type from which input images were captured. @@ -98,20 +143,12 @@ protected ProcessParams() { } /// Select the longest value from the different value sources and write it to the value field if comparison is done successfully. The parameter applies this logic to the personal names, such as given name, surname, surname and given name, middle name and etc.. /// Set the types of barcodes to process.. /// Set to force DL categories expiry date to affect the overall status or not. As documents usually have their own date of expiry, which might be less or greater than category expiry date, this might be handy for specific cases.. - public ProcessParams(bool? generateDTCVC = default(bool?), List lcidFilter = default(List), List lcidIgnoreFilter = default(List), bool? oneShotIdentification = default(bool?), bool? useFaceApi = default(bool?), FaceApi faceApi = default(FaceApi), bool? doDetectCan = default(bool?), int imageOutputMaxHeight = default(int), int imageOutputMaxWidth = default(int), string scenario = default(string), List resultTypeOutput = default(List), bool? doublePageSpread = default(bool?), bool? generateDoublePageSpreadImage = default(bool?), List fieldTypesFilter = default(List), string dateFormat = default(string), int measureSystem = default(int), int imageDpiOutMax = default(int), bool? alreadyCropped = default(bool?), Dictionary customParams = default(Dictionary), List config = default(List), bool? log = default(bool?), string logLevel = default(string), int forceDocID = default(int), bool? matchTextFieldMask = default(bool?), bool? fastDocDetect = default(bool?), bool? updateOCRValidityByGlare = default(bool?), bool? checkRequiredTextFields = default(bool?), bool? returnCroppedBarcode = default(bool?), ImageQA imageQa = default(ImageQA), bool? strictImageQuality = default(bool?), bool? respectImageQuality = default(bool?), int forceDocFormat = default(int), bool? noGraphics = default(bool?), bool? depersonalizeLog = default(bool?), bool? multiDocOnImage = default(bool?), int shiftExpiryDate = default(int), int minimalHolderAge = default(int), bool? returnUncroppedImage = default(bool?), List mrzFormatsFilter = default(List), bool? forceReadMrzBeforeLocate = default(bool?), bool? parseBarcodes = default(bool?), int convertCase = default(int), bool? splitNames = default(bool?), bool? disablePerforationOCR = default(bool?), List documentGroupFilter = default(List), long processAuth = default(long), int deviceId = default(int), int deviceType = default(int), string deviceTypeHex = default(string), bool? ignoreDeviceIdFromImage = default(bool?), List documentIdList = default(List), ProcessParamsRfid rfid = default(ProcessParamsRfid), bool? checkAuth = default(bool?), AuthParams authParams = default(AuthParams), MrzDetectModeEnum mrzDetectMode = default(MrzDetectModeEnum), bool? generateNumericCodes = default(bool?), bool? strictBarcodeDigitalSignatureCheck = default(bool?), bool? selectLongestNames = default(bool?), List doBarcodes = default(List), bool? strictDLCategoryExpiry = default(bool?)) + public ProcessParams(bool generateDTCVC = default(bool), List lcidFilter = default(List), bool checkLiveness = default(bool), List lcidIgnoreFilter = default(List), bool oneShotIdentification = default(bool), bool useFaceApi = default(bool), FaceApi faceApi = default(FaceApi), bool doDetectCan = default(bool), int imageOutputMaxHeight = default(int), int imageOutputMaxWidth = default(int), Scenario scenario = default(Scenario), List resultTypeOutput = default(List), bool doublePageSpread = default(bool), bool generateDoublePageSpreadImage = default(bool), List fieldTypesFilter = default(List), string dateFormat = default(string), MeasureSystem? measureSystem = default(MeasureSystem?), int imageDpiOutMax = default(int), bool alreadyCropped = default(bool), Dictionary customParams = default(Dictionary), List config = default(List), bool log = default(bool), LogLevel? logLevel = default(LogLevel?), int forceDocID = default(int), bool matchTextFieldMask = default(bool), bool fastDocDetect = default(bool), bool updateOCRValidityByGlare = default(bool), bool checkRequiredTextFields = default(bool), bool returnCroppedBarcode = default(bool), ImageQA imageQa = default(ImageQA), bool strictImageQuality = default(bool), bool respectImageQuality = default(bool), DocumentFormat? forceDocFormat = default(DocumentFormat?), bool noGraphics = default(bool), bool depersonalizeLog = default(bool), bool multiDocOnImage = default(bool), int shiftExpiryDate = default(int), int minimalHolderAge = default(int), bool returnUncroppedImage = default(bool), List mrzFormatsFilter = default(List), bool forceReadMrzBeforeLocate = default(bool), bool parseBarcodes = default(bool), TextPostProcessing? convertCase = default(TextPostProcessing?), bool splitNames = default(bool), bool disablePerforationOCR = default(bool), List documentGroupFilter = default(List), AuthenticityResultType? processAuth = default(AuthenticityResultType?), int deviceId = default(int), int deviceType = default(int), string deviceTypeHex = default(string), bool ignoreDeviceIdFromImage = default(bool), List documentIdList = default(List), ProcessParamsRfid rfid = default(ProcessParamsRfid), bool checkAuth = default(bool), AuthParams authParams = default(AuthParams), MrzDetectModeEnum? mrzDetectMode = default(MrzDetectModeEnum?), bool generateNumericCodes = default(bool), bool strictBarcodeDigitalSignatureCheck = default(bool), bool selectLongestNames = default(bool), List doBarcodes = default(List), bool strictDLCategoryExpiry = default(bool)) { - // to ensure "scenario" is required (not null) - if (scenario == null) - { - throw new InvalidDataException("scenario is a required property for ProcessParams and cannot be null"); - } - else - { - this.Scenario = scenario; - } - + this.Scenario = scenario; this.GenerateDTCVC = generateDTCVC; this.LcidFilter = lcidFilter; + this.CheckLiveness = checkLiveness; this.LcidIgnoreFilter = lcidIgnoreFilter; this.OneShotIdentification = oneShotIdentification; this.UseFaceApi = useFaceApi; @@ -170,415 +207,385 @@ protected ProcessParams() { } this.DoBarcodes = doBarcodes; this.StrictDLCategoryExpiry = strictDLCategoryExpiry; } - + /// /// This parameter is used to generate separate DTC-VC data container from RFID session data. /// /// This parameter is used to generate separate DTC-VC data container from RFID session data. - [DataMember(Name="generateDTCVC", EmitDefaultValue=false)] + [DataMember(Name = "generateDTCVC", EmitDefaultValue = false)] public bool? GenerateDTCVC { get; set; } /// /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default. /// /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default. - [DataMember(Name="lcidFilter", EmitDefaultValue=false)] - public List LcidFilter { get; set; } + [DataMember(Name = "lcidFilter", EmitDefaultValue = false)] + public List? LcidFilter { get; set; } + + /// + /// This parameter is used to enable document liveness check. + /// + /// This parameter is used to enable document liveness check. + [DataMember(Name = "checkLiveness", EmitDefaultValue = false)] + public bool? CheckLiveness { get; set; } /// /// The list of LCID types to ignore during the recognition. If empty, values with all LCID types will be extracted. Narrowing down the list can reduce processing time. Empty by default. /// /// The list of LCID types to ignore during the recognition. If empty, values with all LCID types will be extracted. Narrowing down the list can reduce processing time. Empty by default. - [DataMember(Name="lcidIgnoreFilter", EmitDefaultValue=false)] - public List LcidIgnoreFilter { get; set; } + [DataMember(Name = "lcidIgnoreFilter", EmitDefaultValue = false)] + public List? LcidIgnoreFilter { get; set; } /// /// This parameter allows processing an image that contains a person and a document and compare the portrait photo from the document with the person's face /// /// This parameter allows processing an image that contains a person and a document and compare the portrait photo from the document with the person's face - [DataMember(Name="oneShotIdentification", EmitDefaultValue=false)] + [DataMember(Name = "oneShotIdentification", EmitDefaultValue = false)] public bool? OneShotIdentification { get; set; } /// /// This parameter allows comparing faces on Regula Face Web Service /// /// This parameter allows comparing faces on Regula Face Web Service - [DataMember(Name="useFaceApi", EmitDefaultValue=false)] + [DataMember(Name = "useFaceApi", EmitDefaultValue = false)] public bool? UseFaceApi { get; set; } /// /// Gets or Sets FaceApi /// - [DataMember(Name="faceApi", EmitDefaultValue=false)] - public FaceApi FaceApi { get; set; } + [DataMember(Name = "faceApi", EmitDefaultValue = false)] + public FaceApi? FaceApi { get; set; } /// /// This parameter allows enabling the CAN (Card Access Number) detection and recognition when using scenarios with document location and MRZ reading, such as the MrzAndLocate scenario. /// /// This parameter allows enabling the CAN (Card Access Number) detection and recognition when using scenarios with document location and MRZ reading, such as the MrzAndLocate scenario. - [DataMember(Name="doDetectCan", EmitDefaultValue=false)] + [DataMember(Name = "doDetectCan", EmitDefaultValue = false)] public bool? DoDetectCan { get; set; } /// /// This parameter allows setting maximum height 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. /// /// This parameter allows setting maximum height 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. - [DataMember(Name="imageOutputMaxHeight", EmitDefaultValue=false)] - public int ImageOutputMaxHeight { get; set; } + [DataMember(Name = "imageOutputMaxHeight", EmitDefaultValue = false)] + public int? ImageOutputMaxHeight { get; set; } /// /// 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. /// /// 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. - [DataMember(Name="imageOutputMaxWidth", EmitDefaultValue=false)] - public int ImageOutputMaxWidth { get; set; } - - /// - /// Gets or Sets Scenario - /// - [DataMember(Name="scenario", EmitDefaultValue=true)] - public string Scenario { get; set; } + [DataMember(Name = "imageOutputMaxWidth", EmitDefaultValue = false)] + public int? ImageOutputMaxWidth { get; set; } /// /// Types of results to return in response. See 'Result' enum for available options /// /// Types of results to return in response. See 'Result' enum for available options - [DataMember(Name="resultTypeOutput", EmitDefaultValue=false)] - public List ResultTypeOutput { get; set; } + [DataMember(Name = "resultTypeOutput", EmitDefaultValue = false)] + public List? ResultTypeOutput { get; set; } /// /// 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. /// /// 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. - [DataMember(Name="doublePageSpread", EmitDefaultValue=false)] + [DataMember(Name = "doublePageSpread", EmitDefaultValue = false)] + [Obsolete] public bool? DoublePageSpread { get; set; } /// /// 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. /// /// 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. - [DataMember(Name="generateDoublePageSpreadImage", EmitDefaultValue=false)] + [DataMember(Name = "generateDoublePageSpreadImage", EmitDefaultValue = false)] public bool? GenerateDoublePageSpreadImage { get; set; } /// /// List of text field types to extract. If empty, all text fields from template will be extracted. Narrowing the list can shorten processing time. Empty by default. /// /// List of text field types to extract. If empty, all text fields from template will be extracted. Narrowing the list can shorten processing time. Empty by default. - [DataMember(Name="fieldTypesFilter", EmitDefaultValue=false)] - public List FieldTypesFilter { get; set; } + [DataMember(Name = "fieldTypesFilter", EmitDefaultValue = false)] + public List? FieldTypesFilter { get; set; } /// /// This option allows you to set dates format so that solution will return dates in this format. For example, if you supply 'MM/dd/yyyy', and document have printed date '09 JUL 2020' for the date os issue, you will get '07/09/2020' as a result. By default it is set to system locale default (where the service is running). /// /// This option allows you to set dates format so that solution will return dates in this format. For example, if you supply 'MM/dd/yyyy', and document have printed date '09 JUL 2020' for the date os issue, you will get '07/09/2020' as a result. By default it is set to system locale default (where the service is running). - [DataMember(Name="dateFormat", EmitDefaultValue=false)] - public string DateFormat { get; set; } - - /// - /// Gets or Sets MeasureSystem - /// - [DataMember(Name="measureSystem", EmitDefaultValue=false)] - public int MeasureSystem { get; set; } + /* + MM/dd/yyyy + */ + [DataMember(Name = "dateFormat", EmitDefaultValue = false)] + public string? DateFormat { get; set; } /// /// This parameter controls maximum resolution in dpi of output images. Resolution will remain original in case 0 is supplied. By default is set to return images in response with resolution not greater than 300 dpi for all scenarios except FullAuth. In FullAuth scenario this limit is 1000 dpi by default. /// /// This parameter controls maximum resolution in dpi of output images. Resolution will remain original in case 0 is supplied. By default is set to return images in response with resolution not greater than 300 dpi for all scenarios except FullAuth. In FullAuth scenario this limit is 1000 dpi by default. - [DataMember(Name="imageDpiOutMax", EmitDefaultValue=false)] - public int ImageDpiOutMax { get; set; } + [DataMember(Name = "imageDpiOutMax", EmitDefaultValue = false)] + public int? ImageDpiOutMax { get; set; } /// /// This option can be enabled if you know for sure that the image you provide contains already cropped document by its edges. This was designed to process on the server side images captured and cropped on mobile. Disabled by default. /// /// This option can be enabled if you know for sure that the image you provide contains already cropped document by its edges. This was designed to process on the server side images captured and cropped on mobile. Disabled by default. - [DataMember(Name="alreadyCropped", EmitDefaultValue=false)] + [DataMember(Name = "alreadyCropped", EmitDefaultValue = false)] public bool? AlreadyCropped { get; set; } /// /// This option allows passing custom processing parameters that can be implemented in future without changing API. /// /// This option allows passing custom processing parameters that can be implemented in future without changing API. - [DataMember(Name="customParams", EmitDefaultValue=false)] - public Dictionary CustomParams { get; set; } + [DataMember(Name = "customParams", EmitDefaultValue = false)] + public Dictionary? CustomParams { get; set; } /// /// This option allows setting additional custom configuration per document type. If recognized document has ID specified in config, processing adjusts according to designated configuration. /// /// This option allows setting additional custom configuration per document type. If recognized document has ID specified in config, processing adjusts according to designated configuration. - [DataMember(Name="config", EmitDefaultValue=false)] - public List Config { get; set; } + [DataMember(Name = "config", EmitDefaultValue = false)] + public List? Config { get; set; } /// /// When enabled, results will contain transaction processing log. Disabled by default /// /// When enabled, results will contain transaction processing log. Disabled by default - [DataMember(Name="log", EmitDefaultValue=false)] + [DataMember(Name = "log", EmitDefaultValue = false)] public bool? Log { get; set; } - /// - /// Gets or Sets LogLevel - /// - [DataMember(Name="logLevel", EmitDefaultValue=false)] - public string LogLevel { get; set; } - /// /// Force use of specific template ID and skip document type identification step. /// /// Force use of specific template ID and skip document type identification step. - [DataMember(Name="forceDocID", EmitDefaultValue=false)] - public int ForceDocID { get; set; } + [DataMember(Name = "forceDocID", EmitDefaultValue = false)] + public int? ForceDocID { get; set; } /// /// When disabled, text field OCR will be done as is and then the recognized value will be matched to the field mask for validity. If enabled, we are trying to read a field value with maximum efforts to match the mask and provide a correctly formatted value, making assumptions based on the provided field mask in the template. Enabled by default. /// /// When disabled, text field OCR will be done as is and then the recognized value will be matched to the field mask for validity. If enabled, we are trying to read a field value with maximum efforts to match the mask and provide a correctly formatted value, making assumptions based on the provided field mask in the template. Enabled by default. - [DataMember(Name="matchTextFieldMask", EmitDefaultValue=false)] + [DataMember(Name = "matchTextFieldMask", EmitDefaultValue = false)] public bool? MatchTextFieldMask { get; set; } /// /// When enabled, shorten the list of candidates to process during document detection in a single image process mode. Reduces processing time for specific backgrounds. Enabled by default. /// /// When enabled, shorten the list of candidates to process during document detection in a single image process mode. Reduces processing time for specific backgrounds. Enabled by default. - [DataMember(Name="fastDocDetect", EmitDefaultValue=false)] + [DataMember(Name = "fastDocDetect", EmitDefaultValue = false)] + [Obsolete] public bool? FastDocDetect { get; set; } /// /// When enabled, fail OCR field validity, if there is a glare over the text field on the image. Disabled by default. /// /// When enabled, fail OCR field validity, if there is a glare over the text field on the image. Disabled by default. - [DataMember(Name="updateOCRValidityByGlare", EmitDefaultValue=false)] + [DataMember(Name = "updateOCRValidityByGlare", EmitDefaultValue = false)] public bool? UpdateOCRValidityByGlare { get; set; } /// /// When enabled, each field in template will be checked for value presence and if the field is marked as required, but has no value, it will have 'error' in validity status. Disabled by default. /// /// When enabled, each field in template will be checked for value presence and if the field is marked as required, but has no value, it will have 'error' in validity status. Disabled by default. - [DataMember(Name="checkRequiredTextFields", EmitDefaultValue=false)] + [DataMember(Name = "checkRequiredTextFields", EmitDefaultValue = false)] public bool? CheckRequiredTextFields { get; set; } /// /// When enabled, returns cropped barcode images for unknown documents. Disabled by default. /// /// When enabled, returns cropped barcode images for unknown documents. Disabled by default. - [DataMember(Name="returnCroppedBarcode", EmitDefaultValue=false)] + [DataMember(Name = "returnCroppedBarcode", EmitDefaultValue = false)] public bool? ReturnCroppedBarcode { get; set; } /// /// Gets or Sets ImageQa /// - [DataMember(Name="imageQa", EmitDefaultValue=false)] - public ImageQA ImageQa { get; set; } + [DataMember(Name = "imageQa", EmitDefaultValue = false)] + public ImageQA? ImageQa { get; set; } /// /// When enabled, the image quality check status affects the document optical and overall status. Disabled by default. /// /// When enabled, the image quality check status affects the document optical and overall status. Disabled by default. - [DataMember(Name="strictImageQuality", EmitDefaultValue=false)] + [DataMember(Name = "strictImageQuality", EmitDefaultValue = false)] public bool? StrictImageQuality { get; set; } /// /// Deprecated. Please use strictImageQuality instead. When enabled, image quality checks status affects document optical and overall status. Disabled by default. /// /// Deprecated. Please use strictImageQuality instead. When enabled, image quality checks status affects document optical and overall status. Disabled by default. - [DataMember(Name="respectImageQuality", EmitDefaultValue=false)] + [DataMember(Name = "respectImageQuality", EmitDefaultValue = false)] + [Obsolete] public bool? RespectImageQuality { get; set; } - /// - /// Gets or Sets ForceDocFormat - /// - [DataMember(Name="forceDocFormat", EmitDefaultValue=false)] - public int ForceDocFormat { get; set; } - /// /// When enabled, no graphic fields will be cropped from document image. Disabled by default. /// /// When enabled, no graphic fields will be cropped from document image. Disabled by default. - [DataMember(Name="noGraphics", EmitDefaultValue=false)] + [DataMember(Name = "noGraphics", EmitDefaultValue = false)] public bool? NoGraphics { get; set; } /// /// When enabled, all personal data will be forcibly removed from the logs. Disabled by default. /// /// When enabled, all personal data will be forcibly removed from the logs. Disabled by default. - [DataMember(Name="depersonalizeLog", EmitDefaultValue=false)] + [DataMember(Name = "depersonalizeLog", EmitDefaultValue = false)] public bool? DepersonalizeLog { get; set; } /// /// This option allows locating and cropping multiple documents from one image if enabled. Disabled by default. /// /// This option allows locating and cropping multiple documents from one image if enabled. Disabled by default. - [DataMember(Name="multiDocOnImage", EmitDefaultValue=false)] + [DataMember(Name = "multiDocOnImage", EmitDefaultValue = false)] public bool? MultiDocOnImage { get; set; } /// /// This option allows shifting the date of expiry into the future or past for number of months specified. This is useful, for example, in some cases when document might be still valid for some period after original expiration date to prevent negative validity status for such documents. Or by shifting the date to the past will set negative validity for the documents that is about to expire in a specified number of months. 0 by default /// /// This option allows shifting the date of expiry into the future or past for number of months specified. This is useful, for example, in some cases when document might be still valid for some period after original expiration date to prevent negative validity status for such documents. Or by shifting the date to the past will set negative validity for the documents that is about to expire in a specified number of months. 0 by default - [DataMember(Name="shiftExpiryDate", EmitDefaultValue=false)] - public int ShiftExpiryDate { get; set; } + [DataMember(Name = "shiftExpiryDate", EmitDefaultValue = false)] + public int? ShiftExpiryDate { get; set; } /// /// This options allows specifying the minimal age in years of the document holder for the document to be considered valid. /// /// This options allows specifying the minimal age in years of the document holder for the document to be considered valid. - [DataMember(Name="minimalHolderAge", EmitDefaultValue=false)] - public int MinimalHolderAge { get; set; } + [DataMember(Name = "minimalHolderAge", EmitDefaultValue = false)] + public int? MinimalHolderAge { get; set; } /// /// When enabled, returns input images in output. Disabled by default. /// /// When enabled, returns input images in output. Disabled by default. - [DataMember(Name="returnUncroppedImage", EmitDefaultValue=false)] + [DataMember(Name = "returnUncroppedImage", EmitDefaultValue = false)] public bool? ReturnUncroppedImage { get; set; } /// /// This option allows limiting MRZ formats to be recognized by specifying them in array. /// /// This option allows limiting MRZ formats to be recognized by specifying them in array. - [DataMember(Name="mrzFormatsFilter", EmitDefaultValue=false)] - public List MrzFormatsFilter { get; set; } + [DataMember(Name = "mrzFormatsFilter", EmitDefaultValue = false)] + public List? MrzFormatsFilter { get; set; } /// /// When enabled, make sure that in series processing MRZ is located fully inside the result document image, if present on the document. Enabling this option may add extra processing time, by disabling optimizations, but allows more stability in output image quality. Disabled by default. /// /// When enabled, make sure that in series processing MRZ is located fully inside the result document image, if present on the document. Enabling this option may add extra processing time, by disabling optimizations, but allows more stability in output image quality. Disabled by default. - [DataMember(Name="forceReadMrzBeforeLocate", EmitDefaultValue=false)] + [DataMember(Name = "forceReadMrzBeforeLocate", EmitDefaultValue = false)] public bool? ForceReadMrzBeforeLocate { get; set; } /// /// This option can be disabled to stop parsing after barcode is read. Enabled by default. /// /// This option can be disabled to stop parsing after barcode is read. Enabled by default. - [DataMember(Name="parseBarcodes", EmitDefaultValue=false)] + [DataMember(Name = "parseBarcodes", EmitDefaultValue = false)] public bool? ParseBarcodes { get; set; } - /// - /// Gets or Sets ConvertCase - /// - [DataMember(Name="convertCase", EmitDefaultValue=false)] - public int ConvertCase { get; set; } - /// /// When enabled, the Surname and GivenNames fields from MRZ will be divided into ft_First_Name, ft_Second_Name, ft_Third_Name, ft_Fourth_Name, ft_Last_Name fields. Disabled by default. /// /// When enabled, the Surname and GivenNames fields from MRZ will be divided into ft_First_Name, ft_Second_Name, ft_Third_Name, ft_Fourth_Name, ft_Last_Name fields. Disabled by default. - [DataMember(Name="splitNames", EmitDefaultValue=false)] + [DataMember(Name = "splitNames", EmitDefaultValue = false)] public bool? SplitNames { get; set; } /// /// When enabled, OCR of perforated fields in the document template will not be performed. Disabled by default. /// /// When enabled, OCR of perforated fields in the document template will not be performed. Disabled by default. - [DataMember(Name="disablePerforationOCR", EmitDefaultValue=false)] + [DataMember(Name = "disablePerforationOCR", EmitDefaultValue = false)] public bool? DisablePerforationOCR { get; set; } /// /// List of specific eligible document types from DocumentType enum to recognize from. You may, for example, specify only passports to be recognized by setting this property. Empty by default. /// /// List of specific eligible document types from DocumentType enum to recognize from. You may, for example, specify only passports to be recognized by setting this property. Empty by default. - [DataMember(Name="documentGroupFilter", EmitDefaultValue=false)] - public List DocumentGroupFilter { get; set; } - - /// - /// Authenticity checks that should be performed regardless of the document type. The available checks are listed in the eRPRM_Authenticity enum. Note that only supported by your license checks can be added. - /// - /// Authenticity checks that should be performed regardless of the document type. The available checks are listed in the eRPRM_Authenticity enum. Note that only supported by your license checks can be added. - [DataMember(Name="processAuth", EmitDefaultValue=false)] - public long ProcessAuth { get; set; } + [DataMember(Name = "documentGroupFilter", EmitDefaultValue = false)] + public List? DocumentGroupFilter { get; set; } /// /// This parameter is used to specify the document reader device type from which input images were captured. Default 0. /// /// This parameter is used to specify the document reader device type from which input images were captured. Default 0. - [DataMember(Name="deviceId", EmitDefaultValue=false)] - public int DeviceId { get; set; } + [DataMember(Name = "deviceId", EmitDefaultValue = false)] + public int? DeviceId { get; set; } /// /// This parameter is used to specify the document reader device type from which input images were captured. Default 0. /// /// This parameter is used to specify the document reader device type from which input images were captured. Default 0. - [DataMember(Name="deviceType", EmitDefaultValue=false)] - public int DeviceType { get; set; } + [DataMember(Name = "deviceType", EmitDefaultValue = false)] + public int? DeviceType { get; set; } /// /// This parameter is used to specify the document reader device type from which input images were captured /// /// This parameter is used to specify the document reader device type from which input images were captured - [DataMember(Name="deviceTypeHex", EmitDefaultValue=false)] - public string DeviceTypeHex { get; set; } + [DataMember(Name = "deviceTypeHex", EmitDefaultValue = false)] + public string? DeviceTypeHex { get; set; } /// /// This parameter is used to tell the processing engine to ignore any parameters saved in the image when scanned from the document reader device. Default false /// /// This parameter is used to tell the processing engine to ignore any parameters saved in the image when scanned from the document reader device. Default false - [DataMember(Name="ignoreDeviceIdFromImage", EmitDefaultValue=false)] + [DataMember(Name = "ignoreDeviceIdFromImage", EmitDefaultValue = false)] public bool? IgnoreDeviceIdFromImage { get; set; } /// /// List of the document ID's to process. All documents will be processed, if empty. /// /// List of the document ID's to process. All documents will be processed, if empty. - [DataMember(Name="documentIdList", EmitDefaultValue=false)] - public List DocumentIdList { get; set; } + [DataMember(Name = "documentIdList", EmitDefaultValue = false)] + public List? DocumentIdList { get; set; } /// /// Gets or Sets Rfid /// - [DataMember(Name="rfid", EmitDefaultValue=false)] - public ProcessParamsRfid Rfid { get; set; } + [DataMember(Name = "rfid", EmitDefaultValue = false)] + public ProcessParamsRfid? Rfid { get; set; } /// /// This parameter is used to enable authenticity checks /// /// This parameter is used to enable authenticity checks - [DataMember(Name="checkAuth", EmitDefaultValue=false)] + [DataMember(Name = "checkAuth", EmitDefaultValue = false)] public bool? CheckAuth { get; set; } /// /// Gets or Sets AuthParams /// - [DataMember(Name="authParams", EmitDefaultValue=false)] - public AuthParams AuthParams { get; set; } - - /// - /// Gets or Sets MrzDetectMode - /// - [DataMember(Name="mrzDetectMode", EmitDefaultValue=false)] - public MrzDetectModeEnum MrzDetectMode { get; set; } + [DataMember(Name = "authParams", EmitDefaultValue = false)] + public AuthParams? AuthParams { get; set; } /// /// This parameter is used to generate numeric representation for issuing state and nationality codes /// /// This parameter is used to generate numeric representation for issuing state and nationality codes - [DataMember(Name="generateNumericCodes", EmitDefaultValue=false)] + [DataMember(Name = "generateNumericCodes", EmitDefaultValue = false)] public bool? GenerateNumericCodes { get; set; } /// /// This parameter if enabled will require all necessary certificates to verify digital signature in barcode data to be present in order for the Barcode format check to succeed. /// /// This parameter if enabled will require all necessary certificates to verify digital signature in barcode data to be present in order for the Barcode format check to succeed. - [DataMember(Name="strictBarcodeDigitalSignatureCheck", EmitDefaultValue=false)] + [DataMember(Name = "strictBarcodeDigitalSignatureCheck", EmitDefaultValue = false)] public bool? StrictBarcodeDigitalSignatureCheck { get; set; } /// /// Select the longest value from the different value sources and write it to the value field if comparison is done successfully. The parameter applies this logic to the personal names, such as given name, surname, surname and given name, middle name and etc. /// /// Select the longest value from the different value sources and write it to the value field if comparison is done successfully. The parameter applies this logic to the personal names, such as given name, surname, surname and given name, middle name and etc. - [DataMember(Name="selectLongestNames", EmitDefaultValue=false)] + [DataMember(Name = "selectLongestNames", EmitDefaultValue = false)] public bool? SelectLongestNames { get; set; } /// /// Set the types of barcodes to process. /// /// Set the types of barcodes to process. - [DataMember(Name="doBarcodes", EmitDefaultValue=false)] - public List DoBarcodes { get; set; } + [DataMember(Name = "doBarcodes", EmitDefaultValue = false)] + public List? DoBarcodes { get; set; } /// /// Set to force DL categories expiry date to affect the overall status or not. As documents usually have their own date of expiry, which might be less or greater than category expiry date, this might be handy for specific cases. /// /// Set to force DL categories expiry date to affect the overall status or not. As documents usually have their own date of expiry, which might be less or greater than category expiry date, this might be handy for specific cases. - [DataMember(Name="strictDLCategoryExpiry", EmitDefaultValue=false)] + [DataMember(Name = "strictDLCategoryExpiry", EmitDefaultValue = false)] public bool? StrictDLCategoryExpiry { get; set; } /// @@ -587,10 +594,11 @@ protected ProcessParams() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessParams {\n"); sb.Append(" GenerateDTCVC: ").Append(GenerateDTCVC).Append("\n"); sb.Append(" LcidFilter: ").Append(LcidFilter).Append("\n"); + sb.Append(" CheckLiveness: ").Append(CheckLiveness).Append("\n"); sb.Append(" LcidIgnoreFilter: ").Append(LcidIgnoreFilter).Append("\n"); sb.Append(" OneShotIdentification: ").Append(OneShotIdentification).Append("\n"); sb.Append(" UseFaceApi: ").Append(UseFaceApi).Append("\n"); @@ -652,7 +660,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -662,478 +670,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessParams); - } - - /// - /// Returns true if ProcessParams instances are equal - /// - /// Instance of ProcessParams to be compared - /// Boolean - public bool Equals(ProcessParams input) - { - if (input == null) - return false; - - return - ( - this.GenerateDTCVC == input.GenerateDTCVC || - (this.GenerateDTCVC != null && - this.GenerateDTCVC.Equals(input.GenerateDTCVC)) - ) && - ( - this.LcidFilter == input.LcidFilter || - this.LcidFilter != null && - input.LcidFilter != null && - this.LcidFilter.SequenceEqual(input.LcidFilter) - ) && - ( - this.LcidIgnoreFilter == input.LcidIgnoreFilter || - this.LcidIgnoreFilter != null && - input.LcidIgnoreFilter != null && - this.LcidIgnoreFilter.SequenceEqual(input.LcidIgnoreFilter) - ) && - ( - this.OneShotIdentification == input.OneShotIdentification || - (this.OneShotIdentification != null && - this.OneShotIdentification.Equals(input.OneShotIdentification)) - ) && - ( - this.UseFaceApi == input.UseFaceApi || - (this.UseFaceApi != null && - this.UseFaceApi.Equals(input.UseFaceApi)) - ) && - ( - this.FaceApi == input.FaceApi || - (this.FaceApi != null && - this.FaceApi.Equals(input.FaceApi)) - ) && - ( - this.DoDetectCan == input.DoDetectCan || - (this.DoDetectCan != null && - this.DoDetectCan.Equals(input.DoDetectCan)) - ) && - ( - this.ImageOutputMaxHeight == input.ImageOutputMaxHeight || - (this.ImageOutputMaxHeight != null && - this.ImageOutputMaxHeight.Equals(input.ImageOutputMaxHeight)) - ) && - ( - this.ImageOutputMaxWidth == input.ImageOutputMaxWidth || - (this.ImageOutputMaxWidth != null && - this.ImageOutputMaxWidth.Equals(input.ImageOutputMaxWidth)) - ) && - ( - this.Scenario == input.Scenario || - (this.Scenario != null && - this.Scenario.Equals(input.Scenario)) - ) && - ( - this.ResultTypeOutput == input.ResultTypeOutput || - this.ResultTypeOutput != null && - input.ResultTypeOutput != null && - this.ResultTypeOutput.SequenceEqual(input.ResultTypeOutput) - ) && - ( - this.DoublePageSpread == input.DoublePageSpread || - (this.DoublePageSpread != null && - this.DoublePageSpread.Equals(input.DoublePageSpread)) - ) && - ( - this.GenerateDoublePageSpreadImage == input.GenerateDoublePageSpreadImage || - (this.GenerateDoublePageSpreadImage != null && - this.GenerateDoublePageSpreadImage.Equals(input.GenerateDoublePageSpreadImage)) - ) && - ( - this.FieldTypesFilter == input.FieldTypesFilter || - this.FieldTypesFilter != null && - input.FieldTypesFilter != null && - this.FieldTypesFilter.SequenceEqual(input.FieldTypesFilter) - ) && - ( - this.DateFormat == input.DateFormat || - (this.DateFormat != null && - this.DateFormat.Equals(input.DateFormat)) - ) && - ( - this.MeasureSystem == input.MeasureSystem || - (this.MeasureSystem != null && - this.MeasureSystem.Equals(input.MeasureSystem)) - ) && - ( - this.ImageDpiOutMax == input.ImageDpiOutMax || - (this.ImageDpiOutMax != null && - this.ImageDpiOutMax.Equals(input.ImageDpiOutMax)) - ) && - ( - this.AlreadyCropped == input.AlreadyCropped || - (this.AlreadyCropped != null && - this.AlreadyCropped.Equals(input.AlreadyCropped)) - ) && - ( - this.CustomParams == input.CustomParams || - this.CustomParams != null && - input.CustomParams != null && - this.CustomParams.SequenceEqual(input.CustomParams) - ) && - ( - this.Config == input.Config || - this.Config != null && - input.Config != null && - this.Config.SequenceEqual(input.Config) - ) && - ( - this.Log == input.Log || - (this.Log != null && - this.Log.Equals(input.Log)) - ) && - ( - this.LogLevel == input.LogLevel || - (this.LogLevel != null && - this.LogLevel.Equals(input.LogLevel)) - ) && - ( - this.ForceDocID == input.ForceDocID || - (this.ForceDocID != null && - this.ForceDocID.Equals(input.ForceDocID)) - ) && - ( - this.MatchTextFieldMask == input.MatchTextFieldMask || - (this.MatchTextFieldMask != null && - this.MatchTextFieldMask.Equals(input.MatchTextFieldMask)) - ) && - ( - this.FastDocDetect == input.FastDocDetect || - (this.FastDocDetect != null && - this.FastDocDetect.Equals(input.FastDocDetect)) - ) && - ( - this.UpdateOCRValidityByGlare == input.UpdateOCRValidityByGlare || - (this.UpdateOCRValidityByGlare != null && - this.UpdateOCRValidityByGlare.Equals(input.UpdateOCRValidityByGlare)) - ) && - ( - this.CheckRequiredTextFields == input.CheckRequiredTextFields || - (this.CheckRequiredTextFields != null && - this.CheckRequiredTextFields.Equals(input.CheckRequiredTextFields)) - ) && - ( - this.ReturnCroppedBarcode == input.ReturnCroppedBarcode || - (this.ReturnCroppedBarcode != null && - this.ReturnCroppedBarcode.Equals(input.ReturnCroppedBarcode)) - ) && - ( - this.ImageQa == input.ImageQa || - (this.ImageQa != null && - this.ImageQa.Equals(input.ImageQa)) - ) && - ( - this.StrictImageQuality == input.StrictImageQuality || - (this.StrictImageQuality != null && - this.StrictImageQuality.Equals(input.StrictImageQuality)) - ) && - ( - this.RespectImageQuality == input.RespectImageQuality || - (this.RespectImageQuality != null && - this.RespectImageQuality.Equals(input.RespectImageQuality)) - ) && - ( - this.ForceDocFormat == input.ForceDocFormat || - (this.ForceDocFormat != null && - this.ForceDocFormat.Equals(input.ForceDocFormat)) - ) && - ( - this.NoGraphics == input.NoGraphics || - (this.NoGraphics != null && - this.NoGraphics.Equals(input.NoGraphics)) - ) && - ( - this.DepersonalizeLog == input.DepersonalizeLog || - (this.DepersonalizeLog != null && - this.DepersonalizeLog.Equals(input.DepersonalizeLog)) - ) && - ( - this.MultiDocOnImage == input.MultiDocOnImage || - (this.MultiDocOnImage != null && - this.MultiDocOnImage.Equals(input.MultiDocOnImage)) - ) && - ( - this.ShiftExpiryDate == input.ShiftExpiryDate || - (this.ShiftExpiryDate != null && - this.ShiftExpiryDate.Equals(input.ShiftExpiryDate)) - ) && - ( - this.MinimalHolderAge == input.MinimalHolderAge || - (this.MinimalHolderAge != null && - this.MinimalHolderAge.Equals(input.MinimalHolderAge)) - ) && - ( - this.ReturnUncroppedImage == input.ReturnUncroppedImage || - (this.ReturnUncroppedImage != null && - this.ReturnUncroppedImage.Equals(input.ReturnUncroppedImage)) - ) && - ( - this.MrzFormatsFilter == input.MrzFormatsFilter || - this.MrzFormatsFilter != null && - input.MrzFormatsFilter != null && - this.MrzFormatsFilter.SequenceEqual(input.MrzFormatsFilter) - ) && - ( - this.ForceReadMrzBeforeLocate == input.ForceReadMrzBeforeLocate || - (this.ForceReadMrzBeforeLocate != null && - this.ForceReadMrzBeforeLocate.Equals(input.ForceReadMrzBeforeLocate)) - ) && - ( - this.ParseBarcodes == input.ParseBarcodes || - (this.ParseBarcodes != null && - this.ParseBarcodes.Equals(input.ParseBarcodes)) - ) && - ( - this.ConvertCase == input.ConvertCase || - (this.ConvertCase != null && - this.ConvertCase.Equals(input.ConvertCase)) - ) && - ( - this.SplitNames == input.SplitNames || - (this.SplitNames != null && - this.SplitNames.Equals(input.SplitNames)) - ) && - ( - this.DisablePerforationOCR == input.DisablePerforationOCR || - (this.DisablePerforationOCR != null && - this.DisablePerforationOCR.Equals(input.DisablePerforationOCR)) - ) && - ( - this.DocumentGroupFilter == input.DocumentGroupFilter || - this.DocumentGroupFilter != null && - input.DocumentGroupFilter != null && - this.DocumentGroupFilter.SequenceEqual(input.DocumentGroupFilter) - ) && - ( - this.ProcessAuth == input.ProcessAuth || - (this.ProcessAuth != null && - this.ProcessAuth.Equals(input.ProcessAuth)) - ) && - ( - this.DeviceId == input.DeviceId || - (this.DeviceId != null && - this.DeviceId.Equals(input.DeviceId)) - ) && - ( - this.DeviceType == input.DeviceType || - (this.DeviceType != null && - this.DeviceType.Equals(input.DeviceType)) - ) && - ( - this.DeviceTypeHex == input.DeviceTypeHex || - (this.DeviceTypeHex != null && - this.DeviceTypeHex.Equals(input.DeviceTypeHex)) - ) && - ( - this.IgnoreDeviceIdFromImage == input.IgnoreDeviceIdFromImage || - (this.IgnoreDeviceIdFromImage != null && - this.IgnoreDeviceIdFromImage.Equals(input.IgnoreDeviceIdFromImage)) - ) && - ( - this.DocumentIdList == input.DocumentIdList || - this.DocumentIdList != null && - input.DocumentIdList != null && - this.DocumentIdList.SequenceEqual(input.DocumentIdList) - ) && - ( - this.Rfid == input.Rfid || - (this.Rfid != null && - this.Rfid.Equals(input.Rfid)) - ) && - ( - this.CheckAuth == input.CheckAuth || - (this.CheckAuth != null && - this.CheckAuth.Equals(input.CheckAuth)) - ) && - ( - this.AuthParams == input.AuthParams || - (this.AuthParams != null && - this.AuthParams.Equals(input.AuthParams)) - ) && - ( - this.MrzDetectMode == input.MrzDetectMode || - (this.MrzDetectMode != null && - this.MrzDetectMode.Equals(input.MrzDetectMode)) - ) && - ( - this.GenerateNumericCodes == input.GenerateNumericCodes || - (this.GenerateNumericCodes != null && - this.GenerateNumericCodes.Equals(input.GenerateNumericCodes)) - ) && - ( - this.StrictBarcodeDigitalSignatureCheck == input.StrictBarcodeDigitalSignatureCheck || - (this.StrictBarcodeDigitalSignatureCheck != null && - this.StrictBarcodeDigitalSignatureCheck.Equals(input.StrictBarcodeDigitalSignatureCheck)) - ) && - ( - this.SelectLongestNames == input.SelectLongestNames || - (this.SelectLongestNames != null && - this.SelectLongestNames.Equals(input.SelectLongestNames)) - ) && - ( - this.DoBarcodes == input.DoBarcodes || - this.DoBarcodes != null && - input.DoBarcodes != null && - this.DoBarcodes.SequenceEqual(input.DoBarcodes) - ) && - ( - this.StrictDLCategoryExpiry == input.StrictDLCategoryExpiry || - (this.StrictDLCategoryExpiry != null && - this.StrictDLCategoryExpiry.Equals(input.StrictDLCategoryExpiry)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.GenerateDTCVC != null) - hashCode = hashCode * 59 + this.GenerateDTCVC.GetHashCode(); - if (this.LcidFilter != null) - hashCode = hashCode * 59 + this.LcidFilter.GetHashCode(); - if (this.LcidIgnoreFilter != null) - hashCode = hashCode * 59 + this.LcidIgnoreFilter.GetHashCode(); - if (this.OneShotIdentification != null) - hashCode = hashCode * 59 + this.OneShotIdentification.GetHashCode(); - if (this.UseFaceApi != null) - hashCode = hashCode * 59 + this.UseFaceApi.GetHashCode(); - if (this.FaceApi != null) - hashCode = hashCode * 59 + this.FaceApi.GetHashCode(); - if (this.DoDetectCan != null) - hashCode = hashCode * 59 + this.DoDetectCan.GetHashCode(); - if (this.ImageOutputMaxHeight != null) - hashCode = hashCode * 59 + this.ImageOutputMaxHeight.GetHashCode(); - if (this.ImageOutputMaxWidth != null) - hashCode = hashCode * 59 + this.ImageOutputMaxWidth.GetHashCode(); - if (this.Scenario != null) - hashCode = hashCode * 59 + this.Scenario.GetHashCode(); - if (this.ResultTypeOutput != null) - hashCode = hashCode * 59 + this.ResultTypeOutput.GetHashCode(); - if (this.DoublePageSpread != null) - hashCode = hashCode * 59 + this.DoublePageSpread.GetHashCode(); - if (this.GenerateDoublePageSpreadImage != null) - hashCode = hashCode * 59 + this.GenerateDoublePageSpreadImage.GetHashCode(); - if (this.FieldTypesFilter != null) - hashCode = hashCode * 59 + this.FieldTypesFilter.GetHashCode(); - if (this.DateFormat != null) - hashCode = hashCode * 59 + this.DateFormat.GetHashCode(); - if (this.MeasureSystem != null) - hashCode = hashCode * 59 + this.MeasureSystem.GetHashCode(); - if (this.ImageDpiOutMax != null) - hashCode = hashCode * 59 + this.ImageDpiOutMax.GetHashCode(); - if (this.AlreadyCropped != null) - hashCode = hashCode * 59 + this.AlreadyCropped.GetHashCode(); - if (this.CustomParams != null) - hashCode = hashCode * 59 + this.CustomParams.GetHashCode(); - if (this.Config != null) - hashCode = hashCode * 59 + this.Config.GetHashCode(); - if (this.Log != null) - hashCode = hashCode * 59 + this.Log.GetHashCode(); - if (this.LogLevel != null) - hashCode = hashCode * 59 + this.LogLevel.GetHashCode(); - if (this.ForceDocID != null) - hashCode = hashCode * 59 + this.ForceDocID.GetHashCode(); - if (this.MatchTextFieldMask != null) - hashCode = hashCode * 59 + this.MatchTextFieldMask.GetHashCode(); - if (this.FastDocDetect != null) - hashCode = hashCode * 59 + this.FastDocDetect.GetHashCode(); - if (this.UpdateOCRValidityByGlare != null) - hashCode = hashCode * 59 + this.UpdateOCRValidityByGlare.GetHashCode(); - if (this.CheckRequiredTextFields != null) - hashCode = hashCode * 59 + this.CheckRequiredTextFields.GetHashCode(); - if (this.ReturnCroppedBarcode != null) - hashCode = hashCode * 59 + this.ReturnCroppedBarcode.GetHashCode(); - if (this.ImageQa != null) - hashCode = hashCode * 59 + this.ImageQa.GetHashCode(); - if (this.StrictImageQuality != null) - hashCode = hashCode * 59 + this.StrictImageQuality.GetHashCode(); - if (this.RespectImageQuality != null) - hashCode = hashCode * 59 + this.RespectImageQuality.GetHashCode(); - if (this.ForceDocFormat != null) - hashCode = hashCode * 59 + this.ForceDocFormat.GetHashCode(); - if (this.NoGraphics != null) - hashCode = hashCode * 59 + this.NoGraphics.GetHashCode(); - if (this.DepersonalizeLog != null) - hashCode = hashCode * 59 + this.DepersonalizeLog.GetHashCode(); - if (this.MultiDocOnImage != null) - hashCode = hashCode * 59 + this.MultiDocOnImage.GetHashCode(); - if (this.ShiftExpiryDate != null) - hashCode = hashCode * 59 + this.ShiftExpiryDate.GetHashCode(); - if (this.MinimalHolderAge != null) - hashCode = hashCode * 59 + this.MinimalHolderAge.GetHashCode(); - if (this.ReturnUncroppedImage != null) - hashCode = hashCode * 59 + this.ReturnUncroppedImage.GetHashCode(); - if (this.MrzFormatsFilter != null) - hashCode = hashCode * 59 + this.MrzFormatsFilter.GetHashCode(); - if (this.ForceReadMrzBeforeLocate != null) - hashCode = hashCode * 59 + this.ForceReadMrzBeforeLocate.GetHashCode(); - if (this.ParseBarcodes != null) - hashCode = hashCode * 59 + this.ParseBarcodes.GetHashCode(); - if (this.ConvertCase != null) - hashCode = hashCode * 59 + this.ConvertCase.GetHashCode(); - if (this.SplitNames != null) - hashCode = hashCode * 59 + this.SplitNames.GetHashCode(); - if (this.DisablePerforationOCR != null) - hashCode = hashCode * 59 + this.DisablePerforationOCR.GetHashCode(); - if (this.DocumentGroupFilter != null) - hashCode = hashCode * 59 + this.DocumentGroupFilter.GetHashCode(); - if (this.ProcessAuth != null) - hashCode = hashCode * 59 + this.ProcessAuth.GetHashCode(); - if (this.DeviceId != null) - hashCode = hashCode * 59 + this.DeviceId.GetHashCode(); - if (this.DeviceType != null) - hashCode = hashCode * 59 + this.DeviceType.GetHashCode(); - if (this.DeviceTypeHex != null) - hashCode = hashCode * 59 + this.DeviceTypeHex.GetHashCode(); - if (this.IgnoreDeviceIdFromImage != null) - hashCode = hashCode * 59 + this.IgnoreDeviceIdFromImage.GetHashCode(); - if (this.DocumentIdList != null) - hashCode = hashCode * 59 + this.DocumentIdList.GetHashCode(); - if (this.Rfid != null) - hashCode = hashCode * 59 + this.Rfid.GetHashCode(); - if (this.CheckAuth != null) - hashCode = hashCode * 59 + this.CheckAuth.GetHashCode(); - if (this.AuthParams != null) - hashCode = hashCode * 59 + this.AuthParams.GetHashCode(); - if (this.MrzDetectMode != null) - hashCode = hashCode * 59 + this.MrzDetectMode.GetHashCode(); - if (this.GenerateNumericCodes != null) - hashCode = hashCode * 59 + this.GenerateNumericCodes.GetHashCode(); - if (this.StrictBarcodeDigitalSignatureCheck != null) - hashCode = hashCode * 59 + this.StrictBarcodeDigitalSignatureCheck.GetHashCode(); - if (this.SelectLongestNames != null) - hashCode = hashCode * 59 + this.SelectLongestNames.GetHashCode(); - if (this.DoBarcodes != null) - hashCode = hashCode * 59 + this.DoBarcodes.GetHashCode(); - if (this.StrictDLCategoryExpiry != null) - hashCode = hashCode * 59 + this.StrictDLCategoryExpiry.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessParamsRfid.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessParamsRfid.cs index 9809f39..615c1a1 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessParamsRfid.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessParamsRfid.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Params for the RFID chip data reprocessing /// - [DataContract] - public partial class ProcessParamsRfid : IEquatable, IValidatableObject + [DataContract(Name = "ProcessParams_rfid")] + public partial class ProcessParamsRfid : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,13 +40,13 @@ public partial class ProcessParamsRfid : IEquatable, IValida { this.PaSensitiveCodesDisable = paSensitiveCodesDisable; } - + /// /// A list of notification codes that should be ignored during passive authentication (PA) /// /// A list of notification codes that should be ignored during passive authentication (PA) - [DataMember(Name="paSensitiveCodesDisable", EmitDefaultValue=false)] - public List PaSensitiveCodesDisable { get; set; } + [DataMember(Name = "paSensitiveCodesDisable", EmitDefaultValue = false)] + public List? PaSensitiveCodesDisable { get; set; } /// /// Returns the string presentation of the object @@ -52,13 +54,13 @@ public partial class ProcessParamsRfid : IEquatable, IValida /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessParamsRfid {\n"); sb.Append(" PaSensitiveCodesDisable: ").Append(PaSensitiveCodesDisable).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -68,56 +70,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessParamsRfid); - } - - /// - /// Returns true if ProcessParamsRfid instances are equal - /// - /// Instance of ProcessParamsRfid to be compared - /// Boolean - public bool Equals(ProcessParamsRfid input) - { - if (input == null) - return false; - - return - ( - this.PaSensitiveCodesDisable == input.PaSensitiveCodesDisable || - this.PaSensitiveCodesDisable != null && - input.PaSensitiveCodesDisable != null && - this.PaSensitiveCodesDisable.SequenceEqual(input.PaSensitiveCodesDisable) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.PaSensitiveCodesDisable != null) - hashCode = hashCode * 59 + this.PaSensitiveCodesDisable.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessRequest.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessRequest.cs index 856208a..c8ccca2 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessRequest.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessRequest.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ProcessRequest /// - [DataContract] - public partial class ProcessRequest : IEquatable, IValidatableObject + [DataContract(Name = "ProcessRequest")] + public partial class ProcessRequest : IValidatableObject { /// /// Initializes a new instance of the class. @@ -50,18 +52,15 @@ protected ProcessRequest() { } /// Free-form object to be included in response. Must be object, not list or simple value. Do not affect document processing. Use it freely to pass your app params. Stored in process logs.. /// Digital Travel Credential (DTC-VC) data in base64 format for processing. /// URLs to the document images for processing.. - public ProcessRequest(ProcessParams processParam = default(ProcessParams), List list = default(List), string tag = default(string), string tenant = default(string), string env = default(string), string livePortrait = default(string), string extPortrait = default(string), ContainerList containerList = default(ContainerList), ProcessSystemInfo systemInfo = default(ProcessSystemInfo), Dictionary passBackObject = default(Dictionary), string dtc = default(string), List imageUrls = default(List)) + /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default.. + public ProcessRequest(ProcessParams processParam = default(ProcessParams), List list = default(List), string tag = default(string), string tenant = default(string), string env = default(string), string livePortrait = default(string), string extPortrait = default(string), ContainerList containerList = default(ContainerList), ProcessSystemInfo systemInfo = default(ProcessSystemInfo), Dictionary passBackObject = default(Dictionary), string dtc = default(string), List imageUrls = default(List), List lcidFilter = default(List)) { // to ensure "processParam" is required (not null) if (processParam == null) { - throw new InvalidDataException("processParam is a required property for ProcessRequest and cannot be null"); + throw new ArgumentNullException("processParam is a required property for ProcessRequest and cannot be null"); } - else - { - this.ProcessParam = processParam; - } - + this.ProcessParam = processParam; this.List = list; this.Tag = tag; this.Tenant = tenant; @@ -73,87 +72,101 @@ protected ProcessRequest() { } this.PassBackObject = passBackObject; this.Dtc = dtc; this.ImageUrls = imageUrls; + this.LcidFilter = lcidFilter; } - + /// /// Gets or Sets ProcessParam /// - [DataMember(Name="processParam", EmitDefaultValue=true)] + [DataMember(Name = "processParam", IsRequired = true, EmitDefaultValue = true)] public ProcessParams ProcessParam { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=false)] - public List List { get; set; } + [DataMember(Name = "List", EmitDefaultValue = false)] + public List? List { get; set; } /// /// Session ID /// /// Session ID - [DataMember(Name="tag", EmitDefaultValue=false)] - public string Tag { get; set; } + [DataMember(Name = "tag", EmitDefaultValue = false)] + public string? Tag { get; set; } /// /// Customer name /// /// Customer name - [DataMember(Name="tenant", EmitDefaultValue=false)] - public string Tenant { get; set; } + [DataMember(Name = "tenant", EmitDefaultValue = false)] + public string? Tenant { get; set; } /// /// Environment type /// /// Environment type - [DataMember(Name="env", EmitDefaultValue=false)] - public string Env { get; set; } + [DataMember(Name = "env", EmitDefaultValue = false)] + public string? Env { get; set; } /// /// Live portrait photo /// /// Live portrait photo - [DataMember(Name="livePortrait", EmitDefaultValue=false)] - public string LivePortrait { get; set; } + /* + Base64 encoded data + */ + [DataMember(Name = "livePortrait", EmitDefaultValue = false)] + public string? LivePortrait { get; set; } /// /// Portrait photo from an external source /// /// Portrait photo from an external source - [DataMember(Name="extPortrait", EmitDefaultValue=false)] - public string ExtPortrait { get; set; } + /* + Base64 encoded data + */ + [DataMember(Name = "extPortrait", EmitDefaultValue = false)] + public string? ExtPortrait { get; set; } /// /// Gets or Sets ContainerList /// - [DataMember(Name="ContainerList", EmitDefaultValue=false)] - public ContainerList ContainerList { get; set; } + [DataMember(Name = "ContainerList", EmitDefaultValue = false)] + public ContainerList? ContainerList { get; set; } /// /// Gets or Sets SystemInfo /// - [DataMember(Name="systemInfo", EmitDefaultValue=false)] - public ProcessSystemInfo SystemInfo { get; set; } + [DataMember(Name = "systemInfo", EmitDefaultValue = false)] + public ProcessSystemInfo? SystemInfo { get; set; } /// /// Free-form object to be included in response. Must be object, not list or simple value. Do not affect document processing. Use it freely to pass your app params. Stored in process logs. /// /// Free-form object to be included in response. Must be object, not list or simple value. Do not affect document processing. Use it freely to pass your app params. Stored in process logs. - [DataMember(Name="passBackObject", EmitDefaultValue=false)] - public Dictionary PassBackObject { get; set; } + [DataMember(Name = "passBackObject", EmitDefaultValue = false)] + public Dictionary? PassBackObject { get; set; } /// /// Digital Travel Credential (DTC-VC) data in base64 format for processing /// /// Digital Travel Credential (DTC-VC) data in base64 format for processing - [DataMember(Name="dtc", EmitDefaultValue=false)] - public string Dtc { get; set; } + [DataMember(Name = "dtc", EmitDefaultValue = false)] + public string? Dtc { get; set; } /// /// URLs to the document images for processing. /// /// URLs to the document images for processing. - [DataMember(Name="ImageUrls", EmitDefaultValue=false)] - public List ImageUrls { get; set; } + [DataMember(Name = "ImageUrls", EmitDefaultValue = false)] + public List? ImageUrls { get; set; } + + /// + /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default. + /// + /// The list of LCID types to recognize. If empty, values with all LCID types will be extracted. Empty by default. + [DataMember(Name = "lcidFilter", EmitDefaultValue = false)] + public List? LcidFilter { get; set; } /// /// Returns the string presentation of the object @@ -161,7 +174,7 @@ protected ProcessRequest() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessRequest {\n"); sb.Append(" ProcessParam: ").Append(ProcessParam).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); @@ -175,10 +188,11 @@ public override string ToString() sb.Append(" PassBackObject: ").Append(PassBackObject).Append("\n"); sb.Append(" Dtc: ").Append(Dtc).Append("\n"); sb.Append(" ImageUrls: ").Append(ImageUrls).Append("\n"); + sb.Append(" LcidFilter: ").Append(LcidFilter).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -188,135 +202,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessRequest); - } - - /// - /// Returns true if ProcessRequest instances are equal - /// - /// Instance of ProcessRequest to be compared - /// Boolean - public bool Equals(ProcessRequest input) - { - if (input == null) - return false; - - return - ( - this.ProcessParam == input.ProcessParam || - (this.ProcessParam != null && - this.ProcessParam.Equals(input.ProcessParam)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ) && - ( - this.Tag == input.Tag || - (this.Tag != null && - this.Tag.Equals(input.Tag)) - ) && - ( - this.Tenant == input.Tenant || - (this.Tenant != null && - this.Tenant.Equals(input.Tenant)) - ) && - ( - this.Env == input.Env || - (this.Env != null && - this.Env.Equals(input.Env)) - ) && - ( - this.LivePortrait == input.LivePortrait || - (this.LivePortrait != null && - this.LivePortrait.Equals(input.LivePortrait)) - ) && - ( - this.ExtPortrait == input.ExtPortrait || - (this.ExtPortrait != null && - this.ExtPortrait.Equals(input.ExtPortrait)) - ) && - ( - this.ContainerList == input.ContainerList || - (this.ContainerList != null && - this.ContainerList.Equals(input.ContainerList)) - ) && - ( - this.SystemInfo == input.SystemInfo || - (this.SystemInfo != null && - this.SystemInfo.Equals(input.SystemInfo)) - ) && - ( - this.PassBackObject == input.PassBackObject || - this.PassBackObject != null && - input.PassBackObject != null && - this.PassBackObject.SequenceEqual(input.PassBackObject) - ) && - ( - this.Dtc == input.Dtc || - (this.Dtc != null && - this.Dtc.Equals(input.Dtc)) - ) && - ( - this.ImageUrls == input.ImageUrls || - this.ImageUrls != null && - input.ImageUrls != null && - this.ImageUrls.SequenceEqual(input.ImageUrls) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ProcessParam != null) - hashCode = hashCode * 59 + this.ProcessParam.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - if (this.Tag != null) - hashCode = hashCode * 59 + this.Tag.GetHashCode(); - if (this.Tenant != null) - hashCode = hashCode * 59 + this.Tenant.GetHashCode(); - if (this.Env != null) - hashCode = hashCode * 59 + this.Env.GetHashCode(); - if (this.LivePortrait != null) - hashCode = hashCode * 59 + this.LivePortrait.GetHashCode(); - if (this.ExtPortrait != null) - hashCode = hashCode * 59 + this.ExtPortrait.GetHashCode(); - if (this.ContainerList != null) - hashCode = hashCode * 59 + this.ContainerList.GetHashCode(); - if (this.SystemInfo != null) - hashCode = hashCode * 59 + this.SystemInfo.GetHashCode(); - if (this.PassBackObject != null) - hashCode = hashCode * 59 + this.PassBackObject.GetHashCode(); - if (this.Dtc != null) - hashCode = hashCode * 59 + this.Dtc.GetHashCode(); - if (this.ImageUrls != null) - hashCode = hashCode * 59 + this.ImageUrls.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessRequestImage.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessRequestImage.cs index 901371b..db3418d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessRequestImage.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessRequestImage.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,40 +29,40 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ProcessRequestImage /// - [DataContract] - public partial class ProcessRequestImage : IEquatable, IValidatableObject + [DataContract(Name = "ProcessRequestImage")] + public partial class ProcessRequestImage : IValidatableObject { + + /// + /// Gets or Sets Light + /// + [DataMember(Name = "light", EmitDefaultValue = false)] + public Light? Light { get; set; } /// /// Initializes a new instance of the class. /// /// imageData. /// light. /// page/image number. - public ProcessRequestImage(ImageData imageData = default(ImageData), int light = default(int), int pageIdx = default(int)) + public ProcessRequestImage(ImageData imageData = default(ImageData), Light? light = default(Light?), int pageIdx = default(int)) { this.ImageData = imageData; this.Light = light; this.PageIdx = pageIdx; } - - /// - /// Gets or Sets ImageData - /// - [DataMember(Name="ImageData", EmitDefaultValue=false)] - public ImageData ImageData { get; set; } /// - /// Gets or Sets Light + /// Gets or Sets ImageData /// - [DataMember(Name="light", EmitDefaultValue=false)] - public int Light { get; set; } + [DataMember(Name = "ImageData", EmitDefaultValue = false)] + public ImageData? ImageData { get; set; } /// /// page/image number /// /// page/image number - [DataMember(Name="page_idx", EmitDefaultValue=false)] - public int PageIdx { get; set; } + [DataMember(Name = "page_idx", EmitDefaultValue = false)] + public int? PageIdx { get; set; } /// /// Returns the string presentation of the object @@ -68,7 +70,7 @@ public partial class ProcessRequestImage : IEquatable, IVa /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessRequestImage {\n"); sb.Append(" ImageData: ").Append(ImageData).Append("\n"); sb.Append(" Light: ").Append(Light).Append("\n"); @@ -76,7 +78,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -86,69 +88,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessRequestImage); - } - - /// - /// Returns true if ProcessRequestImage instances are equal - /// - /// Instance of ProcessRequestImage to be compared - /// Boolean - public bool Equals(ProcessRequestImage input) - { - if (input == null) - return false; - - return - ( - this.ImageData == input.ImageData || - (this.ImageData != null && - this.ImageData.Equals(input.ImageData)) - ) && - ( - this.Light == input.Light || - (this.Light != null && - this.Light.Equals(input.Light)) - ) && - ( - this.PageIdx == input.PageIdx || - (this.PageIdx != null && - this.PageIdx.Equals(input.PageIdx)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ImageData != null) - hashCode = hashCode * 59 + this.ImageData.GetHashCode(); - if (this.Light != null) - hashCode = hashCode * 59 + this.Light.GetHashCode(); - if (this.PageIdx != null) - hashCode = hashCode * 59 + this.PageIdx.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessResponse.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessResponse.cs index f29c160..8c7cbef 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessResponse.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ProcessResponse /// - [DataContract] - public partial class ProcessResponse : IEquatable, IValidatableObject + [DataContract(Name = "ProcessResponse")] + public partial class ProcessResponse : IValidatableObject { + + /// + /// Gets or Sets ChipPage + /// + [DataMember(Name = "ChipPage", IsRequired = true, EmitDefaultValue = true)] + public RfidLocation ChipPage { get; set; } + + /// + /// Gets or Sets ProcessingFinished + /// + [DataMember(Name = "ProcessingFinished", IsRequired = true, EmitDefaultValue = true)] + public ProcessingStatus ProcessingFinished { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,113 +52,101 @@ protected ProcessResponse() { } /// /// Initializes a new instance of the class. /// - /// chipPage. + /// chipPage (required). + /// coreLibResultCode. /// processingFinished (required). /// containerList (required). /// transactionInfo (required). /// Base64 encoded transaction processing log. /// Free-form object provided in request. See passBackObject property of ProcessRequest.. - /// morePagesAvailable. - /// Time the document processing has taken, ms.. - public ProcessResponse(int chipPage = default(int), int processingFinished = default(int), ContainerList containerList = default(ContainerList), TransactionInfo transactionInfo = default(TransactionInfo), string log = default(string), Dictionary passBackObject = default(Dictionary), int morePagesAvailable = default(int), int elapsedTime = default(int)) + /// morePagesAvailable (required). + /// Time the document processing has taken, ms. (required). + /// metadata. + public ProcessResponse(RfidLocation chipPage = default(RfidLocation), int coreLibResultCode = default(int), ProcessingStatus processingFinished = default(ProcessingStatus), ContainerList containerList = default(ContainerList), TransactionInfo transactionInfo = default(TransactionInfo), string log = default(string), Dictionary passBackObject = default(Dictionary), int morePagesAvailable = default(int), int elapsedTime = default(int), Dictionary metadata = default(Dictionary)) { - // to ensure "processingFinished" is required (not null) - if (processingFinished == null) - { - throw new InvalidDataException("processingFinished is a required property for ProcessResponse and cannot be null"); - } - else - { - this.ProcessingFinished = processingFinished; - } - + this.ChipPage = chipPage; + this.ProcessingFinished = processingFinished; // to ensure "containerList" is required (not null) if (containerList == null) { - throw new InvalidDataException("containerList is a required property for ProcessResponse and cannot be null"); + throw new ArgumentNullException("containerList is a required property for ProcessResponse and cannot be null"); } - else - { - this.ContainerList = containerList; - } - + this.ContainerList = containerList; // to ensure "transactionInfo" is required (not null) if (transactionInfo == null) { - throw new InvalidDataException("transactionInfo is a required property for ProcessResponse and cannot be null"); - } - else - { - this.TransactionInfo = transactionInfo; + throw new ArgumentNullException("transactionInfo is a required property for ProcessResponse and cannot be null"); } - - this.ChipPage = chipPage; - this.Log = log; - this.PassBackObject = passBackObject; + this.TransactionInfo = transactionInfo; this.MorePagesAvailable = morePagesAvailable; this.ElapsedTime = elapsedTime; + this.CoreLibResultCode = coreLibResultCode; + this.Log = log; + this.PassBackObject = passBackObject; + this.Metadata = metadata; } - - /// - /// Gets or Sets ChipPage - /// - [DataMember(Name="ChipPage", EmitDefaultValue=false)] - public int ChipPage { get; set; } /// - /// Gets or Sets ProcessingFinished + /// Gets or Sets CoreLibResultCode /// - [DataMember(Name="ProcessingFinished", EmitDefaultValue=true)] - public int ProcessingFinished { get; set; } + [DataMember(Name = "CoreLibResultCode", EmitDefaultValue = false)] + public int? CoreLibResultCode { get; set; } /// /// Gets or Sets ContainerList /// - [DataMember(Name="ContainerList", EmitDefaultValue=true)] + [DataMember(Name = "ContainerList", IsRequired = true, EmitDefaultValue = true)] public ContainerList ContainerList { get; set; } /// /// Gets or Sets TransactionInfo /// - [DataMember(Name="TransactionInfo", EmitDefaultValue=true)] + [DataMember(Name = "TransactionInfo", IsRequired = true, EmitDefaultValue = true)] public TransactionInfo TransactionInfo { get; set; } /// /// Base64 encoded transaction processing log /// /// Base64 encoded transaction processing log - [DataMember(Name="log", EmitDefaultValue=false)] - public string Log { get; set; } + [DataMember(Name = "log", EmitDefaultValue = false)] + public string? Log { get; set; } /// /// Free-form object provided in request. See passBackObject property of ProcessRequest. /// /// Free-form object provided in request. See passBackObject property of ProcessRequest. - [DataMember(Name="passBackObject", EmitDefaultValue=false)] - public Dictionary PassBackObject { get; set; } + [DataMember(Name = "passBackObject", EmitDefaultValue = false)] + public Dictionary? PassBackObject { get; set; } /// /// Gets or Sets MorePagesAvailable /// - [DataMember(Name="morePagesAvailable", EmitDefaultValue=false)] + [DataMember(Name = "morePagesAvailable", IsRequired = true, EmitDefaultValue = true)] public int MorePagesAvailable { get; set; } /// /// Time the document processing has taken, ms. /// /// Time the document processing has taken, ms. - [DataMember(Name="elapsedTime", EmitDefaultValue=false)] + [DataMember(Name = "elapsedTime", IsRequired = true, EmitDefaultValue = true)] public int ElapsedTime { get; set; } + /// + /// Gets or Sets Metadata + /// + [DataMember(Name = "metadata", EmitDefaultValue = false)] + public Dictionary? Metadata { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessResponse {\n"); sb.Append(" ChipPage: ").Append(ChipPage).Append("\n"); + sb.Append(" CoreLibResultCode: ").Append(CoreLibResultCode).Append("\n"); sb.Append(" ProcessingFinished: ").Append(ProcessingFinished).Append("\n"); sb.Append(" ContainerList: ").Append(ContainerList).Append("\n"); sb.Append(" TransactionInfo: ").Append(TransactionInfo).Append("\n"); @@ -152,10 +154,11 @@ public override string ToString() sb.Append(" PassBackObject: ").Append(PassBackObject).Append("\n"); sb.Append(" MorePagesAvailable: ").Append(MorePagesAvailable).Append("\n"); sb.Append(" ElapsedTime: ").Append(ElapsedTime).Append("\n"); + sb.Append(" Metadata: ").Append(Metadata).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -165,105 +168,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessResponse); - } - - /// - /// Returns true if ProcessResponse instances are equal - /// - /// Instance of ProcessResponse to be compared - /// Boolean - public bool Equals(ProcessResponse input) - { - if (input == null) - return false; - - return - ( - this.ChipPage == input.ChipPage || - (this.ChipPage != null && - this.ChipPage.Equals(input.ChipPage)) - ) && - ( - this.ProcessingFinished == input.ProcessingFinished || - (this.ProcessingFinished != null && - this.ProcessingFinished.Equals(input.ProcessingFinished)) - ) && - ( - this.ContainerList == input.ContainerList || - (this.ContainerList != null && - this.ContainerList.Equals(input.ContainerList)) - ) && - ( - this.TransactionInfo == input.TransactionInfo || - (this.TransactionInfo != null && - this.TransactionInfo.Equals(input.TransactionInfo)) - ) && - ( - this.Log == input.Log || - (this.Log != null && - this.Log.Equals(input.Log)) - ) && - ( - this.PassBackObject == input.PassBackObject || - this.PassBackObject != null && - input.PassBackObject != null && - this.PassBackObject.SequenceEqual(input.PassBackObject) - ) && - ( - this.MorePagesAvailable == input.MorePagesAvailable || - (this.MorePagesAvailable != null && - this.MorePagesAvailable.Equals(input.MorePagesAvailable)) - ) && - ( - this.ElapsedTime == input.ElapsedTime || - (this.ElapsedTime != null && - this.ElapsedTime.Equals(input.ElapsedTime)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ChipPage != null) - hashCode = hashCode * 59 + this.ChipPage.GetHashCode(); - if (this.ProcessingFinished != null) - hashCode = hashCode * 59 + this.ProcessingFinished.GetHashCode(); - if (this.ContainerList != null) - hashCode = hashCode * 59 + this.ContainerList.GetHashCode(); - if (this.TransactionInfo != null) - hashCode = hashCode * 59 + this.TransactionInfo.GetHashCode(); - if (this.Log != null) - hashCode = hashCode * 59 + this.Log.GetHashCode(); - if (this.PassBackObject != null) - hashCode = hashCode * 59 + this.PassBackObject.GetHashCode(); - if (this.MorePagesAvailable != null) - hashCode = hashCode * 59 + this.MorePagesAvailable.GetHashCode(); - if (this.ElapsedTime != null) - hashCode = hashCode * 59 + this.ElapsedTime.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessSystemInfo.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessSystemInfo.cs index 54f3235..6f03b82 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessSystemInfo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessSystemInfo.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// ProcessSystemInfo /// - [DataContract] - public partial class ProcessSystemInfo : IEquatable, IValidatableObject + [DataContract(Name = "ProcessSystemInfo")] + public partial class ProcessSystemInfo : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,20 +42,20 @@ public partial class ProcessSystemInfo : IEquatable, IValida this.License = license; this.RecaptchaToken = recaptchaToken; } - + /// /// Base64 encoded license file /// /// Base64 encoded license file - [DataMember(Name="license", EmitDefaultValue=false)] - public string License { get; set; } + [DataMember(Name = "license", EmitDefaultValue = false)] + public string? License { get; set; } /// /// For internal use. Demo-sites recaptcha token. /// /// For internal use. Demo-sites recaptcha token. - [DataMember(Name="recaptcha_token", EmitDefaultValue=false)] - public string RecaptchaToken { get; set; } + [DataMember(Name = "recaptcha_token", EmitDefaultValue = false)] + public string? RecaptchaToken { get; set; } /// /// Returns the string presentation of the object @@ -61,14 +63,14 @@ public partial class ProcessSystemInfo : IEquatable, IValida /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ProcessSystemInfo {\n"); sb.Append(" License: ").Append(License).Append("\n"); sb.Append(" RecaptchaToken: ").Append(RecaptchaToken).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -78,62 +80,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ProcessSystemInfo); - } - - /// - /// Returns true if ProcessSystemInfo instances are equal - /// - /// Instance of ProcessSystemInfo to be compared - /// Boolean - public bool Equals(ProcessSystemInfo input) - { - if (input == null) - return false; - - return - ( - this.License == input.License || - (this.License != null && - this.License.Equals(input.License)) - ) && - ( - this.RecaptchaToken == input.RecaptchaToken || - (this.RecaptchaToken != null && - this.RecaptchaToken.Equals(input.RecaptchaToken)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.License != null) - hashCode = hashCode * 59 + this.License.GetHashCode(); - if (this.RecaptchaToken != null) - hashCode = hashCode * 59 + this.RecaptchaToken.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ProcessingStatus.cs b/src/Regula.DocumentReader.WebClient/Model/ProcessingStatus.cs index 7487282..9c471d0 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ProcessingStatus.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ProcessingStatus.cs @@ -1,40 +1,50 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class ProcessingStatus + /// + /// Defines ProcessingStatus + /// + public enum ProcessingStatus { + /// + /// Enum NOT_FINISHED for value: 0 + /// + NOT_FINISHED = 0, - /** Processing was not finished */ - public const int NOT_FINISHED = 0; - - /** Processing finished */ - public const int FINISHED = 1; - - /** Processing finished by timeout */ - public const int TIMEOUT = 2; + /// + /// Enum FINISHED for value: 1 + /// + FINISHED = 1, + /// + /// Enum TIMEOUT for value: 2 + /// + TIMEOUT = 2 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedField.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedField.cs new file mode 100644 index 0000000..9b59e80 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedField.cs @@ -0,0 +1,144 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RFIDDocVisualExtendedField + /// + [DataContract(Name = "RFIDDocVisualExtendedField")] + public partial class RFIDDocVisualExtendedField : VisualExtendedFieldItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDDocVisualExtendedField() { } + /// + /// Initializes a new instance of the class. + /// + /// originDG (required). + /// originDGTag. + /// Record index of the text field source in the data group (required). + /// originEntryView. + /// fieldType (required). + /// wFieldType (required). + /// Field symbolic name (null-terminated string) (required). + /// Number of StringsResult array elements (required). + /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. (required). + /// Buf_Text text string length (required). + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' (required). + /// fieldMask. + /// validity. + /// inComparison. + /// wLCID. + /// reserved2. + /// reserved3. + public RFIDDocVisualExtendedField(int originDG = default(int), int originDGTag = default(int), decimal originTagEntry = default(decimal), int originEntryView = default(int), int fieldType = default(int), TextFieldType wFieldType = default(TextFieldType), string fieldName = default(string), decimal stringsCount = default(decimal), List stringsResult = default(List), decimal bufLength = default(decimal), string bufText = default(string), string fieldMask = default(string), int validity = default(int), int inComparison = default(int), int wLCID = default(int), int reserved2 = default(int), int reserved3 = default(int)) : base(fieldType, wFieldType, fieldName, stringsCount, stringsResult, bufLength, bufText, fieldMask, validity, inComparison, wLCID, reserved2, reserved3) + { + this.OriginDG = originDG; + this.OriginTagEntry = originTagEntry; + this.OriginDGTag = originDGTag; + this.OriginEntryView = originEntryView; + } + + /// + /// Gets or Sets OriginDG + /// + [DataMember(Name = "OriginDG", IsRequired = true, EmitDefaultValue = true)] + public int OriginDG { get; set; } + + /// + /// Gets or Sets OriginDGTag + /// + [DataMember(Name = "OriginDGTag", EmitDefaultValue = false)] + public int? OriginDGTag { get; set; } + + /// + /// Record index of the text field source in the data group + /// + /// Record index of the text field source in the data group + [DataMember(Name = "OriginTagEntry", IsRequired = true, EmitDefaultValue = true)] + public decimal OriginTagEntry { get; set; } + + /// + /// Gets or Sets OriginEntryView + /// + [DataMember(Name = "OriginEntryView", EmitDefaultValue = false)] + public int? OriginEntryView { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDDocVisualExtendedField {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" OriginDG: ").Append(OriginDG).Append("\n"); + sb.Append(" OriginDGTag: ").Append(OriginDGTag).Append("\n"); + sb.Append(" OriginTagEntry: ").Append(OriginTagEntry).Append("\n"); + sb.Append(" OriginEntryView: ").Append(OriginEntryView).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedFieldItem.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedFieldItem.cs new file mode 100644 index 0000000..43e3a07 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedFieldItem.cs @@ -0,0 +1,116 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RFIDDocVisualExtendedFieldItem + /// + [DataContract(Name = "RFIDDocVisualExtendedFieldItem")] + public partial class RFIDDocVisualExtendedFieldItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDDocVisualExtendedFieldItem() { } + /// + /// Initializes a new instance of the class. + /// + /// originDG (required). + /// originDGTag. + /// Record index of the text field source in the data group (required). + /// originEntryView. + public RFIDDocVisualExtendedFieldItem(int originDG = default(int), int originDGTag = default(int), decimal originTagEntry = default(decimal), int originEntryView = default(int)) + { + this.OriginDG = originDG; + this.OriginTagEntry = originTagEntry; + this.OriginDGTag = originDGTag; + this.OriginEntryView = originEntryView; + } + + /// + /// Gets or Sets OriginDG + /// + [DataMember(Name = "OriginDG", IsRequired = true, EmitDefaultValue = true)] + public int OriginDG { get; set; } + + /// + /// Gets or Sets OriginDGTag + /// + [DataMember(Name = "OriginDGTag", EmitDefaultValue = false)] + public int? OriginDGTag { get; set; } + + /// + /// Record index of the text field source in the data group + /// + /// Record index of the text field source in the data group + [DataMember(Name = "OriginTagEntry", IsRequired = true, EmitDefaultValue = true)] + public decimal OriginTagEntry { get; set; } + + /// + /// Gets or Sets OriginEntryView + /// + [DataMember(Name = "OriginEntryView", EmitDefaultValue = false)] + public int? OriginEntryView { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDDocVisualExtendedFieldItem {\n"); + sb.Append(" OriginDG: ").Append(OriginDG).Append("\n"); + sb.Append(" OriginDGTag: ").Append(OriginDGTag).Append("\n"); + sb.Append(" OriginTagEntry: ").Append(OriginTagEntry).Append("\n"); + sb.Append(" OriginEntryView: ").Append(OriginEntryView).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfo.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfo.cs new file mode 100644 index 0000000..5f8a2f4 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfo.cs @@ -0,0 +1,103 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Container for extracted text fields. Fields are identified by type and language + /// + [DataContract(Name = "RFIDDocVisualExtendedInfo")] + public partial class RFIDDocVisualExtendedInfo : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDDocVisualExtendedInfo() { } + /// + /// Initializes a new instance of the class. + /// + /// Number of pArrayFields array elements (required). + /// pArrayFields (required). + public RFIDDocVisualExtendedInfo(decimal nFields = default(decimal), List pArrayFields = default(List)) + { + this.NFields = nFields; + // to ensure "pArrayFields" is required (not null) + if (pArrayFields == null) + { + throw new ArgumentNullException("pArrayFields is a required property for RFIDDocVisualExtendedInfo and cannot be null"); + } + this.PArrayFields = pArrayFields; + } + + /// + /// Number of pArrayFields array elements + /// + /// Number of pArrayFields array elements + [DataMember(Name = "nFields", IsRequired = true, EmitDefaultValue = true)] + public decimal NFields { get; set; } + + /// + /// Gets or Sets PArrayFields + /// + [DataMember(Name = "pArrayFields", IsRequired = true, EmitDefaultValue = true)] + public List PArrayFields { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDDocVisualExtendedInfo {\n"); + sb.Append(" NFields: ").Append(NFields).Append("\n"); + sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfoItem.cs new file mode 100644 index 0000000..0b67952 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDDocVisualExtendedInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RFIDDocVisualExtendedInfoItem + /// + [DataContract(Name = "RFIDDocVisualExtendedInfoItem")] + public partial class RFIDDocVisualExtendedInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDDocVisualExtendedInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// docVisualExtendedInfo (required). + public RFIDDocVisualExtendedInfoItem(RFIDDocVisualExtendedInfo docVisualExtendedInfo = default(RFIDDocVisualExtendedInfo)) + { + // to ensure "docVisualExtendedInfo" is required (not null) + if (docVisualExtendedInfo == null) + { + throw new ArgumentNullException("docVisualExtendedInfo is a required property for RFIDDocVisualExtendedInfoItem and cannot be null"); + } + this.DocVisualExtendedInfo = docVisualExtendedInfo; + } + + /// + /// Gets or Sets DocVisualExtendedInfo + /// + [DataMember(Name = "DocVisualExtendedInfo", IsRequired = true, EmitDefaultValue = true)] + public RFIDDocVisualExtendedInfo DocVisualExtendedInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDDocVisualExtendedInfoItem {\n"); + sb.Append(" DocVisualExtendedInfo: ").Append(DocVisualExtendedInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDErrorCodes.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDErrorCodes.cs new file mode 100644 index 0000000..7ee55c0 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDErrorCodes.cs @@ -0,0 +1,606 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of error codes returned by SDK + /// + /// Enumeration contains a set of error codes returned by SDK + public enum RFIDErrorCodes: long + { + /// + /// Enum RFID_ERROR_LAYER6_FILE_EOF1 for value: 2147508866 + /// + RFID_ERROR_LAYER6_FILE_EOF1 = 2147508866, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_DEACTIVATED for value: 2147508867 + /// + RFID_ERROR_LAYER6_PWD_DEACTIVATED = 2147508867, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_BLOCKED for value: 2147509184 + /// + RFID_ERROR_LAYER6_PWD_BLOCKED = 2147509184, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_SUSPEND for value: 2147509185 + /// + RFID_ERROR_LAYER6_PWD_SUSPEND = 2147509185, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_BLOCKED2 for value: 2147510659 + /// + RFID_ERROR_LAYER6_PWD_BLOCKED2 = 2147510659, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_DEACTIVATED2 for value: 2147510660 + /// + RFID_ERROR_LAYER6_PWD_DEACTIVATED2 = 2147510660, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_SUSPEND2 for value: 2147510661 + /// + RFID_ERROR_LAYER6_PWD_SUSPEND2 = 2147510661, + + /// + /// Enum RFID_ERROR_LAYER6_INCORRECT_PARAMS for value: 2147510912 + /// + RFID_ERROR_LAYER6_INCORRECT_PARAMS = 2147510912, + + /// + /// Enum RFID_ERROR_LAYER6_FILE_NOT_FOUND for value: 2147510914 + /// + RFID_ERROR_LAYER6_FILE_NOT_FOUND = 2147510914, + + /// + /// Enum RFID_ERROR_LAYER6_NO_REFERENCE_DATA for value: 2147510920 + /// + RFID_ERROR_LAYER6_NO_REFERENCE_DATA = 2147510920, + + /// + /// Enum RFID_ERROR_LAYER6_FILE_EOF2 for value: 2147511040 + /// + RFID_ERROR_LAYER6_FILE_EOF2 = 2147511040, + + /// + /// Enum RFID_ERROR_NO_CHIP_DETECTED for value: 2147549185 + /// + RFID_ERROR_NO_CHIP_DETECTED = 2147549185, + + /// + /// Enum RFID_ERROR_NOT_AVAILABLE for value: 2147549186 + /// + RFID_ERROR_NOT_AVAILABLE = 2147549186, + + /// + /// Enum RFID_ERROR_INVALID_PARAMETER for value: 2147549188 + /// + RFID_ERROR_INVALID_PARAMETER = 2147549188, + + /// + /// Enum RFID_ERROR_NOT_INITIALIZED for value: 2147549189 + /// + RFID_ERROR_NOT_INITIALIZED = 2147549189, + + /// + /// Enum RFID_ERROR_NOT_ENOUGH_MEMORY for value: 2147549190 + /// + RFID_ERROR_NOT_ENOUGH_MEMORY = 2147549190, + + /// + /// Enum RFID_ERROR_INVALID_DIRECTORY for value: 2147549192 + /// + RFID_ERROR_INVALID_DIRECTORY = 2147549192, + + /// + /// Enum RFID_ERROR_UNKNOWN_COMMAND for value: 2147549193 + /// + RFID_ERROR_UNKNOWN_COMMAND = 2147549193, + + /// + /// Enum RFID_ERROR_FILE_IO_ERROR for value: 2147549194 + /// + RFID_ERROR_FILE_IO_ERROR = 2147549194, + + /// + /// Enum RFID_ERROR_BUSY for value: 2147549195 + /// + RFID_ERROR_BUSY = 2147549195, + + /// + /// Enum RFID_ERROR_OLD_FIRMWARE for value: 2147549196 + /// + RFID_ERROR_OLD_FIRMWARE = 2147549196, + + /// + /// Enum RFID_ERROR_PCSC_FAILED for value: 2147614720 + /// + RFID_ERROR_PCSC_FAILED = 2147614720, + + /// + /// Enum RFID_ERROR_PCSC_READER_NOT_AVAILABLE for value: 2147614721 + /// + RFID_ERROR_PCSC_READER_NOT_AVAILABLE = 2147614721, + + /// + /// Enum RFID_ERROR_PCSC_CANT_CONNECT_CARD for value: 2147614722 + /// + RFID_ERROR_PCSC_CANT_CONNECT_CARD = 2147614722, + + /// + /// Enum RFID_ERROR_PCSC_CARD_IS_NOT_CONNECTED for value: 2147614723 + /// + RFID_ERROR_PCSC_CARD_IS_NOT_CONNECTED = 2147614723, + + /// + /// Enum RFID_ERROR_PCSC_OPERATION_CANCELLED for value: 2147614724 + /// + RFID_ERROR_PCSC_OPERATION_CANCELLED = 2147614724, + + /// + /// Enum RFID_ERROR_PCSC_CARD_IS_BUSY for value: 2147614725 + /// + RFID_ERROR_PCSC_CARD_IS_BUSY = 2147614725, + + /// + /// Enum RFID_ERROR_PCSC_FAILED_SCARD for value: 2147614726 + /// + RFID_ERROR_PCSC_FAILED_SCARD = 2147614726, + + /// + /// Enum RFID_ERROR_PCSC_EXT_LE_FAILED for value: 2147614736 + /// + RFID_ERROR_PCSC_EXT_LE_FAILED = 2147614736, + + /// + /// Enum RFID_ERROR_LAYER6_PWD_FAILED for value: 2148557760 + /// + RFID_ERROR_LAYER6_PWD_FAILED = 2148557760, + + /// + /// Enum RFID_ERROR_NOT_PERFORMED for value: 2197815296 + /// + RFID_ERROR_NOT_PERFORMED = 2197815296, + + /// + /// Enum RFID_ERROR_SESSION_IS_CLOSED for value: 2197815297 + /// + RFID_ERROR_SESSION_IS_CLOSED = 2197815297, + + /// + /// Enum RFID_ERROR_SESSION_TERMINAL_UNSUPPORTED_OPERATION for value: 2197815298 + /// + RFID_ERROR_SESSION_TERMINAL_UNSUPPORTED_OPERATION = 2197815298, + + /// + /// Enum RFID_ERROR_SESSION_TERMINAL_TYPE_UNKNOWN for value: 2197815312 + /// + RFID_ERROR_SESSION_TERMINAL_TYPE_UNKNOWN = 2197815312, + + /// + /// Enum RFID_ERROR_SESSION_TERMINAL_TYPE_BAD_CERTIFICATE for value: 2197815313 + /// + RFID_ERROR_SESSION_TERMINAL_TYPE_BAD_CERTIFICATE = 2197815313, + + /// + /// Enum RFID_ERROR_SESSION_TERMINAL_TYPE_NOT_SET for value: 2197815314 + /// + RFID_ERROR_SESSION_TERMINAL_TYPE_NOT_SET = 2197815314, + + /// + /// Enum RFID_ERROR_SESSION_PROCEDURE_TYPE_UNKNOWN for value: 2197815315 + /// + RFID_ERROR_SESSION_PROCEDURE_TYPE_UNKNOWN = 2197815315, + + /// + /// Enum RFID_ERROR_Session_Procedure_Type_Unsupported for value: 2197815316 + /// + RFID_ERROR_Session_Procedure_Type_Unsupported = 2197815316, + + /// + /// Enum RFID_ERROR_SESSION_PROCEDURE_TYPE_NOT_SET for value: 2197815317 + /// + RFID_ERROR_SESSION_PROCEDURE_TYPE_NOT_SET = 2197815317, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_UNKNOWN_TYPE for value: 2197815318 + /// + RFID_ERROR_SESSION_ACCESS_KEY_UNKNOWN_TYPE = 2197815318, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_UNSUPPORTED_SM_TYPE for value: 2197815319 + /// + RFID_ERROR_SESSION_ACCESS_KEY_UNSUPPORTED_SM_TYPE = 2197815319, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_INCORRECT_SM_TYPE for value: 2197815320 + /// + RFID_ERROR_SESSION_ACCESS_KEY_INCORRECT_SM_TYPE = 2197815320, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_RESTRICTED for value: 2197815321 + /// + RFID_ERROR_SESSION_ACCESS_KEY_RESTRICTED = 2197815321, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_INCORRECT_DATA for value: 2197815322 + /// + RFID_ERROR_SESSION_ACCESS_KEY_INCORRECT_DATA = 2197815322, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_KEY_NOT_SET for value: 2197815323 + /// + RFID_ERROR_SESSION_ACCESS_KEY_NOT_SET = 2197815323, + + /// + /// Enum RFID_ERROR_SESSION_PWD_MANAGEMENT_NOT_AUTHORIZED for value: 2197815324 + /// + RFID_ERROR_SESSION_PWD_MANAGEMENT_NOT_AUTHORIZED = 2197815324, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_UNKNOWN_TYPE for value: 2197815328 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_UNKNOWN_TYPE = 2197815328, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_SM for value: 2197815329 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_SM = 2197815329, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_PACE for value: 2197815330 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_PACE = 2197815330, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_CA_KEYS for value: 2197815331 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_CA_KEYS = 2197815331, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_TA for value: 2197815332 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_TA = 2197815332, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_CA for value: 2197815333 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_REQUIRES_CA = 2197815333, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_INCORRECT_OPTION_CA for value: 2197815334 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_INCORRECT_OPTION_CA = 2197815334, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_CA_FAILED for value: 2197815335 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_CA_FAILED = 2197815335, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_TA_FAILED for value: 2197815336 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_TA_FAILED = 2197815336, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_AA_FAILED for value: 2197815337 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_AA_FAILED = 2197815337, + + /// + /// Enum RFID_ERROR_SESSION_ACCESS_CONTROL_RI_FAILED for value: 2197815338 + /// + RFID_ERROR_SESSION_ACCESS_CONTROL_RI_FAILED = 2197815338, + + /// + /// Enum RFID_ERROR_SESSION_PA_SIGNATURE_CHECK_FAILED for value: 2197815344 + /// + RFID_ERROR_SESSION_PA_SIGNATURE_CHECK_FAILED = 2197815344, + + /// + /// Enum RFID_ERROR_SESSION_PA_HASH_CHECK_FAILED for value: 2197815345 + /// + RFID_ERROR_SESSION_PA_HASH_CHECK_FAILED = 2197815345, + + /// + /// Enum RFID_ERROR_SESSION_INVALID_AUX_DATA_DATE_OF_EXPIRY for value: 2197815360 + /// + RFID_ERROR_SESSION_INVALID_AUX_DATA_DATE_OF_EXPIRY = 2197815360, + + /// + /// Enum RFID_ERROR_SESSION_INVALID_AUX_DATA_DATE_OF_BIRTH for value: 2197815361 + /// + RFID_ERROR_SESSION_INVALID_AUX_DATA_DATE_OF_BIRTH = 2197815361, + + /// + /// Enum RFID_ERROR_SESSION_INVALID_AUX_DATA_COMMUNITY_ID for value: 2197815362 + /// + RFID_ERROR_SESSION_INVALID_AUX_DATA_COMMUNITY_ID = 2197815362, + + /// + /// Enum RFID_ERROR_SESSION_E_SIGN_REQUIRES_APP_SELECTION for value: 2197815376 + /// + RFID_ERROR_SESSION_E_SIGN_REQUIRES_APP_SELECTION = 2197815376, + + /// + /// Enum RFID_ERROR_SESSION_E_SIGN_PIN_NOT_SET for value: 2197815377 + /// + RFID_ERROR_SESSION_E_SIGN_PIN_NOT_SET = 2197815377, + + /// + /// Enum RFID_ERROR_SESSION_E_SIGN_PIN_NOT_VERIFIED for value: 2197815378 + /// + RFID_ERROR_SESSION_E_SIGN_PIN_NOT_VERIFIED = 2197815378, + + /// + /// Enum RFID_ERROR_SESSION_INCORRECT_DATA for value: 2197815392 + /// + RFID_ERROR_SESSION_INCORRECT_DATA = 2197815392, + + /// + /// Enum RFID_ERROR_SESSION_FILE_NOT_ENOUGH_DATA for value: 2197880832 + /// + RFID_ERROR_SESSION_FILE_NOT_ENOUGH_DATA = 2197880832, + + /// + /// Enum RFID_ERROR_SESSION_FILE_INCORRECT_DATA for value: 2197946368 + /// + RFID_ERROR_SESSION_FILE_INCORRECT_DATA = 2197946368, + + /// + /// Enum RFID_ERROR_SESSION_FILE_UNEXPECTED_DATA for value: 2198011904 + /// + RFID_ERROR_SESSION_FILE_UNEXPECTED_DATA = 2198011904, + + /// + /// Enum RFID_ERROR_SESSION_FILE_CONTENTS_UNEXPECTED_DATA for value: 2198077440 + /// + RFID_ERROR_SESSION_FILE_CONTENTS_UNEXPECTED_DATA = 2198077440, + + /// + /// Enum RFID_ERROR_SESSION_FILE_WRONG_TAG for value: 2198142976 + /// + RFID_ERROR_SESSION_FILE_WRONG_TAG = 2198142976, + + /// + /// Enum RFID_ERROR_SESSION_FILE_CANT_USE_DATA for value: 2198208512 + /// + RFID_ERROR_SESSION_FILE_CANT_USE_DATA = 2198208512, + + /// + /// Enum RFID_ERROR_SESSION_FILE_CANT_READ_DATA for value: 2198274048 + /// + RFID_ERROR_SESSION_FILE_CANT_READ_DATA = 2198274048, + + /// + /// Enum RFID_ERROR_SESSION_FILE_ACCESS_DENIED for value: 2198339584 + /// + RFID_ERROR_SESSION_FILE_ACCESS_DENIED = 2198339584, + + /// + /// Enum RFID_ERROR_LAYER34_NO_ERROR for value: 2214592512 + /// + RFID_ERROR_LAYER34_NO_ERROR = 2214592512, + + /// + /// Enum RFID_ERROR_LAYER34_TIME_OUT for value: 2214658048 + /// + RFID_ERROR_LAYER34_TIME_OUT = 2214658048, + + /// + /// Enum RFID_ERROR_LAYER34_COLLISION for value: 2214723584 + /// + RFID_ERROR_LAYER34_COLLISION = 2214723584, + + /// + /// Enum RFID_ERROR_LAYER34_CRC for value: 2214789120 + /// + RFID_ERROR_LAYER34_CRC = 2214789120, + + /// + /// Enum RFID_ERROR_LAYER34_DATA_INTEGRITY for value: 2214854656 + /// + RFID_ERROR_LAYER34_DATA_INTEGRITY = 2214854656, + + /// + /// Enum RFID_ERROR_LAYER34_DATA_LENGTH for value: 2214920192 + /// + RFID_ERROR_LAYER34_DATA_LENGTH = 2214920192, + + /// + /// Enum RFID_ERROR_Layer34_RFU for value: 2214985728 + /// + RFID_ERROR_Layer34_RFU = 2214985728, + + /// + /// Enum RFID_ERROR_LAYER34_COLLISION_TOO_MANY for value: 2215051264 + /// + RFID_ERROR_LAYER34_COLLISION_TOO_MANY = 2215051264, + + /// + /// Enum RFID_ERROR_LAYER34_PROTOCOL_B for value: 2215116800 + /// + RFID_ERROR_LAYER34_PROTOCOL_B = 2215116800, + + /// + /// Enum RFID_ERROR_LAYER34_DATA_CONTENTS for value: 2215182336 + /// + RFID_ERROR_LAYER34_DATA_CONTENTS = 2215182336, + + /// + /// Enum RFID_ERROR_LAYER34_PROTOCOL for value: 2215247872 + /// + RFID_ERROR_LAYER34_PROTOCOL = 2215247872, + + /// + /// Enum RFID_ERROR_LAYER34_GLOBAL_TIME_OUT for value: 2215313408 + /// + RFID_ERROR_LAYER34_GLOBAL_TIME_OUT = 2215313408, + + /// + /// Enum RFID_ERROR_LAYER34_MIFARE_AUTH for value: 2215378944 + /// + RFID_ERROR_LAYER34_MIFARE_AUTH = 2215378944, + + /// + /// Enum RFID_ERROR_LAYER34_SAM_ERROR for value: 2215444480 + /// + RFID_ERROR_LAYER34_SAM_ERROR = 2215444480, + + /// + /// Enum RFID_ERROR_LAYER34_SAM_COLLISION for value: 2215510016 + /// + RFID_ERROR_LAYER34_SAM_COLLISION = 2215510016, + + /// + /// Enum RFID_ERROR_LAYER34_SAM_ACKNOWLEDGE for value: 2215575552 + /// + RFID_ERROR_LAYER34_SAM_ACKNOWLEDGE = 2215575552, + + /// + /// Enum RFID_ERROR_LAYER6_SECURITY_MANAGER for value: 2248146944 + /// + RFID_ERROR_LAYER6_SECURITY_MANAGER = 2248146944, + + /// + /// Enum RFID_ERROR_LAYER6_APP_SELECTION_FAILURE for value: 2248146945 + /// + RFID_ERROR_LAYER6_APP_SELECTION_FAILURE = 2248146945, + + /// + /// Enum RFID_ERROR_LAYER6_MUTUAL_AUTH_MAC_FAIL for value: 2248147200 + /// + RFID_ERROR_LAYER6_MUTUAL_AUTH_MAC_FAIL = 2248147200, + + /// + /// Enum RFID_ERROR_LAYER6_MUTUAL_AUTH_ENC_FAIL for value: 2248147201 + /// + RFID_ERROR_LAYER6_MUTUAL_AUTH_ENC_FAIL = 2248147201, + + /// + /// Enum RFID_ERROR_LAYER6_MUTUAL_AUTH_FAILURE for value: 2248147202 + /// + RFID_ERROR_LAYER6_MUTUAL_AUTH_FAILURE = 2248147202, + + /// + /// Enum RFID_ERROR_LAYER6_MUTUAL_AUTH_FAILURE_DATA for value: 2248147203 + /// + RFID_ERROR_LAYER6_MUTUAL_AUTH_FAILURE_DATA = 2248147203, + + /// + /// Enum RFID_ERROR_LAYER6_SM_DO_8E_MISSING for value: 2248147456 + /// + RFID_ERROR_LAYER6_SM_DO_8E_MISSING = 2248147456, + + /// + /// Enum RFID_ERROR_LAYER6_SM_DO_87_MISSING for value: 2248147457 + /// + RFID_ERROR_LAYER6_SM_DO_87_MISSING = 2248147457, + + /// + /// Enum RFID_ERROR_LAYER6_SM_DO_99_MISSING for value: 2248147458 + /// + RFID_ERROR_LAYER6_SM_DO_99_MISSING = 2248147458, + + /// + /// Enum RFID_ERROR_LAYER6_SM_MAC_INCORRECT for value: 2248147459 + /// + RFID_ERROR_LAYER6_SM_MAC_INCORRECT = 2248147459, + + /// + /// Enum RFID_ERROR_LAYER6_SM_DO_87_INCORRECT for value: 2248147460 + /// + RFID_ERROR_LAYER6_SM_DO_87_INCORRECT = 2248147460, + + /// + /// Enum RFID_ERROR_LAYER6_NON_TLV_RESPONSE_DATA for value: 2248147712 + /// + RFID_ERROR_LAYER6_NON_TLV_RESPONSE_DATA = 2248147712, + + /// + /// Enum RFID_ERROR_LAYER6_WRONG_RND_ICC_LENGTH for value: 2248147713 + /// + RFID_ERROR_LAYER6_WRONG_RND_ICC_LENGTH = 2248147713, + + /// + /// Enum RFID_ERROR_LAYER6_INT_AUTH_FAILURE for value: 2248147714 + /// + RFID_ERROR_LAYER6_INT_AUTH_FAILURE = 2248147714, + + /// + /// Enum RFID_ERROR_LAYER6_MSE_SET_KAT_FAILURE for value: 2248147715 + /// + RFID_ERROR_LAYER6_MSE_SET_KAT_FAILURE = 2248147715, + + /// + /// Enum RFID_ERROR_LAYER6_MSE_SET_DST_FAILURE for value: 2248147716 + /// + RFID_ERROR_LAYER6_MSE_SET_DST_FAILURE = 2248147716, + + /// + /// Enum RFID_ERROR_LAYER6_PSO_CERTIFICATE_FAILURE for value: 2248147717 + /// + RFID_ERROR_LAYER6_PSO_CERTIFICATE_FAILURE = 2248147717, + + /// + /// Enum RFID_ERROR_LAYER6_MSE_SET_AT_FAILURE for value: 2248147718 + /// + RFID_ERROR_LAYER6_MSE_SET_AT_FAILURE = 2248147718, + + /// + /// Enum RFID_ERROR_LAYER6_GET_CHALLENGE_FAILURE for value: 2248147719 + /// + RFID_ERROR_LAYER6_GET_CHALLENGE_FAILURE = 2248147719, + + /// + /// Enum RFID_ERROR_LAYER6_EXT_AUTH_FAILURE for value: 2248147720 + /// + RFID_ERROR_LAYER6_EXT_AUTH_FAILURE = 2248147720, + + /// + /// Enum RFID_ERROR_LAYER6_GENERAL_AUTH_FAILURE for value: 2248147721 + /// + RFID_ERROR_LAYER6_GENERAL_AUTH_FAILURE = 2248147721, + + /// + /// Enum RFID_ERROR_FAILED for value: 4294967295 + /// + RFID_ERROR_FAILED = 4294967295, + + /// + /// Enum RFID_ERROR_NO_ERROR for value: 1 + /// + RFID_ERROR_NO_ERROR = 1, + + /// + /// Enum RFID_ERROR_ALREADY_DONE for value: 2 + /// + RFID_ERROR_ALREADY_DONE = 2 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDGraphicsInfoResult.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDGraphicsInfoResult.cs new file mode 100644 index 0000000..1d184e3 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDGraphicsInfoResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RFIDGraphicsInfoResult + /// + [DataContract(Name = "RFIDGraphicsInfoResult")] + public partial class RFIDGraphicsInfoResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDGraphicsInfoResult() { } + /// + /// Initializes a new instance of the class. + /// + /// tOriginalRFIDGraphicsInfo (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.RFID_ORIGINAL_GRAPHICS). + public RFIDGraphicsInfoResult(TOriginalRFIDGraphicsInfo tOriginalRFIDGraphicsInfo = default(TOriginalRFIDGraphicsInfo), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.RFID_ORIGINAL_GRAPHICS) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "tOriginalRFIDGraphicsInfo" is required (not null) + if (tOriginalRFIDGraphicsInfo == null) + { + throw new ArgumentNullException("tOriginalRFIDGraphicsInfo is a required property for RFIDGraphicsInfoResult and cannot be null"); + } + this.TOriginalRFIDGraphicsInfo = tOriginalRFIDGraphicsInfo; + } + + /// + /// Gets or Sets TOriginalRFIDGraphicsInfo + /// + [DataMember(Name = "TOriginalRFIDGraphicsInfo", IsRequired = true, EmitDefaultValue = true)] + public TOriginalRFIDGraphicsInfo TOriginalRFIDGraphicsInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDGraphicsInfoResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" TOriginalRFIDGraphicsInfo: ").Append(TOriginalRFIDGraphicsInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDPKDResourceType.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDPKDResourceType.cs new file mode 100644 index 0000000..b36346c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDPKDResourceType.cs @@ -0,0 +1,76 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of certificate + /// + /// Enumeration contains a set of constants that define the type of certificate + public enum RFIDPKDResourceType + { + /// + /// Enum CERTIFICATE_PA for value: 0 + /// + CERTIFICATE_PA = 0, + + /// + /// Enum CERTIFICATE_TA for value: 1 + /// + CERTIFICATE_TA = 1, + + /// + /// Enum LDIF for value: 2 + /// + LDIF = 2, + + /// + /// Enum CRL for value: 3 + /// + CRL = 3, + + /// + /// Enum ML for value: 4 + /// + ML = 4, + + /// + /// Enum DEFL for value: 5 + /// + DEFL = 5, + + /// + /// Enum DEVL for value: 6 + /// + DEVL = 6, + + /// + /// Enum BL for value: 7 + /// + BL = 7 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RFIDTextDataResult.cs b/src/Regula.DocumentReader.WebClient/Model/RFIDTextDataResult.cs new file mode 100644 index 0000000..65b790a --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RFIDTextDataResult.cs @@ -0,0 +1,114 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RFIDTextDataResult + /// + [DataContract(Name = "RFIDTextDataResult")] + public partial class RFIDTextDataResult : ResultItem, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RFIDTextDataResult() { } + /// + /// Initializes a new instance of the class. + /// + /// docVisualExtendedInfo (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.RFID_TEXT). + public RFIDTextDataResult(RFIDDocVisualExtendedInfo docVisualExtendedInfo = default(RFIDDocVisualExtendedInfo), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.RFID_TEXT) : base(bufLength, light, listIdx, pageIdx, resultType) + { + // to ensure "docVisualExtendedInfo" is required (not null) + if (docVisualExtendedInfo == null) + { + throw new ArgumentNullException("docVisualExtendedInfo is a required property for RFIDTextDataResult and cannot be null"); + } + this.DocVisualExtendedInfo = docVisualExtendedInfo; + } + + /// + /// Gets or Sets DocVisualExtendedInfo + /// + [DataMember(Name = "DocVisualExtendedInfo", IsRequired = true, EmitDefaultValue = true)] + public RFIDDocVisualExtendedInfo DocVisualExtendedInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RFIDTextDataResult {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" DocVisualExtendedInfo: ").Append(DocVisualExtendedInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RawDataResult.cs b/src/Regula.DocumentReader.WebClient/Model/RawDataResult.cs deleted file mode 100644 index 09005b0..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/RawDataResult.cs +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// RawDataResult - /// - [DataContract] - public partial class RawDataResult : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// Count of array fields. - /// pArrayFields. - public RawDataResult(int nFields = default(int), List pArrayFields = default(List)) - { - this.NFields = nFields; - this.PArrayFields = pArrayFields; - } - - /// - /// Count of array fields - /// - /// Count of array fields - [DataMember(Name="nFields", EmitDefaultValue=false)] - public int NFields { get; set; } - - /// - /// Gets or Sets PArrayFields - /// - [DataMember(Name="pArrayFields", EmitDefaultValue=false)] - public List PArrayFields { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class RawDataResult {\n"); - sb.Append(" NFields: ").Append(NFields).Append("\n"); - sb.Append(" PArrayFields: ").Append(PArrayFields).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as RawDataResult); - } - - /// - /// Returns true if RawDataResult instances are equal - /// - /// Instance of RawDataResult to be compared - /// Boolean - public bool Equals(RawDataResult input) - { - if (input == null) - return false; - - return - ( - this.NFields == input.NFields || - (this.NFields != null && - this.NFields.Equals(input.NFields)) - ) && - ( - this.PArrayFields == input.PArrayFields || - this.PArrayFields != null && - input.PArrayFields != null && - this.PArrayFields.SequenceEqual(input.PArrayFields) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.NFields != null) - hashCode = hashCode * 59 + this.NFields.GetHashCode(); - if (this.PArrayFields != null) - hashCode = hashCode * 59 + this.PArrayFields.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/RawImageContainerItem.cs b/src/Regula.DocumentReader.WebClient/Model/RawImageContainerItem.cs new file mode 100644 index 0000000..f77ab15 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RawImageContainerItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RawImageContainerItem + /// + [DataContract(Name = "RawImageContainerItem")] + public partial class RawImageContainerItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RawImageContainerItem() { } + /// + /// Initializes a new instance of the class. + /// + /// rawImageContainer (required). + public RawImageContainerItem(ImageData rawImageContainer = default(ImageData)) + { + // to ensure "rawImageContainer" is required (not null) + if (rawImageContainer == null) + { + throw new ArgumentNullException("rawImageContainer is a required property for RawImageContainerItem and cannot be null"); + } + this.RawImageContainer = rawImageContainer; + } + + /// + /// Gets or Sets RawImageContainer + /// + [DataMember(Name = "RawImageContainer", IsRequired = true, EmitDefaultValue = true)] + public ImageData RawImageContainer { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RawImageContainerItem {\n"); + sb.Append(" RawImageContainer: ").Append(RawImageContainer).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RawImageContainerList.cs b/src/Regula.DocumentReader.WebClient/Model/RawImageContainerList.cs index 37eadba..04a4977 100644 --- a/src/Regula.DocumentReader.WebClient/Model/RawImageContainerList.cs +++ b/src/Regula.DocumentReader.WebClient/Model/RawImageContainerList.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,30 +29,40 @@ namespace Regula.DocumentReader.WebClient.Model /// /// RawImageContainerList /// - [DataContract] - public partial class RawImageContainerList : IEquatable, IValidatableObject + [DataContract(Name = "RawImageContainerList")] + public partial class RawImageContainerList : IValidatableObject { /// /// Initializes a new instance of the class. /// - /// count. - /// images. + [JsonConstructorAttribute] + protected RawImageContainerList() { } + /// + /// Initializes a new instance of the class. + /// + /// count (required). + /// images (required). public RawImageContainerList(int count = default(int), List images = default(List)) { this.Count = count; + // to ensure "images" is required (not null) + if (images == null) + { + throw new ArgumentNullException("images is a required property for RawImageContainerList and cannot be null"); + } this.Images = images; } - + /// /// Gets or Sets Count /// - [DataMember(Name="Count", EmitDefaultValue=false)] + [DataMember(Name = "Count", IsRequired = true, EmitDefaultValue = true)] public int Count { get; set; } /// /// Gets or Sets Images /// - [DataMember(Name="Images", EmitDefaultValue=false)] + [DataMember(Name = "Images", IsRequired = true, EmitDefaultValue = true)] public List Images { get; set; } /// @@ -59,14 +71,14 @@ public partial class RawImageContainerList : IEquatable, /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class RawImageContainerList {\n"); sb.Append(" Count: ").Append(Count).Append("\n"); sb.Append(" Images: ").Append(Images).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -76,63 +88,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as RawImageContainerList); - } - - /// - /// Returns true if RawImageContainerList instances are equal - /// - /// Instance of RawImageContainerList to be compared - /// Boolean - public bool Equals(RawImageContainerList input) - { - if (input == null) - return false; - - return - ( - this.Count == input.Count || - (this.Count != null && - this.Count.Equals(input.Count)) - ) && - ( - this.Images == input.Images || - this.Images != null && - input.Images != null && - this.Images.SequenceEqual(input.Images) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Count != null) - hashCode = hashCode * 59 + this.Count.GetHashCode(); - if (this.Images != null) - hashCode = hashCode * 59 + this.Images.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/RawResultItem.cs b/src/Regula.DocumentReader.WebClient/Model/RawResultItem.cs deleted file mode 100644 index 8b4d701..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/RawResultItem.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text.Json; -using RestSharp; - -namespace Regula.DocumentReader.WebClient.Model -{ - public class RawResultItem : ResultItem, IDictionary - { - private readonly Dictionary _members; - - public RawResultItem() - { - _members = new Dictionary(); - } - - public void Add(string key, object value) - { - _members.Add(key, value); - } - - public bool ContainsKey(string key) - { - return _members.ContainsKey(key); - } - - public ICollection Keys => _members.Keys; - - public bool Remove(string key) - { - return _members.Remove(key); - } - - public bool TryGetValue(string key, out object value) - { - return _members.TryGetValue(key, out value); - } - - public ICollection Values => _members.Values; - - public object this[string key] - { - get => _members[key]; - set => _members[key] = value; - } - - public void Add(KeyValuePair item) - { - _members.Add(item.Key, item.Value); - } - - public void Clear() - { - _members.Clear(); - } - - public bool Contains(KeyValuePair item) - { - return _members.TryGetValue(item.Key, out object value) && value == item.Value; - } - - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - if (array == null) throw new ArgumentNullException(nameof(array)); - - int num = Count; - foreach (var kvp in this) - { - array[arrayIndex++] = kvp; - if (--num <= 0) return; - } - } - - public int Count => _members.Count; - - public bool IsReadOnly => false; - - public bool Remove(KeyValuePair item) - { - return _members.Remove(item.Key); - } - - public IEnumerator> GetEnumerator() - { - return _members.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return _members.GetEnumerator(); - } - - public override string ToString() - { - return JsonSerializer.Serialize(this); - } - } -} diff --git a/src/Regula.DocumentReader.WebClient/Model/RectangleCoordinates.cs b/src/Regula.DocumentReader.WebClient/Model/RectangleCoordinates.cs index 43adbd9..99904a9 100644 --- a/src/Regula.DocumentReader.WebClient/Model/RectangleCoordinates.cs +++ b/src/Regula.DocumentReader.WebClient/Model/RectangleCoordinates.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Coordinates of the rectangle region on a document image(result type 1). Represented by two points - (left, top) + (right, bottom) /// - [DataContract] - public partial class RectangleCoordinates : IEquatable, IValidatableObject + [DataContract(Name = "RectangleCoordinates")] + public partial class RectangleCoordinates : IValidatableObject { /// /// Initializes a new instance of the class. @@ -44,70 +46,34 @@ protected RectangleCoordinates() { } /// bottom (required). public RectangleCoordinates(int left = default(int), int top = default(int), int right = default(int), int bottom = default(int)) { - // to ensure "left" is required (not null) - if (left == null) - { - throw new InvalidDataException("left is a required property for RectangleCoordinates and cannot be null"); - } - else - { - this.Left = left; - } - - // to ensure "top" is required (not null) - if (top == null) - { - throw new InvalidDataException("top is a required property for RectangleCoordinates and cannot be null"); - } - else - { - this.Top = top; - } - - // to ensure "right" is required (not null) - if (right == null) - { - throw new InvalidDataException("right is a required property for RectangleCoordinates and cannot be null"); - } - else - { - this.Right = right; - } - - // to ensure "bottom" is required (not null) - if (bottom == null) - { - throw new InvalidDataException("bottom is a required property for RectangleCoordinates and cannot be null"); - } - else - { - this.Bottom = bottom; - } - + this.Left = left; + this.Top = top; + this.Right = right; + this.Bottom = bottom; } - + /// /// Gets or Sets Left /// - [DataMember(Name="left", EmitDefaultValue=true)] + [DataMember(Name = "left", IsRequired = true, EmitDefaultValue = true)] public int Left { get; set; } /// /// Gets or Sets Top /// - [DataMember(Name="top", EmitDefaultValue=true)] + [DataMember(Name = "top", IsRequired = true, EmitDefaultValue = true)] public int Top { get; set; } /// /// Gets or Sets Right /// - [DataMember(Name="right", EmitDefaultValue=true)] + [DataMember(Name = "right", IsRequired = true, EmitDefaultValue = true)] public int Right { get; set; } /// /// Gets or Sets Bottom /// - [DataMember(Name="bottom", EmitDefaultValue=true)] + [DataMember(Name = "bottom", IsRequired = true, EmitDefaultValue = true)] public int Bottom { get; set; } /// @@ -116,7 +82,7 @@ protected RectangleCoordinates() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class RectangleCoordinates {\n"); sb.Append(" Left: ").Append(Left).Append("\n"); sb.Append(" Top: ").Append(Top).Append("\n"); @@ -125,7 +91,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -135,76 +101,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as RectangleCoordinates); - } - - /// - /// Returns true if RectangleCoordinates instances are equal - /// - /// Instance of RectangleCoordinates to be compared - /// Boolean - public bool Equals(RectangleCoordinates input) - { - if (input == null) - return false; - - return - ( - this.Left == input.Left || - (this.Left != null && - this.Left.Equals(input.Left)) - ) && - ( - this.Top == input.Top || - (this.Top != null && - this.Top.Equals(input.Top)) - ) && - ( - this.Right == input.Right || - (this.Right != null && - this.Right.Equals(input.Right)) - ) && - ( - this.Bottom == input.Bottom || - (this.Bottom != null && - this.Bottom.Equals(input.Bottom)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Left != null) - hashCode = hashCode * 59 + this.Left.GetHashCode(); - if (this.Top != null) - hashCode = hashCode * 59 + this.Top.GetHashCode(); - if (this.Right != null) - hashCode = hashCode * 59 + this.Right.GetHashCode(); - if (this.Bottom != null) - hashCode = hashCode * 59 + this.Bottom.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Result.cs b/src/Regula.DocumentReader.WebClient/Model/Result.cs index cb06dcf..a69301e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Result.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Result.cs @@ -1,95 +1,215 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - /// Describes possible extracted result types from documents - public class Result + /// + /// Defines Result + /// + public enum Result { - - /** Contains cropped and rotated with perspective compensation image of document. Single input image can contain multiple document side/pages, which will be returned as separated results. Most of coordinates in other types defined on that image */ - public const int DOCUMENT_IMAGE = 1; - - /** Contains image quality check results */ - public const int IMAGE_QUALITY = 30; - - /** Contains check statuses with details, grouped by source */ - public const int STATUS = 33; - - /** Contains document textual fields from all sources (mrz, rfid, visual, barcode) with validity and cross-source compare checks */ - public const int TEXT = 36; - - /** Contains images from all document sources (mrz, rfid, visual, barcode) */ - public const int IMAGES = 37; - - /** Contains MRZ OCR results */ - public const int MRZ_TEXT = 3; - - /** Contains Visual zone OCR results */ - public const int VISUAL_TEXT = 17; - - /** Contains barcode parsing result with text fields */ - public const int BARCODE_TEXT = 18; - - /** Contains RFID parsing result with text fields */ - public const int RFID_TEXT = 102; - - /** Contains lexical data analysis results that allow you to compare MRZ OCR results, Visual zone OCR results, barcodes and RFID chip data for an additional assessment of the authenticity of the document (this is an old format, better use TEXT type) */ - public const int LEXICAL_ANALYSIS = 15; - - /** Contains cropped graphic fields from Visual zone */ - public const int VISUAL_GRAPHICS = 6; - - /** Contains barcode parsing result with graphic fields */ - public const int BARCODE_GRAPHICS = 19; - - /** Contains RFID parsing result with graphic fields */ - public const int RFID_GRAPHICS = 103; - - /** Contains list of document type candidates with their probabilities and descriptions */ - public const int DOCUMENT_TYPE_CANDIDATES = 8; - - /** Contains description of determined document type, if any */ - public const int DOCUMENT_TYPE = 9; - - /** Contains result of document authenticity checks */ - public const int AUTHENTICITY = 20; - - /** Contains information about document position on the input image, its center, angle, etc */ - public const int DOCUMENT_POSITION = 85; - - /** Contains raw information about barcodes on the input image */ - public const int BARCODES = 5; - - /** Contains license */ - public const int LICENSE = 50; - - /** Contains encrypted ResultContainerList */ - public const int ENCRYPTED_RCL = 49; - - /* Contains information about portrait comparison */ - public const int PORTRAIT_COMPARISON = 34; - + /// + /// Enum DOCUMENT_IMAGE for value: 1 + /// + DOCUMENT_IMAGE = 1, + + /// + /// Enum MRZ_TEXT for value: 3 + /// + MRZ_TEXT = 3, + + /// + /// Enum BARCODES for value: 5 + /// + BARCODES = 5, + + /// + /// Enum VISUAL_GRAPHICS for value: 6 + /// + VISUAL_GRAPHICS = 6, + + /// + /// Enum MRZ_TEST_QUALITY for value: 7 + /// + MRZ_TEST_QUALITY = 7, + + /// + /// Enum DOCUMENT_TYPE_CANDIDATES for value: 8 + /// + DOCUMENT_TYPE_CANDIDATES = 8, + + /// + /// Enum DOCUMENT_TYPE for value: 9 + /// + DOCUMENT_TYPE = 9, + + /// + /// Enum LEXICAL_ANALYSIS for value: 15 + /// + LEXICAL_ANALYSIS = 15, + + /// + /// Enum RAW_UNCROPPED_IMAGE for value: 16 + /// + RAW_UNCROPPED_IMAGE = 16, + + /// + /// Enum VISUAL_TEXT for value: 17 + /// + VISUAL_TEXT = 17, + + /// + /// Enum BARCODE_TEXT for value: 18 + /// + BARCODE_TEXT = 18, + + /// + /// Enum BARCODE_GRAPHICS for value: 19 + /// + BARCODE_GRAPHICS = 19, + + /// + /// Enum AUTHENTICITY for value: 20 + /// + AUTHENTICITY = 20, + + /// + /// Enum MAGNETIC_STRIPE_TEXT_DATA for value: 26 + /// + MAGNETIC_STRIPE_TEXT_DATA = 26, + + /// + /// Enum IMAGE_QUALITY for value: 30 + /// + IMAGE_QUALITY = 30, + + /// + /// Enum LIVE_PORTRAIT for value: 32 + /// + LIVE_PORTRAIT = 32, + + /// + /// Enum STATUS for value: 33 + /// + STATUS = 33, + + /// + /// Enum PORTRAIT_COMPARISON for value: 34 + /// + PORTRAIT_COMPARISON = 34, + + /// + /// Enum EXT_PORTRAIT for value: 35 + /// + EXT_PORTRAIT = 35, + + /// + /// Enum TEXT for value: 36 + /// + TEXT = 36, + + /// + /// Enum IMAGES for value: 37 + /// + IMAGES = 37, + + /// + /// Enum FINGERPRINTS for value: 38 + /// + FINGERPRINTS = 38, + + /// + /// Enum FINGERPRINT_COMPARISON for value: 39 + /// + FINGERPRINT_COMPARISON = 39, + + /// + /// Enum ENCRYPTED_RCL for value: 49 + /// + ENCRYPTED_RCL = 49, + + /// + /// Enum LICENSE for value: 50 + /// + LICENSE = 50, + + /// + /// Enum MRZ_POSITION for value: 61 + /// + MRZ_POSITION = 61, + + /// + /// Enum BARCODE_POSITION for value: 62 + /// + BARCODE_POSITION = 62, + + /// + /// Enum DOCUMENT_POSITION for value: 85 + /// + DOCUMENT_POSITION = 85, + + /// + /// Enum MRZ_DETECTOR for value: 87 + /// + MRZ_DETECTOR = 87, + + /// + /// Enum FACE_DETECTION for value: 97 + /// + FACE_DETECTION = 97, + + /// + /// Enum RFID_RAW_DATA for value: 101 + /// + RFID_RAW_DATA = 101, + + /// + /// Enum RFID_TEXT for value: 102 + /// + RFID_TEXT = 102, + + /// + /// Enum RFID_GRAPHICS for value: 103 + /// + RFID_GRAPHICS = 103, + + /// + /// Enum RFID_BINARY_DATA for value: 104 + /// + RFID_BINARY_DATA = 104, + + /// + /// Enum RFID_ORIGINAL_GRAPHICS for value: 105 + /// + RFID_ORIGINAL_GRAPHICS = 105, + + /// + /// Enum DTC_VC for value: 109 + /// + DTC_VC = 109 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/ResultItem.cs b/src/Regula.DocumentReader.WebClient/Model/ResultItem.cs index 340ed40..7958b2c 100644 --- a/src/Regula.DocumentReader.WebClient/Model/ResultItem.cs +++ b/src/Regula.DocumentReader.WebClient/Model/ResultItem.cs @@ -1,26 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -28,25 +30,52 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Common fields for all result objects /// - [DataContract] + [DataContract(Name = "ResultItem")] [JsonConverter(typeof(JsonSubtypes), "result_type")] - [JsonSubtypes.KnownSubType(typeof(ImagesResult), Result.IMAGES)] - [JsonSubtypes.KnownSubType(typeof(ImageQualityResult), Result.IMAGE_QUALITY)] - [JsonSubtypes.KnownSubType(typeof(LexicalAnalysisResult), Result.LEXICAL_ANALYSIS)] - [JsonSubtypes.KnownSubType(typeof(DocumentImageResult), Result.DOCUMENT_IMAGE)] - [JsonSubtypes.KnownSubType(typeof(TextDataResult), Result.VISUAL_TEXT)] - [JsonSubtypes.KnownSubType(typeof(DocumentTypesCandidatesResult), Result.DOCUMENT_TYPE_CANDIDATES)] - [JsonSubtypes.KnownSubType(typeof(StatusResult), Result.STATUS)] - [JsonSubtypes.KnownSubType(typeof(ChosenDocumentTypeResult), Result.DOCUMENT_TYPE)] - [JsonSubtypes.KnownSubType(typeof(TextResult), Result.TEXT)] - [JsonSubtypes.KnownSubType(typeof(GraphicsResult), Result.VISUAL_GRAPHICS)] - [JsonSubtypes.KnownSubType(typeof(AuthenticityResult), Result.AUTHENTICITY)] - [JsonSubtypes.KnownSubType(typeof(LicenseResult), Result.LICENSE)] - [JsonSubtypes.KnownSubType(typeof(EncryptedRCLResult), Result.ENCRYPTED_RCL)] - [JsonSubtypes.KnownSubType(typeof(AuthenticityResult), Result.PORTRAIT_COMPARISON)] - [JsonSubtypes.FallBackSubType(typeof(RawResultItem))] - public partial class ResultItem : IEquatable, IValidatableObject + [JsonSubtypes.KnownSubType(typeof(DocumentImageResult), "1")] + [JsonSubtypes.KnownSubType(typeof(DocumentBinaryInfoResult), "101")] + [JsonSubtypes.KnownSubType(typeof(RFIDTextDataResult), "102")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "103")] + [JsonSubtypes.KnownSubType(typeof(DocumentBinaryInfoResult), "104")] + [JsonSubtypes.KnownSubType(typeof(RFIDGraphicsInfoResult), "105")] + [JsonSubtypes.KnownSubType(typeof(ByteArrayResult), "109")] + [JsonSubtypes.KnownSubType(typeof(LexicalAnalysisResult), "15")] + [JsonSubtypes.KnownSubType(typeof(DocumentImageResult), "16")] + [JsonSubtypes.KnownSubType(typeof(TextDataResult), "17")] + [JsonSubtypes.KnownSubType(typeof(TextDataResult), "18")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "19")] + [JsonSubtypes.KnownSubType(typeof(AuthenticityResult), "20")] + [JsonSubtypes.KnownSubType(typeof(TextDataResult), "26")] + [JsonSubtypes.KnownSubType(typeof(TextDataResult), "3")] + [JsonSubtypes.KnownSubType(typeof(ImageQualityResult), "30")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "32")] + [JsonSubtypes.KnownSubType(typeof(StatusResult), "33")] + [JsonSubtypes.KnownSubType(typeof(AuthenticityResult), "34")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "35")] + [JsonSubtypes.KnownSubType(typeof(TextResult), "36")] + [JsonSubtypes.KnownSubType(typeof(ImagesResult), "37")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "38")] + [JsonSubtypes.KnownSubType(typeof(AuthenticityResult), "39")] + [JsonSubtypes.KnownSubType(typeof(EncryptedRCLResult), "49")] + [JsonSubtypes.KnownSubType(typeof(DocBarCodeInfo), "5")] + [JsonSubtypes.KnownSubType(typeof(LicenseResult), "50")] + [JsonSubtypes.KnownSubType(typeof(GraphicsResult), "6")] + [JsonSubtypes.KnownSubType(typeof(MRZPositionResult), "61")] + [JsonSubtypes.KnownSubType(typeof(DocumentPositionResult), "62")] + [JsonSubtypes.KnownSubType(typeof(MRZTestQualityResult), "7")] + [JsonSubtypes.KnownSubType(typeof(DocumentTypesCandidatesResult), "8")] + [JsonSubtypes.KnownSubType(typeof(DocumentPositionResult), "85")] + [JsonSubtypes.KnownSubType(typeof(MRZDetectorResult), "87")] + [JsonSubtypes.KnownSubType(typeof(ChosenDocumentTypeResult), "9")] + [JsonSubtypes.KnownSubType(typeof(FaceDetectionResult), "97")] + public partial class ResultItem : IValidatableObject { + + /// + /// Gets or Sets ResultType + /// + [DataMember(Name = "result_type", IsRequired = true, EmitDefaultValue = true)] + public Result ResultType { get; set; } /// /// Initializes a new instance of the class. /// @@ -59,55 +88,39 @@ protected ResultItem() { } /// light. /// listIdx. /// pageIdx. - /// Same as Result type, but used for safe parsing of not-described values. See Result type. (required) (default to 0). - public ResultItem(int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) + /// resultType (required). + public ResultItem(int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = default(Result)) { - // to ensure "resultType" is required (not null) - if (resultType == null) - { - throw new InvalidDataException("resultType is a required property for ResultItem and cannot be null"); - } - else - { - this.ResultType = resultType; - } - + this.ResultType = resultType; this.BufLength = bufLength; this.Light = light; this.ListIdx = listIdx; this.PageIdx = pageIdx; } - + /// /// Gets or Sets BufLength /// - [DataMember(Name="buf_length", EmitDefaultValue=false)] - public int BufLength { get; set; } + [DataMember(Name = "buf_length", EmitDefaultValue = false)] + public int? BufLength { get; set; } /// /// Gets or Sets Light /// - [DataMember(Name="light", EmitDefaultValue=false)] - public int Light { get; set; } + [DataMember(Name = "light", EmitDefaultValue = false)] + public int? Light { get; set; } /// /// Gets or Sets ListIdx /// - [DataMember(Name="list_idx", EmitDefaultValue=false)] - public int ListIdx { get; set; } + [DataMember(Name = "list_idx", EmitDefaultValue = false)] + public int? ListIdx { get; set; } /// /// Gets or Sets PageIdx /// - [DataMember(Name="page_idx", EmitDefaultValue=false)] - public int PageIdx { get; set; } - - /// - /// Same as Result type, but used for safe parsing of not-described values. See Result type. - /// - /// Same as Result type, but used for safe parsing of not-described values. See Result type. - [DataMember(Name="result_type", EmitDefaultValue=true)] - public int ResultType { get; set; } + [DataMember(Name = "page_idx", EmitDefaultValue = false)] + public int? PageIdx { get; set; } /// /// Returns the string presentation of the object @@ -115,7 +128,7 @@ protected ResultItem() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class ResultItem {\n"); sb.Append(" BufLength: ").Append(BufLength).Append("\n"); sb.Append(" Light: ").Append(Light).Append("\n"); @@ -125,7 +138,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -135,83 +148,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as ResultItem); - } - - /// - /// Returns true if ResultItem instances are equal - /// - /// Instance of ResultItem to be compared - /// Boolean - public bool Equals(ResultItem input) - { - if (input == null) - return false; - - return - ( - this.BufLength == input.BufLength || - (this.BufLength != null && - this.BufLength.Equals(input.BufLength)) - ) && - ( - this.Light == input.Light || - (this.Light != null && - this.Light.Equals(input.Light)) - ) && - ( - this.ListIdx == input.ListIdx || - (this.ListIdx != null && - this.ListIdx.Equals(input.ListIdx)) - ) && - ( - this.PageIdx == input.PageIdx || - (this.PageIdx != null && - this.PageIdx.Equals(input.PageIdx)) - ) && - ( - this.ResultType == input.ResultType || - (this.ResultType != null && - this.ResultType.Equals(input.ResultType)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.BufLength != null) - hashCode = hashCode * 59 + this.BufLength.GetHashCode(); - if (this.Light != null) - hashCode = hashCode * 59 + this.Light.GetHashCode(); - if (this.ListIdx != null) - hashCode = hashCode * 59 + this.ListIdx.GetHashCode(); - if (this.PageIdx != null) - hashCode = hashCode * 59 + this.PageIdx.GetHashCode(); - if (this.ResultType != null) - hashCode = hashCode * 59 + this.ResultType.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { return this.BaseValidate(validationContext); } @@ -221,7 +163,7 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - protected IEnumerable BaseValidate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetector.cs b/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetector.cs new file mode 100644 index 0000000..6b8ea31 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetector.cs @@ -0,0 +1,125 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ResultMRZDetector + /// + [DataContract(Name = "ResultMRZDetector")] + public partial class ResultMRZDetector : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ResultMRZDetector() { } + /// + /// Initializes a new instance of the class. + /// + /// mRZFormat (required). + /// mRZRows (required). + /// mRZRowsNum (required). + /// boundingQuadrangle (required). + public ResultMRZDetector(int mRZFormat = default(int), List mRZRows = default(List), int mRZRowsNum = default(int), List boundingQuadrangle = default(List)) + { + this.MRZFormat = mRZFormat; + // to ensure "mRZRows" is required (not null) + if (mRZRows == null) + { + throw new ArgumentNullException("mRZRows is a required property for ResultMRZDetector and cannot be null"); + } + this.MRZRows = mRZRows; + this.MRZRowsNum = mRZRowsNum; + // to ensure "boundingQuadrangle" is required (not null) + if (boundingQuadrangle == null) + { + throw new ArgumentNullException("boundingQuadrangle is a required property for ResultMRZDetector and cannot be null"); + } + this.BoundingQuadrangle = boundingQuadrangle; + } + + /// + /// Gets or Sets MRZFormat + /// + [DataMember(Name = "MRZFormat", IsRequired = true, EmitDefaultValue = true)] + public int MRZFormat { get; set; } + + /// + /// Gets or Sets MRZRows + /// + [DataMember(Name = "MRZRows", IsRequired = true, EmitDefaultValue = true)] + public List MRZRows { get; set; } + + /// + /// Gets or Sets MRZRowsNum + /// + [DataMember(Name = "MRZRowsNum", IsRequired = true, EmitDefaultValue = true)] + public int MRZRowsNum { get; set; } + + /// + /// Gets or Sets BoundingQuadrangle + /// + [DataMember(Name = "boundingQuadrangle", IsRequired = true, EmitDefaultValue = true)] + public List BoundingQuadrangle { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ResultMRZDetector {\n"); + sb.Append(" MRZFormat: ").Append(MRZFormat).Append("\n"); + sb.Append(" MRZRows: ").Append(MRZRows).Append("\n"); + sb.Append(" MRZRowsNum: ").Append(MRZRowsNum).Append("\n"); + sb.Append(" BoundingQuadrangle: ").Append(BoundingQuadrangle).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetectorItem.cs b/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetectorItem.cs new file mode 100644 index 0000000..2fd061a --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/ResultMRZDetectorItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// ResultMRZDetectorItem + /// + [DataContract(Name = "ResultMRZDetectorItem")] + public partial class ResultMRZDetectorItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ResultMRZDetectorItem() { } + /// + /// Initializes a new instance of the class. + /// + /// resultMRZDetector (required). + public ResultMRZDetectorItem(ResultMRZDetector resultMRZDetector = default(ResultMRZDetector)) + { + // to ensure "resultMRZDetector" is required (not null) + if (resultMRZDetector == null) + { + throw new ArgumentNullException("resultMRZDetector is a required property for ResultMRZDetectorItem and cannot be null"); + } + this.ResultMRZDetector = resultMRZDetector; + } + + /// + /// Gets or Sets ResultMRZDetector + /// + [DataMember(Name = "ResultMRZDetector", IsRequired = true, EmitDefaultValue = true)] + public ResultMRZDetector ResultMRZDetector { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ResultMRZDetectorItem {\n"); + sb.Append(" ResultMRZDetector: ").Append(ResultMRZDetector).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAChip.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAChip.cs new file mode 100644 index 0000000..b474426 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAChip.cs @@ -0,0 +1,66 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants specifying the type of the RFIDchip from MIFARE® family (for chips of type A) + /// + /// Enumeration contains a set of constants specifying the type of the RFIDchip from MIFARE® family (for chips of type A) + public enum RfidAChip + { + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum MIFARE_1K for value: 1 + /// + MIFARE_1K = 1, + + /// + /// Enum MIFARE_4K for value: 2 + /// + MIFARE_4K = 2, + + /// + /// Enum MIFARE_ULTRALIGHT for value: 3 + /// + MIFARE_ULTRALIGHT = 3, + + /// + /// Enum MIFARE_DES_FIRE for value: 4 + /// + MIFARE_DES_FIRE = 4, + + /// + /// Enum MIFARE_PROX for value: 5 + /// + MIFARE_PROX = 5 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlInfo.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlInfo.cs new file mode 100644 index 0000000..ed52128 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlInfo.cs @@ -0,0 +1,132 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the results of a single authentication procedure or a procedure of secure data access within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidAccessControlInfo")] + public partial class RfidAccessControlInfo : IValidatableObject + { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public RfidAccessControlProcedureType Type { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "Status", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidAccessControlInfo() { } + /// + /// Initializes a new instance of the class. + /// + /// type (required). + /// status (required). + /// Index of the active variant of the procedure. + /// List of remarks arisen during the procedure. (required). + /// List of structures with are used to describe the variants of the authentication or secure data access procedure performance within the context of the communication session with electronic document. + public RfidAccessControlInfo(RfidAccessControlProcedureType type = default(RfidAccessControlProcedureType), RFIDErrorCodes status = default(RFIDErrorCodes), decimal activeOptionIdx = default(decimal), List notifications = default(List), List accessControlOptions = default(List)) + { + this.Type = type; + this.Status = status; + // to ensure "notifications" is required (not null) + if (notifications == null) + { + throw new ArgumentNullException("notifications is a required property for RfidAccessControlInfo and cannot be null"); + } + this.Notifications = notifications; + this.ActiveOptionIdx = activeOptionIdx; + this.AccessControlOptions = accessControlOptions; + } + + /// + /// Index of the active variant of the procedure + /// + /// Index of the active variant of the procedure + [DataMember(Name = "ActiveOptionIdx", EmitDefaultValue = false)] + public decimal? ActiveOptionIdx { get; set; } + + /// + /// List of remarks arisen during the procedure. + /// + /// List of remarks arisen during the procedure. + [DataMember(Name = "Notifications", IsRequired = true, EmitDefaultValue = true)] + public List Notifications { get; set; } + + /// + /// List of structures with are used to describe the variants of the authentication or secure data access procedure performance within the context of the communication session with electronic document + /// + /// List of structures with are used to describe the variants of the authentication or secure data access procedure performance within the context of the communication session with electronic document + [DataMember(Name = "AccessControlOptions", EmitDefaultValue = false)] + public List? AccessControlOptions { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidAccessControlInfo {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" ActiveOptionIdx: ").Append(ActiveOptionIdx).Append("\n"); + sb.Append(" Notifications: ").Append(Notifications).Append("\n"); + sb.Append(" AccessControlOptions: ").Append(AccessControlOptions).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlProcedureType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlProcedureType.cs new file mode 100644 index 0000000..7830f61 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAccessControlProcedureType.cs @@ -0,0 +1,76 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of authentication or secure data access procedure + /// + /// Enumeration contains a set of constants that define the type of authentication or secure data access procedure + public enum RfidAccessControlProcedureType + { + /// + /// Enum UNDEFINED for value: 0 + /// + UNDEFINED = 0, + + /// + /// Enum BAC for value: 1 + /// + BAC = 1, + + /// + /// Enum PACE for value: 2 + /// + PACE = 2, + + /// + /// Enum CA for value: 3 + /// + CA = 3, + + /// + /// Enum TA for value: 4 + /// + TA = 4, + + /// + /// Enum AA for value: 5 + /// + AA = 5, + + /// + /// Enum RI for value: 6 + /// + RI = 6, + + /// + /// Enum CARD_INFO for value: 10 + /// + CARD_INFO = 10 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAccessKey.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAccessKey.cs new file mode 100644 index 0000000..34197bc --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAccessKey.cs @@ -0,0 +1,122 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the contents of secure data access key within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidAccessKey")] + public partial class RfidAccessKey : IValidatableObject + { + + /// + /// Gets or Sets KeyType + /// + [DataMember(Name = "KeyType", IsRequired = true, EmitDefaultValue = true)] + public RfidPasswordType KeyType { get; set; } + + /// + /// Gets or Sets AccessType + /// + [DataMember(Name = "AccessType", IsRequired = true, EmitDefaultValue = true)] + public RfidAccessControlProcedureType AccessType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidAccessKey() { } + /// + /// Initializes a new instance of the class. + /// + /// Key contents (required). + /// keyType (required). + /// accessType (required). + /// Logical sign of the need for a full comparison of AccessKey contents with the contents of DG1 (MRZ) data group (required). + public RfidAccessKey(string accessKey = default(string), RfidPasswordType keyType = default(RfidPasswordType), RfidAccessControlProcedureType accessType = default(RfidAccessControlProcedureType), bool checkFullKeyMatching = default(bool)) + { + // to ensure "accessKey" is required (not null) + if (accessKey == null) + { + throw new ArgumentNullException("accessKey is a required property for RfidAccessKey and cannot be null"); + } + this.AccessKey = accessKey; + this.KeyType = keyType; + this.AccessType = accessType; + this.CheckFullKeyMatching = checkFullKeyMatching; + } + + /// + /// Key contents + /// + /// Key contents + [DataMember(Name = "AccessKey", IsRequired = true, EmitDefaultValue = true)] + public string AccessKey { get; set; } + + /// + /// Logical sign of the need for a full comparison of AccessKey contents with the contents of DG1 (MRZ) data group + /// + /// Logical sign of the need for a full comparison of AccessKey contents with the contents of DG1 (MRZ) data group + [DataMember(Name = "CheckFullKeyMatching", IsRequired = true, EmitDefaultValue = true)] + public bool CheckFullKeyMatching { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidAccessKey {\n"); + sb.Append(" AccessKey: ").Append(AccessKey).Append("\n"); + sb.Append(" KeyType: ").Append(KeyType).Append("\n"); + sb.Append(" AccessType: ").Append(AccessType).Append("\n"); + sb.Append(" CheckFullKeyMatching: ").Append(CheckFullKeyMatching).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidApplication.cs b/src/Regula.DocumentReader.WebClient/Model/RfidApplication.cs new file mode 100644 index 0000000..aedbceb --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidApplication.cs @@ -0,0 +1,172 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the contents of a single LDS application and their analysis within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidApplication")] + public partial class RfidApplication : IValidatableObject + { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public RfidApplicationType Type { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "Status", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidApplication() { } + /// + /// Initializes a new instance of the class. + /// + /// type (required). + /// status (required). + /// Application identifier (required). + /// Version of the application (required). + /// Unicode version for application (required). + /// Algorithm for calculating hash values for files for the procedure of PA (required). + /// List of containers to store information about the read files of the application (required). + public RfidApplication(RfidApplicationType type = default(RfidApplicationType), RFIDErrorCodes status = default(RFIDErrorCodes), string applicationID = default(string), string varVersion = default(string), string unicodeVersion = default(string), string dataHashAlgorithm = default(string), List files = default(List)) + { + this.Type = type; + this.Status = status; + // to ensure "applicationID" is required (not null) + if (applicationID == null) + { + throw new ArgumentNullException("applicationID is a required property for RfidApplication and cannot be null"); + } + this.ApplicationID = applicationID; + // to ensure "varVersion" is required (not null) + if (varVersion == null) + { + throw new ArgumentNullException("varVersion is a required property for RfidApplication and cannot be null"); + } + this.VarVersion = varVersion; + // to ensure "unicodeVersion" is required (not null) + if (unicodeVersion == null) + { + throw new ArgumentNullException("unicodeVersion is a required property for RfidApplication and cannot be null"); + } + this.UnicodeVersion = unicodeVersion; + // to ensure "dataHashAlgorithm" is required (not null) + if (dataHashAlgorithm == null) + { + throw new ArgumentNullException("dataHashAlgorithm is a required property for RfidApplication and cannot be null"); + } + this.DataHashAlgorithm = dataHashAlgorithm; + // to ensure "files" is required (not null) + if (files == null) + { + throw new ArgumentNullException("files is a required property for RfidApplication and cannot be null"); + } + this.Files = files; + } + + /// + /// Application identifier + /// + /// Application identifier + [DataMember(Name = "ApplicationID", IsRequired = true, EmitDefaultValue = true)] + public string ApplicationID { get; set; } + + /// + /// Version of the application + /// + /// Version of the application + [DataMember(Name = "Version", IsRequired = true, EmitDefaultValue = true)] + public string VarVersion { get; set; } + + /// + /// Unicode version for application + /// + /// Unicode version for application + [DataMember(Name = "UnicodeVersion", IsRequired = true, EmitDefaultValue = true)] + public string UnicodeVersion { get; set; } + + /// + /// Algorithm for calculating hash values for files for the procedure of PA + /// + /// Algorithm for calculating hash values for files for the procedure of PA + [DataMember(Name = "DataHashAlgorithm", IsRequired = true, EmitDefaultValue = true)] + public string DataHashAlgorithm { get; set; } + + /// + /// List of containers to store information about the read files of the application + /// + /// List of containers to store information about the read files of the application + [DataMember(Name = "Files", IsRequired = true, EmitDefaultValue = true)] + public List Files { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidApplication {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" ApplicationID: ").Append(ApplicationID).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" UnicodeVersion: ").Append(UnicodeVersion).Append("\n"); + sb.Append(" DataHashAlgorithm: ").Append(DataHashAlgorithm).Append("\n"); + sb.Append(" Files: ").Append(Files).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidApplicationType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidApplicationType.cs new file mode 100644 index 0000000..ea4d741 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidApplicationType.cs @@ -0,0 +1,86 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of application within the context of the communication session with electronic document + /// + /// Enumeration contains a set of constants that define the type of application within the context of the communication session with electronic document + public enum RfidApplicationType + { + /// + /// Enum UNSPECIFIED for value: 0 + /// + UNSPECIFIED = 0, + + /// + /// Enum E_PASSPORT for value: 1 + /// + E_PASSPORT = 1, + + /// + /// Enum E_ID for value: 2 + /// + E_ID = 2, + + /// + /// Enum E_SIGN for value: 3 + /// + E_SIGN = 3, + + /// + /// Enum E_DL for value: 4 + /// + E_DL = 4, + + /// + /// Enum LDS2_TravelRecords for value: 5 + /// + LDS2_TravelRecords = 5, + + /// + /// Enum LDS2_VisaRecords for value: 6 + /// + LDS2_VisaRecords = 6, + + /// + /// Enum LDS2_AddBiometrics for value: 7 + /// + LDS2_AddBiometrics = 7, + + /// + /// Enum eDTC_PC for value: 8 + /// + eDTC_PC = 8, + + /// + /// Enum ROOT_FILES for value: 0 + /// + ROOT_FILES = 0 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAttributeData.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAttributeData.cs new file mode 100644 index 0000000..04e90b2 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAttributeData.cs @@ -0,0 +1,109 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure contains the data of one attribute of the digital signature object. + /// + [DataContract(Name = "RfidAttributeData")] + public partial class RfidAttributeData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidAttributeData() { } + /// + /// Initializes a new instance of the class. + /// + /// Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) (required). + /// Attribute binary data. Base64 encoded. (required). + public RfidAttributeData(string type = default(string), string data = default(string)) + { + // to ensure "type" is required (not null) + if (type == null) + { + throw new ArgumentNullException("type is a required property for RfidAttributeData and cannot be null"); + } + this.Type = type; + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for RfidAttributeData and cannot be null"); + } + this.Data = data; + } + + /// + /// Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + /// + /// Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public string Type { get; set; } + + /// + /// Attribute binary data. Base64 encoded. + /// + /// Attribute binary data. Base64 encoded. + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidAttributeData {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAttributeName.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAttributeName.cs new file mode 100644 index 0000000..1f57374 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAttributeName.cs @@ -0,0 +1,108 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure contains information that serves as the distinguished name (identifier) of an object. + /// + [DataContract(Name = "RfidAttributeName")] + public partial class RfidAttributeName : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidAttributeName() { } + /// + /// Initializes a new instance of the class. + /// + /// Attribute identifier (OID ASCII string); contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) (required). + /// value (required). + public RfidAttributeName(string type = default(string), TrfFtString value = default(TrfFtString)) + { + // to ensure "type" is required (not null) + if (type == null) + { + throw new ArgumentNullException("type is a required property for RfidAttributeName and cannot be null"); + } + this.Type = type; + // to ensure "value" is required (not null) + if (value == null) + { + throw new ArgumentNullException("value is a required property for RfidAttributeName and cannot be null"); + } + this.Value = value; + } + + /// + /// Attribute identifier (OID ASCII string); contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + /// + /// Attribute identifier (OID ASCII string); contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public string Type { get; set; } + + /// + /// Gets or Sets Value + /// + [DataMember(Name = "Value", IsRequired = true, EmitDefaultValue = true)] + public TrfFtString Value { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidAttributeName {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Value: ").Append(Value).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidAuthenticationProcedureType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidAuthenticationProcedureType.cs new file mode 100644 index 0000000..1349c07 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidAuthenticationProcedureType.cs @@ -0,0 +1,56 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of performed procedure of document authentication within the current session + /// + /// Enumeration contains a set of constants that define the type of performed procedure of document authentication within the current session + public enum RfidAuthenticationProcedureType + { + /// + /// Enum UNDEFINED for value: 0 + /// + UNDEFINED = 0, + + /// + /// Enum STANDARD for value: 1 + /// + STANDARD = 1, + + /// + /// Enum ADVANCED for value: 2 + /// + ADVANCED = 2, + + /// + /// Enum GENERAL for value: 3 + /// + GENERAL = 3 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidBaudRate.cs b/src/Regula.DocumentReader.WebClient/Model/RfidBaudRate.cs new file mode 100644 index 0000000..3c53f02 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidBaudRate.cs @@ -0,0 +1,61 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants specifying the rate of data exchange between the reader and the RFID-chip + /// + /// Enumeration contains a set of constants specifying the rate of data exchange between the reader and the RFID-chip + public enum RfidBaudRate + { + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum RFBR_106 for value: 1 + /// + RFBR_106 = 1, + + /// + /// Enum RFBR_212 for value: 2 + /// + RFBR_212 = 2, + + /// + /// Enum RFBR_424 for value: 4 + /// + RFBR_424 = 4, + + /// + /// Enum RFBR_848 for value: 8 + /// + RFBR_848 = 8 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidCardPropertiesExt.cs b/src/Regula.DocumentReader.WebClient/Model/RfidCardPropertiesExt.cs new file mode 100644 index 0000000..a60626a --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidCardPropertiesExt.cs @@ -0,0 +1,250 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to store extended information about the characteristics of the RFID-chip located in the scope of the reader + /// + [DataContract(Name = "RfidCardPropertiesExt")] + public partial class RfidCardPropertiesExt : IValidatableObject + { + + /// + /// Gets or Sets RFIDType + /// + [DataMember(Name = "RFID_Type", IsRequired = true, EmitDefaultValue = true)] + public RfidType RFIDType { get; set; } + + /// + /// Gets or Sets ChipTypeA + /// + [DataMember(Name = "ChipType_A", IsRequired = true, EmitDefaultValue = true)] + public RfidAChip ChipTypeA { get; set; } + + /// + /// Gets or Sets BitRateS + /// + [DataMember(Name = "BitRateS", IsRequired = true, EmitDefaultValue = true)] + public RfidBaudRate BitRateS { get; set; } + + /// + /// Gets or Sets BitRateR + /// + [DataMember(Name = "BitRateR", IsRequired = true, EmitDefaultValue = true)] + public RfidBaudRate BitRateR { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidCardPropertiesExt() { } + /// + /// Initializes a new instance of the class. + /// + /// rFIDType (required). + /// Numeric Baudrate1 value in hexadecimal format (e.g. 0x0000000F) (required). + /// Numeric Baudrate2 value in hexadecimal format (required). + /// Boolean Support_4 value (required). + /// chipTypeA (required). + /// Sign of support for ISO/IEC 14443-3 data exchange protocol (required). + /// Amount of operational memory MIFARE® of the chip, kilobytes (required). + /// UID contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. F9 4F 41 60) (required). + /// Reply of the «A» type chip to «REQA» command of ISO/IEC 14443-3 protocol (Answer To Request, Type A – ATQA) – for the internal use by the main control library (required). + /// Response of type-A RFID-chip to SELECT command of ISO/IEC 14443-3 protocol (Select Acknowledge, SAK). (required). + /// ATQ_B contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 50 F9 4F 41 60 00 00 00 00 77 81 81) (required). + /// bitRateS (required). + /// bitRateR (required). + /// ATR-string of RFID-chip (required). + public RfidCardPropertiesExt(RfidType rFIDType = default(RfidType), string baudrate1 = default(string), string baudrate2 = default(string), bool support4 = default(bool), RfidAChip chipTypeA = default(RfidAChip), bool supportMifare = default(bool), decimal mifareMemory = default(decimal), string uID = default(string), Object aTQA = default(Object), Object sAK = default(Object), Object aTQB = default(Object), RfidBaudRate bitRateS = default(RfidBaudRate), RfidBaudRate bitRateR = default(RfidBaudRate), string aTR = default(string)) + { + this.RFIDType = rFIDType; + // to ensure "baudrate1" is required (not null) + if (baudrate1 == null) + { + throw new ArgumentNullException("baudrate1 is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.Baudrate1 = baudrate1; + // to ensure "baudrate2" is required (not null) + if (baudrate2 == null) + { + throw new ArgumentNullException("baudrate2 is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.Baudrate2 = baudrate2; + this.Support4 = support4; + this.ChipTypeA = chipTypeA; + this.SupportMifare = supportMifare; + this.MifareMemory = mifareMemory; + // to ensure "uID" is required (not null) + if (uID == null) + { + throw new ArgumentNullException("uID is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.UID = uID; + // to ensure "aTQA" is required (not null) + if (aTQA == null) + { + throw new ArgumentNullException("aTQA is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.ATQ_A = aTQA; + // to ensure "sAK" is required (not null) + if (sAK == null) + { + throw new ArgumentNullException("sAK is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.SAK = sAK; + // to ensure "aTQB" is required (not null) + if (aTQB == null) + { + throw new ArgumentNullException("aTQB is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.ATQ_B = aTQB; + this.BitRateS = bitRateS; + this.BitRateR = bitRateR; + // to ensure "aTR" is required (not null) + if (aTR == null) + { + throw new ArgumentNullException("aTR is a required property for RfidCardPropertiesExt and cannot be null"); + } + this.ATR = aTR; + } + + /// + /// Numeric Baudrate1 value in hexadecimal format (e.g. 0x0000000F) + /// + /// Numeric Baudrate1 value in hexadecimal format (e.g. 0x0000000F) + [DataMember(Name = "Baudrate1", IsRequired = true, EmitDefaultValue = true)] + public string Baudrate1 { get; set; } + + /// + /// Numeric Baudrate2 value in hexadecimal format + /// + /// Numeric Baudrate2 value in hexadecimal format + [DataMember(Name = "Baudrate2", IsRequired = true, EmitDefaultValue = true)] + public string Baudrate2 { get; set; } + + /// + /// Boolean Support_4 value + /// + /// Boolean Support_4 value + [DataMember(Name = "Support_4", IsRequired = true, EmitDefaultValue = true)] + public bool Support4 { get; set; } + + /// + /// Sign of support for ISO/IEC 14443-3 data exchange protocol + /// + /// Sign of support for ISO/IEC 14443-3 data exchange protocol + [DataMember(Name = "Support_Mifare", IsRequired = true, EmitDefaultValue = true)] + public bool SupportMifare { get; set; } + + /// + /// Amount of operational memory MIFARE® of the chip, kilobytes + /// + /// Amount of operational memory MIFARE® of the chip, kilobytes + [DataMember(Name = "MifareMemory", IsRequired = true, EmitDefaultValue = true)] + public decimal MifareMemory { get; set; } + + /// + /// UID contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. F9 4F 41 60) + /// + /// UID contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. F9 4F 41 60) + [DataMember(Name = "UID", IsRequired = true, EmitDefaultValue = true)] + public string UID { get; set; } + + /// + /// Reply of the «A» type chip to «REQA» command of ISO/IEC 14443-3 protocol (Answer To Request, Type A – ATQA) – for the internal use by the main control library + /// + /// Reply of the «A» type chip to «REQA» command of ISO/IEC 14443-3 protocol (Answer To Request, Type A – ATQA) – for the internal use by the main control library + [DataMember(Name = "ATQ_A", IsRequired = true, EmitDefaultValue = true)] + public Object ATQ_A { get; set; } + + /// + /// Response of type-A RFID-chip to SELECT command of ISO/IEC 14443-3 protocol (Select Acknowledge, SAK). + /// + /// Response of type-A RFID-chip to SELECT command of ISO/IEC 14443-3 protocol (Select Acknowledge, SAK). + [DataMember(Name = "SAK", IsRequired = true, EmitDefaultValue = true)] + public Object SAK { get; set; } + + /// + /// ATQ_B contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 50 F9 4F 41 60 00 00 00 00 77 81 81) + /// + /// ATQ_B contents in text format. Each byte is represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 50 F9 4F 41 60 00 00 00 00 77 81 81) + [DataMember(Name = "ATQ_B", IsRequired = true, EmitDefaultValue = true)] + public Object ATQ_B { get; set; } + + /// + /// ATR-string of RFID-chip + /// + /// ATR-string of RFID-chip + [DataMember(Name = "ATR", IsRequired = true, EmitDefaultValue = true)] + public string ATR { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidCardPropertiesExt {\n"); + sb.Append(" RFIDType: ").Append(RFIDType).Append("\n"); + sb.Append(" Baudrate1: ").Append(Baudrate1).Append("\n"); + sb.Append(" Baudrate2: ").Append(Baudrate2).Append("\n"); + sb.Append(" Support4: ").Append(Support4).Append("\n"); + sb.Append(" ChipTypeA: ").Append(ChipTypeA).Append("\n"); + sb.Append(" SupportMifare: ").Append(SupportMifare).Append("\n"); + sb.Append(" MifareMemory: ").Append(MifareMemory).Append("\n"); + sb.Append(" UID: ").Append(UID).Append("\n"); + sb.Append(" ATQ_A: ").Append(ATQ_A).Append("\n"); + sb.Append(" SAK: ").Append(SAK).Append("\n"); + sb.Append(" ATQ_B: ").Append(ATQ_B).Append("\n"); + sb.Append(" BitRateS: ").Append(BitRateS).Append("\n"); + sb.Append(" BitRateR: ").Append(BitRateR).Append("\n"); + sb.Append(" ATR: ").Append(ATR).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidCertificateEx.cs b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateEx.cs new file mode 100644 index 0000000..ceebcd7 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateEx.cs @@ -0,0 +1,247 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the certificate contents used for the digital signature verification of the document security object within the context of the communication session with electronic document. + /// + [DataContract(Name = "RfidCertificateEx")] + public partial class RfidCertificateEx : IValidatableObject + { + + /// + /// Gets or Sets Origin + /// + [DataMember(Name = "Origin", IsRequired = true, EmitDefaultValue = true)] + public RfidCertificateOrigin Origin { get; set; } + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public RfidCertificateType Type { get; set; } + + /// + /// Gets or Sets PAStatus + /// + [DataMember(Name = "PA_Status", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes PAStatus { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidCertificateEx() { } + /// + /// Initializes a new instance of the class. + /// + /// Version of Certificate ASN.1 structure (required). + /// Certificate serial number. Base64 encoded. (required). + /// Certificate digital signature algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). (required). + /// issuer (required). + /// validity (required). + /// subject (required). + /// Certificate public key algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). (required). + /// List of the certificate extensions (required). + /// List of remarks arisen during the analysis of the certificate data structure and its validity verification. (required). + /// origin (required). + /// type (required). + /// fileName (required). + /// pAStatus (required). + public RfidCertificateEx(decimal varVersion = default(decimal), string serialNumber = default(string), string signatureAlgorithm = default(string), RfidDistinguishedName issuer = default(RfidDistinguishedName), RfidValidity validity = default(RfidValidity), RfidDistinguishedName subject = default(RfidDistinguishedName), string subjectPKAlgorithm = default(string), List extensions = default(List), List notifications = default(List), RfidCertificateOrigin origin = default(RfidCertificateOrigin), RfidCertificateType type = default(RfidCertificateType), TrfFtString fileName = default(TrfFtString), RFIDErrorCodes pAStatus = default(RFIDErrorCodes)) + { + this.VarVersion = varVersion; + // to ensure "serialNumber" is required (not null) + if (serialNumber == null) + { + throw new ArgumentNullException("serialNumber is a required property for RfidCertificateEx and cannot be null"); + } + this.SerialNumber = serialNumber; + // to ensure "signatureAlgorithm" is required (not null) + if (signatureAlgorithm == null) + { + throw new ArgumentNullException("signatureAlgorithm is a required property for RfidCertificateEx and cannot be null"); + } + this.SignatureAlgorithm = signatureAlgorithm; + // to ensure "issuer" is required (not null) + if (issuer == null) + { + throw new ArgumentNullException("issuer is a required property for RfidCertificateEx and cannot be null"); + } + this.Issuer = issuer; + // to ensure "validity" is required (not null) + if (validity == null) + { + throw new ArgumentNullException("validity is a required property for RfidCertificateEx and cannot be null"); + } + this.Validity = validity; + // to ensure "subject" is required (not null) + if (subject == null) + { + throw new ArgumentNullException("subject is a required property for RfidCertificateEx and cannot be null"); + } + this.Subject = subject; + // to ensure "subjectPKAlgorithm" is required (not null) + if (subjectPKAlgorithm == null) + { + throw new ArgumentNullException("subjectPKAlgorithm is a required property for RfidCertificateEx and cannot be null"); + } + this.SubjectPKAlgorithm = subjectPKAlgorithm; + // to ensure "extensions" is required (not null) + if (extensions == null) + { + throw new ArgumentNullException("extensions is a required property for RfidCertificateEx and cannot be null"); + } + this.Extensions = extensions; + // to ensure "notifications" is required (not null) + if (notifications == null) + { + throw new ArgumentNullException("notifications is a required property for RfidCertificateEx and cannot be null"); + } + this.Notifications = notifications; + this.Origin = origin; + this.Type = type; + // to ensure "fileName" is required (not null) + if (fileName == null) + { + throw new ArgumentNullException("fileName is a required property for RfidCertificateEx and cannot be null"); + } + this.FileName = fileName; + this.PAStatus = pAStatus; + } + + /// + /// Version of Certificate ASN.1 structure + /// + /// Version of Certificate ASN.1 structure + [DataMember(Name = "Version", IsRequired = true, EmitDefaultValue = true)] + public decimal VarVersion { get; set; } + + /// + /// Certificate serial number. Base64 encoded. + /// + /// Certificate serial number. Base64 encoded. + [DataMember(Name = "SerialNumber", IsRequired = true, EmitDefaultValue = true)] + public string SerialNumber { get; set; } + + /// + /// Certificate digital signature algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). + /// + /// Certificate digital signature algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). + [DataMember(Name = "SignatureAlgorithm", IsRequired = true, EmitDefaultValue = true)] + public string SignatureAlgorithm { get; set; } + + /// + /// Gets or Sets Issuer + /// + [DataMember(Name = "Issuer", IsRequired = true, EmitDefaultValue = true)] + public RfidDistinguishedName Issuer { get; set; } + + /// + /// Gets or Sets Validity + /// + [DataMember(Name = "Validity", IsRequired = true, EmitDefaultValue = true)] + public RfidValidity Validity { get; set; } + + /// + /// Gets or Sets Subject + /// + [DataMember(Name = "Subject", IsRequired = true, EmitDefaultValue = true)] + public RfidDistinguishedName Subject { get; set; } + + /// + /// Certificate public key algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). + /// + /// Certificate public key algorithm identifier (OID); String in the format S1 (S2), where S1 – algorithm name, S2 – identifier (OID string). + [DataMember(Name = "SubjectPKAlgorithm", IsRequired = true, EmitDefaultValue = true)] + public string SubjectPKAlgorithm { get; set; } + + /// + /// List of the certificate extensions + /// + /// List of the certificate extensions + [DataMember(Name = "Extensions", IsRequired = true, EmitDefaultValue = true)] + public List Extensions { get; set; } + + /// + /// List of remarks arisen during the analysis of the certificate data structure and its validity verification. + /// + /// List of remarks arisen during the analysis of the certificate data structure and its validity verification. + [DataMember(Name = "Notifications", IsRequired = true, EmitDefaultValue = true)] + public List Notifications { get; set; } + + /// + /// Gets or Sets FileName + /// + [DataMember(Name = "FileName", IsRequired = true, EmitDefaultValue = true)] + public TrfFtString FileName { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidCertificateEx {\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" SerialNumber: ").Append(SerialNumber).Append("\n"); + sb.Append(" SignatureAlgorithm: ").Append(SignatureAlgorithm).Append("\n"); + sb.Append(" Issuer: ").Append(Issuer).Append("\n"); + sb.Append(" Validity: ").Append(Validity).Append("\n"); + sb.Append(" Subject: ").Append(Subject).Append("\n"); + sb.Append(" SubjectPKAlgorithm: ").Append(SubjectPKAlgorithm).Append("\n"); + sb.Append(" Extensions: ").Append(Extensions).Append("\n"); + sb.Append(" Notifications: ").Append(Notifications).Append("\n"); + sb.Append(" Origin: ").Append(Origin).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" FileName: ").Append(FileName).Append("\n"); + sb.Append(" PAStatus: ").Append(PAStatus).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidCertificateOrigin.cs b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateOrigin.cs new file mode 100644 index 0000000..40ac563 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateOrigin.cs @@ -0,0 +1,81 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the source of certificate used in the procedure of document security object digital signature verification + /// + /// Enumeration contains a set of constants that define the source of certificate used in the procedure of document security object digital signature verification + public enum RfidCertificateOrigin + { + /// + /// Enum UNDEFINED for value: 0 + /// + UNDEFINED = 0, + + /// + /// Enum PKD for value: 1 + /// + PKD = 1, + + /// + /// Enum SECURITY_OBJECT for value: 2 + /// + SECURITY_OBJECT = 2, + + /// + /// Enum USER_DEFINED for value: 3 + /// + USER_DEFINED = 3, + + /// + /// Enum MASTER_LIST_PKD for value: 4 + /// + MASTER_LIST_PKD = 4, + + /// + /// Enum MASTER_LIST_SO for value: 5 + /// + MASTER_LIST_SO = 5, + + /// + /// Enum DEFECT_LIST_SO for value: 6 + /// + DEFECT_LIST_SO = 6, + + /// + /// Enum DEVIATION_LIST_SO for value: 7 + /// + DEVIATION_LIST_SO = 7, + + /// + /// Enum BLACK_LIST_SO for value: 8 + /// + BLACK_LIST_SO = 8 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidCertificateType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateType.cs new file mode 100644 index 0000000..80dd1d9 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidCertificateType.cs @@ -0,0 +1,76 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of certificate used in the procedure of document security object digital signature verification + /// + /// Enumeration contains a set of constants that define the type of certificate used in the procedure of document security object digital signature verification + public enum RfidCertificateType + { + /// + /// Enum UNDEFINED for value: 0 + /// + UNDEFINED = 0, + + /// + /// Enum CSCA for value: 1 + /// + CSCA = 1, + + /// + /// Enum CSCA_LINK for value: 2 + /// + CSCA_LINK = 2, + + /// + /// Enum DS for value: 3 + /// + DS = 3, + + /// + /// Enum MLS for value: 4 + /// + MLS = 4, + + /// + /// Enum DEV_LS for value: 5 + /// + DEV_LS = 5, + + /// + /// Enum DEF_LS for value: 6 + /// + DEF_LS = 6, + + /// + /// Enum BLS for value: 7 + /// + BLS = 7 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidDG1.cs b/src/Regula.DocumentReader.WebClient/Model/RfidDG1.cs new file mode 100644 index 0000000..f0981b0 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidDG1.cs @@ -0,0 +1,282 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure used to store the contents of EF.DG1 informational data group of ePassport application – document MRZ data + /// + [DataContract(Name = "RfidDG1")] + public partial class RfidDG1 : IValidatableObject + { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public RfidDataGroupTypeTag Type { get; set; } + + /// + /// Gets or Sets DocumentID + /// + [DataMember(Name = "DocumentID", IsRequired = true, EmitDefaultValue = true)] + public DocumentFormat DocumentID { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidDG1() { } + /// + /// Initializes a new instance of the class. + /// + /// type (required). + /// documentID (required). + /// Symbolic code of document type (required). + /// Symbolic code of document issuing state (required). + /// DO’s name and surname (required). + /// Document number (required). + /// Check digit of document number (required). + /// Symbolic code of DO’s nationality (required). + /// DO’s date of birth (required). + /// Check digit of DO’s date of birth (required). + /// DO’s sex (required). + /// Term of validity of the document (required). + /// Check digit of term of validity of the document (required). + /// DO’s personal number or other additional data (required). + /// Check digit of additional data (required). + /// General check digit (required). + public RfidDG1(RfidDataGroupTypeTag type = default(RfidDataGroupTypeTag), DocumentFormat documentID = default(DocumentFormat), string documentType = default(string), string state = default(string), string holder = default(string), string documentNumber = default(string), decimal checkDigitDocumentNumber = default(decimal), string nationality = default(string), string birthday = default(string), decimal checkDigitBirthday = default(decimal), string sex = default(string), string expiryDate = default(string), decimal checkDigitExpiryDate = default(decimal), string optionalData = default(string), decimal checkDigitOptionalData = default(decimal), decimal checkDigitComposite = default(decimal)) + { + this.Type = type; + this.DocumentID = documentID; + // to ensure "documentType" is required (not null) + if (documentType == null) + { + throw new ArgumentNullException("documentType is a required property for RfidDG1 and cannot be null"); + } + this.DocumentType = documentType; + // to ensure "state" is required (not null) + if (state == null) + { + throw new ArgumentNullException("state is a required property for RfidDG1 and cannot be null"); + } + this.State = state; + // to ensure "holder" is required (not null) + if (holder == null) + { + throw new ArgumentNullException("holder is a required property for RfidDG1 and cannot be null"); + } + this.Holder = holder; + // to ensure "documentNumber" is required (not null) + if (documentNumber == null) + { + throw new ArgumentNullException("documentNumber is a required property for RfidDG1 and cannot be null"); + } + this.DocumentNumber = documentNumber; + this.CheckDigitDocumentNumber = checkDigitDocumentNumber; + // to ensure "nationality" is required (not null) + if (nationality == null) + { + throw new ArgumentNullException("nationality is a required property for RfidDG1 and cannot be null"); + } + this.Nationality = nationality; + // to ensure "birthday" is required (not null) + if (birthday == null) + { + throw new ArgumentNullException("birthday is a required property for RfidDG1 and cannot be null"); + } + this.Birthday = birthday; + this.CheckDigitBirthday = checkDigitBirthday; + // to ensure "sex" is required (not null) + if (sex == null) + { + throw new ArgumentNullException("sex is a required property for RfidDG1 and cannot be null"); + } + this.Sex = sex; + // to ensure "expiryDate" is required (not null) + if (expiryDate == null) + { + throw new ArgumentNullException("expiryDate is a required property for RfidDG1 and cannot be null"); + } + this.ExpiryDate = expiryDate; + this.CheckDigitExpiryDate = checkDigitExpiryDate; + // to ensure "optionalData" is required (not null) + if (optionalData == null) + { + throw new ArgumentNullException("optionalData is a required property for RfidDG1 and cannot be null"); + } + this.OptionalData = optionalData; + this.CheckDigitOptionalData = checkDigitOptionalData; + this.CheckDigitComposite = checkDigitComposite; + } + + /// + /// Symbolic code of document type + /// + /// Symbolic code of document type + [DataMember(Name = "DocumentType", IsRequired = true, EmitDefaultValue = true)] + public string DocumentType { get; set; } + + /// + /// Symbolic code of document issuing state + /// + /// Symbolic code of document issuing state + [DataMember(Name = "State", IsRequired = true, EmitDefaultValue = true)] + public string State { get; set; } + + /// + /// DO’s name and surname + /// + /// DO’s name and surname + [DataMember(Name = "Holder", IsRequired = true, EmitDefaultValue = true)] + public string Holder { get; set; } + + /// + /// Document number + /// + /// Document number + [DataMember(Name = "DocumentNumber", IsRequired = true, EmitDefaultValue = true)] + public string DocumentNumber { get; set; } + + /// + /// Check digit of document number + /// + /// Check digit of document number + [DataMember(Name = "CheckDigitDocumentNumber", IsRequired = true, EmitDefaultValue = true)] + public decimal CheckDigitDocumentNumber { get; set; } + + /// + /// Symbolic code of DO’s nationality + /// + /// Symbolic code of DO’s nationality + [DataMember(Name = "Nationality", IsRequired = true, EmitDefaultValue = true)] + public string Nationality { get; set; } + + /// + /// DO’s date of birth + /// + /// DO’s date of birth + [DataMember(Name = "Birthday", IsRequired = true, EmitDefaultValue = true)] + public string Birthday { get; set; } + + /// + /// Check digit of DO’s date of birth + /// + /// Check digit of DO’s date of birth + [DataMember(Name = "CheckDigitBirthday", IsRequired = true, EmitDefaultValue = true)] + public decimal CheckDigitBirthday { get; set; } + + /// + /// DO’s sex + /// + /// DO’s sex + [DataMember(Name = "Sex", IsRequired = true, EmitDefaultValue = true)] + public string Sex { get; set; } + + /// + /// Term of validity of the document + /// + /// Term of validity of the document + [DataMember(Name = "ExpiryDate", IsRequired = true, EmitDefaultValue = true)] + public string ExpiryDate { get; set; } + + /// + /// Check digit of term of validity of the document + /// + /// Check digit of term of validity of the document + [DataMember(Name = "CheckDigitExpiryDate", IsRequired = true, EmitDefaultValue = true)] + public decimal CheckDigitExpiryDate { get; set; } + + /// + /// DO’s personal number or other additional data + /// + /// DO’s personal number or other additional data + [DataMember(Name = "OptionalData", IsRequired = true, EmitDefaultValue = true)] + public string OptionalData { get; set; } + + /// + /// Check digit of additional data + /// + /// Check digit of additional data + [DataMember(Name = "CheckDigitOptionalData", IsRequired = true, EmitDefaultValue = true)] + public decimal CheckDigitOptionalData { get; set; } + + /// + /// General check digit + /// + /// General check digit + [DataMember(Name = "CheckDigitComposite", IsRequired = true, EmitDefaultValue = true)] + public decimal CheckDigitComposite { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidDG1 {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" DocumentID: ").Append(DocumentID).Append("\n"); + sb.Append(" DocumentType: ").Append(DocumentType).Append("\n"); + sb.Append(" State: ").Append(State).Append("\n"); + sb.Append(" Holder: ").Append(Holder).Append("\n"); + sb.Append(" DocumentNumber: ").Append(DocumentNumber).Append("\n"); + sb.Append(" CheckDigitDocumentNumber: ").Append(CheckDigitDocumentNumber).Append("\n"); + sb.Append(" Nationality: ").Append(Nationality).Append("\n"); + sb.Append(" Birthday: ").Append(Birthday).Append("\n"); + sb.Append(" CheckDigitBirthday: ").Append(CheckDigitBirthday).Append("\n"); + sb.Append(" Sex: ").Append(Sex).Append("\n"); + sb.Append(" ExpiryDate: ").Append(ExpiryDate).Append("\n"); + sb.Append(" CheckDigitExpiryDate: ").Append(CheckDigitExpiryDate).Append("\n"); + sb.Append(" OptionalData: ").Append(OptionalData).Append("\n"); + sb.Append(" CheckDigitOptionalData: ").Append(CheckDigitOptionalData).Append("\n"); + sb.Append(" CheckDigitComposite: ").Append(CheckDigitComposite).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidDataFile.cs b/src/Regula.DocumentReader.WebClient/Model/RfidDataFile.cs new file mode 100644 index 0000000..9418f78 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidDataFile.cs @@ -0,0 +1,193 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the contents of a single file of the LDS of electronic document and the analysis of its contents within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidDataFile")] + public partial class RfidDataFile : IValidatableObject + { + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public RfidDataFileType Type { get; set; } + + /// + /// Gets or Sets ReadingStatus + /// + [DataMember(Name = "ReadingStatus", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes ReadingStatus { get; set; } + + /// + /// Gets or Sets PAStatus + /// + [DataMember(Name = "PA_Status", EmitDefaultValue = false)] + public RFIDErrorCodes? PAStatus { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidDataFile() { } + /// + /// Initializes a new instance of the class. + /// + /// File identifier. Each byte of FileID represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 01 1E). + /// type (required). + /// fileData. + /// readingStatus (required). + /// Time of reading, milliseconds. + /// pAStatus. + /// List of remarks arisen when reading data from the memory of the chip and analysing their ASN.1-structure.. + /// List of document text fields formed on the basis of the file contents. + /// List of document graphic fields formed on the basis of the file contents. + /// List of the original binary representation of graphic document fields formed on the basis of the file contents. + /// parsedData. + /// securityObjectCertificates. + public RfidDataFile(string fileID = default(string), RfidDataFileType type = default(RfidDataFileType), TrfFtBytes fileData = default(TrfFtBytes), RFIDErrorCodes readingStatus = default(RFIDErrorCodes), decimal readingTime = default(decimal), RFIDErrorCodes? pAStatus = default(RFIDErrorCodes?), List notifications = default(List), List docFieldsText = default(List), List docFieldsGraphics = default(List), List docFieldsOriginals = default(List), ParsedData parsedData = default(ParsedData), SecurityObjectCertificates securityObjectCertificates = default(SecurityObjectCertificates)) + { + this.Type = type; + this.ReadingStatus = readingStatus; + this.FileID = fileID; + this.FileData = fileData; + this.ReadingTime = readingTime; + this.PAStatus = pAStatus; + this.Notifications = notifications; + this.DocFieldsText = docFieldsText; + this.DocFieldsGraphics = docFieldsGraphics; + this.DocFieldsOriginals = docFieldsOriginals; + this.ParsedData = parsedData; + this.SecurityObjectCertificates = securityObjectCertificates; + } + + /// + /// File identifier. Each byte of FileID represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 01 1E) + /// + /// File identifier. Each byte of FileID represented by its hexadecimal value. The individual bytes are separated by spaces (e.g. 01 1E) + [DataMember(Name = "FileID", EmitDefaultValue = false)] + public string? FileID { get; set; } + + /// + /// Gets or Sets FileData + /// + [DataMember(Name = "FileData", EmitDefaultValue = false)] + public TrfFtBytes? FileData { get; set; } + + /// + /// Time of reading, milliseconds + /// + /// Time of reading, milliseconds + [DataMember(Name = "ReadingTime", EmitDefaultValue = false)] + public decimal? ReadingTime { get; set; } + + /// + /// List of remarks arisen when reading data from the memory of the chip and analysing their ASN.1-structure. + /// + /// List of remarks arisen when reading data from the memory of the chip and analysing their ASN.1-structure. + [DataMember(Name = "Notifications", EmitDefaultValue = false)] + public List? Notifications { get; set; } + + /// + /// List of document text fields formed on the basis of the file contents + /// + /// List of document text fields formed on the basis of the file contents + [DataMember(Name = "DocFields_Text", EmitDefaultValue = false)] + public List? DocFieldsText { get; set; } + + /// + /// List of document graphic fields formed on the basis of the file contents + /// + /// List of document graphic fields formed on the basis of the file contents + [DataMember(Name = "DocFields_Graphics", EmitDefaultValue = false)] + public List? DocFieldsGraphics { get; set; } + + /// + /// List of the original binary representation of graphic document fields formed on the basis of the file contents + /// + /// List of the original binary representation of graphic document fields formed on the basis of the file contents + [DataMember(Name = "DocFields_Originals", EmitDefaultValue = false)] + public List? DocFieldsOriginals { get; set; } + + /// + /// Gets or Sets ParsedData + /// + [DataMember(Name = "ParsedData", EmitDefaultValue = false)] + public ParsedData? ParsedData { get; set; } + + /// + /// Gets or Sets SecurityObjectCertificates + /// + [DataMember(Name = "SecurityObject_Certificates", EmitDefaultValue = false)] + public SecurityObjectCertificates? SecurityObjectCertificates { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidDataFile {\n"); + sb.Append(" FileID: ").Append(FileID).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" FileData: ").Append(FileData).Append("\n"); + sb.Append(" ReadingStatus: ").Append(ReadingStatus).Append("\n"); + sb.Append(" ReadingTime: ").Append(ReadingTime).Append("\n"); + sb.Append(" PAStatus: ").Append(PAStatus).Append("\n"); + sb.Append(" Notifications: ").Append(Notifications).Append("\n"); + sb.Append(" DocFieldsText: ").Append(DocFieldsText).Append("\n"); + sb.Append(" DocFieldsGraphics: ").Append(DocFieldsGraphics).Append("\n"); + sb.Append(" DocFieldsOriginals: ").Append(DocFieldsOriginals).Append("\n"); + sb.Append(" ParsedData: ").Append(ParsedData).Append("\n"); + sb.Append(" SecurityObjectCertificates: ").Append(SecurityObjectCertificates).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidDataFileType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidDataFileType.cs new file mode 100644 index 0000000..1df4e91 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidDataFileType.cs @@ -0,0 +1,496 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the file type (or logical belonging of the data object) within the context of the communication session with electronic document + /// + /// Enumeration contains a set of constants that define the file type (or logical belonging of the data object) within the context of the communication session with electronic document + public enum RfidDataFileType + { + /// + /// Enum UNSPECIFIED for value: 0 + /// + UNSPECIFIED = 0, + + /// + /// Enum PASSPORT_DG1 for value: 1 + /// + PASSPORT_DG1 = 1, + + /// + /// Enum PASSPORT_DG2 for value: 2 + /// + PASSPORT_DG2 = 2, + + /// + /// Enum PASSPORT_DG3 for value: 3 + /// + PASSPORT_DG3 = 3, + + /// + /// Enum PASSPORT_DG4 for value: 4 + /// + PASSPORT_DG4 = 4, + + /// + /// Enum PASSPORT_DG5 for value: 5 + /// + PASSPORT_DG5 = 5, + + /// + /// Enum PASSPORT_DG6 for value: 6 + /// + PASSPORT_DG6 = 6, + + /// + /// Enum PASSPORT_DG7 for value: 7 + /// + PASSPORT_DG7 = 7, + + /// + /// Enum PASSPORT_DG8 for value: 8 + /// + PASSPORT_DG8 = 8, + + /// + /// Enum PASSPORT_DG9 for value: 9 + /// + PASSPORT_DG9 = 9, + + /// + /// Enum PASSPORT_DG10 for value: 10 + /// + PASSPORT_DG10 = 10, + + /// + /// Enum PASSPORT_DG11 for value: 11 + /// + PASSPORT_DG11 = 11, + + /// + /// Enum PASSPORT_DG12 for value: 12 + /// + PASSPORT_DG12 = 12, + + /// + /// Enum PASSPORT_DG13 for value: 13 + /// + PASSPORT_DG13 = 13, + + /// + /// Enum PASSPORT_DG14 for value: 14 + /// + PASSPORT_DG14 = 14, + + /// + /// Enum PASSPORT_DG15 for value: 15 + /// + PASSPORT_DG15 = 15, + + /// + /// Enum PASSPORT_DG16 for value: 16 + /// + PASSPORT_DG16 = 16, + + /// + /// Enum PASSPORT_DG17 for value: 17 + /// + PASSPORT_DG17 = 17, + + /// + /// Enum PASSPORT_DG18 for value: 18 + /// + PASSPORT_DG18 = 18, + + /// + /// Enum PASSPORT_DG19 for value: 19 + /// + PASSPORT_DG19 = 19, + + /// + /// Enum PASSPORT_DG20 for value: 20 + /// + PASSPORT_DG20 = 20, + + /// + /// Enum PASSPORT_SOD for value: 21 + /// + PASSPORT_SOD = 21, + + /// + /// Enum PASSPORT_CVCA for value: 22 + /// + PASSPORT_CVCA = 22, + + /// + /// Enum PASSPORT_COM for value: 23 + /// + PASSPORT_COM = 23, + + /// + /// Enum DTC_DG17 for value: 57 + /// + DTC_DG17 = 57, + + /// + /// Enum DTC_DG18 for value: 58 + /// + DTC_DG18 = 58, + + /// + /// Enum DTC_DG22 for value: 62 + /// + DTC_DG22 = 62, + + /// + /// Enum DTC_DG23 for value: 63 + /// + DTC_DG23 = 63, + + /// + /// Enum DTC_DG24 for value: 64 + /// + DTC_DG24 = 64, + + /// + /// Enum ID_DG1 for value: 101 + /// + ID_DG1 = 101, + + /// + /// Enum ID_DG2 for value: 102 + /// + ID_DG2 = 102, + + /// + /// Enum ID_DG3 for value: 103 + /// + ID_DG3 = 103, + + /// + /// Enum ID_DG4 for value: 104 + /// + ID_DG4 = 104, + + /// + /// Enum ID_DG5 for value: 105 + /// + ID_DG5 = 105, + + /// + /// Enum ID_DG6 for value: 106 + /// + ID_DG6 = 106, + + /// + /// Enum ID_DG7 for value: 107 + /// + ID_DG7 = 107, + + /// + /// Enum ID_DG8 for value: 108 + /// + ID_DG8 = 108, + + /// + /// Enum ID_DG9 for value: 109 + /// + ID_DG9 = 109, + + /// + /// Enum ID_DG10 for value: 110 + /// + ID_DG10 = 110, + + /// + /// Enum ID_DG11 for value: 111 + /// + ID_DG11 = 111, + + /// + /// Enum ID_DG12 for value: 112 + /// + ID_DG12 = 112, + + /// + /// Enum ID_DG13 for value: 113 + /// + ID_DG13 = 113, + + /// + /// Enum ID_DG14 for value: 114 + /// + ID_DG14 = 114, + + /// + /// Enum ID_DG15 for value: 115 + /// + ID_DG15 = 115, + + /// + /// Enum ID_DG16 for value: 116 + /// + ID_DG16 = 116, + + /// + /// Enum ID_DG17 for value: 117 + /// + ID_DG17 = 117, + + /// + /// Enum ID_DG18 for value: 118 + /// + ID_DG18 = 118, + + /// + /// Enum ID_DG19 for value: 119 + /// + ID_DG19 = 119, + + /// + /// Enum ID_DG20 for value: 120 + /// + ID_DG20 = 120, + + /// + /// Enum ID_DG21 for value: 121 + /// + ID_DG21 = 121, + + /// + /// Enum DL_COM for value: 150 + /// + DL_COM = 150, + + /// + /// Enum DL_DG1 for value: 151 + /// + DL_DG1 = 151, + + /// + /// Enum DL_DG2 for value: 152 + /// + DL_DG2 = 152, + + /// + /// Enum DL_DG3 for value: 153 + /// + DL_DG3 = 153, + + /// + /// Enum DL_DG4 for value: 154 + /// + DL_DG4 = 154, + + /// + /// Enum DL_DG5 for value: 155 + /// + DL_DG5 = 155, + + /// + /// Enum DL_DG6 for value: 156 + /// + DL_DG6 = 156, + + /// + /// Enum DL_DG7 for value: 157 + /// + DL_DG7 = 157, + + /// + /// Enum DL_DG8 for value: 158 + /// + DL_DG8 = 158, + + /// + /// Enum DL_DG9 for value: 159 + /// + DL_DG9 = 159, + + /// + /// Enum DL_DG10 for value: 160 + /// + DL_DG10 = 160, + + /// + /// Enum DL_DG11 for value: 161 + /// + DL_DG11 = 161, + + /// + /// Enum DL_DG12 for value: 162 + /// + DL_DG12 = 162, + + /// + /// Enum DL_DG13 for value: 163 + /// + DL_DG13 = 163, + + /// + /// Enum DL_DG14 for value: 164 + /// + DL_DG14 = 164, + + /// + /// Enum DL_SOD for value: 165 + /// + DL_SOD = 165, + + /// + /// Enum DL_CE for value: 166 + /// + DL_CE = 166, + + /// + /// Enum DL_CVCA for value: 167 + /// + DL_CVCA = 167, + + /// + /// Enum PACE_CARD_ACCESS for value: 200 + /// + PACE_CARD_ACCESS = 200, + + /// + /// Enum PACE_CARD_SECURITY for value: 201 + /// + PACE_CARD_SECURITY = 201, + + /// + /// Enum PACE_CHIP_SECURITY for value: 202 + /// + PACE_CHIP_SECURITY = 202, + + /// + /// Enum MIFARE_DATA for value: 300 + /// + MIFARE_DATA = 300, + + /// + /// Enum MIFARE_VALIDITY for value: 301 + /// + MIFARE_VALIDITY = 301, + + /// + /// Enum AUTHENTICITY_V2 for value: 302 + /// + AUTHENTICITY_V2 = 302, + + /// + /// Enum ATR for value: 400 + /// + ATR = 400, + + /// + /// Enum _E_SIGN_PK for value: 500 + /// + _E_SIGN_PK = 500, + + /// + /// Enum _E_SIGN_SIGNED_DATA for value: 501 + /// + _E_SIGN_SIGNED_DATA = 501, + + /// + /// Enum CERTIFICATE for value: 600 + /// + CERTIFICATE = 600, + + /// + /// Enum MASTER_LIST for value: 601 + /// + MASTER_LIST = 601, + + /// + /// Enum DEFECT_LIST for value: 602 + /// + DEFECT_LIST = 602, + + /// + /// Enum BLACK_LIST for value: 603 + /// + BLACK_LIST = 603, + + /// + /// Enum APP_DIRECTORY for value: 700 + /// + APP_DIRECTORY = 700, + + /// + /// Enum SESSION for value: 701 + /// + SESSION = 701, + + /// + /// Enum LOG_DATA for value: 702 + /// + LOG_DATA = 702, + + /// + /// Enum CHIP_PROPERTIES for value: 703 + /// + CHIP_PROPERTIES = 703, + + /// + /// Enum POST_CA_RESPONSE for value: 710 + /// + POST_CA_RESPONSE = 710, + + /// + /// Enum POST_CA_PUBLIC_KEY for value: 711 + /// + POST_CA_PUBLIC_KEY = 711, + + /// + /// Enum POST_CA_INFO for value: 712 + /// + POST_CA_INFO = 712, + + /// + /// Enum POST_CA_D_PARAMS for value: 713 + /// + POST_CA_D_PARAMS = 713, + + /// + /// Enum POST_CA_CHECK_PK for value: 714 + /// + POST_CA_CHECK_PK = 714, + + /// + /// Enum POST_CA_CHECK_SK for value: 715 + /// + POST_CA_CHECK_SK = 715, + + /// + /// Enum USER_DEFINED for value: 1000 + /// + USER_DEFINED = 1000 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidDataGroupTypeTag.cs b/src/Regula.DocumentReader.WebClient/Model/RfidDataGroupTypeTag.cs new file mode 100644 index 0000000..c43fa0f --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidDataGroupTypeTag.cs @@ -0,0 +1,311 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration representing RFID Data Group Types. Constants with prefix correspond to the informational data groups of ePassport application, with prefix EID_ – those of eID application, with prefix EDL_ – eDL application + /// + /// Enumeration representing RFID Data Group Types. Constants with prefix correspond to the informational data groups of ePassport application, with prefix EID_ – those of eID application, with prefix EDL_ – eDL application + public enum RfidDataGroupTypeTag + { + /// + /// Enum COM for value: 96 + /// + COM = 96, + + /// + /// Enum DG1 for value: 97 + /// + DG1 = 97, + + /// + /// Enum DG2 for value: 117 + /// + DG2 = 117, + + /// + /// Enum DG3 for value: 99 + /// + DG3 = 99, + + /// + /// Enum DG4 for value: 118 + /// + DG4 = 118, + + /// + /// Enum DG5 for value: 101 + /// + DG5 = 101, + + /// + /// Enum DG6 for value: 102 + /// + DG6 = 102, + + /// + /// Enum DG7 for value: 103 + /// + DG7 = 103, + + /// + /// Enum DG8 for value: 104 + /// + DG8 = 104, + + /// + /// Enum DG9 for value: 105 + /// + DG9 = 105, + + /// + /// Enum DG10 for value: 106 + /// + DG10 = 106, + + /// + /// Enum DG11 for value: 107 + /// + DG11 = 107, + + /// + /// Enum DG12 for value: 108 + /// + DG12 = 108, + + /// + /// Enum DG13 for value: 109 + /// + DG13 = 109, + + /// + /// Enum DG14 for value: 110 + /// + DG14 = 110, + + /// + /// Enum DG15 for value: 111 + /// + DG15 = 111, + + /// + /// Enum DG16 for value: 112 + /// + DG16 = 112, + + /// + /// Enum SOD for value: 119 + /// + SOD = 119, + + /// + /// Enum EID_DG1 for value: 97 + /// + EID_DG1 = 97, + + /// + /// Enum EID_DG2 for value: 98 + /// + EID_DG2 = 98, + + /// + /// Enum EID_DG3 for value: 99 + /// + EID_DG3 = 99, + + /// + /// Enum EID_DG4 for value: 100 + /// + EID_DG4 = 100, + + /// + /// Enum EID_DG5 for value: 101 + /// + EID_DG5 = 101, + + /// + /// Enum EID_DG6 for value: 102 + /// + EID_DG6 = 102, + + /// + /// Enum EID_DG7 for value: 103 + /// + EID_DG7 = 103, + + /// + /// Enum EID_DG8 for value: 104 + /// + EID_DG8 = 104, + + /// + /// Enum EID_DG9 for value: 105 + /// + EID_DG9 = 105, + + /// + /// Enum EID_DG10 for value: 106 + /// + EID_DG10 = 106, + + /// + /// Enum EID_DG11 for value: 107 + /// + EID_DG11 = 107, + + /// + /// Enum EID_DG12 for value: 108 + /// + EID_DG12 = 108, + + /// + /// Enum EID_DG13 for value: 109 + /// + EID_DG13 = 109, + + /// + /// Enum EID_DG14 for value: 110 + /// + EID_DG14 = 110, + + /// + /// Enum EID_DG15 for value: 111 + /// + EID_DG15 = 111, + + /// + /// Enum EID_DG16 for value: 112 + /// + EID_DG16 = 112, + + /// + /// Enum EID_DG17 for value: 113 + /// + EID_DG17 = 113, + + /// + /// Enum EID_DG18 for value: 114 + /// + EID_DG18 = 114, + + /// + /// Enum EID_DG19 for value: 115 + /// + EID_DG19 = 115, + + /// + /// Enum EID_DG20 for value: 116 + /// + EID_DG20 = 116, + + /// + /// Enum EID_DG21 for value: 117 + /// + EID_DG21 = 117, + + /// + /// Enum EDL_COM for value: 96 + /// + EDL_COM = 96, + + /// + /// Enum EDL_SOD for value: 119 + /// + EDL_SOD = 119, + + /// + /// Enum EDL_CE for value: 119 + /// + EDL_CE = 119, + + /// + /// Enum EDL_DG1 for value: 97 + /// + EDL_DG1 = 97, + + /// + /// Enum EDL_DG2 for value: 107 + /// + EDL_DG2 = 107, + + /// + /// Enum EDL_DG3 for value: 108 + /// + EDL_DG3 = 108, + + /// + /// Enum EDL_DG4 for value: 101 + /// + EDL_DG4 = 101, + + /// + /// Enum EDL_DG5 for value: 103 + /// + EDL_DG5 = 103, + + /// + /// Enum EDL_DG6 for value: 117 + /// + EDL_DG6 = 117, + + /// + /// Enum EDL_DG7 for value: 99 + /// + EDL_DG7 = 99, + + /// + /// Enum EDL_DG8 for value: 118 + /// + EDL_DG8 = 118, + + /// + /// Enum EDL_DG9 for value: 112 + /// + EDL_DG9 = 112, + + /// + /// Enum EDL_DG11 for value: 109 + /// + EDL_DG11 = 109, + + /// + /// Enum EDL_DG12 for value: 113 + /// + EDL_DG12 = 113, + + /// + /// Enum EDL_DG13 for value: 111 + /// + EDL_DG13 = 111, + + /// + /// Enum EDL_DG14 for value: 110 + /// + EDL_DG14 = 110 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidDistinguishedName.cs b/src/Regula.DocumentReader.WebClient/Model/RfidDistinguishedName.cs new file mode 100644 index 0000000..6435f1c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidDistinguishedName.cs @@ -0,0 +1,123 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Contents of the identifier in binary form. Base64 encoded. + /// + [DataContract(Name = "RfidDistinguishedName")] + public partial class RfidDistinguishedName : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidDistinguishedName() { } + /// + /// Initializes a new instance of the class. + /// + /// Contents of the identifier in binary form. Base64 encoded. (required). + /// friendlyName (required). + /// List of individual attributes contained in the identifier (required). + public RfidDistinguishedName(string data = default(string), TrfFtString friendlyName = default(TrfFtString), List attributes = default(List)) + { + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for RfidDistinguishedName and cannot be null"); + } + this.Data = data; + // to ensure "friendlyName" is required (not null) + if (friendlyName == null) + { + throw new ArgumentNullException("friendlyName is a required property for RfidDistinguishedName and cannot be null"); + } + this.FriendlyName = friendlyName; + // to ensure "attributes" is required (not null) + if (attributes == null) + { + throw new ArgumentNullException("attributes is a required property for RfidDistinguishedName and cannot be null"); + } + this.Attributes = attributes; + } + + /// + /// Contents of the identifier in binary form. Base64 encoded. + /// + /// Contents of the identifier in binary form. Base64 encoded. + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Gets or Sets FriendlyName + /// + [DataMember(Name = "FriendlyName", IsRequired = true, EmitDefaultValue = true)] + public TrfFtString FriendlyName { get; set; } + + /// + /// List of individual attributes contained in the identifier + /// + /// List of individual attributes contained in the identifier + [DataMember(Name = "Attributes", IsRequired = true, EmitDefaultValue = true)] + public List Attributes { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidDistinguishedName {\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" FriendlyName: ").Append(FriendlyName).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidLocation.cs b/src/Regula.DocumentReader.WebClient/Model/RfidLocation.cs index 5f38729..460fe87 100644 --- a/src/Regula.DocumentReader.WebClient/Model/RfidLocation.cs +++ b/src/Regula.DocumentReader.WebClient/Model/RfidLocation.cs @@ -1,41 +1,51 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Determines the presence and location of an RFID chip in a document. 0 - no rfid chip; 1 - chip is located in the document data page; 2 - chip is located in the back page or inlay of the document - public class RfidLocation + /// + /// Determines the presence and location of an RFID chip in a document. 0 - no rfid chip; 1 - chip is located in the document data page; 2 - chip is located in the back page or inlay of the document + public enum RfidLocation { + /// + /// Enum NONE for value: 0 + /// + NONE = 0, - /** There is no RFID chip in the document */ - public const int NONE = 0; - - /** The RFID chip is located in the document data page */ - public const int MAIN_PAGE = 1; - - /** The RFID chip is located in the back page or inlay of the document */ - public const int BACK_PAGE = 2; + /// + /// Enum MAIN_PAGE for value: 1 + /// + MAIN_PAGE = 1, + /// + /// Enum BACK_PAGE for value: 2 + /// + BACK_PAGE = 2 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidOrigin.cs b/src/Regula.DocumentReader.WebClient/Model/RfidOrigin.cs index 638235b..c337145 100644 --- a/src/Regula.DocumentReader.WebClient/Model/RfidOrigin.cs +++ b/src/Regula.DocumentReader.WebClient/Model/RfidOrigin.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Location of data in RFID chip /// - [DataContract] - public partial class RfidOrigin : IEquatable, IValidatableObject + [DataContract(Name = "RfidOrigin")] + public partial class RfidOrigin : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,52 +41,43 @@ protected RfidOrigin() { } /// Initializes a new instance of the class. /// /// Source data group file (required). - /// Index of the source record of the image with biometric information in the information data group. - /// Index of the template in the record with biometric data. - /// Index of the variant of the biometric data template. + /// Index of the source record of the image with biometric information in the information data group (required). + /// Index of the template in the record with biometric data (required). + /// Index of the variant of the biometric data template (required). public RfidOrigin(int dg = default(int), int dgTag = default(int), int tagEntry = default(int), int entryView = default(int)) { - // to ensure "dg" is required (not null) - if (dg == null) - { - throw new InvalidDataException("dg is a required property for RfidOrigin and cannot be null"); - } - else - { - this.Dg = dg; - } - + this.Dg = dg; this.DgTag = dgTag; this.TagEntry = tagEntry; this.EntryView = entryView; } - + /// /// Source data group file /// /// Source data group file - [DataMember(Name="dg", EmitDefaultValue=true)] + [DataMember(Name = "dg", IsRequired = true, EmitDefaultValue = true)] public int Dg { get; set; } /// /// Index of the source record of the image with biometric information in the information data group /// /// Index of the source record of the image with biometric information in the information data group - [DataMember(Name="dgTag", EmitDefaultValue=false)] + [DataMember(Name = "dgTag", IsRequired = true, EmitDefaultValue = true)] public int DgTag { get; set; } /// /// Index of the template in the record with biometric data /// /// Index of the template in the record with biometric data - [DataMember(Name="tagEntry", EmitDefaultValue=false)] + [DataMember(Name = "tagEntry", IsRequired = true, EmitDefaultValue = true)] public int TagEntry { get; set; } /// /// Index of the variant of the biometric data template /// /// Index of the variant of the biometric data template - [DataMember(Name="entryView", EmitDefaultValue=false)] + [DataMember(Name = "entryView", IsRequired = true, EmitDefaultValue = true)] public int EntryView { get; set; } /// @@ -93,7 +86,7 @@ protected RfidOrigin() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class RfidOrigin {\n"); sb.Append(" Dg: ").Append(Dg).Append("\n"); sb.Append(" DgTag: ").Append(DgTag).Append("\n"); @@ -102,7 +95,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -112,76 +105,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as RfidOrigin); - } - - /// - /// Returns true if RfidOrigin instances are equal - /// - /// Instance of RfidOrigin to be compared - /// Boolean - public bool Equals(RfidOrigin input) - { - if (input == null) - return false; - - return - ( - this.Dg == input.Dg || - (this.Dg != null && - this.Dg.Equals(input.Dg)) - ) && - ( - this.DgTag == input.DgTag || - (this.DgTag != null && - this.DgTag.Equals(input.DgTag)) - ) && - ( - this.TagEntry == input.TagEntry || - (this.TagEntry != null && - this.TagEntry.Equals(input.TagEntry)) - ) && - ( - this.EntryView == input.EntryView || - (this.EntryView != null && - this.EntryView.Equals(input.EntryView)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Dg != null) - hashCode = hashCode * 59 + this.Dg.GetHashCode(); - if (this.DgTag != null) - hashCode = hashCode * 59 + this.DgTag.GetHashCode(); - if (this.TagEntry != null) - hashCode = hashCode * 59 + this.TagEntry.GetHashCode(); - if (this.EntryView != null) - hashCode = hashCode * 59 + this.EntryView.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidPasswordType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidPasswordType.cs new file mode 100644 index 0000000..5dcf8e6 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidPasswordType.cs @@ -0,0 +1,71 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants specifying the rate of data exchange between the reader and the RFID-chip + /// + /// Enumeration contains a set of constants specifying the rate of data exchange between the reader and the RFID-chip + public enum RfidPasswordType + { + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum MRZ for value: 1 + /// + MRZ = 1, + + /// + /// Enum CAN for value: 2 + /// + CAN = 2, + + /// + /// Enum PIN for value: 3 + /// + PIN = 3, + + /// + /// Enum PUK for value: 4 + /// + PUK = 4, + + /// + /// Enum PIN_E_SIGN for value: 5 + /// + PIN_E_SIGN = 5, + + /// + /// Enum SAI for value: 6 + /// + SAI = 6 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidPkiExtension.cs b/src/Regula.DocumentReader.WebClient/Model/RfidPkiExtension.cs new file mode 100644 index 0000000..3c4a9bd --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidPkiExtension.cs @@ -0,0 +1,109 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Extension identifier (OID, ASCII string); Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + /// + [DataContract(Name = "RfidPkiExtension")] + public partial class RfidPkiExtension : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidPkiExtension() { } + /// + /// Initializes a new instance of the class. + /// + /// Extension identifier (OID, ASCII string); Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) (required). + /// Extension binary data. Base64 encoded. (required). + public RfidPkiExtension(string type = default(string), string data = default(string)) + { + // to ensure "type" is required (not null) + if (type == null) + { + throw new ArgumentNullException("type is a required property for RfidPkiExtension and cannot be null"); + } + this.Type = type; + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for RfidPkiExtension and cannot be null"); + } + this.Data = data; + } + + /// + /// Extension identifier (OID, ASCII string); Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + /// + /// Extension identifier (OID, ASCII string); Contents of the identifier in the format S1 (S2), where S1 – attribute name, S2 – identifier (OID string) + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public string Type { get; set; } + + /// + /// Extension binary data. Base64 encoded. + /// + /// Extension binary data. Base64 encoded. + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidPkiExtension {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidRawData.cs b/src/Regula.DocumentReader.WebClient/Model/RfidRawData.cs new file mode 100644 index 0000000..17e0b0b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidRawData.cs @@ -0,0 +1,102 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// RfidRawData + /// + [DataContract(Name = "RfidRawData")] + public partial class RfidRawData : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidRawData() { } + /// + /// Initializes a new instance of the class. + /// + /// data (required). + /// fieldType (required). + public RfidRawData(string data = default(string), int fieldType = default(int)) + { + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for RfidRawData and cannot be null"); + } + this.Data = data; + this.FieldType = fieldType; + } + + /// + /// Gets or Sets Data + /// + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", IsRequired = true, EmitDefaultValue = true)] + public int FieldType { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidRawData {\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" FieldType: ").Append(FieldType).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidSecurityObject.cs b/src/Regula.DocumentReader.WebClient/Model/RfidSecurityObject.cs new file mode 100644 index 0000000..ad172ed --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidSecurityObject.cs @@ -0,0 +1,144 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the contents of a single document security object (SO) and the results of its check within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidSecurityObject")] + public partial class RfidSecurityObject : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidSecurityObject() { } + /// + /// Initializes a new instance of the class. + /// + /// Security object version (required). + /// Identifier of the security object (required). + /// Reference to the source file of the security object data (required). + /// List of remarks arisen during the analysis of SO data structure. (required). + /// List of containers to store information about digital signature objects contained in the SO (required). + public RfidSecurityObject(decimal varVersion = default(decimal), string objectType = default(string), decimal fileReference = default(decimal), List notifications = default(List), List signerInfos = default(List)) + { + this.VarVersion = varVersion; + // to ensure "objectType" is required (not null) + if (objectType == null) + { + throw new ArgumentNullException("objectType is a required property for RfidSecurityObject and cannot be null"); + } + this.ObjectType = objectType; + this.FileReference = fileReference; + // to ensure "notifications" is required (not null) + if (notifications == null) + { + throw new ArgumentNullException("notifications is a required property for RfidSecurityObject and cannot be null"); + } + this.Notifications = notifications; + // to ensure "signerInfos" is required (not null) + if (signerInfos == null) + { + throw new ArgumentNullException("signerInfos is a required property for RfidSecurityObject and cannot be null"); + } + this.SignerInfos = signerInfos; + } + + /// + /// Security object version + /// + /// Security object version + [DataMember(Name = "Version", IsRequired = true, EmitDefaultValue = true)] + public decimal VarVersion { get; set; } + + /// + /// Identifier of the security object + /// + /// Identifier of the security object + [DataMember(Name = "ObjectType", IsRequired = true, EmitDefaultValue = true)] + public string ObjectType { get; set; } + + /// + /// Reference to the source file of the security object data + /// + /// Reference to the source file of the security object data + [DataMember(Name = "FileReference", IsRequired = true, EmitDefaultValue = true)] + public decimal FileReference { get; set; } + + /// + /// List of remarks arisen during the analysis of SO data structure. + /// + /// List of remarks arisen during the analysis of SO data structure. + [DataMember(Name = "Notifications", IsRequired = true, EmitDefaultValue = true)] + public List Notifications { get; set; } + + /// + /// List of containers to store information about digital signature objects contained in the SO + /// + /// List of containers to store information about digital signature objects contained in the SO + [DataMember(Name = "SignerInfos", IsRequired = true, EmitDefaultValue = true)] + public List SignerInfos { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidSecurityObject {\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" ObjectType: ").Append(ObjectType).Append("\n"); + sb.Append(" FileReference: ").Append(FileReference).Append("\n"); + sb.Append(" Notifications: ").Append(Notifications).Append("\n"); + sb.Append(" SignerInfos: ").Append(SignerInfos).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidSessionData.cs b/src/Regula.DocumentReader.WebClient/Model/RfidSessionData.cs new file mode 100644 index 0000000..d4e11bf --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidSessionData.cs @@ -0,0 +1,278 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the results of work with the SDK within the context of the current communication session with electronic document + /// + [DataContract(Name = "RfidSessionData")] + public partial class RfidSessionData : IValidatableObject + { + + /// + /// Gets or Sets ExtLeSupport + /// + [DataMember(Name = "ExtLeSupport", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes ExtLeSupport { get; set; } + + /// + /// Gets or Sets SessionProcedure + /// + [DataMember(Name = "Session_procedure", IsRequired = true, EmitDefaultValue = true)] + public RfidAuthenticationProcedureType SessionProcedure { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "Status", EmitDefaultValue = false)] + public CheckResult? Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidSessionData() { } + /// + /// Initializes a new instance of the class. + /// + /// Sign of virtual session when working with loaded data from a previous communication session with the electronic document. + /// Text SDKVersion value in format A.B (e.g. 3.1). + /// Text DriverVersion value in format A.B.C.D (e.g. 6.2.5.4). + /// Text FirmwareVersion value in format A.B (e.g. 5.19). + /// List of containers to store information about the involved applications of electronic document (required). + /// List of containers to store information about the supported procedures of authentication and secure data access within the context of the session (required). + /// cardProperties (required). + /// extLeSupport (required). + /// Time of processing, milliseconds (required). + /// List of containers to store information about the read files of the root Master File (required). + /// Total number of bytes transmitted to the RFID-chip during the whole session (required). + /// Total number of bytes received from the RFID-chip during the whole session (required). + /// sessionKey (required). + /// sessionTerminal (required). + /// sessionProcedure (required). + /// List of containers to store information about the detected document security objects (required). + /// status. + public RfidSessionData(string virtualMode = default(string), string sDKVersion = default(string), string driverVersion = default(string), string firmwareVersion = default(string), List applications = default(List), List accessControls = default(List), RfidCardPropertiesExt cardProperties = default(RfidCardPropertiesExt), RFIDErrorCodes extLeSupport = default(RFIDErrorCodes), decimal processTime = default(decimal), List rootFiles = default(List), decimal totalBytesSent = default(decimal), decimal totalBytesReceived = default(decimal), RfidAccessKey sessionKey = default(RfidAccessKey), RfidTerminal sessionTerminal = default(RfidTerminal), RfidAuthenticationProcedureType sessionProcedure = default(RfidAuthenticationProcedureType), List securityObjects = default(List), CheckResult? status = default(CheckResult?)) + { + // to ensure "applications" is required (not null) + if (applications == null) + { + throw new ArgumentNullException("applications is a required property for RfidSessionData and cannot be null"); + } + this.Applications = applications; + // to ensure "accessControls" is required (not null) + if (accessControls == null) + { + throw new ArgumentNullException("accessControls is a required property for RfidSessionData and cannot be null"); + } + this.AccessControls = accessControls; + // to ensure "cardProperties" is required (not null) + if (cardProperties == null) + { + throw new ArgumentNullException("cardProperties is a required property for RfidSessionData and cannot be null"); + } + this.CardProperties = cardProperties; + this.ExtLeSupport = extLeSupport; + this.ProcessTime = processTime; + // to ensure "rootFiles" is required (not null) + if (rootFiles == null) + { + throw new ArgumentNullException("rootFiles is a required property for RfidSessionData and cannot be null"); + } + this.RootFiles = rootFiles; + this.TotalBytesSent = totalBytesSent; + this.TotalBytesReceived = totalBytesReceived; + // to ensure "sessionKey" is required (not null) + if (sessionKey == null) + { + throw new ArgumentNullException("sessionKey is a required property for RfidSessionData and cannot be null"); + } + this.SessionKey = sessionKey; + // to ensure "sessionTerminal" is required (not null) + if (sessionTerminal == null) + { + throw new ArgumentNullException("sessionTerminal is a required property for RfidSessionData and cannot be null"); + } + this.SessionTerminal = sessionTerminal; + this.SessionProcedure = sessionProcedure; + // to ensure "securityObjects" is required (not null) + if (securityObjects == null) + { + throw new ArgumentNullException("securityObjects is a required property for RfidSessionData and cannot be null"); + } + this.SecurityObjects = securityObjects; + this.VirtualMode = virtualMode; + this.SDKVersion = sDKVersion; + this.DriverVersion = driverVersion; + this.FirmwareVersion = firmwareVersion; + this.Status = status; + } + + /// + /// Sign of virtual session when working with loaded data from a previous communication session with the electronic document + /// + /// Sign of virtual session when working with loaded data from a previous communication session with the electronic document + [DataMember(Name = "VirtualMode", EmitDefaultValue = false)] + public string? VirtualMode { get; set; } + + /// + /// Text SDKVersion value in format A.B (e.g. 3.1) + /// + /// Text SDKVersion value in format A.B (e.g. 3.1) + [DataMember(Name = "SDKVersion", EmitDefaultValue = false)] + public string? SDKVersion { get; set; } + + /// + /// Text DriverVersion value in format A.B.C.D (e.g. 6.2.5.4) + /// + /// Text DriverVersion value in format A.B.C.D (e.g. 6.2.5.4) + [DataMember(Name = "DriverVersion", EmitDefaultValue = false)] + public string? DriverVersion { get; set; } + + /// + /// Text FirmwareVersion value in format A.B (e.g. 5.19) + /// + /// Text FirmwareVersion value in format A.B (e.g. 5.19) + [DataMember(Name = "FirmwareVersion", EmitDefaultValue = false)] + public string? FirmwareVersion { get; set; } + + /// + /// List of containers to store information about the involved applications of electronic document + /// + /// List of containers to store information about the involved applications of electronic document + [DataMember(Name = "Applications", IsRequired = true, EmitDefaultValue = true)] + public List Applications { get; set; } + + /// + /// List of containers to store information about the supported procedures of authentication and secure data access within the context of the session + /// + /// List of containers to store information about the supported procedures of authentication and secure data access within the context of the session + [DataMember(Name = "AccessControls", IsRequired = true, EmitDefaultValue = true)] + public List AccessControls { get; set; } + + /// + /// Gets or Sets CardProperties + /// + [DataMember(Name = "CardProperties", IsRequired = true, EmitDefaultValue = true)] + public RfidCardPropertiesExt CardProperties { get; set; } + + /// + /// Time of processing, milliseconds + /// + /// Time of processing, milliseconds + [DataMember(Name = "ProcessTime", IsRequired = true, EmitDefaultValue = true)] + public decimal ProcessTime { get; set; } + + /// + /// List of containers to store information about the read files of the root Master File + /// + /// List of containers to store information about the read files of the root Master File + [DataMember(Name = "RootFiles", IsRequired = true, EmitDefaultValue = true)] + public List RootFiles { get; set; } + + /// + /// Total number of bytes transmitted to the RFID-chip during the whole session + /// + /// Total number of bytes transmitted to the RFID-chip during the whole session + [DataMember(Name = "TotalBytesSent", IsRequired = true, EmitDefaultValue = true)] + public decimal TotalBytesSent { get; set; } + + /// + /// Total number of bytes received from the RFID-chip during the whole session + /// + /// Total number of bytes received from the RFID-chip during the whole session + [DataMember(Name = "TotalBytesReceived", IsRequired = true, EmitDefaultValue = true)] + public decimal TotalBytesReceived { get; set; } + + /// + /// Gets or Sets SessionKey + /// + [DataMember(Name = "Session_key", IsRequired = true, EmitDefaultValue = true)] + public RfidAccessKey SessionKey { get; set; } + + /// + /// Gets or Sets SessionTerminal + /// + [DataMember(Name = "Session_terminal", IsRequired = true, EmitDefaultValue = true)] + public RfidTerminal SessionTerminal { get; set; } + + /// + /// List of containers to store information about the detected document security objects + /// + /// List of containers to store information about the detected document security objects + [DataMember(Name = "SecurityObjects", IsRequired = true, EmitDefaultValue = true)] + public List SecurityObjects { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidSessionData {\n"); + sb.Append(" VirtualMode: ").Append(VirtualMode).Append("\n"); + sb.Append(" SDKVersion: ").Append(SDKVersion).Append("\n"); + sb.Append(" DriverVersion: ").Append(DriverVersion).Append("\n"); + sb.Append(" FirmwareVersion: ").Append(FirmwareVersion).Append("\n"); + sb.Append(" Applications: ").Append(Applications).Append("\n"); + sb.Append(" AccessControls: ").Append(AccessControls).Append("\n"); + sb.Append(" CardProperties: ").Append(CardProperties).Append("\n"); + sb.Append(" ExtLeSupport: ").Append(ExtLeSupport).Append("\n"); + sb.Append(" ProcessTime: ").Append(ProcessTime).Append("\n"); + sb.Append(" RootFiles: ").Append(RootFiles).Append("\n"); + sb.Append(" TotalBytesSent: ").Append(TotalBytesSent).Append("\n"); + sb.Append(" TotalBytesReceived: ").Append(TotalBytesReceived).Append("\n"); + sb.Append(" SessionKey: ").Append(SessionKey).Append("\n"); + sb.Append(" SessionTerminal: ").Append(SessionTerminal).Append("\n"); + sb.Append(" SessionProcedure: ").Append(SessionProcedure).Append("\n"); + sb.Append(" SecurityObjects: ").Append(SecurityObjects).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidSignerInfoEx.cs b/src/Regula.DocumentReader.WebClient/Model/RfidSignerInfoEx.cs new file mode 100644 index 0000000..496a64a --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidSignerInfoEx.cs @@ -0,0 +1,243 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the contents of a single copy of digital signature of the document security object and the results of its check within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidSignerInfoEx")] + public partial class RfidSignerInfoEx : IValidatableObject + { + + /// + /// Gets or Sets PAStatus + /// + [DataMember(Name = "PA_Status", IsRequired = true, EmitDefaultValue = true)] + public RFIDErrorCodes PAStatus { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidSignerInfoEx() { } + /// + /// Initializes a new instance of the class. + /// + /// Version of SignerInfo ASN.1 structure (required). + /// issuer (required). + /// serialNumber (required). + /// subjectKeyIdentifier (required). + /// Hash algorithm identifier (OID) for digital signature generation (required). + /// List of the signed attributes (required). + /// Digital signature algorithm identifier (OID) (required). + /// signature (required). + /// pAStatus (required). + /// Certificate chain, used for the digital signature verification. (required). + /// Binary data array used to calculate the hash value for digital signature verification. Base64 encoded. (required). + /// notifications (required). + public RfidSignerInfoEx(decimal varVersion = default(decimal), RfidDistinguishedName issuer = default(RfidDistinguishedName), TrfFtBytes serialNumber = default(TrfFtBytes), TrfFtBytes subjectKeyIdentifier = default(TrfFtBytes), string digestAlgorithm = default(string), List signedAttributes = default(List), string signatureAlgorithm = default(string), TrfFtBytes signature = default(TrfFtBytes), RFIDErrorCodes pAStatus = default(RFIDErrorCodes), List certificateChain = default(List), string dataToHash = default(string), List notifications = default(List)) + { + this.VarVersion = varVersion; + // to ensure "issuer" is required (not null) + if (issuer == null) + { + throw new ArgumentNullException("issuer is a required property for RfidSignerInfoEx and cannot be null"); + } + this.Issuer = issuer; + // to ensure "serialNumber" is required (not null) + if (serialNumber == null) + { + throw new ArgumentNullException("serialNumber is a required property for RfidSignerInfoEx and cannot be null"); + } + this.SerialNumber = serialNumber; + // to ensure "subjectKeyIdentifier" is required (not null) + if (subjectKeyIdentifier == null) + { + throw new ArgumentNullException("subjectKeyIdentifier is a required property for RfidSignerInfoEx and cannot be null"); + } + this.SubjectKeyIdentifier = subjectKeyIdentifier; + // to ensure "digestAlgorithm" is required (not null) + if (digestAlgorithm == null) + { + throw new ArgumentNullException("digestAlgorithm is a required property for RfidSignerInfoEx and cannot be null"); + } + this.DigestAlgorithm = digestAlgorithm; + // to ensure "signedAttributes" is required (not null) + if (signedAttributes == null) + { + throw new ArgumentNullException("signedAttributes is a required property for RfidSignerInfoEx and cannot be null"); + } + this.SignedAttributes = signedAttributes; + // to ensure "signatureAlgorithm" is required (not null) + if (signatureAlgorithm == null) + { + throw new ArgumentNullException("signatureAlgorithm is a required property for RfidSignerInfoEx and cannot be null"); + } + this.SignatureAlgorithm = signatureAlgorithm; + // to ensure "signature" is required (not null) + if (signature == null) + { + throw new ArgumentNullException("signature is a required property for RfidSignerInfoEx and cannot be null"); + } + this.Signature = signature; + this.PAStatus = pAStatus; + // to ensure "certificateChain" is required (not null) + if (certificateChain == null) + { + throw new ArgumentNullException("certificateChain is a required property for RfidSignerInfoEx and cannot be null"); + } + this.CertificateChain = certificateChain; + // to ensure "dataToHash" is required (not null) + if (dataToHash == null) + { + throw new ArgumentNullException("dataToHash is a required property for RfidSignerInfoEx and cannot be null"); + } + this.DataToHash = dataToHash; + // to ensure "notifications" is required (not null) + if (notifications == null) + { + throw new ArgumentNullException("notifications is a required property for RfidSignerInfoEx and cannot be null"); + } + this.Notifications = notifications; + } + + /// + /// Version of SignerInfo ASN.1 structure + /// + /// Version of SignerInfo ASN.1 structure + [DataMember(Name = "Version", IsRequired = true, EmitDefaultValue = true)] + public decimal VarVersion { get; set; } + + /// + /// Gets or Sets Issuer + /// + [DataMember(Name = "Issuer", IsRequired = true, EmitDefaultValue = true)] + public RfidDistinguishedName Issuer { get; set; } + + /// + /// Gets or Sets SerialNumber + /// + [DataMember(Name = "SerialNumber", IsRequired = true, EmitDefaultValue = true)] + public TrfFtBytes SerialNumber { get; set; } + + /// + /// Gets or Sets SubjectKeyIdentifier + /// + [DataMember(Name = "SubjectKeyIdentifier", IsRequired = true, EmitDefaultValue = true)] + public TrfFtBytes SubjectKeyIdentifier { get; set; } + + /// + /// Hash algorithm identifier (OID) for digital signature generation + /// + /// Hash algorithm identifier (OID) for digital signature generation + [DataMember(Name = "DigestAlgorithm", IsRequired = true, EmitDefaultValue = true)] + public string DigestAlgorithm { get; set; } + + /// + /// List of the signed attributes + /// + /// List of the signed attributes + [DataMember(Name = "SignedAttributes", IsRequired = true, EmitDefaultValue = true)] + public List SignedAttributes { get; set; } + + /// + /// Digital signature algorithm identifier (OID) + /// + /// Digital signature algorithm identifier (OID) + [DataMember(Name = "SignatureAlgorithm", IsRequired = true, EmitDefaultValue = true)] + public string SignatureAlgorithm { get; set; } + + /// + /// Gets or Sets Signature + /// + [DataMember(Name = "Signature", IsRequired = true, EmitDefaultValue = true)] + public TrfFtBytes Signature { get; set; } + + /// + /// Certificate chain, used for the digital signature verification. + /// + /// Certificate chain, used for the digital signature verification. + [DataMember(Name = "CertificateChain", IsRequired = true, EmitDefaultValue = true)] + public List CertificateChain { get; set; } + + /// + /// Binary data array used to calculate the hash value for digital signature verification. Base64 encoded. + /// + /// Binary data array used to calculate the hash value for digital signature verification. Base64 encoded. + [DataMember(Name = "DataToHash", IsRequired = true, EmitDefaultValue = true)] + public string DataToHash { get; set; } + + /// + /// Gets or Sets Notifications + /// + [DataMember(Name = "Notifications", IsRequired = true, EmitDefaultValue = true)] + public List Notifications { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidSignerInfoEx {\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" Issuer: ").Append(Issuer).Append("\n"); + sb.Append(" SerialNumber: ").Append(SerialNumber).Append("\n"); + sb.Append(" SubjectKeyIdentifier: ").Append(SubjectKeyIdentifier).Append("\n"); + sb.Append(" DigestAlgorithm: ").Append(DigestAlgorithm).Append("\n"); + sb.Append(" SignedAttributes: ").Append(SignedAttributes).Append("\n"); + sb.Append(" SignatureAlgorithm: ").Append(SignatureAlgorithm).Append("\n"); + sb.Append(" Signature: ").Append(Signature).Append("\n"); + sb.Append(" PAStatus: ").Append(PAStatus).Append("\n"); + sb.Append(" CertificateChain: ").Append(CertificateChain).Append("\n"); + sb.Append(" DataToHash: ").Append(DataToHash).Append("\n"); + sb.Append(" Notifications: ").Append(Notifications).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidTerminal.cs b/src/Regula.DocumentReader.WebClient/Model/RfidTerminal.cs new file mode 100644 index 0000000..937535e --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidTerminal.cs @@ -0,0 +1,108 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to describe the terminal type within the context of the communication session with electronic document + /// + [DataContract(Name = "RfidTerminal")] + public partial class RfidTerminal : IValidatableObject + { + + /// + /// Gets or Sets TermType + /// + [DataMember(Name = "TermType", IsRequired = true, EmitDefaultValue = true)] + public RfidTerminalType TermType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidTerminal() { } + /// + /// Initializes a new instance of the class. + /// + /// termType (required). + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of eRfidTerminalAuthorizationRequirement values) (required). + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of RfidTerminalAuthorizationRequirement values) (required). + public RfidTerminal(RfidTerminalType termType = default(RfidTerminalType), decimal authReq = default(decimal), decimal authReq2 = default(decimal)) + { + this.TermType = termType; + this.AuthReq = authReq; + this.AuthReq2 = authReq2; + } + + /// + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of eRfidTerminalAuthorizationRequirement values) + /// + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of eRfidTerminalAuthorizationRequirement values) + [DataMember(Name = "AuthReq", IsRequired = true, EmitDefaultValue = true)] + public decimal AuthReq { get; set; } + + /// + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of RfidTerminalAuthorizationRequirement values) + /// + /// Declared (set) combination of flags of access rights to the functionality of the document (combination of RfidTerminalAuthorizationRequirement values) + [DataMember(Name = "AuthReq2", IsRequired = true, EmitDefaultValue = true)] + public decimal AuthReq2 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidTerminal {\n"); + sb.Append(" TermType: ").Append(TermType).Append("\n"); + sb.Append(" AuthReq: ").Append(AuthReq).Append("\n"); + sb.Append(" AuthReq2: ").Append(AuthReq2).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidTerminalType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidTerminalType.cs new file mode 100644 index 0000000..d870678 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidTerminalType.cs @@ -0,0 +1,61 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants that define the type of terminal within the context of the communication session with electronic document + /// + /// Enumeration contains a set of constants that define the type of terminal within the context of the communication session with electronic document + public enum RfidTerminalType + { + /// + /// Enum UNDEFINED for value: 0 + /// + UNDEFINED = 0, + + /// + /// Enum INSPECTION_SYSTEM for value: 1 + /// + INSPECTION_SYSTEM = 1, + + /// + /// Enum AUTHENTICATION_TERMINAL for value: 2 + /// + AUTHENTICATION_TERMINAL = 2, + + /// + /// Enum SIGNATURE_TERMINAL for value: 3 + /// + SIGNATURE_TERMINAL = 3, + + /// + /// Enum UNAUTHENTICATED_TERMINAL for value: 4 + /// + UNAUTHENTICATED_TERMINAL = 4 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidType.cs b/src/Regula.DocumentReader.WebClient/Model/RfidType.cs new file mode 100644 index 0000000..576bc74 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidType.cs @@ -0,0 +1,51 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Enumeration contains a set of constants specifying the type of the RFID-chip by the physical parameters of connection between antennas of the chip and the reader + /// + /// Enumeration contains a set of constants specifying the type of the RFID-chip by the physical parameters of connection between antennas of the chip and the reader + public enum RfidType + { + /// + /// Enum UNKNOWN for value: 0 + /// + UNKNOWN = 0, + + /// + /// Enum A for value: 1 + /// + A = 1, + + /// + /// Enum B for value: 2 + /// + B = 2 + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/RfidValidity.cs b/src/Regula.DocumentReader.WebClient/Model/RfidValidity.cs new file mode 100644 index 0000000..be9162d --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/RfidValidity.cs @@ -0,0 +1,107 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure contains information on a certificate validity. + /// + [DataContract(Name = "RfidValidity")] + public partial class RfidValidity : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected RfidValidity() { } + /// + /// Initializes a new instance of the class. + /// + /// notBefore (required). + /// notAfter (required). + public RfidValidity(TrfFtString notBefore = default(TrfFtString), TrfFtString notAfter = default(TrfFtString)) + { + // to ensure "notBefore" is required (not null) + if (notBefore == null) + { + throw new ArgumentNullException("notBefore is a required property for RfidValidity and cannot be null"); + } + this.NotBefore = notBefore; + // to ensure "notAfter" is required (not null) + if (notAfter == null) + { + throw new ArgumentNullException("notAfter is a required property for RfidValidity and cannot be null"); + } + this.NotAfter = notAfter; + } + + /// + /// Gets or Sets NotBefore + /// + [DataMember(Name = "NotBefore", IsRequired = true, EmitDefaultValue = true)] + public TrfFtString NotBefore { get; set; } + + /// + /// Gets or Sets NotAfter + /// + [DataMember(Name = "NotAfter", IsRequired = true, EmitDefaultValue = true)] + public TrfFtString NotAfter { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class RfidValidity {\n"); + sb.Append(" NotBefore: ").Append(NotBefore).Append("\n"); + sb.Append(" NotAfter: ").Append(NotAfter).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/Scenario.cs b/src/Regula.DocumentReader.WebClient/Model/Scenario.cs index d49d721..9f7b2c5 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Scenario.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Scenario.cs @@ -1,86 +1,151 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Document processing scenario - public class Scenario + /// + /// Document processing scenario + [JsonConverter(typeof(StringEnumConverter))] + public enum Scenario { - - - public const string MRZ = "Mrz"; - - - public const string BARCODE = "Barcode"; - - - public const string LOCATE = "Locate"; - - - public const string OCR = "Ocr"; - - - public const string DOCTYPE = "DocType"; - - - public const string MRZ_OR_BARCODE = "MrzOrBarcode"; - - - public const string MRZ_OR_LOCATE = "MrzOrLocate"; - - - public const string MRZ_AND_LOCATE = "MrzAndLocate"; - - - public const string MRZ_OR_OCR = "MrzOrOcr"; - - - public const string MRZ_OR_BARCODE_OR_OCR = "MrzOrBarcodeOrOcr"; - - - public const string LOCATE_VISUAL_AND_MRZ_OR_OCR = "LocateVisual_And_MrzOrOcr"; - - - public const string FULL_PROCESS = "FullProcess"; - - - public const string FULL_AUTH = "FullAuth"; - - - public const string ID3RUS = "Id3Rus"; - - - public const string RUS_STAMP = "RusStamp"; - - - public const string OCR_FREE = "OcrFree"; - - - public const string CREDIT_CARD = "CreditCard"; - - - public const string CAPTURE = "Capture"; - + /// + /// Enum MRZ for value: Mrz + /// + [EnumMember(Value = "Mrz")] + MRZ = 1, + + /// + /// Enum BARCODE for value: Barcode + /// + [EnumMember(Value = "Barcode")] + BARCODE = 2, + + /// + /// Enum LOCATE for value: Locate + /// + [EnumMember(Value = "Locate")] + LOCATE = 3, + + /// + /// Enum OCR for value: Ocr + /// + [EnumMember(Value = "Ocr")] + OCR = 4, + + /// + /// Enum DOCTYPE for value: DocType + /// + [EnumMember(Value = "DocType")] + DOCTYPE = 5, + + /// + /// Enum MRZ_OR_BARCODE for value: MrzOrBarcode + /// + [EnumMember(Value = "MrzOrBarcode")] + MRZ_OR_BARCODE = 6, + + /// + /// Enum MRZ_OR_LOCATE for value: MrzOrLocate + /// + [EnumMember(Value = "MrzOrLocate")] + MRZ_OR_LOCATE = 7, + + /// + /// Enum MRZ_AND_LOCATE for value: MrzAndLocate + /// + [EnumMember(Value = "MrzAndLocate")] + MRZ_AND_LOCATE = 8, + + /// + /// Enum BARCODE_AND_LOCATE for value: BarcodeAndLocate + /// + [EnumMember(Value = "BarcodeAndLocate")] + BARCODE_AND_LOCATE = 9, + + /// + /// Enum MRZ_OR_OCR for value: MrzOrOcr + /// + [EnumMember(Value = "MrzOrOcr")] + MRZ_OR_OCR = 10, + + /// + /// Enum MRZ_OR_BARCODE_OR_OCR for value: MrzOrBarcodeOrOcr + /// + [EnumMember(Value = "MrzOrBarcodeOrOcr")] + MRZ_OR_BARCODE_OR_OCR = 11, + + /// + /// Enum LOCATE_VISUAL_AND_MRZ_OR_OCR for value: LocateVisual_And_MrzOrOcr + /// + [EnumMember(Value = "LocateVisual_And_MrzOrOcr")] + LOCATE_VISUAL_AND_MRZ_OR_OCR = 12, + + /// + /// Enum FULL_PROCESS for value: FullProcess + /// + [EnumMember(Value = "FullProcess")] + FULL_PROCESS = 13, + + /// + /// Enum FULL_AUTH for value: FullAuth + /// + [EnumMember(Value = "FullAuth")] + FULL_AUTH = 14, + + /// + /// Enum RUS_STAMP for value: RusStamp + /// + [EnumMember(Value = "RusStamp")] + RUS_STAMP = 15, + + /// + /// Enum OCR_FREE for value: OcrFree + /// + [EnumMember(Value = "OcrFree")] + OCR_FREE = 16, + + /// + /// Enum CREDIT_CARD for value: CreditCard + /// + [EnumMember(Value = "CreditCard")] + CREDIT_CARD = 17, + + /// + /// Enum CAPTURE for value: Capture + /// + [EnumMember(Value = "Capture")] + CAPTURE = 18, + + /// + /// Enum DTC for value: DTC + /// + [EnumMember(Value = "DTC")] + DTC = 19 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureItem.cs b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureItem.cs new file mode 100644 index 0000000..8d51880 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureItem.cs @@ -0,0 +1,138 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// SecurityFeatureItem + /// + [DataContract(Name = "SecurityFeatureItem")] + public partial class SecurityFeatureItem : IValidatableObject + { + + /// + /// Gets or Sets ElementType + /// + [DataMember(Name = "ElementType", IsRequired = true, EmitDefaultValue = true)] + public SecurityFeatureType ElementType { get; set; } + + /// + /// Gets or Sets Visibility + /// + [DataMember(Name = "Visibility", IsRequired = true, EmitDefaultValue = true)] + public Visibility Visibility { get; set; } + + /// + /// Gets or Sets CriticalFlag + /// + [DataMember(Name = "CriticalFlag", IsRequired = true, EmitDefaultValue = true)] + public Critical CriticalFlag { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected SecurityFeatureItem() { } + /// + /// Initializes a new instance of the class. + /// + /// elementType (required). + /// elementRect (required). + /// visibility (required). + /// criticalFlag (required). + /// areaList. + /// reserved2. + public SecurityFeatureItem(SecurityFeatureType elementType = default(SecurityFeatureType), RectangleCoordinates elementRect = default(RectangleCoordinates), Visibility visibility = default(Visibility), Critical criticalFlag = default(Critical), AreaContainer areaList = default(AreaContainer), int reserved2 = default(int)) + { + this.ElementType = elementType; + // to ensure "elementRect" is required (not null) + if (elementRect == null) + { + throw new ArgumentNullException("elementRect is a required property for SecurityFeatureItem and cannot be null"); + } + this.ElementRect = elementRect; + this.Visibility = visibility; + this.CriticalFlag = criticalFlag; + this.AreaList = areaList; + this.Reserved2 = reserved2; + } + + /// + /// Gets or Sets ElementRect + /// + [DataMember(Name = "ElementRect", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates ElementRect { get; set; } + + /// + /// Gets or Sets AreaList + /// + [DataMember(Name = "AreaList", EmitDefaultValue = false)] + public AreaContainer? AreaList { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class SecurityFeatureItem {\n"); + sb.Append(" ElementType: ").Append(ElementType).Append("\n"); + sb.Append(" ElementRect: ").Append(ElementRect).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); + sb.Append(" CriticalFlag: ").Append(CriticalFlag).Append("\n"); + sb.Append(" AreaList: ").Append(AreaList).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureResult.cs b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureResult.cs index ffbc6f3..de74740 100644 --- a/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +30,27 @@ namespace Regula.DocumentReader.WebClient.Model /// /// SecurityFeatureResult /// - [DataContract] - public partial class SecurityFeatureResult : AuthenticityCheckResultItem, IEquatable, IValidatableObject + [DataContract(Name = "SecurityFeatureResult")] + public partial class SecurityFeatureResult : AuthenticityCheckResultItem, IValidatableObject { + + /// + /// Gets or Sets ElementType + /// + [DataMember(Name = "ElementType", IsRequired = true, EmitDefaultValue = true)] + public SecurityFeatureType ElementType { get; set; } + + /// + /// Gets or Sets Visibility + /// + [DataMember(Name = "Visibility", IsRequired = true, EmitDefaultValue = true)] + public Visibility Visibility { get; set; } + + /// + /// Gets or Sets CriticalFlag + /// + [DataMember(Name = "CriticalFlag", IsRequired = true, EmitDefaultValue = true)] + public Critical CriticalFlag { get; set; } /// /// Initializes a new instance of the class. /// @@ -38,57 +59,48 @@ protected SecurityFeatureResult() { } /// /// Initializes a new instance of the class. /// - /// elementType. - /// elementRect. - /// visibility. - /// criticalFlag. + /// elementType (required). + /// elementRect (required). + /// visibility (required). + /// criticalFlag (required). /// areaList. /// reserved2. - public SecurityFeatureResult(int elementType = default(int), RectangleCoordinates elementRect = default(RectangleCoordinates), int visibility = default(int), int criticalFlag = default(int), AreaContainer areaList = default(AreaContainer), int reserved2 = default(int), int type = 0, int elementResult = default(int), int elementDiagnose = default(int), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) + /// type (required) (default to AuthenticityResultType.UV_LUMINESCENCE). + /// elementResult. + /// elementDiagnose. + /// percentValue. + public SecurityFeatureResult(SecurityFeatureType elementType = default(SecurityFeatureType), RectangleCoordinates elementRect = default(RectangleCoordinates), Visibility visibility = default(Visibility), Critical criticalFlag = default(Critical), AreaContainer areaList = default(AreaContainer), int reserved2 = default(int), AuthenticityResultType type = AuthenticityResultType.UV_LUMINESCENCE, CheckResult? elementResult = default(CheckResult?), CheckDiagnose? elementDiagnose = default(CheckDiagnose?), int percentValue = default(int)) : base(type, elementResult, elementDiagnose, percentValue) { this.ElementType = elementType; + // to ensure "elementRect" is required (not null) + if (elementRect == null) + { + throw new ArgumentNullException("elementRect is a required property for SecurityFeatureResult and cannot be null"); + } this.ElementRect = elementRect; this.Visibility = visibility; this.CriticalFlag = criticalFlag; this.AreaList = areaList; this.Reserved2 = reserved2; } - - /// - /// Gets or Sets ElementType - /// - [DataMember(Name="ElementType", EmitDefaultValue=false)] - public int ElementType { get; set; } /// /// Gets or Sets ElementRect /// - [DataMember(Name="ElementRect", EmitDefaultValue=false)] + [DataMember(Name = "ElementRect", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates ElementRect { get; set; } - /// - /// Gets or Sets Visibility - /// - [DataMember(Name="Visibility", EmitDefaultValue=false)] - public int Visibility { get; set; } - - /// - /// Gets or Sets CriticalFlag - /// - [DataMember(Name="CriticalFlag", EmitDefaultValue=false)] - public int CriticalFlag { get; set; } - /// /// Gets or Sets AreaList /// - [DataMember(Name="AreaList", EmitDefaultValue=false)] - public AreaContainer AreaList { get; set; } + [DataMember(Name = "AreaList", EmitDefaultValue = false)] + public AreaContainer? AreaList { get; set; } /// /// Gets or Sets Reserved2 /// - [DataMember(Name="Reserved2", EmitDefaultValue=false)] - public int Reserved2 { get; set; } + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } /// /// Returns the string presentation of the object @@ -96,7 +108,7 @@ protected SecurityFeatureResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class SecurityFeatureResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" ElementType: ").Append(ElementType).Append("\n"); @@ -108,7 +120,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -119,81 +131,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as SecurityFeatureResult); - } - - /// - /// Returns true if SecurityFeatureResult instances are equal - /// - /// Instance of SecurityFeatureResult to be compared - /// Boolean - public bool Equals(SecurityFeatureResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.ElementType == input.ElementType || - (this.ElementType != null && - this.ElementType.Equals(input.ElementType)) - ) && base.Equals(input) && - ( - this.ElementRect == input.ElementRect || - (this.ElementRect != null && - this.ElementRect.Equals(input.ElementRect)) - ) && base.Equals(input) && - ( - this.Visibility == input.Visibility || - (this.Visibility != null && - this.Visibility.Equals(input.Visibility)) - ) && base.Equals(input) && - ( - this.CriticalFlag == input.CriticalFlag || - (this.CriticalFlag != null && - this.CriticalFlag.Equals(input.CriticalFlag)) - ) && base.Equals(input) && - ( - this.AreaList == input.AreaList || - (this.AreaList != null && - this.AreaList.Equals(input.AreaList)) - ) && base.Equals(input) && - ( - this.Reserved2 == input.Reserved2 || - (this.Reserved2 != null && - this.Reserved2.Equals(input.Reserved2)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.ElementType != null) - hashCode = hashCode * 59 + this.ElementType.GetHashCode(); - if (this.ElementRect != null) - hashCode = hashCode * 59 + this.ElementRect.GetHashCode(); - if (this.Visibility != null) - hashCode = hashCode * 59 + this.Visibility.GetHashCode(); - if (this.CriticalFlag != null) - hashCode = hashCode * 59 + this.CriticalFlag.GetHashCode(); - if (this.AreaList != null) - hashCode = hashCode * 59 + this.AreaList.GetHashCode(); - if (this.Reserved2 != null) - hashCode = hashCode * 59 + this.Reserved2.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -201,9 +145,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureType.cs b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureType.cs index e016f9d..b4e3460 100644 --- a/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/SecurityFeatureType.cs @@ -1,182 +1,301 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - /// Enumeration contains identifiers determining type of features for a document authenticity checks - public class SecurityFeatureType + /// + /// Enumeration contains identifiers determining type of features for a document authenticity checks: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/security-feature-type/ + /// + /// Enumeration contains identifiers determining type of features for a document authenticity checks: https://docs.regulaforensics.com/develop/doc-reader-sdk/web-service/development/enums/security-feature-type/ + public enum SecurityFeatureType { - - - public const int BLANK = 0; - - - public const int FILL = 1; - - - public const int PHOTO = 2; - - - public const int MRZ = 3; - - - public const int FALSE_LUMINESCENCE = 4; - - - public const int HOLO_SIMPLE = 5; - - - public const int HOLO_VERIFY_STATIC = 6; - - - public const int HOLO_VERIFY_MULTI_STATIC = 7; - - - public const int HOLO_VERIFY_DYNAMIC = 8; - - - public const int PATTERN_NOT_INTERRUPTED = 9; - - - public const int PATTERN_NOT_SHIFTED = 10; - - - public const int PATTERN_SAME_COLORS = 11; - - - public const int PATTERN_IR_INVISIBLE = 12; - - - public const int PHOTO_SIZE_CHECK = 13; - - - public const int PORTRAIT_COMPARISON_VS_GHOST = 14; - - - public const int PORTRAIT_COMPARISON_VS_RFID = 15; - - - public const int PORTRAIT_COMPARISON_VS_VISUAL = 16; - - - public const int BARCODE = 17; - - - public const int PATTERN_DIFFERENT_LINES_THICKNESS = 18; - - - public const int PORTRAIT_COMPARISON_VS_CAMERA = 19; - - - public const int PORTRAIT_COMPARISON_RFID_VS_CAMERA = 20; - - - public const int GHOST_PHOTO = 21; - - - public const int CLEAR_GHOST_PHOTO = 22; - - - public const int INVISIBLE_OBJECT = 23; - - - public const int LOW_CONTRAST_OBJECT = 24; - - - public const int PHOTO_COLOR = 25; - - - public const int PHOTO_SHAPE = 26; - - - public const int PHOTO_CORNERS = 27; - - - public const int PORTRAIT_COMPARISON_EXT_VS_VISUAL = 29; - - - public const int PORTRAIT_COMPARISON_EXT_VS_RFID = 30; - - - public const int PORTRAIT_COMPARISON_EXT_VS_CAMERA = 31; - - - public const int LIVENESS_DEPTH = 32; - - - public const int MICRO_TEXT = 33; - - - public const int FLUORESCENT_OBJECT = 34; - - - public const int LANDMARK_CHECK = 35; - - - public const int FACE_PRESENCE = 36; - - - public const int FACE_ABSENCE = 37; - - - public const int LIVENESS_SCREEN_CAPTURE = 38; - - - public const int LIVENESS_ELECTRONIC_DEVICE = 39; - - - public const int LIVENESS_OVI = 40; - - - public const int BARCODE_SIZE_CHECK = 41; - - - public const int LASINK = 42; - - - public const int LIVENESS_MLI = 43; - - - public const int LIVENESS_BARCODE_BACKGROUND = 44; - - - public const int PORTRAIT_COMPARISON_VS_BARCODE = 45; - - - public const int PORTRAIT_COMPARISON_RFID_VS_BARCODE = 46; - - - public const int PORTRAIT_COMPARISON_EXT_VS_BARCODE = 47; - - - public const int PORTRAIT_COMPARISON_BARCODE_VS_CAMERA = 48; - - - public const int CHECK_DIGITAL_SIGNATURE = 49; - - - public const int CONTACT_CHIP_CLASSIFICATION = 50; - + /// + /// Enum BLANK for value: 0 + /// + BLANK = 0, + + /// + /// Enum FILL for value: 1 + /// + FILL = 1, + + /// + /// Enum PHOTO for value: 2 + /// + PHOTO = 2, + + /// + /// Enum MRZ for value: 3 + /// + MRZ = 3, + + /// + /// Enum FALSE_LUMINESCENCE for value: 4 + /// + FALSE_LUMINESCENCE = 4, + + /// + /// Enum HOLO_SIMPLE for value: 5 + /// + HOLO_SIMPLE = 5, + + /// + /// Enum HOLO_VERIFY_STATIC for value: 6 + /// + HOLO_VERIFY_STATIC = 6, + + /// + /// Enum HOLO_VERIFY_MULTI_STATIC for value: 7 + /// + HOLO_VERIFY_MULTI_STATIC = 7, + + /// + /// Enum HOLO_VERIFY_DYNAMIC for value: 8 + /// + HOLO_VERIFY_DYNAMIC = 8, + + /// + /// Enum PATTERN_NOT_INTERRUPTED for value: 9 + /// + PATTERN_NOT_INTERRUPTED = 9, + + /// + /// Enum PATTERN_NOT_SHIFTED for value: 10 + /// + PATTERN_NOT_SHIFTED = 10, + + /// + /// Enum PATTERN_SAME_COLORS for value: 11 + /// + PATTERN_SAME_COLORS = 11, + + /// + /// Enum PATTERN_IR_INVISIBLE for value: 12 + /// + PATTERN_IR_INVISIBLE = 12, + + /// + /// Enum PHOTO_SIZE_CHECK for value: 13 + /// + PHOTO_SIZE_CHECK = 13, + + /// + /// Enum PORTRAIT_COMPARISON_VS_GHOST for value: 14 + /// + PORTRAIT_COMPARISON_VS_GHOST = 14, + + /// + /// Enum PORTRAIT_COMPARISON_VS_RFID for value: 15 + /// + PORTRAIT_COMPARISON_VS_RFID = 15, + + /// + /// Enum PORTRAIT_COMPARISON_VS_VISUAL for value: 16 + /// + PORTRAIT_COMPARISON_VS_VISUAL = 16, + + /// + /// Enum BARCODE for value: 17 + /// + BARCODE = 17, + + /// + /// Enum PATTERN_DIFFERENT_LINES_THICKNESS for value: 18 + /// + PATTERN_DIFFERENT_LINES_THICKNESS = 18, + + /// + /// Enum PORTRAIT_COMPARISON_VS_CAMERA for value: 19 + /// + PORTRAIT_COMPARISON_VS_CAMERA = 19, + + /// + /// Enum PORTRAIT_COMPARISON_RFID_VS_CAMERA for value: 20 + /// + PORTRAIT_COMPARISON_RFID_VS_CAMERA = 20, + + /// + /// Enum GHOST_PHOTO for value: 21 + /// + GHOST_PHOTO = 21, + + /// + /// Enum CLEAR_GHOST_PHOTO for value: 22 + /// + CLEAR_GHOST_PHOTO = 22, + + /// + /// Enum INVISIBLE_OBJECT for value: 23 + /// + INVISIBLE_OBJECT = 23, + + /// + /// Enum LOW_CONTRAST_OBJECT for value: 24 + /// + LOW_CONTRAST_OBJECT = 24, + + /// + /// Enum PHOTO_COLOR for value: 25 + /// + PHOTO_COLOR = 25, + + /// + /// Enum PHOTO_SHAPE for value: 26 + /// + PHOTO_SHAPE = 26, + + /// + /// Enum PHOTO_CORNERS for value: 27 + /// + PHOTO_CORNERS = 27, + + /// + /// Enum OCR for value: 28 + /// + OCR = 28, + + /// + /// Enum PORTRAIT_COMPARISON_EXT_VS_VISUAL for value: 29 + /// + PORTRAIT_COMPARISON_EXT_VS_VISUAL = 29, + + /// + /// Enum PORTRAIT_COMPARISON_EXT_VS_RFID for value: 30 + /// + PORTRAIT_COMPARISON_EXT_VS_RFID = 30, + + /// + /// Enum PORTRAIT_COMPARISON_EXT_VS_CAMERA for value: 31 + /// + PORTRAIT_COMPARISON_EXT_VS_CAMERA = 31, + + /// + /// Enum LIVENESS_DEPTH for value: 32 + /// + LIVENESS_DEPTH = 32, + + /// + /// Enum MICRO_TEXT for value: 33 + /// + MICRO_TEXT = 33, + + /// + /// Enum FLUORESCENT_OBJECT for value: 34 + /// + FLUORESCENT_OBJECT = 34, + + /// + /// Enum LANDMARK_CHECK for value: 35 + /// + LANDMARK_CHECK = 35, + + /// + /// Enum FACE_PRESENCE for value: 36 + /// + FACE_PRESENCE = 36, + + /// + /// Enum FACE_ABSENCE for value: 38 + /// + FACE_ABSENCE = 38, + + /// + /// Enum LIVENESS_SCREEN_CAPTURE for value: 39 + /// + LIVENESS_SCREEN_CAPTURE = 39, + + /// + /// Enum LIVENESS_ELECTRONIC_DEVICE for value: 40 + /// + LIVENESS_ELECTRONIC_DEVICE = 40, + + /// + /// Enum LIVENESS_OVI for value: 41 + /// + LIVENESS_OVI = 41, + + /// + /// Enum BARCODE_SIZE_CHECK for value: 42 + /// + BARCODE_SIZE_CHECK = 42, + + /// + /// Enum LASINK for value: 43 + /// + LASINK = 43, + + /// + /// Enum LIVENESS_MLI for value: 44 + /// + LIVENESS_MLI = 44, + + /// + /// Enum LIVENESS_BARCODE_BACKGROUND for value: 45 + /// + LIVENESS_BARCODE_BACKGROUND = 45, + + /// + /// Enum PORTRAIT_COMPARISON_VS_BARCODE for value: 46 + /// + PORTRAIT_COMPARISON_VS_BARCODE = 46, + + /// + /// Enum PORTRAIT_COMPARISON_RFID_VS_BARCODE for value: 47 + /// + PORTRAIT_COMPARISON_RFID_VS_BARCODE = 47, + + /// + /// Enum PORTRAIT_COMPARISON_EXT_VS_BARCODE for value: 48 + /// + PORTRAIT_COMPARISON_EXT_VS_BARCODE = 48, + + /// + /// Enum PORTRAIT_COMPARISON_BARCODE_VS_CAMERA for value: 49 + /// + PORTRAIT_COMPARISON_BARCODE_VS_CAMERA = 49, + + /// + /// Enum CHECK_DIGITAL_SIGNATURE for value: 50 + /// + CHECK_DIGITAL_SIGNATURE = 50, + + /// + /// Enum CONTACT_CHIP_CLASSIFICATION for value: 51 + /// + CONTACT_CHIP_CLASSIFICATION = 51, + + /// + /// Enum HEAD_POSITION_CHECK for value: 52 + /// + HEAD_POSITION_CHECK = 52, + + /// + /// Enum LIVENESS_BLACK_AND_WHITE_COPY_CHECK for value: 53 + /// + LIVENESS_BLACK_AND_WHITE_COPY_CHECK = 53 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/SecurityObjectCertificates.cs b/src/Regula.DocumentReader.WebClient/Model/SecurityObjectCertificates.cs new file mode 100644 index 0000000..4bf97fd --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/SecurityObjectCertificates.cs @@ -0,0 +1,83 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// SecurityObjectCertificates + /// + [DataContract(Name = "SecurityObjectCertificates")] + public partial class SecurityObjectCertificates : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// certificateData. + public SecurityObjectCertificates(CertificateData certificateData = default(CertificateData)) + { + this.CertificateData = certificateData; + } + + /// + /// Gets or Sets CertificateData + /// + [DataMember(Name = "Certificate_Data", EmitDefaultValue = false)] + public CertificateData? CertificateData { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class SecurityObjectCertificates {\n"); + sb.Append(" CertificateData: ").Append(CertificateData).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/Source.cs b/src/Regula.DocumentReader.WebClient/Model/Source.cs index 65d88e2..f95343d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Source.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Source.cs @@ -1,47 +1,73 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Document data sources - public class Source + /// + /// Document data sources + [JsonConverter(typeof(StringEnumConverter))] + public enum Source { + /// + /// Enum MRZ for value: MRZ + /// + [EnumMember(Value = "MRZ")] + MRZ = 1, - - public const string MRZ = "MRZ"; + /// + /// Enum VISUAL for value: VISUAL + /// + [EnumMember(Value = "VISUAL")] + VISUAL = 2, - - public const string VISUAL = "VISUAL"; + /// + /// Enum BARCODE for value: BARCODE + /// + [EnumMember(Value = "BARCODE")] + BARCODE = 3, - - public const string BARCODE = "BARCODE"; + /// + /// Enum RFID for value: RFID + /// + [EnumMember(Value = "RFID")] + RFID = 4, - - public const string RFID = "RFID"; - - - public const string MAGNETIC = "MAGNETIC"; + /// + /// Enum MAGNETIC for value: MAGNETIC + /// + [EnumMember(Value = "MAGNETIC")] + MAGNETIC = 5, + /// + /// Enum EXTERNAL for value: EXTERNAL + /// + [EnumMember(Value = "EXTERNAL")] + EXTERNAL = 6 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/SourceValidity.cs b/src/Regula.DocumentReader.WebClient/Model/SourceValidity.cs index a55327e..e3291d9 100644 --- a/src/Regula.DocumentReader.WebClient/Model/SourceValidity.cs +++ b/src/Regula.DocumentReader.WebClient/Model/SourceValidity.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// SourceValidity /// - [DataContract] - public partial class SourceValidity : IEquatable, IValidatableObject + [DataContract(Name = "SourceValidity")] + public partial class SourceValidity : IValidatableObject { + + /// + /// Gets or Sets Source + /// + [DataMember(Name = "source", IsRequired = true, EmitDefaultValue = true)] + public Source Source { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Status { get; set; } /// /// Initializes a new instance of the class. /// @@ -40,41 +54,11 @@ protected SourceValidity() { } /// /// source (required). /// status (required). - public SourceValidity(string source = default(string), int status = default(int)) + public SourceValidity(Source source = default(Source), CheckResult status = default(CheckResult)) { - // to ensure "source" is required (not null) - if (source == null) - { - throw new InvalidDataException("source is a required property for SourceValidity and cannot be null"); - } - else - { - this.Source = source; - } - - // to ensure "status" is required (not null) - if (status == null) - { - throw new InvalidDataException("status is a required property for SourceValidity and cannot be null"); - } - else - { - this.Status = status; - } - + this.Source = source; + this.Status = status; } - - /// - /// Gets or Sets Source - /// - [DataMember(Name="source", EmitDefaultValue=true)] - public string Source { get; set; } - - /// - /// Gets or Sets Status - /// - [DataMember(Name="status", EmitDefaultValue=true)] - public int Status { get; set; } /// /// Returns the string presentation of the object @@ -82,14 +66,14 @@ protected SourceValidity() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class SourceValidity {\n"); sb.Append(" Source: ").Append(Source).Append("\n"); sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -99,62 +83,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as SourceValidity); - } - - /// - /// Returns true if SourceValidity instances are equal - /// - /// Instance of SourceValidity to be compared - /// Boolean - public bool Equals(SourceValidity input) - { - if (input == null) - return false; - - return - ( - this.Source == input.Source || - (this.Source != null && - this.Source.Equals(input.Source)) - ) && - ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Source != null) - hashCode = hashCode * 59 + this.Source.GetHashCode(); - if (this.Status != null) - hashCode = hashCode * 59 + this.Status.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Status.cs b/src/Regula.DocumentReader.WebClient/Model/Status.cs index 3f8c225..5db1bfa 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Status.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Status.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,102 +29,80 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Status /// - [DataContract] - public partial class Status : IEquatable, IValidatableObject + [DataContract(Name = "Status")] + public partial class Status : IValidatableObject { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected Status() { } - /// - /// Initializes a new instance of the class. - /// - /// overallStatus (required). - /// optical (required). - /// portrait. - /// rfid. - /// stopList. - /// detailsRFID. - /// detailsOptical (required). - public Status(int overallStatus = default(int), int optical = default(int), int portrait = default(int), int rfid = default(int), int stopList = default(int), DetailsRFID detailsRFID = default(DetailsRFID), DetailsOptical detailsOptical = default(DetailsOptical)) - { - // to ensure "overallStatus" is required (not null) - if (overallStatus == null) - { - throw new InvalidDataException("overallStatus is a required property for Status and cannot be null"); - } - else - { - this.OverallStatus = overallStatus; - } - - // to ensure "optical" is required (not null) - if (optical == null) - { - throw new InvalidDataException("optical is a required property for Status and cannot be null"); - } - else - { - this.Optical = optical; - } - - // to ensure "detailsOptical" is required (not null) - if (detailsOptical == null) - { - throw new InvalidDataException("detailsOptical is a required property for Status and cannot be null"); - } - else - { - this.DetailsOptical = detailsOptical; - } - - this.Portrait = portrait; - this.Rfid = rfid; - this.StopList = stopList; - this.DetailsRFID = detailsRFID; - } - + /// /// Gets or Sets OverallStatus /// - [DataMember(Name="overallStatus", EmitDefaultValue=true)] - public int OverallStatus { get; set; } + [DataMember(Name = "overallStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult OverallStatus { get; set; } /// /// Gets or Sets Optical /// - [DataMember(Name="optical", EmitDefaultValue=true)] - public int Optical { get; set; } + [DataMember(Name = "optical", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Optical { get; set; } /// /// Gets or Sets Portrait /// - [DataMember(Name="portrait", EmitDefaultValue=false)] - public int Portrait { get; set; } + [DataMember(Name = "portrait", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Portrait { get; set; } /// /// Gets or Sets Rfid /// - [DataMember(Name="rfid", EmitDefaultValue=false)] - public int Rfid { get; set; } + [DataMember(Name = "rfid", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Rfid { get; set; } /// /// Gets or Sets StopList /// - [DataMember(Name="stopList", EmitDefaultValue=false)] - public int StopList { get; set; } + [DataMember(Name = "stopList", IsRequired = true, EmitDefaultValue = true)] + public CheckResult StopList { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Status() { } + /// + /// Initializes a new instance of the class. + /// + /// overallStatus (required). + /// optical (required). + /// portrait (required). + /// rfid (required). + /// stopList (required). + /// detailsRFID. + /// detailsOptical (required). + public Status(CheckResult overallStatus = default(CheckResult), CheckResult optical = default(CheckResult), CheckResult portrait = default(CheckResult), CheckResult rfid = default(CheckResult), CheckResult stopList = default(CheckResult), DetailsRFID detailsRFID = default(DetailsRFID), DetailsOptical detailsOptical = default(DetailsOptical)) + { + this.OverallStatus = overallStatus; + this.Optical = optical; + this.Portrait = portrait; + this.Rfid = rfid; + this.StopList = stopList; + // to ensure "detailsOptical" is required (not null) + if (detailsOptical == null) + { + throw new ArgumentNullException("detailsOptical is a required property for Status and cannot be null"); + } + this.DetailsOptical = detailsOptical; + this.DetailsRFID = detailsRFID; + } /// /// Gets or Sets DetailsRFID /// - [DataMember(Name="detailsRFID", EmitDefaultValue=false)] - public DetailsRFID DetailsRFID { get; set; } + [DataMember(Name = "detailsRFID", EmitDefaultValue = false)] + public DetailsRFID? DetailsRFID { get; set; } /// /// Gets or Sets DetailsOptical /// - [DataMember(Name="detailsOptical", EmitDefaultValue=true)] + [DataMember(Name = "detailsOptical", IsRequired = true, EmitDefaultValue = true)] public DetailsOptical DetailsOptical { get; set; } /// @@ -131,7 +111,7 @@ protected Status() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class Status {\n"); sb.Append(" OverallStatus: ").Append(OverallStatus).Append("\n"); sb.Append(" Optical: ").Append(Optical).Append("\n"); @@ -143,7 +123,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -153,97 +133,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Status); - } - - /// - /// Returns true if Status instances are equal - /// - /// Instance of Status to be compared - /// Boolean - public bool Equals(Status input) - { - if (input == null) - return false; - - return - ( - this.OverallStatus == input.OverallStatus || - (this.OverallStatus != null && - this.OverallStatus.Equals(input.OverallStatus)) - ) && - ( - this.Optical == input.Optical || - (this.Optical != null && - this.Optical.Equals(input.Optical)) - ) && - ( - this.Portrait == input.Portrait || - (this.Portrait != null && - this.Portrait.Equals(input.Portrait)) - ) && - ( - this.Rfid == input.Rfid || - (this.Rfid != null && - this.Rfid.Equals(input.Rfid)) - ) && - ( - this.StopList == input.StopList || - (this.StopList != null && - this.StopList.Equals(input.StopList)) - ) && - ( - this.DetailsRFID == input.DetailsRFID || - (this.DetailsRFID != null && - this.DetailsRFID.Equals(input.DetailsRFID)) - ) && - ( - this.DetailsOptical == input.DetailsOptical || - (this.DetailsOptical != null && - this.DetailsOptical.Equals(input.DetailsOptical)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.OverallStatus != null) - hashCode = hashCode * 59 + this.OverallStatus.GetHashCode(); - if (this.Optical != null) - hashCode = hashCode * 59 + this.Optical.GetHashCode(); - if (this.Portrait != null) - hashCode = hashCode * 59 + this.Portrait.GetHashCode(); - if (this.Rfid != null) - hashCode = hashCode * 59 + this.Rfid.GetHashCode(); - if (this.StopList != null) - hashCode = hashCode * 59 + this.StopList.GetHashCode(); - if (this.DetailsRFID != null) - hashCode = hashCode * 59 + this.DetailsRFID.GetHashCode(); - if (this.DetailsOptical != null) - hashCode = hashCode * 59 + this.DetailsOptical.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/StatusItem.cs b/src/Regula.DocumentReader.WebClient/Model/StatusItem.cs new file mode 100644 index 0000000..bcc7a19 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/StatusItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// StatusItem + /// + [DataContract(Name = "StatusItem")] + public partial class StatusItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected StatusItem() { } + /// + /// Initializes a new instance of the class. + /// + /// status (required). + public StatusItem(Status status = default(Status)) + { + // to ensure "status" is required (not null) + if (status == null) + { + throw new ArgumentNullException("status is a required property for StatusItem and cannot be null"); + } + this.Status = status; + } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "Status", IsRequired = true, EmitDefaultValue = true)] + public Status Status { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class StatusItem {\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/StatusResult.cs b/src/Regula.DocumentReader.WebClient/Model/StatusResult.cs index 1ea40e4..4345356 100644 --- a/src/Regula.DocumentReader.WebClient/Model/StatusResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/StatusResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// StatusResult /// - [DataContract] - public partial class StatusResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "StatusResult")] + public partial class StatusResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected StatusResult() { } /// Initializes a new instance of the class. /// /// status (required). - public StatusResult(Status status = default(Status), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.STATUS). + public StatusResult(Status status = default(Status), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.STATUS) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "status" is required (not null) if (status == null) { - throw new InvalidDataException("status is a required property for StatusResult and cannot be null"); - } - else - { - this.Status = status; + throw new ArgumentNullException("status is a required property for StatusResult and cannot be null"); } - + this.Status = status; } - + /// /// Gets or Sets Status /// - [DataMember(Name="Status", EmitDefaultValue=true)] + [DataMember(Name = "Status", IsRequired = true, EmitDefaultValue = true)] public Status Status { get; set; } /// @@ -65,14 +69,14 @@ protected StatusResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class StatusResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as StatusResult); - } - - /// - /// Returns true if StatusResult instances are equal - /// - /// Instance of StatusResult to be compared - /// Boolean - public bool Equals(StatusResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.Status != null) - hashCode = hashCode * 59 + this.Status.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/StringItem.cs b/src/Regula.DocumentReader.WebClient/Model/StringItem.cs new file mode 100644 index 0000000..a434854 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/StringItem.cs @@ -0,0 +1,252 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// StringItem + /// + [DataContract(Name = "StringItem")] + public partial class StringItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected StringItem() { } + /// + /// Initializes a new instance of the class. + /// + /// aLIGNMENTSYMBOLSINSTRING (required). + /// cHECKSUMS (required). + /// errorPOSITION (required). + /// fieldCount (required). + /// fields (required). + /// sTRINGSDISTANCE (required). + /// sTRINGSINTERVAL (required). + /// sTRINGFILLING (required). + /// sTRINGPOSITION (required). + /// sYMBOLSPARAM (required). + /// sizeErrorALIGNMENT (required). + /// sizeErrorDISTANCE (required). + /// sizeErrorINTERVAL (required). + /// stringAngle (required). + /// stringBorders (required). + /// symbolsCount (required). + /// symbolsEstimations (required). + public StringItem(int aLIGNMENTSYMBOLSINSTRING = default(int), int cHECKSUMS = default(int), ErrorCoordinates errorPOSITION = default(ErrorCoordinates), int fieldCount = default(int), List fields = default(List), int sTRINGSDISTANCE = default(int), int sTRINGSINTERVAL = default(int), int sTRINGFILLING = default(int), int sTRINGPOSITION = default(int), int sYMBOLSPARAM = default(int), decimal sizeErrorALIGNMENT = default(decimal), decimal sizeErrorDISTANCE = default(decimal), decimal sizeErrorINTERVAL = default(decimal), decimal stringAngle = default(decimal), RectangleCoordinates stringBorders = default(RectangleCoordinates), int symbolsCount = default(int), List symbolsEstimations = default(List)) + { + this.ALIGNMENT_SYMBOLS_IN_STRING = aLIGNMENTSYMBOLSINSTRING; + this.CHECK_SUMS = cHECKSUMS; + // to ensure "errorPOSITION" is required (not null) + if (errorPOSITION == null) + { + throw new ArgumentNullException("errorPOSITION is a required property for StringItem and cannot be null"); + } + this.ErrorPOSITION = errorPOSITION; + this.FieldCount = fieldCount; + // to ensure "fields" is required (not null) + if (fields == null) + { + throw new ArgumentNullException("fields is a required property for StringItem and cannot be null"); + } + this.Fields = fields; + this.STRINGS_DISTANCE = sTRINGSDISTANCE; + this.STRINGS_INTERVAL = sTRINGSINTERVAL; + this.STRING_FILLING = sTRINGFILLING; + this.STRING_POSITION = sTRINGPOSITION; + this.SYMBOLS_PARAM = sYMBOLSPARAM; + this.SizeErrorALIGNMENT = sizeErrorALIGNMENT; + this.SizeErrorDISTANCE = sizeErrorDISTANCE; + this.SizeErrorINTERVAL = sizeErrorINTERVAL; + this.StringAngle = stringAngle; + // to ensure "stringBorders" is required (not null) + if (stringBorders == null) + { + throw new ArgumentNullException("stringBorders is a required property for StringItem and cannot be null"); + } + this.StringBorders = stringBorders; + this.SymbolsCount = symbolsCount; + // to ensure "symbolsEstimations" is required (not null) + if (symbolsEstimations == null) + { + throw new ArgumentNullException("symbolsEstimations is a required property for StringItem and cannot be null"); + } + this.SymbolsEstimations = symbolsEstimations; + } + + /// + /// Gets or Sets ALIGNMENT_SYMBOLS_IN_STRING + /// + [DataMember(Name = "ALIGNMENT_SYMBOLS_IN_STRING", IsRequired = true, EmitDefaultValue = true)] + public int ALIGNMENT_SYMBOLS_IN_STRING { get; set; } + + /// + /// Gets or Sets CHECK_SUMS + /// + [DataMember(Name = "CHECK_SUMS", IsRequired = true, EmitDefaultValue = true)] + public int CHECK_SUMS { get; set; } + + /// + /// Gets or Sets ErrorPOSITION + /// + [DataMember(Name = "ErrorPOSITION", IsRequired = true, EmitDefaultValue = true)] + public ErrorCoordinates ErrorPOSITION { get; set; } + + /// + /// Gets or Sets FieldCount + /// + [DataMember(Name = "FieldCount", IsRequired = true, EmitDefaultValue = true)] + public int FieldCount { get; set; } + + /// + /// Gets or Sets Fields + /// + [DataMember(Name = "Fields", IsRequired = true, EmitDefaultValue = true)] + public List Fields { get; set; } + + /// + /// Gets or Sets STRINGS_DISTANCE + /// + [DataMember(Name = "STRINGS_DISTANCE", IsRequired = true, EmitDefaultValue = true)] + public int STRINGS_DISTANCE { get; set; } + + /// + /// Gets or Sets STRINGS_INTERVAL + /// + [DataMember(Name = "STRINGS_INTERVAL", IsRequired = true, EmitDefaultValue = true)] + public int STRINGS_INTERVAL { get; set; } + + /// + /// Gets or Sets STRING_FILLING + /// + [DataMember(Name = "STRING_FILLING", IsRequired = true, EmitDefaultValue = true)] + public int STRING_FILLING { get; set; } + + /// + /// Gets or Sets STRING_POSITION + /// + [DataMember(Name = "STRING_POSITION", IsRequired = true, EmitDefaultValue = true)] + public int STRING_POSITION { get; set; } + + /// + /// Gets or Sets SYMBOLS_PARAM + /// + [DataMember(Name = "SYMBOLS_PARAM", IsRequired = true, EmitDefaultValue = true)] + public int SYMBOLS_PARAM { get; set; } + + /// + /// Gets or Sets SizeErrorALIGNMENT + /// + [DataMember(Name = "SizeError_ALIGNMENT", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorALIGNMENT { get; set; } + + /// + /// Gets or Sets SizeErrorDISTANCE + /// + [DataMember(Name = "SizeError_DISTANCE", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorDISTANCE { get; set; } + + /// + /// Gets or Sets SizeErrorINTERVAL + /// + [DataMember(Name = "SizeError_INTERVAL", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorINTERVAL { get; set; } + + /// + /// Gets or Sets StringAngle + /// + [DataMember(Name = "StringAngle", IsRequired = true, EmitDefaultValue = true)] + public decimal StringAngle { get; set; } + + /// + /// Gets or Sets StringBorders + /// + [DataMember(Name = "StringBorders", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates StringBorders { get; set; } + + /// + /// Gets or Sets SymbolsCount + /// + [DataMember(Name = "SymbolsCount", IsRequired = true, EmitDefaultValue = true)] + public int SymbolsCount { get; set; } + + /// + /// Gets or Sets SymbolsEstimations + /// + [DataMember(Name = "SymbolsEstimations", IsRequired = true, EmitDefaultValue = true)] + public List SymbolsEstimations { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class StringItem {\n"); + sb.Append(" ALIGNMENT_SYMBOLS_IN_STRING: ").Append(ALIGNMENT_SYMBOLS_IN_STRING).Append("\n"); + sb.Append(" CHECK_SUMS: ").Append(CHECK_SUMS).Append("\n"); + sb.Append(" ErrorPOSITION: ").Append(ErrorPOSITION).Append("\n"); + sb.Append(" FieldCount: ").Append(FieldCount).Append("\n"); + sb.Append(" Fields: ").Append(Fields).Append("\n"); + sb.Append(" STRINGS_DISTANCE: ").Append(STRINGS_DISTANCE).Append("\n"); + sb.Append(" STRINGS_INTERVAL: ").Append(STRINGS_INTERVAL).Append("\n"); + sb.Append(" STRING_FILLING: ").Append(STRING_FILLING).Append("\n"); + sb.Append(" STRING_POSITION: ").Append(STRING_POSITION).Append("\n"); + sb.Append(" SYMBOLS_PARAM: ").Append(SYMBOLS_PARAM).Append("\n"); + sb.Append(" SizeErrorALIGNMENT: ").Append(SizeErrorALIGNMENT).Append("\n"); + sb.Append(" SizeErrorDISTANCE: ").Append(SizeErrorDISTANCE).Append("\n"); + sb.Append(" SizeErrorINTERVAL: ").Append(SizeErrorINTERVAL).Append("\n"); + sb.Append(" StringAngle: ").Append(StringAngle).Append("\n"); + sb.Append(" StringBorders: ").Append(StringBorders).Append("\n"); + sb.Append(" SymbolsCount: ").Append(SymbolsCount).Append("\n"); + sb.Append(" SymbolsEstimations: ").Append(SymbolsEstimations).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/StringRecognitionResult.cs b/src/Regula.DocumentReader.WebClient/Model/StringRecognitionResult.cs index 2377bf3..df59a8f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/StringRecognitionResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/StringRecognitionResult.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Describes single row recognition results in multi-line text field of a document /// - [DataContract] - public partial class StringRecognitionResult : IEquatable, IValidatableObject + [DataContract(Name = "StringRecognitionResult")] + public partial class StringRecognitionResult : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,41 +40,76 @@ protected StringRecognitionResult() { } /// /// Initializes a new instance of the class. /// + /// Number of StringResult array elements (required). /// Array of recognition results for individual characters of a string (required). - public StringRecognitionResult(List stringResult = default(List)) + /// Buf_Text text string length. + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^'. + /// reserved. + public StringRecognitionResult(decimal symbolsCount = default(decimal), List stringResult = default(List), decimal bufLength = default(decimal), string bufText = default(string), int reserved = default(int)) { + this.SymbolsCount = symbolsCount; // to ensure "stringResult" is required (not null) if (stringResult == null) { - throw new InvalidDataException("stringResult is a required property for StringRecognitionResult and cannot be null"); - } - else - { - this.StringResult = stringResult; + throw new ArgumentNullException("stringResult is a required property for StringRecognitionResult and cannot be null"); } - + this.StringResult = stringResult; + this.BufLength = bufLength; + this.BufText = bufText; + this.Reserved = reserved; } - + + /// + /// Number of StringResult array elements + /// + /// Number of StringResult array elements + [DataMember(Name = "SymbolsCount", IsRequired = true, EmitDefaultValue = true)] + public decimal SymbolsCount { get; set; } + /// /// Array of recognition results for individual characters of a string /// /// Array of recognition results for individual characters of a string - [DataMember(Name="StringResult", EmitDefaultValue=true)] + [DataMember(Name = "StringResult", IsRequired = true, EmitDefaultValue = true)] public List StringResult { get; set; } + /// + /// Buf_Text text string length + /// + /// Buf_Text text string length + [DataMember(Name = "Buf_Length", EmitDefaultValue = false)] + public decimal? BufLength { get; set; } + + /// + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' + /// + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' + [DataMember(Name = "Buf_Text", EmitDefaultValue = false)] + public string? BufText { get; set; } + + /// + /// Gets or Sets Reserved + /// + [DataMember(Name = "Reserved", EmitDefaultValue = false)] + public int? Reserved { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class StringRecognitionResult {\n"); + sb.Append(" SymbolsCount: ").Append(SymbolsCount).Append("\n"); sb.Append(" StringResult: ").Append(StringResult).Append("\n"); + sb.Append(" BufLength: ").Append(BufLength).Append("\n"); + sb.Append(" BufText: ").Append(BufText).Append("\n"); + sb.Append(" Reserved: ").Append(Reserved).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -82,56 +119,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as StringRecognitionResult); - } - - /// - /// Returns true if StringRecognitionResult instances are equal - /// - /// Instance of StringRecognitionResult to be compared - /// Boolean - public bool Equals(StringRecognitionResult input) - { - if (input == null) - return false; - - return - ( - this.StringResult == input.StringResult || - this.StringResult != null && - input.StringResult != null && - this.StringResult.SequenceEqual(input.StringResult) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.StringResult != null) - hashCode = hashCode * 59 + this.StringResult.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Symbol.cs b/src/Regula.DocumentReader.WebClient/Model/Symbol.cs new file mode 100644 index 0000000..df6c8bb --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/Symbol.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Symbol + /// + [DataContract(Name = "Symbol")] + public partial class Symbol : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Symbol() { } + /// + /// Initializes a new instance of the class. + /// + /// boundingRect (required). + public Symbol(List boundingRect = default(List)) + { + // to ensure "boundingRect" is required (not null) + if (boundingRect == null) + { + throw new ArgumentNullException("boundingRect is a required property for Symbol and cannot be null"); + } + this.BoundingRect = boundingRect; + } + + /// + /// Gets or Sets BoundingRect + /// + [DataMember(Name = "boundingRect", IsRequired = true, EmitDefaultValue = true)] + public List BoundingRect { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class Symbol {\n"); + sb.Append(" BoundingRect: ").Append(BoundingRect).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/SymbolCandidate.cs b/src/Regula.DocumentReader.WebClient/Model/SymbolCandidate.cs index d08b313..4ecd251 100644 --- a/src/Regula.DocumentReader.WebClient/Model/SymbolCandidate.cs +++ b/src/Regula.DocumentReader.WebClient/Model/SymbolCandidate.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Describes an individual character recognition candidate /// - [DataContract] - public partial class SymbolCandidate : IEquatable, IValidatableObject + [DataContract(Name = "SymbolCandidate")] + public partial class SymbolCandidate : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,58 +42,58 @@ protected SymbolCandidate() { } /// /// Unicode symbol code (required). /// character recognition probability (0–100,%) (required). - public SymbolCandidate(int symbolCode = default(int), int symbolProbability = default(int)) + /// varClass. + /// subClass. + public SymbolCandidate(int symbolCode = default(int), int symbolProbability = default(int), int varClass = default(int), int subClass = default(int)) { - // to ensure "symbolCode" is required (not null) - if (symbolCode == null) - { - throw new InvalidDataException("symbolCode is a required property for SymbolCandidate and cannot be null"); - } - else - { - this.SymbolCode = symbolCode; - } - - // to ensure "symbolProbability" is required (not null) - if (symbolProbability == null) - { - throw new InvalidDataException("symbolProbability is a required property for SymbolCandidate and cannot be null"); - } - else - { - this.SymbolProbability = symbolProbability; - } - + this.SymbolCode = symbolCode; + this.SymbolProbability = symbolProbability; + this.Class = varClass; + this.SubClass = subClass; } - + /// /// Unicode symbol code /// /// Unicode symbol code - [DataMember(Name="SymbolCode", EmitDefaultValue=true)] + [DataMember(Name = "SymbolCode", IsRequired = true, EmitDefaultValue = true)] public int SymbolCode { get; set; } /// /// character recognition probability (0–100,%) /// /// character recognition probability (0–100,%) - [DataMember(Name="SymbolProbability", EmitDefaultValue=true)] + [DataMember(Name = "SymbolProbability", IsRequired = true, EmitDefaultValue = true)] public int SymbolProbability { get; set; } + /// + /// Gets or Sets Class + /// + [DataMember(Name = "Class", EmitDefaultValue = false)] + public int? Class { get; set; } + + /// + /// Gets or Sets SubClass + /// + [DataMember(Name = "SubClass", EmitDefaultValue = false)] + public int? SubClass { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class SymbolCandidate {\n"); sb.Append(" SymbolCode: ").Append(SymbolCode).Append("\n"); sb.Append(" SymbolProbability: ").Append(SymbolProbability).Append("\n"); + sb.Append(" Class: ").Append(Class).Append("\n"); + sb.Append(" SubClass: ").Append(SubClass).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -101,75 +103,23 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as SymbolCandidate); - } - - /// - /// Returns true if SymbolCandidate instances are equal - /// - /// Instance of SymbolCandidate to be compared - /// Boolean - public bool Equals(SymbolCandidate input) - { - if (input == null) - return false; - - return - ( - this.SymbolCode == input.SymbolCode || - (this.SymbolCode != null && - this.SymbolCode.Equals(input.SymbolCode)) - ) && - ( - this.SymbolProbability == input.SymbolProbability || - (this.SymbolProbability != null && - this.SymbolProbability.Equals(input.SymbolProbability)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.SymbolCode != null) - hashCode = hashCode * 59 + this.SymbolCode.GetHashCode(); - if (this.SymbolProbability != null) - hashCode = hashCode * 59 + this.SymbolProbability.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - - // SymbolProbability (int) maximum - if(this.SymbolProbability > (int)100) + if (this.SymbolProbability > (int)100) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for SymbolProbability, must be a value less than or equal to 100.", new [] { "SymbolProbability" }); + yield return new ValidationResult("Invalid value for SymbolProbability, must be a value less than or equal to 100.", new [] { "SymbolProbability" }); } // SymbolProbability (int) minimum - if(this.SymbolProbability < (int)0) + if (this.SymbolProbability < (int)0) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for SymbolProbability, must be a value greater than or equal to 0.", new [] { "SymbolProbability" }); + yield return new ValidationResult("Invalid value for SymbolProbability, must be a value greater than or equal to 0.", new [] { "SymbolProbability" }); } yield break; diff --git a/src/Regula.DocumentReader.WebClient/Model/SymbolEstimationItem.cs b/src/Regula.DocumentReader.WebClient/Model/SymbolEstimationItem.cs new file mode 100644 index 0000000..a320328 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/SymbolEstimationItem.cs @@ -0,0 +1,237 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// SymbolEstimationItem + /// + [DataContract(Name = "SymbolEstimationItem")] + public partial class SymbolEstimationItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected SymbolEstimationItem() { } + /// + /// Initializes a new instance of the class. + /// + /// aLIGNMENTNEARESTSYMBOLS (required). + /// cONTRASTPRINT (required). + /// cONTRASTSYMBOL (required). + /// charSymbol (required). + /// eDGE (required). + /// eMPTINESS (required). + /// sTAIN (required). + /// sYMBOLSINTERVAL (required). + /// sYMBOLPARAM (required). + /// sYMBOLSIZE (required). + /// sizeErrorAlignWithNext (required). + /// sizeErrorAlignWithPrev (required). + /// sizeErrorIntervWithNext (required). + /// sizeErrorIntervWithPrev (required). + /// sizeErrorSymbolHeight (required). + /// sizeErrorSymbolWidth (required). + /// symbolBounds (required). + public SymbolEstimationItem(int aLIGNMENTNEARESTSYMBOLS = default(int), int cONTRASTPRINT = default(int), int cONTRASTSYMBOL = default(int), int charSymbol = default(int), int eDGE = default(int), int eMPTINESS = default(int), int sTAIN = default(int), int sYMBOLSINTERVAL = default(int), int sYMBOLPARAM = default(int), int sYMBOLSIZE = default(int), decimal sizeErrorAlignWithNext = default(decimal), decimal sizeErrorAlignWithPrev = default(decimal), decimal sizeErrorIntervWithNext = default(decimal), decimal sizeErrorIntervWithPrev = default(decimal), decimal sizeErrorSymbolHeight = default(decimal), decimal sizeErrorSymbolWidth = default(decimal), RectangleCoordinates symbolBounds = default(RectangleCoordinates)) + { + this.ALIGNMENT_NEAREST_SYMBOLS = aLIGNMENTNEARESTSYMBOLS; + this.CONTRAST_PRINT = cONTRASTPRINT; + this.CONTRAST_SYMBOL = cONTRASTSYMBOL; + this.CharSymbol = charSymbol; + this.EDGE = eDGE; + this.EMPTINESS = eMPTINESS; + this.STAIN = sTAIN; + this.SYMBOLS_INTERVAL = sYMBOLSINTERVAL; + this.SYMBOL_PARAM = sYMBOLPARAM; + this.SYMBOL_SIZE = sYMBOLSIZE; + this.SizeErrorAlignWithNext = sizeErrorAlignWithNext; + this.SizeErrorAlignWithPrev = sizeErrorAlignWithPrev; + this.SizeErrorIntervWithNext = sizeErrorIntervWithNext; + this.SizeErrorIntervWithPrev = sizeErrorIntervWithPrev; + this.SizeErrorSymbolHeight = sizeErrorSymbolHeight; + this.SizeErrorSymbolWidth = sizeErrorSymbolWidth; + // to ensure "symbolBounds" is required (not null) + if (symbolBounds == null) + { + throw new ArgumentNullException("symbolBounds is a required property for SymbolEstimationItem and cannot be null"); + } + this.SymbolBounds = symbolBounds; + } + + /// + /// Gets or Sets ALIGNMENT_NEAREST_SYMBOLS + /// + [DataMember(Name = "ALIGNMENT_NEAREST_SYMBOLS", IsRequired = true, EmitDefaultValue = true)] + public int ALIGNMENT_NEAREST_SYMBOLS { get; set; } + + /// + /// Gets or Sets CONTRAST_PRINT + /// + [DataMember(Name = "CONTRAST_PRINT", IsRequired = true, EmitDefaultValue = true)] + public int CONTRAST_PRINT { get; set; } + + /// + /// Gets or Sets CONTRAST_SYMBOL + /// + [DataMember(Name = "CONTRAST_SYMBOL", IsRequired = true, EmitDefaultValue = true)] + public int CONTRAST_SYMBOL { get; set; } + + /// + /// Gets or Sets CharSymbol + /// + [DataMember(Name = "CharSymbol", IsRequired = true, EmitDefaultValue = true)] + public int CharSymbol { get; set; } + + /// + /// Gets or Sets EDGE + /// + [DataMember(Name = "EDGE", IsRequired = true, EmitDefaultValue = true)] + public int EDGE { get; set; } + + /// + /// Gets or Sets EMPTINESS + /// + [DataMember(Name = "EMPTINESS", IsRequired = true, EmitDefaultValue = true)] + public int EMPTINESS { get; set; } + + /// + /// Gets or Sets STAIN + /// + [DataMember(Name = "STAIN", IsRequired = true, EmitDefaultValue = true)] + public int STAIN { get; set; } + + /// + /// Gets or Sets SYMBOLS_INTERVAL + /// + [DataMember(Name = "SYMBOLS_INTERVAL", IsRequired = true, EmitDefaultValue = true)] + public int SYMBOLS_INTERVAL { get; set; } + + /// + /// Gets or Sets SYMBOL_PARAM + /// + [DataMember(Name = "SYMBOL_PARAM", IsRequired = true, EmitDefaultValue = true)] + public int SYMBOL_PARAM { get; set; } + + /// + /// Gets or Sets SYMBOL_SIZE + /// + [DataMember(Name = "SYMBOL_SIZE", IsRequired = true, EmitDefaultValue = true)] + public int SYMBOL_SIZE { get; set; } + + /// + /// Gets or Sets SizeErrorAlignWithNext + /// + [DataMember(Name = "SizeErrorAlignWithNext", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorAlignWithNext { get; set; } + + /// + /// Gets or Sets SizeErrorAlignWithPrev + /// + [DataMember(Name = "SizeErrorAlignWithPrev", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorAlignWithPrev { get; set; } + + /// + /// Gets or Sets SizeErrorIntervWithNext + /// + [DataMember(Name = "SizeErrorIntervWithNext", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorIntervWithNext { get; set; } + + /// + /// Gets or Sets SizeErrorIntervWithPrev + /// + [DataMember(Name = "SizeErrorIntervWithPrev", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorIntervWithPrev { get; set; } + + /// + /// Gets or Sets SizeErrorSymbolHeight + /// + [DataMember(Name = "SizeErrorSymbolHeight", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorSymbolHeight { get; set; } + + /// + /// Gets or Sets SizeErrorSymbolWidth + /// + [DataMember(Name = "SizeErrorSymbolWidth", IsRequired = true, EmitDefaultValue = true)] + public decimal SizeErrorSymbolWidth { get; set; } + + /// + /// Gets or Sets SymbolBounds + /// + [DataMember(Name = "SymbolBounds", IsRequired = true, EmitDefaultValue = true)] + public RectangleCoordinates SymbolBounds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class SymbolEstimationItem {\n"); + sb.Append(" ALIGNMENT_NEAREST_SYMBOLS: ").Append(ALIGNMENT_NEAREST_SYMBOLS).Append("\n"); + sb.Append(" CONTRAST_PRINT: ").Append(CONTRAST_PRINT).Append("\n"); + sb.Append(" CONTRAST_SYMBOL: ").Append(CONTRAST_SYMBOL).Append("\n"); + sb.Append(" CharSymbol: ").Append(CharSymbol).Append("\n"); + sb.Append(" EDGE: ").Append(EDGE).Append("\n"); + sb.Append(" EMPTINESS: ").Append(EMPTINESS).Append("\n"); + sb.Append(" STAIN: ").Append(STAIN).Append("\n"); + sb.Append(" SYMBOLS_INTERVAL: ").Append(SYMBOLS_INTERVAL).Append("\n"); + sb.Append(" SYMBOL_PARAM: ").Append(SYMBOL_PARAM).Append("\n"); + sb.Append(" SYMBOL_SIZE: ").Append(SYMBOL_SIZE).Append("\n"); + sb.Append(" SizeErrorAlignWithNext: ").Append(SizeErrorAlignWithNext).Append("\n"); + sb.Append(" SizeErrorAlignWithPrev: ").Append(SizeErrorAlignWithPrev).Append("\n"); + sb.Append(" SizeErrorIntervWithNext: ").Append(SizeErrorIntervWithNext).Append("\n"); + sb.Append(" SizeErrorIntervWithPrev: ").Append(SizeErrorIntervWithPrev).Append("\n"); + sb.Append(" SizeErrorSymbolHeight: ").Append(SizeErrorSymbolHeight).Append("\n"); + sb.Append(" SizeErrorSymbolWidth: ").Append(SizeErrorSymbolWidth).Append("\n"); + sb.Append(" SymbolBounds: ").Append(SymbolBounds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/SymbolRecognitionResult.cs b/src/Regula.DocumentReader.WebClient/Model/SymbolRecognitionResult.cs index faf2316..87033dd 100644 --- a/src/Regula.DocumentReader.WebClient/Model/SymbolRecognitionResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/SymbolRecognitionResult.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Describes a single character recognition results in the text field line /// - [DataContract] - public partial class SymbolRecognitionResult : IEquatable, IValidatableObject + [DataContract(Name = "SymbolRecognitionResult")] + public partial class SymbolRecognitionResult : IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,58 +41,87 @@ protected SymbolRecognitionResult() { } /// Initializes a new instance of the class. /// /// symbolRect (required). + /// Number of significant elements of ListOfCandidates array (required). /// Array of candidate characters. Sorted in descending order of recognition probabilities (the first element has highest probability) (required). - public SymbolRecognitionResult(RectangleCoordinates symbolRect = default(RectangleCoordinates), List listOfCandidates = default(List)) + /// baseLineBottom. + /// baseLineTop. + /// reserved. + public SymbolRecognitionResult(RectangleCoordinates symbolRect = default(RectangleCoordinates), decimal candidatesCount = default(decimal), List listOfCandidates = default(List), int baseLineBottom = default(int), int baseLineTop = default(int), int reserved = default(int)) { // to ensure "symbolRect" is required (not null) if (symbolRect == null) { - throw new InvalidDataException("symbolRect is a required property for SymbolRecognitionResult and cannot be null"); + throw new ArgumentNullException("symbolRect is a required property for SymbolRecognitionResult and cannot be null"); } - else - { - this.SymbolRect = symbolRect; - } - + this.SymbolRect = symbolRect; + this.CandidatesCount = candidatesCount; // to ensure "listOfCandidates" is required (not null) if (listOfCandidates == null) { - throw new InvalidDataException("listOfCandidates is a required property for SymbolRecognitionResult and cannot be null"); + throw new ArgumentNullException("listOfCandidates is a required property for SymbolRecognitionResult and cannot be null"); } - else - { - this.ListOfCandidates = listOfCandidates; - } - + this.ListOfCandidates = listOfCandidates; + this.BaseLineBottom = baseLineBottom; + this.BaseLineTop = baseLineTop; + this.Reserved = reserved; } - + /// /// Gets or Sets SymbolRect /// - [DataMember(Name="SymbolRect", EmitDefaultValue=true)] + [DataMember(Name = "SymbolRect", IsRequired = true, EmitDefaultValue = true)] public RectangleCoordinates SymbolRect { get; set; } + /// + /// Number of significant elements of ListOfCandidates array + /// + /// Number of significant elements of ListOfCandidates array + [DataMember(Name = "CandidatesCount", IsRequired = true, EmitDefaultValue = true)] + public decimal CandidatesCount { get; set; } + /// /// Array of candidate characters. Sorted in descending order of recognition probabilities (the first element has highest probability) /// /// Array of candidate characters. Sorted in descending order of recognition probabilities (the first element has highest probability) - [DataMember(Name="ListOfCandidates", EmitDefaultValue=true)] + [DataMember(Name = "ListOfCandidates", IsRequired = true, EmitDefaultValue = true)] public List ListOfCandidates { get; set; } + /// + /// Gets or Sets BaseLineBottom + /// + [DataMember(Name = "BaseLineBottom", EmitDefaultValue = false)] + public int? BaseLineBottom { get; set; } + + /// + /// Gets or Sets BaseLineTop + /// + [DataMember(Name = "BaseLineTop", EmitDefaultValue = false)] + public int? BaseLineTop { get; set; } + + /// + /// Gets or Sets Reserved + /// + [DataMember(Name = "Reserved", EmitDefaultValue = false)] + public int? Reserved { get; set; } + /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class SymbolRecognitionResult {\n"); sb.Append(" SymbolRect: ").Append(SymbolRect).Append("\n"); + sb.Append(" CandidatesCount: ").Append(CandidatesCount).Append("\n"); sb.Append(" ListOfCandidates: ").Append(ListOfCandidates).Append("\n"); + sb.Append(" BaseLineBottom: ").Append(BaseLineBottom).Append("\n"); + sb.Append(" BaseLineTop: ").Append(BaseLineTop).Append("\n"); + sb.Append(" Reserved: ").Append(Reserved).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -100,63 +131,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as SymbolRecognitionResult); - } - - /// - /// Returns true if SymbolRecognitionResult instances are equal - /// - /// Instance of SymbolRecognitionResult to be compared - /// Boolean - public bool Equals(SymbolRecognitionResult input) - { - if (input == null) - return false; - - return - ( - this.SymbolRect == input.SymbolRect || - (this.SymbolRect != null && - this.SymbolRect.Equals(input.SymbolRect)) - ) && - ( - this.ListOfCandidates == input.ListOfCandidates || - this.ListOfCandidates != null && - input.ListOfCandidates != null && - this.ListOfCandidates.SequenceEqual(input.ListOfCandidates) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.SymbolRect != null) - hashCode = hashCode * 59 + this.SymbolRect.GetHashCode(); - if (this.ListOfCandidates != null) - hashCode = hashCode * 59 + this.ListOfCandidates.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TBinaryData.cs b/src/Regula.DocumentReader.WebClient/Model/TBinaryData.cs deleted file mode 100644 index 1e30237..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/TBinaryData.cs +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// Container for extracted text fields. Fields are identified by type and language - /// - [DataContract] - public partial class TBinaryData : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// fieldType. - /// fieldName. - /// bufLength. - /// buffer. - public TBinaryData(int fieldType = default(int), string fieldName = default(string), int bufLength = default(int), byte[] buffer = default(byte[])) - { - this.FieldType = fieldType; - this.FieldName = fieldName; - this.BufLength = bufLength; - this.Buffer = buffer; - } - - /// - /// Gets or Sets FieldType - /// - [DataMember(Name="FieldType", EmitDefaultValue=false)] - public int FieldType { get; set; } - - /// - /// Gets or Sets FieldName - /// - [DataMember(Name="FieldName", EmitDefaultValue=false)] - public string FieldName { get; set; } - - /// - /// Gets or Sets BufLength - /// - [DataMember(Name="Buf_Length", EmitDefaultValue=false)] - public int BufLength { get; set; } - - /// - /// Gets or Sets Buffer - /// - [DataMember(Name="Buffer", EmitDefaultValue=false)] - public byte[] Buffer { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class TBinaryData {\n"); - sb.Append(" FieldType: ").Append(FieldType).Append("\n"); - sb.Append(" FieldName: ").Append(FieldName).Append("\n"); - sb.Append(" BufLength: ").Append(BufLength).Append("\n"); - sb.Append(" Buffer: ").Append(Buffer).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TBinaryData); - } - - /// - /// Returns true if TBinaryData instances are equal - /// - /// Instance of TBinaryData to be compared - /// Boolean - public bool Equals(TBinaryData input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.FieldName == input.FieldName || - (this.FieldName != null && - this.FieldName.Equals(input.FieldName)) - ) && - ( - this.BufLength == input.BufLength || - (this.BufLength != null && - this.BufLength.Equals(input.BufLength)) - ) && - ( - this.Buffer == input.Buffer || - (this.Buffer != null && - this.Buffer.Equals(input.Buffer)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.FieldName != null) - hashCode = hashCode * 59 + this.FieldName.GetHashCode(); - if (this.BufLength != null) - hashCode = hashCode * 59 + this.BufLength.GetHashCode(); - if (this.Buffer != null) - hashCode = hashCode * 59 + this.Buffer.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfo.cs b/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfo.cs new file mode 100644 index 0000000..acc6557 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfo.cs @@ -0,0 +1,92 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TDocBinaryInfo + /// + [DataContract(Name = "TDocBinaryInfo")] + public partial class TDocBinaryInfo : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// rFIDBINARYDATA. + /// rFIDRAWDATA. + public TDocBinaryInfo(BinaryData rFIDBINARYDATA = default(BinaryData), List rFIDRAWDATA = default(List)) + { + this.RFID_BINARY_DATA = rFIDBINARYDATA; + this.RFID_RAW_DATA = rFIDRAWDATA; + } + + /// + /// Gets or Sets RFID_BINARY_DATA + /// + [DataMember(Name = "RFID_BINARY_DATA", EmitDefaultValue = false)] + public BinaryData? RFID_BINARY_DATA { get; set; } + + /// + /// Gets or Sets RFID_RAW_DATA + /// + [DataMember(Name = "RFID_RAW_DATA", EmitDefaultValue = false)] + public List? RFID_RAW_DATA { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TDocBinaryInfo {\n"); + sb.Append(" RFID_BINARY_DATA: ").Append(RFID_BINARY_DATA).Append("\n"); + sb.Append(" RFID_RAW_DATA: ").Append(RFID_RAW_DATA).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfoItem.cs new file mode 100644 index 0000000..583e448 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TDocBinaryInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TDocBinaryInfoItem + /// + [DataContract(Name = "TDocBinaryInfoItem")] + public partial class TDocBinaryInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TDocBinaryInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// tDocBinaryInfo (required). + public TDocBinaryInfoItem(TDocBinaryInfo tDocBinaryInfo = default(TDocBinaryInfo)) + { + // to ensure "tDocBinaryInfo" is required (not null) + if (tDocBinaryInfo == null) + { + throw new ArgumentNullException("tDocBinaryInfo is a required property for TDocBinaryInfoItem and cannot be null"); + } + this.TDocBinaryInfo = tDocBinaryInfo; + } + + /// + /// Gets or Sets TDocBinaryInfo + /// + [DataMember(Name = "TDocBinaryInfo", IsRequired = true, EmitDefaultValue = true)] + public TDocBinaryInfo TDocBinaryInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TDocBinaryInfoItem {\n"); + sb.Append(" TDocBinaryInfo: ").Append(TDocBinaryInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphics.cs b/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphics.cs deleted file mode 100644 index 587b18b..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphics.cs +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// TOriginalRFIDGraphics - /// - [DataContract] - public partial class TOriginalRFIDGraphics : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// fieldType. - /// graphicsType. - /// rFIDOriginDG. - /// rFIDOriginDGTag. - /// rFIDOriginTagEntry. - /// rFIDOriginEntryView. - /// bufLength. - /// buffer. - public TOriginalRFIDGraphics(int fieldType = default(int), int graphicsType = default(int), int rFIDOriginDG = default(int), int rFIDOriginDGTag = default(int), int rFIDOriginTagEntry = default(int), int rFIDOriginEntryView = default(int), int bufLength = default(int), byte[] buffer = default(byte[])) - { - this.FieldType = fieldType; - this.GraphicsType = graphicsType; - this.RFIDOriginDG = rFIDOriginDG; - this.RFIDOriginDGTag = rFIDOriginDGTag; - this.RFIDOriginTagEntry = rFIDOriginTagEntry; - this.RFIDOriginEntryView = rFIDOriginEntryView; - this.BufLength = bufLength; - this.Buffer = buffer; - } - - /// - /// Gets or Sets FieldType - /// - [DataMember(Name="FieldType", EmitDefaultValue=false)] - public int FieldType { get; set; } - - /// - /// Gets or Sets GraphicsType - /// - [DataMember(Name="GraphicsType", EmitDefaultValue=false)] - public int GraphicsType { get; set; } - - /// - /// Gets or Sets RFIDOriginDG - /// - [DataMember(Name="RFID_OriginDG", EmitDefaultValue=false)] - public int RFIDOriginDG { get; set; } - - /// - /// Gets or Sets RFIDOriginDGTag - /// - [DataMember(Name="RFID_OriginDGTag", EmitDefaultValue=false)] - public int RFIDOriginDGTag { get; set; } - - /// - /// Gets or Sets RFIDOriginTagEntry - /// - [DataMember(Name="RFID_OriginTagEntry", EmitDefaultValue=false)] - public int RFIDOriginTagEntry { get; set; } - - /// - /// Gets or Sets RFIDOriginEntryView - /// - [DataMember(Name="RFID_OriginEntryView", EmitDefaultValue=false)] - public int RFIDOriginEntryView { get; set; } - - /// - /// Gets or Sets BufLength - /// - [DataMember(Name="Buf_Length", EmitDefaultValue=false)] - public int BufLength { get; set; } - - /// - /// Gets or Sets Buffer - /// - [DataMember(Name="Buffer", EmitDefaultValue=false)] - public byte[] Buffer { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class TOriginalRFIDGraphics {\n"); - sb.Append(" FieldType: ").Append(FieldType).Append("\n"); - sb.Append(" GraphicsType: ").Append(GraphicsType).Append("\n"); - sb.Append(" RFIDOriginDG: ").Append(RFIDOriginDG).Append("\n"); - sb.Append(" RFIDOriginDGTag: ").Append(RFIDOriginDGTag).Append("\n"); - sb.Append(" RFIDOriginTagEntry: ").Append(RFIDOriginTagEntry).Append("\n"); - sb.Append(" RFIDOriginEntryView: ").Append(RFIDOriginEntryView).Append("\n"); - sb.Append(" BufLength: ").Append(BufLength).Append("\n"); - sb.Append(" Buffer: ").Append(Buffer).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TOriginalRFIDGraphics); - } - - /// - /// Returns true if TOriginalRFIDGraphics instances are equal - /// - /// Instance of TOriginalRFIDGraphics to be compared - /// Boolean - public bool Equals(TOriginalRFIDGraphics input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.GraphicsType == input.GraphicsType || - (this.GraphicsType != null && - this.GraphicsType.Equals(input.GraphicsType)) - ) && - ( - this.RFIDOriginDG == input.RFIDOriginDG || - (this.RFIDOriginDG != null && - this.RFIDOriginDG.Equals(input.RFIDOriginDG)) - ) && - ( - this.RFIDOriginDGTag == input.RFIDOriginDGTag || - (this.RFIDOriginDGTag != null && - this.RFIDOriginDGTag.Equals(input.RFIDOriginDGTag)) - ) && - ( - this.RFIDOriginTagEntry == input.RFIDOriginTagEntry || - (this.RFIDOriginTagEntry != null && - this.RFIDOriginTagEntry.Equals(input.RFIDOriginTagEntry)) - ) && - ( - this.RFIDOriginEntryView == input.RFIDOriginEntryView || - (this.RFIDOriginEntryView != null && - this.RFIDOriginEntryView.Equals(input.RFIDOriginEntryView)) - ) && - ( - this.BufLength == input.BufLength || - (this.BufLength != null && - this.BufLength.Equals(input.BufLength)) - ) && - ( - this.Buffer == input.Buffer || - (this.Buffer != null && - this.Buffer.Equals(input.Buffer)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.GraphicsType != null) - hashCode = hashCode * 59 + this.GraphicsType.GetHashCode(); - if (this.RFIDOriginDG != null) - hashCode = hashCode * 59 + this.RFIDOriginDG.GetHashCode(); - if (this.RFIDOriginDGTag != null) - hashCode = hashCode * 59 + this.RFIDOriginDGTag.GetHashCode(); - if (this.RFIDOriginTagEntry != null) - hashCode = hashCode * 59 + this.RFIDOriginTagEntry.GetHashCode(); - if (this.RFIDOriginEntryView != null) - hashCode = hashCode * 59 + this.RFIDOriginEntryView.GetHashCode(); - if (this.BufLength != null) - hashCode = hashCode * 59 + this.BufLength.GetHashCode(); - if (this.Buffer != null) - hashCode = hashCode * 59 + this.Buffer.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfo.cs b/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfo.cs new file mode 100644 index 0000000..ffbb0f6 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfo.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TOriginalRFIDGraphicsInfo + /// + [DataContract(Name = "TOriginalRFIDGraphicsInfo")] + public partial class TOriginalRFIDGraphicsInfo : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TOriginalRFIDGraphicsInfo() { } + /// + /// Initializes a new instance of the class. + /// + /// rFIDORIGINALGRAPHDATA (required). + public TOriginalRFIDGraphicsInfo(List rFIDORIGINALGRAPHDATA = default(List)) + { + // to ensure "rFIDORIGINALGRAPHDATA" is required (not null) + if (rFIDORIGINALGRAPHDATA == null) + { + throw new ArgumentNullException("rFIDORIGINALGRAPHDATA is a required property for TOriginalRFIDGraphicsInfo and cannot be null"); + } + this.RFID_ORIGINAL_GRAPH_DATA = rFIDORIGINALGRAPHDATA; + } + + /// + /// Gets or Sets RFID_ORIGINAL_GRAPH_DATA + /// + [DataMember(Name = "RFID_ORIGINAL_GRAPH_DATA", IsRequired = true, EmitDefaultValue = true)] + public List RFID_ORIGINAL_GRAPH_DATA { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TOriginalRFIDGraphicsInfo {\n"); + sb.Append(" RFID_ORIGINAL_GRAPH_DATA: ").Append(RFID_ORIGINAL_GRAPH_DATA).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfoItem.cs b/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfoItem.cs new file mode 100644 index 0000000..d86c6fd --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TOriginalRFIDGraphicsInfoItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TOriginalRFIDGraphicsInfoItem + /// + [DataContract(Name = "TOriginalRFIDGraphicsInfoItem")] + public partial class TOriginalRFIDGraphicsInfoItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TOriginalRFIDGraphicsInfoItem() { } + /// + /// Initializes a new instance of the class. + /// + /// tOriginalRFIDGraphicsInfo (required). + public TOriginalRFIDGraphicsInfoItem(TOriginalRFIDGraphicsInfo tOriginalRFIDGraphicsInfo = default(TOriginalRFIDGraphicsInfo)) + { + // to ensure "tOriginalRFIDGraphicsInfo" is required (not null) + if (tOriginalRFIDGraphicsInfo == null) + { + throw new ArgumentNullException("tOriginalRFIDGraphicsInfo is a required property for TOriginalRFIDGraphicsInfoItem and cannot be null"); + } + this.TOriginalRFIDGraphicsInfo = tOriginalRFIDGraphicsInfo; + } + + /// + /// Gets or Sets TOriginalRFIDGraphicsInfo + /// + [DataMember(Name = "TOriginalRFIDGraphicsInfo", IsRequired = true, EmitDefaultValue = true)] + public TOriginalRFIDGraphicsInfo TOriginalRFIDGraphicsInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TOriginalRFIDGraphicsInfoItem {\n"); + sb.Append(" TOriginalRFIDGraphicsInfo: ").Append(TOriginalRFIDGraphicsInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/Text.cs b/src/Regula.DocumentReader.WebClient/Model/Text.cs index 8a261e4..9d12009 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Text.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Text.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,27 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Contains all document text fields data with validity and cross-source compare checks /// - [DataContract] - public partial class Text : IEquatable, IValidatableObject + [DataContract(Name = "Text")] + public partial class Text : IValidatableObject { + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Status { get; set; } + + /// + /// Gets or Sets ValidityStatus + /// + [DataMember(Name = "validityStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ValidityStatus { get; set; } + + /// + /// Gets or Sets ComparisonStatus + /// + [DataMember(Name = "comparisonStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ComparisonStatus { get; set; } /// /// Initializes a new instance of the class. /// @@ -41,90 +61,51 @@ protected Text() { } /// status (required). /// validityStatus (required). /// comparisonStatus (required). + /// Date format (required). /// fieldList (required). /// availableSourceList (required). - public Text(int status = default(int), int validityStatus = default(int), int comparisonStatus = default(int), List fieldList = default(List), List availableSourceList = default(List)) + public Text(CheckResult status = default(CheckResult), CheckResult validityStatus = default(CheckResult), CheckResult comparisonStatus = default(CheckResult), string dateFormat = default(string), List fieldList = default(List), List availableSourceList = default(List)) { - // to ensure "status" is required (not null) - if (status == null) - { - throw new InvalidDataException("status is a required property for Text and cannot be null"); - } - else - { - this.Status = status; - } - - // to ensure "validityStatus" is required (not null) - if (validityStatus == null) - { - throw new InvalidDataException("validityStatus is a required property for Text and cannot be null"); - } - else - { - this.ValidityStatus = validityStatus; - } - - // to ensure "comparisonStatus" is required (not null) - if (comparisonStatus == null) - { - throw new InvalidDataException("comparisonStatus is a required property for Text and cannot be null"); - } - else + this.Status = status; + this.ValidityStatus = validityStatus; + this.ComparisonStatus = comparisonStatus; + // to ensure "dateFormat" is required (not null) + if (dateFormat == null) { - this.ComparisonStatus = comparisonStatus; + throw new ArgumentNullException("dateFormat is a required property for Text and cannot be null"); } - + this.DateFormat = dateFormat; // to ensure "fieldList" is required (not null) if (fieldList == null) { - throw new InvalidDataException("fieldList is a required property for Text and cannot be null"); + throw new ArgumentNullException("fieldList is a required property for Text and cannot be null"); } - else - { - this.FieldList = fieldList; - } - + this.FieldList = fieldList; // to ensure "availableSourceList" is required (not null) if (availableSourceList == null) { - throw new InvalidDataException("availableSourceList is a required property for Text and cannot be null"); - } - else - { - this.AvailableSourceList = availableSourceList; + throw new ArgumentNullException("availableSourceList is a required property for Text and cannot be null"); } - + this.AvailableSourceList = availableSourceList; } - - /// - /// Gets or Sets Status - /// - [DataMember(Name="status", EmitDefaultValue=true)] - public int Status { get; set; } - - /// - /// Gets or Sets ValidityStatus - /// - [DataMember(Name="validityStatus", EmitDefaultValue=true)] - public int ValidityStatus { get; set; } /// - /// Gets or Sets ComparisonStatus + /// Date format /// - [DataMember(Name="comparisonStatus", EmitDefaultValue=true)] - public int ComparisonStatus { get; set; } + /// Date format + [DataMember(Name = "dateFormat", IsRequired = true, EmitDefaultValue = true)] + public string DateFormat { get; set; } /// /// Gets or Sets FieldList /// - [DataMember(Name="fieldList", EmitDefaultValue=true)] + [DataMember(Name = "fieldList", IsRequired = true, EmitDefaultValue = true)] public List FieldList { get; set; } /// /// Gets or Sets AvailableSourceList /// - [DataMember(Name="availableSourceList", EmitDefaultValue=true)] + [DataMember(Name = "availableSourceList", IsRequired = true, EmitDefaultValue = true)] public List AvailableSourceList { get; set; } /// @@ -133,17 +114,18 @@ protected Text() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class Text {\n"); sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append(" ValidityStatus: ").Append(ValidityStatus).Append("\n"); sb.Append(" ComparisonStatus: ").Append(ComparisonStatus).Append("\n"); + sb.Append(" DateFormat: ").Append(DateFormat).Append("\n"); sb.Append(" FieldList: ").Append(FieldList).Append("\n"); sb.Append(" AvailableSourceList: ").Append(AvailableSourceList).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -153,85 +135,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Text); - } - - /// - /// Returns true if Text instances are equal - /// - /// Instance of Text to be compared - /// Boolean - public bool Equals(Text input) - { - if (input == null) - return false; - - return - ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ) && - ( - this.ValidityStatus == input.ValidityStatus || - (this.ValidityStatus != null && - this.ValidityStatus.Equals(input.ValidityStatus)) - ) && - ( - this.ComparisonStatus == input.ComparisonStatus || - (this.ComparisonStatus != null && - this.ComparisonStatus.Equals(input.ComparisonStatus)) - ) && - ( - this.FieldList == input.FieldList || - this.FieldList != null && - input.FieldList != null && - this.FieldList.SequenceEqual(input.FieldList) - ) && - ( - this.AvailableSourceList == input.AvailableSourceList || - this.AvailableSourceList != null && - input.AvailableSourceList != null && - this.AvailableSourceList.SequenceEqual(input.AvailableSourceList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Status != null) - hashCode = hashCode * 59 + this.Status.GetHashCode(); - if (this.ValidityStatus != null) - hashCode = hashCode * 59 + this.ValidityStatus.GetHashCode(); - if (this.ComparisonStatus != null) - hashCode = hashCode * 59 + this.ComparisonStatus.GetHashCode(); - if (this.FieldList != null) - hashCode = hashCode * 59 + this.FieldList.GetHashCode(); - if (this.AvailableSourceList != null) - hashCode = hashCode * 59 + this.AvailableSourceList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextAvailableSource.cs b/src/Regula.DocumentReader.WebClient/Model/TextAvailableSource.cs index eceff7d..3fa500d 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextAvailableSource.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextAvailableSource.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TextAvailableSource /// - [DataContract] - public partial class TextAvailableSource : IEquatable, IValidatableObject + [DataContract(Name = "TextAvailableSource")] + public partial class TextAvailableSource : IValidatableObject { + + /// + /// Gets or Sets Source + /// + [DataMember(Name = "source", IsRequired = true, EmitDefaultValue = true)] + public Source Source { get; set; } + + /// + /// Gets or Sets ValidityStatus + /// + [DataMember(Name = "validityStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ValidityStatus { get; set; } /// /// Initializes a new instance of the class. /// @@ -41,57 +55,19 @@ protected TextAvailableSource() { } /// source (required). /// validityStatus (required). /// Same as Result type, but used for safe parsing of not-described values. See Result type. (default to 0). - public TextAvailableSource(string source = default(string), int validityStatus = default(int), int containerType = 0) + public TextAvailableSource(Source source = default(Source), CheckResult validityStatus = default(CheckResult), int containerType = 0) { - // to ensure "source" is required (not null) - if (source == null) - { - throw new InvalidDataException("source is a required property for TextAvailableSource and cannot be null"); - } - else - { - this.Source = source; - } - - // to ensure "validityStatus" is required (not null) - if (validityStatus == null) - { - throw new InvalidDataException("validityStatus is a required property for TextAvailableSource and cannot be null"); - } - else - { - this.ValidityStatus = validityStatus; - } - - // use default value if no "containerType" provided - if (containerType == null) - { - this.ContainerType = 0; - } - else - { - this.ContainerType = containerType; - } + this.Source = source; + this.ValidityStatus = validityStatus; + this.ContainerType = containerType; } - - /// - /// Gets or Sets Source - /// - [DataMember(Name="source", EmitDefaultValue=true)] - public string Source { get; set; } - - /// - /// Gets or Sets ValidityStatus - /// - [DataMember(Name="validityStatus", EmitDefaultValue=true)] - public int ValidityStatus { get; set; } /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. /// /// Same as Result type, but used for safe parsing of not-described values. See Result type. - [DataMember(Name="containerType", EmitDefaultValue=false)] - public int ContainerType { get; set; } + [DataMember(Name = "containerType", EmitDefaultValue = false)] + public int? ContainerType { get; set; } /// /// Returns the string presentation of the object @@ -99,7 +75,7 @@ protected TextAvailableSource() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TextAvailableSource {\n"); sb.Append(" Source: ").Append(Source).Append("\n"); sb.Append(" ValidityStatus: ").Append(ValidityStatus).Append("\n"); @@ -107,7 +83,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -117,69 +93,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TextAvailableSource); - } - - /// - /// Returns true if TextAvailableSource instances are equal - /// - /// Instance of TextAvailableSource to be compared - /// Boolean - public bool Equals(TextAvailableSource input) - { - if (input == null) - return false; - - return - ( - this.Source == input.Source || - (this.Source != null && - this.Source.Equals(input.Source)) - ) && - ( - this.ValidityStatus == input.ValidityStatus || - (this.ValidityStatus != null && - this.ValidityStatus.Equals(input.ValidityStatus)) - ) && - ( - this.ContainerType == input.ContainerType || - (this.ContainerType != null && - this.ContainerType.Equals(input.ContainerType)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Source != null) - hashCode = hashCode * 59 + this.Source.GetHashCode(); - if (this.ValidityStatus != null) - hashCode = hashCode * 59 + this.ValidityStatus.GetHashCode(); - if (this.ContainerType != null) - hashCode = hashCode * 59 + this.ContainerType.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextDataResult.cs b/src/Regula.DocumentReader.WebClient/Model/TextDataResult.cs index f808835..2b834c0 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextDataResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextDataResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// Text fields extracted from one document source. Contains results of specific source for each provided page. /// - [DataContract] - public partial class TextDataResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "TextDataResult")] + public partial class TextDataResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,16 +41,26 @@ protected TextDataResult() { } /// /// Initializes a new instance of the class. /// - /// docVisualExtendedInfo. - public TextDataResult(DocVisualExtendedInfo docVisualExtendedInfo = default(DocVisualExtendedInfo), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// docVisualExtendedInfo (required). + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.MRZ_TEXT). + public TextDataResult(DocVisualExtendedInfo docVisualExtendedInfo = default(DocVisualExtendedInfo), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.MRZ_TEXT) : base(bufLength, light, listIdx, pageIdx, resultType) { + // to ensure "docVisualExtendedInfo" is required (not null) + if (docVisualExtendedInfo == null) + { + throw new ArgumentNullException("docVisualExtendedInfo is a required property for TextDataResult and cannot be null"); + } this.DocVisualExtendedInfo = docVisualExtendedInfo; } - + /// /// Gets or Sets DocVisualExtendedInfo /// - [DataMember(Name="DocVisualExtendedInfo", EmitDefaultValue=false)] + [DataMember(Name = "DocVisualExtendedInfo", IsRequired = true, EmitDefaultValue = true)] public DocVisualExtendedInfo DocVisualExtendedInfo { get; set; } /// @@ -56,14 +69,14 @@ protected TextDataResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TextDataResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" DocVisualExtendedInfo: ").Append(DocVisualExtendedInfo).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -74,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TextDataResult); - } - - /// - /// Returns true if TextDataResult instances are equal - /// - /// Instance of TextDataResult to be compared - /// Boolean - public bool Equals(TextDataResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.DocVisualExtendedInfo == input.DocVisualExtendedInfo || - (this.DocVisualExtendedInfo != null && - this.DocVisualExtendedInfo.Equals(input.DocVisualExtendedInfo)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.DocVisualExtendedInfo != null) - hashCode = hashCode * 59 + this.DocVisualExtendedInfo.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -121,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextField.cs b/src/Regula.DocumentReader.WebClient/Model/TextField.cs index 5fd5184..70c7f7e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextField.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextField.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,39 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TextField /// - [DataContract] - public partial class TextField : IEquatable, IValidatableObject + [DataContract(Name = "TextField")] + public partial class TextField : IValidatableObject { + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "fieldType", IsRequired = true, EmitDefaultValue = true)] + public TextFieldType FieldType { get; set; } + + /// + /// Gets or Sets Lcid + /// + [DataMember(Name = "lcid", IsRequired = true, EmitDefaultValue = true)] + public LCID Lcid { get; set; } + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public CheckResult Status { get; set; } + + /// + /// Gets or Sets ValidityStatus + /// + [DataMember(Name = "validityStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ValidityStatus { get; set; } + + /// + /// Gets or Sets ComparisonStatus + /// + [DataMember(Name = "comparisonStatus", IsRequired = true, EmitDefaultValue = true)] + public CheckResult ComparisonStatus { get; set; } /// /// Initializes a new instance of the class. /// @@ -40,7 +72,8 @@ protected TextField() { } /// /// fieldType (required). /// Field name. Only use to search values for fields with fieldType=50(other). In general, use fieldType for lookup. (required). - /// lcid. + /// lcid (required). + /// LCID name. /// status (required). /// validityStatus (required). /// comparisonStatus (required). @@ -48,162 +81,84 @@ protected TextField() { } /// valueList (required). /// Validity of all field values for given source. If there are two values on different pages for one field-source pair, then validity also will include logical match checking. If such values do not match, validity will return error. (required). /// comparisonList (required). - public TextField(int fieldType = default(int), string fieldName = default(string), int lcid = default(int), int status = default(int), int validityStatus = default(int), int comparisonStatus = default(int), string value = default(string), List valueList = default(List), List validityList = default(List), List comparisonList = default(List)) + public TextField(TextFieldType fieldType = default(TextFieldType), string fieldName = default(string), LCID lcid = default(LCID), string lcidName = default(string), CheckResult status = default(CheckResult), CheckResult validityStatus = default(CheckResult), CheckResult comparisonStatus = default(CheckResult), string value = default(string), List valueList = default(List), List validityList = default(List), List comparisonList = default(List)) { - // to ensure "fieldType" is required (not null) - if (fieldType == null) - { - throw new InvalidDataException("fieldType is a required property for TextField and cannot be null"); - } - else - { - this.FieldType = fieldType; - } - + this.FieldType = fieldType; // to ensure "fieldName" is required (not null) if (fieldName == null) { - throw new InvalidDataException("fieldName is a required property for TextField and cannot be null"); - } - else - { - this.FieldName = fieldName; - } - - // to ensure "status" is required (not null) - if (status == null) - { - throw new InvalidDataException("status is a required property for TextField and cannot be null"); - } - else - { - this.Status = status; - } - - // to ensure "validityStatus" is required (not null) - if (validityStatus == null) - { - throw new InvalidDataException("validityStatus is a required property for TextField and cannot be null"); - } - else - { - this.ValidityStatus = validityStatus; - } - - // to ensure "comparisonStatus" is required (not null) - if (comparisonStatus == null) - { - throw new InvalidDataException("comparisonStatus is a required property for TextField and cannot be null"); - } - else - { - this.ComparisonStatus = comparisonStatus; + throw new ArgumentNullException("fieldName is a required property for TextField and cannot be null"); } - + this.FieldName = fieldName; + this.Lcid = lcid; + this.Status = status; + this.ValidityStatus = validityStatus; + this.ComparisonStatus = comparisonStatus; // to ensure "value" is required (not null) if (value == null) { - throw new InvalidDataException("value is a required property for TextField and cannot be null"); - } - else - { - this.Value = value; + throw new ArgumentNullException("value is a required property for TextField and cannot be null"); } - + this.Value = value; // to ensure "valueList" is required (not null) if (valueList == null) { - throw new InvalidDataException("valueList is a required property for TextField and cannot be null"); - } - else - { - this.ValueList = valueList; + throw new ArgumentNullException("valueList is a required property for TextField and cannot be null"); } - + this.ValueList = valueList; // to ensure "validityList" is required (not null) if (validityList == null) { - throw new InvalidDataException("validityList is a required property for TextField and cannot be null"); + throw new ArgumentNullException("validityList is a required property for TextField and cannot be null"); } - else - { - this.ValidityList = validityList; - } - + this.ValidityList = validityList; // to ensure "comparisonList" is required (not null) if (comparisonList == null) { - throw new InvalidDataException("comparisonList is a required property for TextField and cannot be null"); - } - else - { - this.ComparisonList = comparisonList; + throw new ArgumentNullException("comparisonList is a required property for TextField and cannot be null"); } - - this.Lcid = lcid; + this.ComparisonList = comparisonList; + this.LcidName = lcidName; } - - /// - /// Gets or Sets FieldType - /// - [DataMember(Name="fieldType", EmitDefaultValue=true)] - public int FieldType { get; set; } /// /// Field name. Only use to search values for fields with fieldType=50(other). In general, use fieldType for lookup. /// /// Field name. Only use to search values for fields with fieldType=50(other). In general, use fieldType for lookup. - [DataMember(Name="fieldName", EmitDefaultValue=true)] + [DataMember(Name = "fieldName", IsRequired = true, EmitDefaultValue = true)] public string FieldName { get; set; } /// - /// Gets or Sets Lcid - /// - [DataMember(Name="lcid", EmitDefaultValue=false)] - public int Lcid { get; set; } - - /// - /// Gets or Sets Status - /// - [DataMember(Name="status", EmitDefaultValue=true)] - public int Status { get; set; } - - /// - /// Gets or Sets ValidityStatus - /// - [DataMember(Name="validityStatus", EmitDefaultValue=true)] - public int ValidityStatus { get; set; } - - /// - /// Gets or Sets ComparisonStatus + /// LCID name /// - [DataMember(Name="comparisonStatus", EmitDefaultValue=true)] - public int ComparisonStatus { get; set; } + /// LCID name + [DataMember(Name = "lcidName", EmitDefaultValue = false)] + public string? LcidName { get; set; } /// /// The most confidence value, selected from valueList /// /// The most confidence value, selected from valueList - [DataMember(Name="value", EmitDefaultValue=true)] + [DataMember(Name = "value", IsRequired = true, EmitDefaultValue = true)] public string Value { get; set; } /// /// Gets or Sets ValueList /// - [DataMember(Name="valueList", EmitDefaultValue=true)] + [DataMember(Name = "valueList", IsRequired = true, EmitDefaultValue = true)] public List ValueList { get; set; } /// /// Validity of all field values for given source. If there are two values on different pages for one field-source pair, then validity also will include logical match checking. If such values do not match, validity will return error. /// /// Validity of all field values for given source. If there are two values on different pages for one field-source pair, then validity also will include logical match checking. If such values do not match, validity will return error. - [DataMember(Name="validityList", EmitDefaultValue=true)] + [DataMember(Name = "validityList", IsRequired = true, EmitDefaultValue = true)] public List ValidityList { get; set; } /// /// Gets or Sets ComparisonList /// - [DataMember(Name="comparisonList", EmitDefaultValue=true)] + [DataMember(Name = "comparisonList", IsRequired = true, EmitDefaultValue = true)] public List ComparisonList { get; set; } /// @@ -212,11 +167,12 @@ protected TextField() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TextField {\n"); sb.Append(" FieldType: ").Append(FieldType).Append("\n"); sb.Append(" FieldName: ").Append(FieldName).Append("\n"); sb.Append(" Lcid: ").Append(Lcid).Append("\n"); + sb.Append(" LcidName: ").Append(LcidName).Append("\n"); sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append(" ValidityStatus: ").Append(ValidityStatus).Append("\n"); sb.Append(" ComparisonStatus: ").Append(ComparisonStatus).Append("\n"); @@ -227,7 +183,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -237,121 +193,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TextField); - } - - /// - /// Returns true if TextField instances are equal - /// - /// Instance of TextField to be compared - /// Boolean - public bool Equals(TextField input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.FieldName == input.FieldName || - (this.FieldName != null && - this.FieldName.Equals(input.FieldName)) - ) && - ( - this.Lcid == input.Lcid || - (this.Lcid != null && - this.Lcid.Equals(input.Lcid)) - ) && - ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ) && - ( - this.ValidityStatus == input.ValidityStatus || - (this.ValidityStatus != null && - this.ValidityStatus.Equals(input.ValidityStatus)) - ) && - ( - this.ComparisonStatus == input.ComparisonStatus || - (this.ComparisonStatus != null && - this.ComparisonStatus.Equals(input.ComparisonStatus)) - ) && - ( - this.Value == input.Value || - (this.Value != null && - this.Value.Equals(input.Value)) - ) && - ( - this.ValueList == input.ValueList || - this.ValueList != null && - input.ValueList != null && - this.ValueList.SequenceEqual(input.ValueList) - ) && - ( - this.ValidityList == input.ValidityList || - this.ValidityList != null && - input.ValidityList != null && - this.ValidityList.SequenceEqual(input.ValidityList) - ) && - ( - this.ComparisonList == input.ComparisonList || - this.ComparisonList != null && - input.ComparisonList != null && - this.ComparisonList.SequenceEqual(input.ComparisonList) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.FieldName != null) - hashCode = hashCode * 59 + this.FieldName.GetHashCode(); - if (this.Lcid != null) - hashCode = hashCode * 59 + this.Lcid.GetHashCode(); - if (this.Status != null) - hashCode = hashCode * 59 + this.Status.GetHashCode(); - if (this.ValidityStatus != null) - hashCode = hashCode * 59 + this.ValidityStatus.GetHashCode(); - if (this.ComparisonStatus != null) - hashCode = hashCode * 59 + this.ComparisonStatus.GetHashCode(); - if (this.Value != null) - hashCode = hashCode * 59 + this.Value.GetHashCode(); - if (this.ValueList != null) - hashCode = hashCode * 59 + this.ValueList.GetHashCode(); - if (this.ValidityList != null) - hashCode = hashCode * 59 + this.ValidityList.GetHashCode(); - if (this.ComparisonList != null) - hashCode = hashCode * 59 + this.ComparisonList.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextFieldType.cs b/src/Regula.DocumentReader.WebClient/Model/TextFieldType.cs index 71f5602..10397b4 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextFieldType.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextFieldType.cs @@ -1,1815 +1,3255 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class TextFieldType + /// + /// Defines TextFieldType + /// + public enum TextFieldType { + /// + /// Enum DOCUMENT_CLASS_CODE for value: 0 + /// + DOCUMENT_CLASS_CODE = 0, + + /// + /// Enum ISSUING_STATE_CODE for value: 1 + /// + ISSUING_STATE_CODE = 1, + + /// + /// Enum DOCUMENT_NUMBER for value: 2 + /// + DOCUMENT_NUMBER = 2, + + /// + /// Enum DATE_OF_EXPIRY for value: 3 + /// + DATE_OF_EXPIRY = 3, + + /// + /// Enum DATE_OF_ISSUE for value: 4 + /// + DATE_OF_ISSUE = 4, + + /// + /// Enum DATE_OF_BIRTH for value: 5 + /// + DATE_OF_BIRTH = 5, + + /// + /// Enum PLACE_OF_BIRTH for value: 6 + /// + PLACE_OF_BIRTH = 6, + + /// + /// Enum PERSONAL_NUMBER for value: 7 + /// + PERSONAL_NUMBER = 7, + + /// + /// Enum SURNAME for value: 8 + /// + SURNAME = 8, + + /// + /// Enum GIVEN_NAMES for value: 9 + /// + GIVEN_NAMES = 9, + + /// + /// Enum MOTHERS_NAME for value: 10 + /// + MOTHERS_NAME = 10, + + /// + /// Enum NATIONALITY for value: 11 + /// + NATIONALITY = 11, + + /// + /// Enum SEX for value: 12 + /// + SEX = 12, + + /// + /// Enum HEIGHT for value: 13 + /// + HEIGHT = 13, + + /// + /// Enum WEIGHT for value: 14 + /// + WEIGHT = 14, + + /// + /// Enum EYES_COLOR for value: 15 + /// + EYES_COLOR = 15, + + /// + /// Enum HAIR_COLOR for value: 16 + /// + HAIR_COLOR = 16, + + /// + /// Enum ADDRESS for value: 17 + /// + ADDRESS = 17, + + /// + /// Enum DONOR for value: 18 + /// + DONOR = 18, + + /// + /// Enum SOCIAL_SECURITY_NUMBER for value: 19 + /// + SOCIAL_SECURITY_NUMBER = 19, + + /// + /// Enum DL_CLASS for value: 20 + /// + DL_CLASS = 20, + + /// + /// Enum DL_ENDORSED for value: 21 + /// + DL_ENDORSED = 21, + + /// + /// Enum DL_RESTRICTION_CODE for value: 22 + /// + DL_RESTRICTION_CODE = 22, + + /// + /// Enum DL_UNDER_21_DATE for value: 23 + /// + DL_UNDER_21_DATE = 23, + + /// + /// Enum AUTHORITY for value: 24 + /// + AUTHORITY = 24, + + /// + /// Enum SURNAME_AND_GIVEN_NAMES for value: 25 + /// + SURNAME_AND_GIVEN_NAMES = 25, + + /// + /// Enum NATIONALITY_CODE for value: 26 + /// + NATIONALITY_CODE = 26, + + /// + /// Enum PASSPORT_NUMBER for value: 27 + /// + PASSPORT_NUMBER = 27, + + /// + /// Enum INVITATION_NUMBER for value: 28 + /// + INVITATION_NUMBER = 28, + + /// + /// Enum VISA_ID for value: 29 + /// + VISA_ID = 29, + + /// + /// Enum VISA_CLASS for value: 30 + /// + VISA_CLASS = 30, + + /// + /// Enum VISA_SUBCLASS for value: 31 + /// + VISA_SUBCLASS = 31, + + /// + /// Enum MRZ_TYPE for value: 35 + /// + MRZ_TYPE = 35, + + /// + /// Enum OPTIONAL_DATA for value: 36 + /// + OPTIONAL_DATA = 36, + + /// + /// Enum DOCUMENT_CLASS_NAME for value: 37 + /// + DOCUMENT_CLASS_NAME = 37, + + /// + /// Enum ISSUING_STATE_NAME for value: 38 + /// + ISSUING_STATE_NAME = 38, + + /// + /// Enum PLACE_OF_ISSUE for value: 39 + /// + PLACE_OF_ISSUE = 39, + + /// + /// Enum DOCUMENT_NUMBER_CHECKSUM for value: 40 + /// + DOCUMENT_NUMBER_CHECKSUM = 40, + + /// + /// Enum DATE_OF_BIRTH_CHECKSUM for value: 41 + /// + DATE_OF_BIRTH_CHECKSUM = 41, + + /// + /// Enum DATE_OF_EXPIRY_CHECKSUM for value: 42 + /// + DATE_OF_EXPIRY_CHECKSUM = 42, + + /// + /// Enum PERSONAL_NUMBER_CHECKSUM for value: 43 + /// + PERSONAL_NUMBER_CHECKSUM = 43, + + /// + /// Enum FINAL_CHECKSUM for value: 44 + /// + FINAL_CHECKSUM = 44, + + /// + /// Enum PASSPORT_NUMBER_CHECKSUM for value: 45 + /// + PASSPORT_NUMBER_CHECKSUM = 45, + + /// + /// Enum INVITATION_NUMBER_CHECKSUM for value: 46 + /// + INVITATION_NUMBER_CHECKSUM = 46, + + /// + /// Enum VISA_ID_CHECKSUM for value: 47 + /// + VISA_ID_CHECKSUM = 47, + + /// + /// Enum SURNAME_AND_GIVEN_NAMES_CHECKSUM for value: 48 + /// + SURNAME_AND_GIVEN_NAMES_CHECKSUM = 48, + + /// + /// Enum VISA_VALID_UNTIL_CHECKSUM for value: 49 + /// + VISA_VALID_UNTIL_CHECKSUM = 49, + + /// + /// Enum OTHER for value: 50 + /// + OTHER = 50, + + /// + /// Enum MRZ_STRINGS for value: 51 + /// + MRZ_STRINGS = 51, + + /// + /// Enum NAME_SUFFIX for value: 52 + /// + NAME_SUFFIX = 52, + + /// + /// Enum NAME_PREFIX for value: 53 + /// + NAME_PREFIX = 53, + + /// + /// Enum DATE_OF_ISSUE_CHECKSUM for value: 54 + /// + DATE_OF_ISSUE_CHECKSUM = 54, + + /// + /// Enum DATE_OF_ISSUE_CHECK_DIGIT for value: 55 + /// + DATE_OF_ISSUE_CHECK_DIGIT = 55, + + /// + /// Enum DOCUMENT_SERIES for value: 56 + /// + DOCUMENT_SERIES = 56, + + /// + /// Enum REG_CERT_REG_NUMBER for value: 57 + /// + REG_CERT_REG_NUMBER = 57, + + /// + /// Enum REG_CERT_CAR_MODEL for value: 58 + /// + REG_CERT_CAR_MODEL = 58, + + /// + /// Enum REG_CERT_CAR_COLOR for value: 59 + /// + REG_CERT_CAR_COLOR = 59, + + /// + /// Enum REG_CERT_BODY_NUMBER for value: 60 + /// + REG_CERT_BODY_NUMBER = 60, + + /// + /// Enum REG_CERT_CAR_TYPE for value: 61 + /// + REG_CERT_CAR_TYPE = 61, + + /// + /// Enum REG_CERT_MAX_WEIGHT for value: 62 + /// + REG_CERT_MAX_WEIGHT = 62, + + /// + /// Enum REG_CERT_WEIGHT for value: 63 + /// + REG_CERT_WEIGHT = 63, + + /// + /// Enum ADDRESS_AREA for value: 64 + /// + ADDRESS_AREA = 64, + + /// + /// Enum ADDRESS_STATE for value: 65 + /// + ADDRESS_STATE = 65, + + /// + /// Enum ADDRESS_BUILDING for value: 66 + /// + ADDRESS_BUILDING = 66, + + /// + /// Enum ADDRESS_HOUSE for value: 67 + /// + ADDRESS_HOUSE = 67, + + /// + /// Enum ADDRESS_FLAT for value: 68 + /// + ADDRESS_FLAT = 68, + + /// + /// Enum PLACE_OF_REGISTRATION for value: 69 + /// + PLACE_OF_REGISTRATION = 69, + + /// + /// Enum DATE_OF_REGISTRATION for value: 70 + /// + DATE_OF_REGISTRATION = 70, + + /// + /// Enum RESIDENT_FROM for value: 71 + /// + RESIDENT_FROM = 71, + + /// + /// Enum RESIDENT_UNTIL for value: 72 + /// + RESIDENT_UNTIL = 72, + + /// + /// Enum AUTHORITY_CODE for value: 73 + /// + AUTHORITY_CODE = 73, + + /// + /// Enum PLACE_OF_BIRTH_AREA for value: 74 + /// + PLACE_OF_BIRTH_AREA = 74, + + /// + /// Enum PLACE_OF_BIRTH_STATE_CODE for value: 75 + /// + PLACE_OF_BIRTH_STATE_CODE = 75, + + /// + /// Enum ADDRESS_STREET for value: 76 + /// + ADDRESS_STREET = 76, + + /// + /// Enum ADDRESS_CITY for value: 77 + /// + ADDRESS_CITY = 77, + + /// + /// Enum ADDRESS_JURISDICTION_CODE for value: 78 + /// + ADDRESS_JURISDICTION_CODE = 78, + + /// + /// Enum ADDRESS_POSTAL_CODE for value: 79 + /// + ADDRESS_POSTAL_CODE = 79, + + /// + /// Enum DOCUMENT_NUMBER_CHECK_DIGIT for value: 80 + /// + DOCUMENT_NUMBER_CHECK_DIGIT = 80, + + /// + /// Enum DATE_OF_BIRTH_CHECK_DIGIT for value: 81 + /// + DATE_OF_BIRTH_CHECK_DIGIT = 81, + + /// + /// Enum DATE_OF_EXPIRY_CHECK_DIGIT for value: 82 + /// + DATE_OF_EXPIRY_CHECK_DIGIT = 82, + + /// + /// Enum PERSONAL_NUMBER_CHECK_DIGIT for value: 83 + /// + PERSONAL_NUMBER_CHECK_DIGIT = 83, + + /// + /// Enum FINAL_CHECK_DIGIT for value: 84 + /// + FINAL_CHECK_DIGIT = 84, + + /// + /// Enum PASSPORT_NUMBER_CHECK_DIGIT for value: 85 + /// + PASSPORT_NUMBER_CHECK_DIGIT = 85, + + /// + /// Enum INVITATION_NUMBER_CHECK_DIGIT for value: 86 + /// + INVITATION_NUMBER_CHECK_DIGIT = 86, + + /// + /// Enum VISA_ID_CHECK_DIGIT for value: 87 + /// + VISA_ID_CHECK_DIGIT = 87, + + /// + /// Enum SURNAME_AND_GIVEN_NAMES_CHECK_DIGIT for value: 88 + /// + SURNAME_AND_GIVEN_NAMES_CHECK_DIGIT = 88, + + /// + /// Enum VISA_VALID_UNTIL_CHECK_DIGIT for value: 89 + /// + VISA_VALID_UNTIL_CHECK_DIGIT = 89, + + /// + /// Enum PERMIT_DL_CLASS for value: 90 + /// + PERMIT_DL_CLASS = 90, + + /// + /// Enum PERMIT_DATE_OF_EXPIRY for value: 91 + /// + PERMIT_DATE_OF_EXPIRY = 91, + + /// + /// Enum PERMIT_IDENTIFIER for value: 92 + /// + PERMIT_IDENTIFIER = 92, + + /// + /// Enum PERMIT_DATE_OF_ISSUE for value: 93 + /// + PERMIT_DATE_OF_ISSUE = 93, + + /// + /// Enum PERMIT_RESTRICTION_CODE for value: 94 + /// + PERMIT_RESTRICTION_CODE = 94, + + /// + /// Enum PERMIT_ENDORSED for value: 95 + /// + PERMIT_ENDORSED = 95, + + /// + /// Enum ISSUE_TIMESTAMP for value: 96 + /// + ISSUE_TIMESTAMP = 96, + + /// + /// Enum NUMBER_OF_DUPLICATES for value: 97 + /// + NUMBER_OF_DUPLICATES = 97, + + /// + /// Enum MEDICAL_INDICATOR_CODES for value: 98 + /// + MEDICAL_INDICATOR_CODES = 98, + + /// + /// Enum NON_RESIDENT_INDICATOR for value: 99 + /// + NON_RESIDENT_INDICATOR = 99, + + /// + /// Enum VISA_TYPE for value: 100 + /// + VISA_TYPE = 100, + + /// + /// Enum VISA_VALID_FROM for value: 101 + /// + VISA_VALID_FROM = 101, + + /// + /// Enum VISA_VALID_UNTIL for value: 102 + /// + VISA_VALID_UNTIL = 102, + + /// + /// Enum DURATION_OF_STAY for value: 103 + /// + DURATION_OF_STAY = 103, + + /// + /// Enum NUMBER_OF_ENTRIES for value: 104 + /// + NUMBER_OF_ENTRIES = 104, + + /// + /// Enum DAY for value: 105 + /// + DAY = 105, + + /// + /// Enum MONTH for value: 106 + /// + MONTH = 106, + + /// + /// Enum YEAR for value: 107 + /// + YEAR = 107, + + /// + /// Enum UNIQUE_CUSTOMER_IDENTIFIER for value: 108 + /// + UNIQUE_CUSTOMER_IDENTIFIER = 108, + + /// + /// Enum COMMERCIAL_VEHICLE_CODES for value: 109 + /// + COMMERCIAL_VEHICLE_CODES = 109, + + /// + /// Enum AKA_DATE_OF_BIRTH for value: 110 + /// + AKA_DATE_OF_BIRTH = 110, + + /// + /// Enum AKA_SOCIAL_SECURITY_NUMBER for value: 111 + /// + AKA_SOCIAL_SECURITY_NUMBER = 111, + + /// + /// Enum AKA_SURNAME for value: 112 + /// + AKA_SURNAME = 112, + + /// + /// Enum AKA_GIVEN_NAMES for value: 113 + /// + AKA_GIVEN_NAMES = 113, + + /// + /// Enum AKA_NAME_SUFFIX for value: 114 + /// + AKA_NAME_SUFFIX = 114, + + /// + /// Enum AKA_NAME_PREFIX for value: 115 + /// + AKA_NAME_PREFIX = 115, + + /// + /// Enum MAILING_ADDRESS_STREET for value: 116 + /// + MAILING_ADDRESS_STREET = 116, + + /// + /// Enum MAILING_ADDRESS_CITY for value: 117 + /// + MAILING_ADDRESS_CITY = 117, + + /// + /// Enum MAILING_ADDRESS_JURISDICTION_CODE for value: 118 + /// + MAILING_ADDRESS_JURISDICTION_CODE = 118, + + /// + /// Enum MAILING_ADDRESS_POSTAL_CODE for value: 119 + /// + MAILING_ADDRESS_POSTAL_CODE = 119, + + /// + /// Enum AUDIT_INFORMATION for value: 120 + /// + AUDIT_INFORMATION = 120, + + /// + /// Enum INVENTORY_NUMBER for value: 121 + /// + INVENTORY_NUMBER = 121, + + /// + /// Enum RACE_ETHNICITY for value: 122 + /// + RACE_ETHNICITY = 122, + + /// + /// Enum JURISDICTION_VEHICLE_CLASS for value: 123 + /// + JURISDICTION_VEHICLE_CLASS = 123, + + /// + /// Enum JURISDICTION_ENDORSEMENT_CODE for value: 124 + /// + JURISDICTION_ENDORSEMENT_CODE = 124, + + /// + /// Enum JURISDICTION_RESTRICTION_CODE for value: 125 + /// + JURISDICTION_RESTRICTION_CODE = 125, + + /// + /// Enum FAMILY_NAME for value: 126 + /// + FAMILY_NAME = 126, + + /// + /// Enum GIVEN_NAMES_RUS for value: 127 + /// + GIVEN_NAMES_RUS = 127, + + /// + /// Enum VISA_ID_RUS for value: 128 + /// + VISA_ID_RUS = 128, + + /// + /// Enum FATHERS_NAME for value: 129 + /// + FATHERS_NAME = 129, + + /// + /// Enum FATHERS_NAME_RUS for value: 130 + /// + FATHERS_NAME_RUS = 130, + + /// + /// Enum SURNAME_AND_GIVEN_NAMES_RUS for value: 131 + /// + SURNAME_AND_GIVEN_NAMES_RUS = 131, + + /// + /// Enum PLACE_OF_BIRTH_RUS for value: 132 + /// + PLACE_OF_BIRTH_RUS = 132, + + /// + /// Enum AUTHORITY_RUS for value: 133 + /// + AUTHORITY_RUS = 133, + + /// + /// Enum ISSUING_STATE_CODE_NUMERIC for value: 134 + /// + ISSUING_STATE_CODE_NUMERIC = 134, + + /// + /// Enum NATIONALITY_CODE_NUMERIC for value: 135 + /// + NATIONALITY_CODE_NUMERIC = 135, + + /// + /// Enum ENGINE_POWER for value: 136 + /// + ENGINE_POWER = 136, + + /// + /// Enum ENGINE_VOLUME for value: 137 + /// + ENGINE_VOLUME = 137, + + /// + /// Enum CHASSIS_NUMBER for value: 138 + /// + CHASSIS_NUMBER = 138, + + /// + /// Enum ENGINE_NUMBER for value: 139 + /// + ENGINE_NUMBER = 139, + + /// + /// Enum ENGINE_MODEL for value: 140 + /// + ENGINE_MODEL = 140, + + /// + /// Enum VEHICLE_CATEGORY for value: 141 + /// + VEHICLE_CATEGORY = 141, + + /// + /// Enum IDENTITY_CARD_NUMBER for value: 142 + /// + IDENTITY_CARD_NUMBER = 142, + + /// + /// Enum CONTROL_NUMBER for value: 143 + /// + CONTROL_NUMBER = 143, + + /// + /// Enum PARENTS_GIVEN_NAMES for value: 144 + /// + PARENTS_GIVEN_NAMES = 144, + + /// + /// Enum SECOND_SURNAME for value: 145 + /// + SECOND_SURNAME = 145, + + /// + /// Enum MIDDLE_NAME for value: 146 + /// + MIDDLE_NAME = 146, + + /// + /// Enum REG_CERT_VIN for value: 147 + /// + REG_CERT_VIN = 147, + + /// + /// Enum REG_CERT_VIN_CHECK_DIGIT for value: 148 + /// + REG_CERT_VIN_CHECK_DIGIT = 148, + + /// + /// Enum REG_CERT_VIN_CHECKSUM for value: 149 + /// + REG_CERT_VIN_CHECKSUM = 149, + + /// + /// Enum LINE_1_CHECK_DIGIT for value: 150 + /// + LINE_1_CHECK_DIGIT = 150, + + /// + /// Enum LINE_2_CHECK_DIGIT for value: 151 + /// + LINE_2_CHECK_DIGIT = 151, + + /// + /// Enum LINE_3_CHECK_DIGIT for value: 152 + /// + LINE_3_CHECK_DIGIT = 152, + + /// + /// Enum LINE_1_CHECKSUM for value: 153 + /// + LINE_1_CHECKSUM = 153, + + /// + /// Enum LINE_2_CHECKSUM for value: 154 + /// + LINE_2_CHECKSUM = 154, + + /// + /// Enum LINE_3_CHECKSUM for value: 155 + /// + LINE_3_CHECKSUM = 155, + + /// + /// Enum REG_CERT_REG_NUMBER_CHECK_DIGIT for value: 156 + /// + REG_CERT_REG_NUMBER_CHECK_DIGIT = 156, + + /// + /// Enum REG_CERT_REG_NUMBER_CHECKSUM for value: 157 + /// + REG_CERT_REG_NUMBER_CHECKSUM = 157, + + /// + /// Enum REG_CERT_VEHICLE_ITS_CODE for value: 158 + /// + REG_CERT_VEHICLE_ITS_CODE = 158, + + /// + /// Enum CARD_ACCESS_NUMBER for value: 159 + /// + CARD_ACCESS_NUMBER = 159, + + /// + /// Enum MARITAL_STATUS for value: 160 + /// + MARITAL_STATUS = 160, + + /// + /// Enum COMPANY_NAME for value: 161 + /// + COMPANY_NAME = 161, + + /// + /// Enum SPECIAL_NOTES for value: 162 + /// + SPECIAL_NOTES = 162, + + /// + /// Enum SURNAME_OF_SPOUSE for value: 163 + /// + SURNAME_OF_SPOUSE = 163, + + /// + /// Enum TRACKING_NUMBER for value: 164 + /// + TRACKING_NUMBER = 164, + + /// + /// Enum BOOKLET_NUMBER for value: 165 + /// + BOOKLET_NUMBER = 165, + + /// + /// Enum CHILDREN for value: 166 + /// + CHILDREN = 166, + + /// + /// Enum COPY for value: 167 + /// + COPY = 167, + + /// + /// Enum SERIAL_NUMBER for value: 168 + /// + SERIAL_NUMBER = 168, + + /// + /// Enum DOSSIER_NUMBER for value: 169 + /// + DOSSIER_NUMBER = 169, + + /// + /// Enum AKA_SURNAME_AND_GIVEN_NAMES for value: 170 + /// + AKA_SURNAME_AND_GIVEN_NAMES = 170, + + /// + /// Enum TERRITORIAL_VALIDITY for value: 171 + /// + TERRITORIAL_VALIDITY = 171, + + /// + /// Enum MRZ_STRINGS_WITH_CORRECT_CHECK_SUMS for value: 172 + /// + MRZ_STRINGS_WITH_CORRECT_CHECK_SUMS = 172, + + /// + /// Enum DL_CDL_RESTRICTION_CODE for value: 173 + /// + DL_CDL_RESTRICTION_CODE = 173, + + /// + /// Enum DL_UNDER_18_DATE for value: 174 + /// + DL_UNDER_18_DATE = 174, + + /// + /// Enum DL_RECORD_CREATED for value: 175 + /// + DL_RECORD_CREATED = 175, + + /// + /// Enum DL_DUPLICATE_DATE for value: 176 + /// + DL_DUPLICATE_DATE = 176, + + /// + /// Enum DL_ISSUE_TYPE for value: 177 + /// + DL_ISSUE_TYPE = 177, + + /// + /// Enum MILITARY_BOOK_NUMBER for value: 178 + /// + MILITARY_BOOK_NUMBER = 178, + + /// + /// Enum DESTINATION for value: 179 + /// + DESTINATION = 179, + + /// + /// Enum BLOOD_GROUP for value: 180 + /// + BLOOD_GROUP = 180, + + /// + /// Enum SEQUENCE_NUMBER for value: 181 + /// + SEQUENCE_NUMBER = 181, + + /// + /// Enum REG_CERT_BODY_TYPE for value: 182 + /// + REG_CERT_BODY_TYPE = 182, + + /// + /// Enum REG_CERT_CAR_MARK for value: 183 + /// + REG_CERT_CAR_MARK = 183, + + /// + /// Enum TRANSACTION_NUMBER for value: 184 + /// + TRANSACTION_NUMBER = 184, + + /// + /// Enum AGE for value: 185 + /// + AGE = 185, + + /// + /// Enum FOLIO_NUMBER for value: 186 + /// + FOLIO_NUMBER = 186, + + /// + /// Enum VOTER_KEY for value: 187 + /// + VOTER_KEY = 187, + + /// + /// Enum ADDRESS_MUNICIPALITY for value: 188 + /// + ADDRESS_MUNICIPALITY = 188, + + /// + /// Enum ADDRESS_LOCATION for value: 189 + /// + ADDRESS_LOCATION = 189, + + /// + /// Enum SECTION for value: 190 + /// + SECTION = 190, + + /// + /// Enum OCR_NUMBER for value: 191 + /// + OCR_NUMBER = 191, + + /// + /// Enum FEDERAL_ELECTIONS for value: 192 + /// + FEDERAL_ELECTIONS = 192, + + /// + /// Enum REFERENCE_NUMBER for value: 193 + /// + REFERENCE_NUMBER = 193, + + /// + /// Enum OPTIONAL_DATA_CHECKSUM for value: 194 + /// + OPTIONAL_DATA_CHECKSUM = 194, + + /// + /// Enum OPTIONAL_DATA_CHECK_DIGIT for value: 195 + /// + OPTIONAL_DATA_CHECK_DIGIT = 195, + + /// + /// Enum VISA_NUMBER for value: 196 + /// + VISA_NUMBER = 196, + + /// + /// Enum VISA_NUMBER_CHECKSUM for value: 197 + /// + VISA_NUMBER_CHECKSUM = 197, + + /// + /// Enum VISA_NUMBER_CHECK_DIGIT for value: 198 + /// + VISA_NUMBER_CHECK_DIGIT = 198, + + /// + /// Enum VOTER for value: 199 + /// + VOTER = 199, + + /// + /// Enum PREVIOUS_TYPE for value: 200 + /// + PREVIOUS_TYPE = 200, + + /// + /// Enum FIELD_FROM_MRZ for value: 220 + /// + FIELD_FROM_MRZ = 220, + + /// + /// Enum CURRENT_DATE for value: 221 + /// + CURRENT_DATE = 221, + + /// + /// Enum STATUS_DATE_OF_EXPIRY for value: 251 + /// + STATUS_DATE_OF_EXPIRY = 251, + + /// + /// Enum BANKNOTE_NUMBER for value: 252 + /// + BANKNOTE_NUMBER = 252, + + /// + /// Enum CSC_CODE for value: 253 + /// + CSC_CODE = 253, + + /// + /// Enum ARTISTIC_NAME for value: 254 + /// + ARTISTIC_NAME = 254, + + /// + /// Enum ACADEMIC_TITLE for value: 255 + /// + ACADEMIC_TITLE = 255, + + /// + /// Enum ADDRESS_COUNTRY for value: 256 + /// + ADDRESS_COUNTRY = 256, + + /// + /// Enum ADDRESS_ZIP_CODE for value: 257 + /// + ADDRESS_ZIP_CODE = 257, + + /// + /// Enum E_ID_RESIDENCE_PERMIT_1 for value: 258 + /// + E_ID_RESIDENCE_PERMIT_1 = 258, + + /// + /// Enum E_ID_RESIDENCE_PERMIT_2 for value: 259 + /// + E_ID_RESIDENCE_PERMIT_2 = 259, + + /// + /// Enum E_ID_PLACE_OF_BIRTH_STREET for value: 260 + /// + E_ID_PLACE_OF_BIRTH_STREET = 260, + + /// + /// Enum E_ID_PLACE_OF_BIRTH_CITY for value: 261 + /// + E_ID_PLACE_OF_BIRTH_CITY = 261, + + /// + /// Enum E_ID_PLACE_OF_BIRTH_STATE for value: 262 + /// + E_ID_PLACE_OF_BIRTH_STATE = 262, + + /// + /// Enum E_ID_PLACE_OF_BIRTH_COUNTRY for value: 263 + /// + E_ID_PLACE_OF_BIRTH_COUNTRY = 263, + + /// + /// Enum E_ID_PLACE_OF_BIRTH_ZIP_CODE for value: 264 + /// + E_ID_PLACE_OF_BIRTH_ZIP_CODE = 264, + + /// + /// Enum CDL_CLASS for value: 265 + /// + CDL_CLASS = 265, + + /// + /// Enum DL_UNDER_19_DATE for value: 266 + /// + DL_UNDER_19_DATE = 266, + + /// + /// Enum WEIGHT_POUNDS for value: 267 + /// + WEIGHT_POUNDS = 267, + + /// + /// Enum LIMITED_DURATION_DOCUMENT_INDICATOR for value: 268 + /// + LIMITED_DURATION_DOCUMENT_INDICATOR = 268, + + /// + /// Enum ENDORSEMENT_EXPIRATION_DATE for value: 269 + /// + ENDORSEMENT_EXPIRATION_DATE = 269, + + /// + /// Enum REVISION_DATE for value: 270 + /// + REVISION_DATE = 270, + + /// + /// Enum COMPLIANCE_TYPE for value: 271 + /// + COMPLIANCE_TYPE = 271, + + /// + /// Enum FAMILY_NAME_TRUNCATION for value: 272 + /// + FAMILY_NAME_TRUNCATION = 272, + + /// + /// Enum FIRST_NAME_TRUNCATION for value: 273 + /// + FIRST_NAME_TRUNCATION = 273, + + /// + /// Enum MIDDLE_NAME_TRUNCATION for value: 274 + /// + MIDDLE_NAME_TRUNCATION = 274, + + /// + /// Enum EXAM_DATE for value: 275 + /// + EXAM_DATE = 275, + + /// + /// Enum ORGANIZATION for value: 276 + /// + ORGANIZATION = 276, + + /// + /// Enum DEPARTMENT for value: 277 + /// + DEPARTMENT = 277, + + /// + /// Enum PAY_GRADE for value: 278 + /// + PAY_GRADE = 278, + + /// + /// Enum RANK for value: 279 + /// + RANK = 279, + + /// + /// Enum BENEFITS_NUMBER for value: 280 + /// + BENEFITS_NUMBER = 280, + + /// + /// Enum SPONSOR_SERVICE for value: 281 + /// + SPONSOR_SERVICE = 281, + + /// + /// Enum SPONSOR_STATUS for value: 282 + /// + SPONSOR_STATUS = 282, + + /// + /// Enum SPONSOR for value: 283 + /// + SPONSOR = 283, + + /// + /// Enum RELATIONSHIP for value: 284 + /// + RELATIONSHIP = 284, + + /// + /// Enum USCIS for value: 285 + /// + USCIS = 285, + + /// + /// Enum CATEGORY for value: 286 + /// + CATEGORY = 286, + + /// + /// Enum CONDITIONS for value: 287 + /// + CONDITIONS = 287, + + /// + /// Enum IDENTIFIER for value: 288 + /// + IDENTIFIER = 288, + + /// + /// Enum CONFIGURATION for value: 289 + /// + CONFIGURATION = 289, + + /// + /// Enum DISCRETIONARY_DATA for value: 290 + /// + DISCRETIONARY_DATA = 290, + + /// + /// Enum LINE_1_OPTIONAL_DATA for value: 291 + /// + LINE_1_OPTIONAL_DATA = 291, + + /// + /// Enum LINE_2_OPTIONAL_DATA for value: 292 + /// + LINE_2_OPTIONAL_DATA = 292, + + /// + /// Enum LINE_3_OPTIONAL_DATA for value: 293 + /// + LINE_3_OPTIONAL_DATA = 293, + + /// + /// Enum EQV_CODE for value: 294 + /// + EQV_CODE = 294, + + /// + /// Enum ALT_CODE for value: 295 + /// + ALT_CODE = 295, + + /// + /// Enum BINARY_CODE for value: 296 + /// + BINARY_CODE = 296, + + /// + /// Enum PSEUDO_CODE for value: 297 + /// + PSEUDO_CODE = 297, + + /// + /// Enum FEE for value: 298 + /// + FEE = 298, + + /// + /// Enum STAMP_NUMBER for value: 299 + /// + STAMP_NUMBER = 299, + + /// + /// Enum SBH_SECURITY_OPTIONS for value: 300 + /// + SBH_SECURITY_OPTIONS = 300, + + /// + /// Enum SBH_INTEGRITY_OPTIONS for value: 301 + /// + SBH_INTEGRITY_OPTIONS = 301, + + /// + /// Enum DATE_OF_CREATION for value: 302 + /// + DATE_OF_CREATION = 302, + + /// + /// Enum VALIDITY_PERIOD for value: 303 + /// + VALIDITY_PERIOD = 303, + + /// + /// Enum PATRON_HEADER_VERSION for value: 304 + /// + PATRON_HEADER_VERSION = 304, + + /// + /// Enum BDB_TYPE for value: 305 + /// + BDB_TYPE = 305, + + /// + /// Enum BIOMETRIC_TYPE for value: 306 + /// + BIOMETRIC_TYPE = 306, + + /// + /// Enum BIOMETRIC_SUBTYPE for value: 307 + /// + BIOMETRIC_SUBTYPE = 307, + + /// + /// Enum BIOMETRIC_PRODUCT_ID for value: 308 + /// + BIOMETRIC_PRODUCT_ID = 308, + + /// + /// Enum BIOMETRIC_FORMAT_OWNER for value: 309 + /// + BIOMETRIC_FORMAT_OWNER = 309, + + /// + /// Enum BIOMETRIC_FORMAT_TYPE for value: 310 + /// + BIOMETRIC_FORMAT_TYPE = 310, + + /// + /// Enum PHONE for value: 311 + /// + PHONE = 311, + + /// + /// Enum PROFESSION for value: 312 + /// + PROFESSION = 312, + + /// + /// Enum TITLE for value: 313 + /// + TITLE = 313, + + /// + /// Enum PERSONAL_SUMMARY for value: 314 + /// + PERSONAL_SUMMARY = 314, + + /// + /// Enum OTHER_VALID_ID for value: 315 + /// + OTHER_VALID_ID = 315, + + /// + /// Enum CUSTODY_INFO for value: 316 + /// + CUSTODY_INFO = 316, + + /// + /// Enum OTHER_NAME for value: 317 + /// + OTHER_NAME = 317, + + /// + /// Enum OBSERVATIONS for value: 318 + /// + OBSERVATIONS = 318, + + /// + /// Enum TAX for value: 319 + /// + TAX = 319, + + /// + /// Enum DATE_OF_PERSONALIZATION for value: 320 + /// + DATE_OF_PERSONALIZATION = 320, + + /// + /// Enum PERSONALIZATION_SN for value: 321 + /// + PERSONALIZATION_SN = 321, + + /// + /// Enum OTHER_PERSON_NAME for value: 322 + /// + OTHER_PERSON_NAME = 322, + + /// + /// Enum PERSON_TO_NOTIFY_DATE_OF_RECORD for value: 323 + /// + PERSON_TO_NOTIFY_DATE_OF_RECORD = 323, + + /// + /// Enum PERSON_TO_NOTIFY_NAME for value: 324 + /// + PERSON_TO_NOTIFY_NAME = 324, + + /// + /// Enum PERSON_TO_NOTIFY_PHONE for value: 325 + /// + PERSON_TO_NOTIFY_PHONE = 325, + + /// + /// Enum PERSON_TO_NOTIFY_ADDRESS for value: 326 + /// + PERSON_TO_NOTIFY_ADDRESS = 326, + + /// + /// Enum DS_CERTIFICATE_ISSUER for value: 327 + /// + DS_CERTIFICATE_ISSUER = 327, + + /// + /// Enum DS_CERTIFICATE_SUBJECT for value: 328 + /// + DS_CERTIFICATE_SUBJECT = 328, + + /// + /// Enum DS_CERTIFICATE_VALID_FROM for value: 329 + /// + DS_CERTIFICATE_VALID_FROM = 329, + + /// + /// Enum DS_CERTIFICATE_VALID_TO for value: 330 + /// + DS_CERTIFICATE_VALID_TO = 330, + + /// + /// Enum VRC_DATA_OBJECT_ENTRY for value: 331 + /// + VRC_DATA_OBJECT_ENTRY = 331, + + /// + /// Enum TYPE_APPROVAL_NUMBER for value: 332 + /// + TYPE_APPROVAL_NUMBER = 332, + + /// + /// Enum ADMINISTRATIVE_NUMBER for value: 333 + /// + ADMINISTRATIVE_NUMBER = 333, + + /// + /// Enum DOCUMENT_DISCRIMINATOR for value: 334 + /// + DOCUMENT_DISCRIMINATOR = 334, + + /// + /// Enum DATA_DISCRIMINATOR for value: 335 + /// + DATA_DISCRIMINATOR = 335, + + /// + /// Enum ISO_ISSUER_ID_NUMBER for value: 336 + /// + ISO_ISSUER_ID_NUMBER = 336, + + /// + /// Enum DTC_VERSION for value: 337 + /// + DTC_VERSION = 337, + + /// + /// Enum DTC_ID for value: 338 + /// + DTC_ID = 338, + + /// + /// Enum DTC_DATE_OF_EXPIRY for value: 339 + /// + DTC_DATE_OF_EXPIRY = 339, + + /// + /// Enum GNIB_NUMBER for value: 340 + /// + GNIB_NUMBER = 340, + + /// + /// Enum DEPT_NUMBER for value: 341 + /// + DEPT_NUMBER = 341, + + /// + /// Enum TELEX_CODE for value: 342 + /// + TELEX_CODE = 342, + + /// + /// Enum ALLERGIES for value: 343 + /// + ALLERGIES = 343, + + /// + /// Enum SP_CODE for value: 344 + /// + SP_CODE = 344, + + /// + /// Enum COURT_CODE for value: 345 + /// + COURT_CODE = 345, + + /// + /// Enum CTY for value: 346 + /// + CTY = 346, + + /// + /// Enum SPONSOR_SSN for value: 347 + /// + SPONSOR_SSN = 347, + + /// + /// Enum DOD_NUMBER for value: 348 + /// + DOD_NUMBER = 348, + + /// + /// Enum MC_NOVICE_DATE for value: 349 + /// + MC_NOVICE_DATE = 349, + + /// + /// Enum DUF_NUMBER for value: 350 + /// + DUF_NUMBER = 350, + + /// + /// Enum AGY for value: 351 + /// + AGY = 351, + + /// + /// Enum PNR_CODE for value: 352 + /// + PNR_CODE = 352, + + /// + /// Enum FROM_AIRPORT_CODE for value: 353 + /// + FROM_AIRPORT_CODE = 353, + + /// + /// Enum TO_AIRPORT_CODE for value: 354 + /// + TO_AIRPORT_CODE = 354, + + /// + /// Enum FLIGHT_NUMBER for value: 355 + /// + FLIGHT_NUMBER = 355, + + /// + /// Enum DATE_OF_FLIGHT for value: 356 + /// + DATE_OF_FLIGHT = 356, + + /// + /// Enum SEAT_NUMBER for value: 357 + /// + SEAT_NUMBER = 357, + + /// + /// Enum DATE_OF_ISSUE_BOARDING_PASS for value: 358 + /// + DATE_OF_ISSUE_BOARDING_PASS = 358, + + /// + /// Enum CCW_UNTIL for value: 359 + /// + CCW_UNTIL = 359, + + /// + /// Enum REFERENCE_NUMBER_CHECKSUM for value: 360 + /// + REFERENCE_NUMBER_CHECKSUM = 360, + + /// + /// Enum REFERENCE_NUMBER_CHECK_DIGIT for value: 361 + /// + REFERENCE_NUMBER_CHECK_DIGIT = 361, + + /// + /// Enum ROOM_NUMBER for value: 362 + /// + ROOM_NUMBER = 362, + + /// + /// Enum RELIGION for value: 363 + /// + RELIGION = 363, + + /// + /// Enum REMAINDER_TERM for value: 364 + /// + REMAINDER_TERM = 364, + + /// + /// Enum ELECTRONIC_TICKET_INDICATOR for value: 365 + /// + ELECTRONIC_TICKET_INDICATOR = 365, + + /// + /// Enum COMPARTMENT_CODE for value: 366 + /// + COMPARTMENT_CODE = 366, + + /// + /// Enum CHECK_IN_SEQUENCE_NUMBER for value: 367 + /// + CHECK_IN_SEQUENCE_NUMBER = 367, + + /// + /// Enum AIRLINE_DESIGNATOR_OF_BOARDING_PASS_ISSUER for value: 368 + /// + AIRLINE_DESIGNATOR_OF_BOARDING_PASS_ISSUER = 368, + + /// + /// Enum AIRLINE_NUMERIC_CODE for value: 369 + /// + AIRLINE_NUMERIC_CODE = 369, + + /// + /// Enum TICKET_NUMBER for value: 370 + /// + TICKET_NUMBER = 370, + + /// + /// Enum FREQUENT_FLYER_AIRLINE_DESIGNATOR for value: 371 + /// + FREQUENT_FLYER_AIRLINE_DESIGNATOR = 371, + + /// + /// Enum FREQUENT_FLYER_NUMBER for value: 372 + /// + FREQUENT_FLYER_NUMBER = 372, + + /// + /// Enum FREE_BAGGAGE_ALLOWANCE for value: 373 + /// + FREE_BAGGAGE_ALLOWANCE = 373, + + /// + /// Enum PDF417_CODEC for value: 374 + /// + PDF417_CODEC = 374, + + /// + /// Enum IDENTITY_CARD_NUMBER_CHECKSUM for value: 375 + /// + IDENTITY_CARD_NUMBER_CHECKSUM = 375, + + /// + /// Enum IDENTITY_CARD_NUMBER_CHECK_DIGIT for value: 376 + /// + IDENTITY_CARD_NUMBER_CHECK_DIGIT = 376, + + /// + /// Enum VETERAN for value: 377 + /// + VETERAN = 377, + + /// + /// Enum DL_CLASS_CODE_A1_FROM for value: 378 + /// + DL_CLASS_CODE_A1_FROM = 378, + + /// + /// Enum DL_CLASS_CODE_A1_TO for value: 379 + /// + DL_CLASS_CODE_A1_TO = 379, + + /// + /// Enum DL_CLASS_CODE_A1_NOTES for value: 380 + /// + DL_CLASS_CODE_A1_NOTES = 380, + + /// + /// Enum DL_CLASS_CODE_A_FROM for value: 381 + /// + DL_CLASS_CODE_A_FROM = 381, + + /// + /// Enum DL_CLASS_CODE_A_TO for value: 382 + /// + DL_CLASS_CODE_A_TO = 382, + + /// + /// Enum DL_CLASS_CODE_A_NOTES for value: 383 + /// + DL_CLASS_CODE_A_NOTES = 383, + + /// + /// Enum DL_CLASS_CODE_B_FROM for value: 384 + /// + DL_CLASS_CODE_B_FROM = 384, + + /// + /// Enum DL_CLASS_CODE_B_TO for value: 385 + /// + DL_CLASS_CODE_B_TO = 385, + + /// + /// Enum DL_CLASS_CODE_B_NOTES for value: 386 + /// + DL_CLASS_CODE_B_NOTES = 386, + + /// + /// Enum DL_CLASS_CODE_C1_FROM for value: 387 + /// + DL_CLASS_CODE_C1_FROM = 387, + + /// + /// Enum DL_CLASS_CODE_C1_TO for value: 388 + /// + DL_CLASS_CODE_C1_TO = 388, + + /// + /// Enum DL_CLASS_CODE_C1_NOTES for value: 389 + /// + DL_CLASS_CODE_C1_NOTES = 389, + + /// + /// Enum DL_CLASS_CODE_C_FROM for value: 390 + /// + DL_CLASS_CODE_C_FROM = 390, + + /// + /// Enum DL_CLASS_CODE_C_TO for value: 391 + /// + DL_CLASS_CODE_C_TO = 391, + + /// + /// Enum DL_CLASS_CODE_C_NOTES for value: 392 + /// + DL_CLASS_CODE_C_NOTES = 392, + + /// + /// Enum DL_CLASS_CODE_D1_FROM for value: 393 + /// + DL_CLASS_CODE_D1_FROM = 393, + + /// + /// Enum DL_CLASS_CODE_D1_TO for value: 394 + /// + DL_CLASS_CODE_D1_TO = 394, + + /// + /// Enum DL_CLASS_CODE_D1_NOTES for value: 395 + /// + DL_CLASS_CODE_D1_NOTES = 395, + + /// + /// Enum DL_CLASS_CODE_D_FROM for value: 396 + /// + DL_CLASS_CODE_D_FROM = 396, + + /// + /// Enum DL_CLASS_CODE_D_TO for value: 397 + /// + DL_CLASS_CODE_D_TO = 397, + + /// + /// Enum DL_CLASS_CODE_D_NOTES for value: 398 + /// + DL_CLASS_CODE_D_NOTES = 398, + + /// + /// Enum DL_CLASS_CODE_BE_FROM for value: 399 + /// + DL_CLASS_CODE_BE_FROM = 399, + + /// + /// Enum DL_CLASS_CODE_BE_TO for value: 400 + /// + DL_CLASS_CODE_BE_TO = 400, + + /// + /// Enum DL_CLASS_CODE_BE_NOTES for value: 401 + /// + DL_CLASS_CODE_BE_NOTES = 401, + + /// + /// Enum DL_CLASS_CODE_C1E_FROM for value: 402 + /// + DL_CLASS_CODE_C1E_FROM = 402, + + /// + /// Enum DL_CLASS_CODE_C1E_TO for value: 403 + /// + DL_CLASS_CODE_C1E_TO = 403, + + /// + /// Enum DL_CLASS_CODE_C1E_NOTES for value: 404 + /// + DL_CLASS_CODE_C1E_NOTES = 404, + + /// + /// Enum DL_CLASS_CODE_CE_FROM for value: 405 + /// + DL_CLASS_CODE_CE_FROM = 405, + + /// + /// Enum DL_CLASS_CODE_CE_TO for value: 406 + /// + DL_CLASS_CODE_CE_TO = 406, + + /// + /// Enum DL_CLASS_CODE_CE_NOTES for value: 407 + /// + DL_CLASS_CODE_CE_NOTES = 407, + + /// + /// Enum DL_CLASS_CODE_D1E_FROM for value: 408 + /// + DL_CLASS_CODE_D1E_FROM = 408, + + /// + /// Enum DL_CLASS_CODE_D1E_TO for value: 409 + /// + DL_CLASS_CODE_D1E_TO = 409, + + /// + /// Enum DL_CLASS_CODE_D1E_NOTES for value: 410 + /// + DL_CLASS_CODE_D1E_NOTES = 410, + + /// + /// Enum DL_CLASS_CODE_DE_FROM for value: 411 + /// + DL_CLASS_CODE_DE_FROM = 411, + + /// + /// Enum DL_CLASS_CODE_DE_TO for value: 412 + /// + DL_CLASS_CODE_DE_TO = 412, + + /// + /// Enum DL_CLASS_CODE_DE_NOTES for value: 413 + /// + DL_CLASS_CODE_DE_NOTES = 413, + + /// + /// Enum DL_CLASS_CODE_M_FROM for value: 414 + /// + DL_CLASS_CODE_M_FROM = 414, + + /// + /// Enum DL_CLASS_CODE_M_TO for value: 415 + /// + DL_CLASS_CODE_M_TO = 415, + + /// + /// Enum DL_CLASS_CODE_M_NOTES for value: 416 + /// + DL_CLASS_CODE_M_NOTES = 416, + + /// + /// Enum DL_CLASS_CODE_L_FROM for value: 417 + /// + DL_CLASS_CODE_L_FROM = 417, + + /// + /// Enum DL_CLASS_CODE_L_TO for value: 418 + /// + DL_CLASS_CODE_L_TO = 418, + + /// + /// Enum DL_CLASS_CODE_L_NOTES for value: 419 + /// + DL_CLASS_CODE_L_NOTES = 419, + + /// + /// Enum DL_CLASS_CODE_T_FROM for value: 420 + /// + DL_CLASS_CODE_T_FROM = 420, + + /// + /// Enum DL_CLASS_CODE_T_TO for value: 421 + /// + DL_CLASS_CODE_T_TO = 421, + + /// + /// Enum DL_CLASS_CODE_T_NOTES for value: 422 + /// + DL_CLASS_CODE_T_NOTES = 422, + + /// + /// Enum DL_CLASS_CODE_AM_FROM for value: 423 + /// + DL_CLASS_CODE_AM_FROM = 423, + + /// + /// Enum DL_CLASS_CODE_AM_TO for value: 424 + /// + DL_CLASS_CODE_AM_TO = 424, + + /// + /// Enum DL_CLASS_CODE_AM_NOTES for value: 425 + /// + DL_CLASS_CODE_AM_NOTES = 425, + + /// + /// Enum DL_CLASS_CODE_A2_FROM for value: 426 + /// + DL_CLASS_CODE_A2_FROM = 426, + + /// + /// Enum DL_CLASS_CODE_A2_TO for value: 427 + /// + DL_CLASS_CODE_A2_TO = 427, + + /// + /// Enum DL_CLASS_CODE_A2_NOTES for value: 428 + /// + DL_CLASS_CODE_A2_NOTES = 428, + + /// + /// Enum DL_CLASS_CODE_B1_FROM for value: 429 + /// + DL_CLASS_CODE_B1_FROM = 429, + + /// + /// Enum DL_CLASS_CODE_B1_TO for value: 430 + /// + DL_CLASS_CODE_B1_TO = 430, + + /// + /// Enum DL_CLASS_CODE_B1_NOTES for value: 431 + /// + DL_CLASS_CODE_B1_NOTES = 431, + + /// + /// Enum SURNAME_AT_BIRTH for value: 432 + /// + SURNAME_AT_BIRTH = 432, + + /// + /// Enum CIVIL_STATUS for value: 433 + /// + CIVIL_STATUS = 433, + + /// + /// Enum NUMBER_OF_SEATS for value: 434 + /// + NUMBER_OF_SEATS = 434, + + /// + /// Enum NUMBER_OF_STANDING_PLACES for value: 435 + /// + NUMBER_OF_STANDING_PLACES = 435, + + /// + /// Enum MAX_SPEED for value: 436 + /// + MAX_SPEED = 436, + + /// + /// Enum FUEL_TYPE for value: 437 + /// + FUEL_TYPE = 437, + + /// + /// Enum EC_ENVIRONMENTAL_TYPE for value: 438 + /// + EC_ENVIRONMENTAL_TYPE = 438, + + /// + /// Enum POWER_WEIGHT_RATIO for value: 439 + /// + POWER_WEIGHT_RATIO = 439, + + /// + /// Enum MAX_MASS_OF_TRAILER_BRAKED for value: 440 + /// + MAX_MASS_OF_TRAILER_BRAKED = 440, + + /// + /// Enum MAX_MASS_OF_TRAILER_UNBRAKED for value: 441 + /// + MAX_MASS_OF_TRAILER_UNBRAKED = 441, + + /// + /// Enum TRANSMISSION_TYPE for value: 442 + /// + TRANSMISSION_TYPE = 442, + + /// + /// Enum TRAILER_HITCH for value: 443 + /// + TRAILER_HITCH = 443, + + /// + /// Enum ACCOMPANIED_BY for value: 444 + /// + ACCOMPANIED_BY = 444, + + /// + /// Enum POLICE_DISTRICT for value: 445 + /// + POLICE_DISTRICT = 445, + + /// + /// Enum FIRST_ISSUE_DATE for value: 446 + /// + FIRST_ISSUE_DATE = 446, + + /// + /// Enum PAYLOAD_CAPACITY for value: 447 + /// + PAYLOAD_CAPACITY = 447, + + /// + /// Enum NUMBER_OF_AXLES for value: 448 + /// + NUMBER_OF_AXLES = 448, + + /// + /// Enum PERMISSIBLE_AXLE_LOAD for value: 449 + /// + PERMISSIBLE_AXLE_LOAD = 449, + + /// + /// Enum PRECINCT for value: 450 + /// + PRECINCT = 450, + + /// + /// Enum INVITED_BY for value: 451 + /// + INVITED_BY = 451, + + /// + /// Enum PURPOSE_OF_ENTRY for value: 452 + /// + PURPOSE_OF_ENTRY = 452, + + /// + /// Enum SKIN_COLOR for value: 453 + /// + SKIN_COLOR = 453, + + /// + /// Enum COMPLEXION for value: 454 + /// + COMPLEXION = 454, + + /// + /// Enum AIRPORT_FROM for value: 455 + /// + AIRPORT_FROM = 455, + + /// + /// Enum AIRPORT_TO for value: 456 + /// + AIRPORT_TO = 456, + + /// + /// Enum AIRLINE_NAME for value: 457 + /// + AIRLINE_NAME = 457, + + /// + /// Enum AIRLINE_NAME_FREQUENT_FLYER for value: 458 + /// + AIRLINE_NAME_FREQUENT_FLYER = 458, + + /// + /// Enum LICENSE_NUMBER for value: 459 + /// + LICENSE_NUMBER = 459, + + /// + /// Enum IN_TANKS for value: 460 + /// + IN_TANKS = 460, + + /// + /// Enum EXCEPT_IN_TANKS for value: 461 + /// + EXCEPT_IN_TANKS = 461, + + /// + /// Enum FAST_TRACK for value: 462 + /// + FAST_TRACK = 462, + + /// + /// Enum OWNER for value: 463 + /// + OWNER = 463, + + /// + /// Enum MRZ_STRINGS_ICAO_RFID for value: 464 + /// + MRZ_STRINGS_ICAO_RFID = 464, + + /// + /// Enum NUMBER_OF_CARD_ISSUANCE for value: 465 + /// + NUMBER_OF_CARD_ISSUANCE = 465, + + /// + /// Enum NUMBER_OF_CARD_ISSUANCE_CHECKSUM for value: 466 + /// + NUMBER_OF_CARD_ISSUANCE_CHECKSUM = 466, + + /// + /// Enum NUMBER_OF_CARD_ISSUANCE_CHECK_DIGIT for value: 467 + /// + NUMBER_OF_CARD_ISSUANCE_CHECK_DIGIT = 467, + + /// + /// Enum CENTURY_DATE_OF_BIRTH for value: 468 + /// + CENTURY_DATE_OF_BIRTH = 468, + + /// + /// Enum DL_CLASS_CODE_A3_FROM for value: 469 + /// + DL_CLASS_CODE_A3_FROM = 469, + + /// + /// Enum DL_CLASS_CODE_A3_TO for value: 470 + /// + DL_CLASS_CODE_A3_TO = 470, + + /// + /// Enum DL_CLASS_CODE_A3_NOTES for value: 471 + /// + DL_CLASS_CODE_A3_NOTES = 471, + + /// + /// Enum DL_CLASS_CODE_C2_FROM for value: 472 + /// + DL_CLASS_CODE_C2_FROM = 472, + + /// + /// Enum DL_CLASS_CODE_C2_TO for value: 473 + /// + DL_CLASS_CODE_C2_TO = 473, + + /// + /// Enum DL_CLASS_CODE_C2_NOTES for value: 474 + /// + DL_CLASS_CODE_C2_NOTES = 474, + + /// + /// Enum DL_CLASS_CODE_B2_FROM for value: 475 + /// + DL_CLASS_CODE_B2_FROM = 475, + + /// + /// Enum DL_CLASS_CODE_B2_TO for value: 476 + /// + DL_CLASS_CODE_B2_TO = 476, + + /// + /// Enum DL_CLASS_CODE_B2_NOTES for value: 477 + /// + DL_CLASS_CODE_B2_NOTES = 477, + + /// + /// Enum DL_CLASS_CODE_D2_FROM for value: 478 + /// + DL_CLASS_CODE_D2_FROM = 478, + + /// + /// Enum DL_CLASS_CODE_D2_TO for value: 479 + /// + DL_CLASS_CODE_D2_TO = 479, + + /// + /// Enum DL_CLASS_CODE_D2_NOTES for value: 480 + /// + DL_CLASS_CODE_D2_NOTES = 480, + + /// + /// Enum DL_CLASS_CODE_B2E_FROM for value: 481 + /// + DL_CLASS_CODE_B2E_FROM = 481, + + /// + /// Enum DL_CLASS_CODE_B2E_TO for value: 482 + /// + DL_CLASS_CODE_B2E_TO = 482, + + /// + /// Enum DL_CLASS_CODE_B2E_NOTES for value: 483 + /// + DL_CLASS_CODE_B2E_NOTES = 483, + + /// + /// Enum DL_CLASS_CODE_G_FROM for value: 484 + /// + DL_CLASS_CODE_G_FROM = 484, + + /// + /// Enum DL_CLASS_CODE_G_TO for value: 485 + /// + DL_CLASS_CODE_G_TO = 485, + + /// + /// Enum DL_CLASS_CODE_G_NOTES for value: 486 + /// + DL_CLASS_CODE_G_NOTES = 486, + + /// + /// Enum DL_CLASS_CODE_J_FROM for value: 487 + /// + DL_CLASS_CODE_J_FROM = 487, + + /// + /// Enum DL_CLASS_CODE_J_TO for value: 488 + /// + DL_CLASS_CODE_J_TO = 488, + + /// + /// Enum DL_CLASS_CODE_J_NOTES for value: 489 + /// + DL_CLASS_CODE_J_NOTES = 489, + + /// + /// Enum DL_CLASS_CODE_LC_FROM for value: 490 + /// + DL_CLASS_CODE_LC_FROM = 490, + + /// + /// Enum DL_CLASS_CODE_LC_TO for value: 491 + /// + DL_CLASS_CODE_LC_TO = 491, + + /// + /// Enum DL_CLASS_CODE_LC_NOTES for value: 492 + /// + DL_CLASS_CODE_LC_NOTES = 492, + + /// + /// Enum BANK_CARD_NUMBER for value: 493 + /// + BANK_CARD_NUMBER = 493, + + /// + /// Enum BANK_CARD_VALID_THRU for value: 494 + /// + BANK_CARD_VALID_THRU = 494, + + /// + /// Enum TAX_NUMBER for value: 495 + /// + TAX_NUMBER = 495, + + /// + /// Enum HEALTH_NUMBER for value: 496 + /// + HEALTH_NUMBER = 496, + + /// + /// Enum GRANDFATHER_NAME for value: 497 + /// + GRANDFATHER_NAME = 497, + + /// + /// Enum SELECTEE_INDICATOR for value: 498 + /// + SELECTEE_INDICATOR = 498, + + /// + /// Enum MOTHER_SURNAME for value: 499 + /// + MOTHER_SURNAME = 499, + + /// + /// Enum MOTHER_GIVEN_NAME for value: 500 + /// + MOTHER_GIVEN_NAME = 500, + + /// + /// Enum FATHER_SURNAME for value: 501 + /// + FATHER_SURNAME = 501, + + /// + /// Enum FATHER_GIVEN_NAME for value: 502 + /// + FATHER_GIVEN_NAME = 502, + + /// + /// Enum MOTHER_DATE_OF_BIRTH for value: 503 + /// + MOTHER_DATE_OF_BIRTH = 503, + + /// + /// Enum FATHER_DATE_OF_BIRTH for value: 504 + /// + FATHER_DATE_OF_BIRTH = 504, + + /// + /// Enum MOTHER_PERSONAL_NUMBER for value: 505 + /// + MOTHER_PERSONAL_NUMBER = 505, + + /// + /// Enum FATHER_PERSONAL_NUMBER for value: 506 + /// + FATHER_PERSONAL_NUMBER = 506, + + /// + /// Enum MOTHER_PLACE_OF_BIRTH for value: 507 + /// + MOTHER_PLACE_OF_BIRTH = 507, + + /// + /// Enum FATHER_PLACE_OF_BIRTH for value: 508 + /// + FATHER_PLACE_OF_BIRTH = 508, + + /// + /// Enum MOTHER_COUNTRY_OF_BIRTH for value: 509 + /// + MOTHER_COUNTRY_OF_BIRTH = 509, + + /// + /// Enum FATHER_COUNTRY_OF_BIRTH for value: 510 + /// + FATHER_COUNTRY_OF_BIRTH = 510, + + /// + /// Enum DATE_FIRST_RENEWAL for value: 511 + /// + DATE_FIRST_RENEWAL = 511, + + /// + /// Enum DATE_SECOND_RENEWAL for value: 512 + /// + DATE_SECOND_RENEWAL = 512, + + /// + /// Enum PLACE_OF_EXAMINATION for value: 513 + /// + PLACE_OF_EXAMINATION = 513, + + /// + /// Enum APPLICATION_NUMBER for value: 514 + /// + APPLICATION_NUMBER = 514, + + /// + /// Enum VOUCHER_NUMBER for value: 515 + /// + VOUCHER_NUMBER = 515, + + /// + /// Enum AUTHORIZATION_NUMBER for value: 516 + /// + AUTHORIZATION_NUMBER = 516, + + /// + /// Enum FACULTY for value: 517 + /// + FACULTY = 517, + + /// + /// Enum FORM_OF_EDUCATION for value: 518 + /// + FORM_OF_EDUCATION = 518, + + /// + /// Enum DNI_NUMBER for value: 519 + /// + DNI_NUMBER = 519, + + /// + /// Enum RETIREMENT_NUMBER for value: 520 + /// + RETIREMENT_NUMBER = 520, + + /// + /// Enum PROFESSIONAL_ID_NUMBER for value: 521 + /// + PROFESSIONAL_ID_NUMBER = 521, + + /// + /// Enum AGE_AT_ISSUE for value: 522 + /// + AGE_AT_ISSUE = 522, + + /// + /// Enum YEARS_SINCE_ISSUE for value: 523 + /// + YEARS_SINCE_ISSUE = 523, + + /// + /// Enum DL_CLASS_CODE_BTP_FROM for value: 524 + /// + DL_CLASS_CODE_BTP_FROM = 524, + + /// + /// Enum DL_CLASS_CODE_BTP_NOTES for value: 525 + /// + DL_CLASS_CODE_BTP_NOTES = 525, + + /// + /// Enum DL_CLASS_CODE_BTP_TO for value: 526 + /// + DL_CLASS_CODE_BTP_TO = 526, + + /// + /// Enum DL_CLASS_CODE_C3_FROM for value: 527 + /// + DL_CLASS_CODE_C3_FROM = 527, + + /// + /// Enum DL_CLASS_CODE_C3_NOTES for value: 528 + /// + DL_CLASS_CODE_C3_NOTES = 528, + + /// + /// Enum DL_CLASS_CODE_C3_TO for value: 529 + /// + DL_CLASS_CODE_C3_TO = 529, + + /// + /// Enum DL_CLASS_CODE_E_FROM for value: 530 + /// + DL_CLASS_CODE_E_FROM = 530, + + /// + /// Enum DL_CLASS_CODE_E_NOTES for value: 531 + /// + DL_CLASS_CODE_E_NOTES = 531, + + /// + /// Enum DL_CLASS_CODE_E_TO for value: 532 + /// + DL_CLASS_CODE_E_TO = 532, + + /// + /// Enum DL_CLASS_CODE_F_FROM for value: 533 + /// + DL_CLASS_CODE_F_FROM = 533, + + /// + /// Enum DL_CLASS_CODE_F_NOTES for value: 534 + /// + DL_CLASS_CODE_F_NOTES = 534, + + /// + /// Enum DL_CLASS_CODE_F_TO for value: 535 + /// + DL_CLASS_CODE_F_TO = 535, + + /// + /// Enum DL_CLASS_CODE_FA_FROM for value: 536 + /// + DL_CLASS_CODE_FA_FROM = 536, + + /// + /// Enum DL_CLASS_CODE_FA_NOTES for value: 537 + /// + DL_CLASS_CODE_FA_NOTES = 537, + + /// + /// Enum DL_CLASS_CODE_FA_TO for value: 538 + /// + DL_CLASS_CODE_FA_TO = 538, + + /// + /// Enum DL_CLASS_CODE_FA1_FROM for value: 539 + /// + DL_CLASS_CODE_FA1_FROM = 539, + + /// + /// Enum DL_CLASS_CODE_FA1_NOTES for value: 540 + /// + DL_CLASS_CODE_FA1_NOTES = 540, + + /// + /// Enum DL_CLASS_CODE_FA1_TO for value: 541 + /// + DL_CLASS_CODE_FA1_TO = 541, + + /// + /// Enum DL_CLASS_CODE_FB_FROM for value: 542 + /// + DL_CLASS_CODE_FB_FROM = 542, + + /// + /// Enum DL_CLASS_CODE_FB_NOTES for value: 543 + /// + DL_CLASS_CODE_FB_NOTES = 543, + + /// + /// Enum DL_CLASS_CODE_FB_TO for value: 544 + /// + DL_CLASS_CODE_FB_TO = 544, + + /// + /// Enum DL_CLASS_CODE_G1_FROM for value: 545 + /// + DL_CLASS_CODE_G1_FROM = 545, + + /// + /// Enum DL_CLASS_CODE_G1_NOTES for value: 546 + /// + DL_CLASS_CODE_G1_NOTES = 546, + + /// + /// Enum DL_CLASS_CODE_G1_TO for value: 547 + /// + DL_CLASS_CODE_G1_TO = 547, + + /// + /// Enum DL_CLASS_CODE_H_FROM for value: 548 + /// + DL_CLASS_CODE_H_FROM = 548, + + /// + /// Enum DL_CLASS_CODE_H_NOTES for value: 549 + /// + DL_CLASS_CODE_H_NOTES = 549, + + /// + /// Enum DL_CLASS_CODE_H_TO for value: 550 + /// + DL_CLASS_CODE_H_TO = 550, + + /// + /// Enum DL_CLASS_CODE_I_FROM for value: 551 + /// + DL_CLASS_CODE_I_FROM = 551, + + /// + /// Enum DL_CLASS_CODE_I_NOTES for value: 552 + /// + DL_CLASS_CODE_I_NOTES = 552, + + /// + /// Enum DL_CLASS_CODE_I_TO for value: 553 + /// + DL_CLASS_CODE_I_TO = 553, + + /// + /// Enum DL_CLASS_CODE_K_FROM for value: 554 + /// + DL_CLASS_CODE_K_FROM = 554, + + /// + /// Enum DL_CLASS_CODE_K_NOTES for value: 555 + /// + DL_CLASS_CODE_K_NOTES = 555, + + /// + /// Enum DL_CLASS_CODE_K_TO for value: 556 + /// + DL_CLASS_CODE_K_TO = 556, + + /// + /// Enum DL_CLASS_CODE_LK_FROM for value: 557 + /// + DL_CLASS_CODE_LK_FROM = 557, + + /// + /// Enum DL_CLASS_CODE_LK_NOTES for value: 558 + /// + DL_CLASS_CODE_LK_NOTES = 558, + + /// + /// Enum DL_CLASS_CODE_LK_TO for value: 559 + /// + DL_CLASS_CODE_LK_TO = 559, + + /// + /// Enum DL_CLASS_CODE_N_FROM for value: 560 + /// + DL_CLASS_CODE_N_FROM = 560, + + /// + /// Enum DL_CLASS_CODE_N_NOTES for value: 561 + /// + DL_CLASS_CODE_N_NOTES = 561, + + /// + /// Enum DL_CLASS_CODE_N_TO for value: 562 + /// + DL_CLASS_CODE_N_TO = 562, + + /// + /// Enum DL_CLASS_CODE_S_FROM for value: 563 + /// + DL_CLASS_CODE_S_FROM = 563, + + /// + /// Enum DL_CLASS_CODE_S_NOTES for value: 564 + /// + DL_CLASS_CODE_S_NOTES = 564, + + /// + /// Enum DL_CLASS_CODE_S_TO for value: 565 + /// + DL_CLASS_CODE_S_TO = 565, + + /// + /// Enum DL_CLASS_CODE_TB_FROM for value: 566 + /// + DL_CLASS_CODE_TB_FROM = 566, + + /// + /// Enum DL_CLASS_CODE_TB_NOTES for value: 567 + /// + DL_CLASS_CODE_TB_NOTES = 567, + + /// + /// Enum DL_CLASS_CODE_TB_TO for value: 568 + /// + DL_CLASS_CODE_TB_TO = 568, + + /// + /// Enum DL_CLASS_CODE_TM_FROM for value: 569 + /// + DL_CLASS_CODE_TM_FROM = 569, + + /// + /// Enum DL_CLASS_CODE_TM_NOTES for value: 570 + /// + DL_CLASS_CODE_TM_NOTES = 570, + + /// + /// Enum DL_CLASS_CODE_TM_TO for value: 571 + /// + DL_CLASS_CODE_TM_TO = 571, + + /// + /// Enum DL_CLASS_CODE_TR_FROM for value: 572 + /// + DL_CLASS_CODE_TR_FROM = 572, + + /// + /// Enum DL_CLASS_CODE_TR_NOTES for value: 573 + /// + DL_CLASS_CODE_TR_NOTES = 573, + + /// + /// Enum DL_CLASS_CODE_TR_TO for value: 574 + /// + DL_CLASS_CODE_TR_TO = 574, + + /// + /// Enum DL_CLASS_CODE_TV_FROM for value: 575 + /// + DL_CLASS_CODE_TV_FROM = 575, + + /// + /// Enum DL_CLASS_CODE_TV_NOTES for value: 576 + /// + DL_CLASS_CODE_TV_NOTES = 576, + + /// + /// Enum DL_CLASS_CODE_TV_TO for value: 577 + /// + DL_CLASS_CODE_TV_TO = 577, + + /// + /// Enum DL_CLASS_CODE_V_FROM for value: 578 + /// + DL_CLASS_CODE_V_FROM = 578, + + /// + /// Enum DL_CLASS_CODE_V_NOTES for value: 579 + /// + DL_CLASS_CODE_V_NOTES = 579, + + /// + /// Enum DL_CLASS_CODE_V_TO for value: 580 + /// + DL_CLASS_CODE_V_TO = 580, + + /// + /// Enum DL_CLASS_CODE_W_FROM for value: 581 + /// + DL_CLASS_CODE_W_FROM = 581, + + /// + /// Enum DL_CLASS_CODE_W_NOTES for value: 582 + /// + DL_CLASS_CODE_W_NOTES = 582, + + /// + /// Enum DL_CLASS_CODE_W_TO for value: 583 + /// + DL_CLASS_CODE_W_TO = 583, + + /// + /// Enum URL for value: 584 + /// + URL = 584, + + /// + /// Enum CALIBER for value: 585 + /// + CALIBER = 585, + + /// + /// Enum MODEL for value: 586 + /// + MODEL = 586, + + /// + /// Enum MAKE for value: 587 + /// + MAKE = 587, + + /// + /// Enum NUMBER_OF_CYLINDERS for value: 588 + /// + NUMBER_OF_CYLINDERS = 588, + + /// + /// Enum SURNAME_OF_HUSBAND_AFTER_REGISTRATION for value: 589 + /// + SURNAME_OF_HUSBAND_AFTER_REGISTRATION = 589, + + /// + /// Enum SURNAME_OF_WIFE_AFTER_REGISTRATION for value: 590 + /// + SURNAME_OF_WIFE_AFTER_REGISTRATION = 590, + + /// + /// Enum DATE_OF_BIRTH_OF_WIFE for value: 591 + /// + DATE_OF_BIRTH_OF_WIFE = 591, + + /// + /// Enum DATE_OF_BIRTH_OF_HUSBAND for value: 592 + /// + DATE_OF_BIRTH_OF_HUSBAND = 592, + + /// + /// Enum CITIZENSHIP_OF_FIRST_PERSON for value: 593 + /// + CITIZENSHIP_OF_FIRST_PERSON = 593, + + /// + /// Enum CITIZENSHIP_OF_SECOND_PERSON for value: 594 + /// + CITIZENSHIP_OF_SECOND_PERSON = 594, + + /// + /// Enum CVV for value: 595 + /// + CVV = 595, + + /// + /// Enum DATE_OF_INSURANCE_EXPIRY for value: 596 + /// + DATE_OF_INSURANCE_EXPIRY = 596, + + /// + /// Enum MORTGAGE_BY for value: 597 + /// + MORTGAGE_BY = 597, + + /// + /// Enum OLD_DOCUMENT_NUMBER for value: 598 + /// + OLD_DOCUMENT_NUMBER = 598, + + /// + /// Enum OLD_DATE_OF_ISSUE for value: 599 + /// + OLD_DATE_OF_ISSUE = 599, + + /// + /// Enum OLD_PLACE_OF_ISSUE for value: 600 + /// + OLD_PLACE_OF_ISSUE = 600, + + /// + /// Enum DL_CLASS_CODE_LR_FROM for value: 601 + /// + DL_CLASS_CODE_LR_FROM = 601, + + /// + /// Enum DL_CLASS_CODE_LR_TO for value: 602 + /// + DL_CLASS_CODE_LR_TO = 602, + + /// + /// Enum DL_CLASS_CODE_LR_NOTES for value: 603 + /// + DL_CLASS_CODE_LR_NOTES = 603, + + /// + /// Enum DL_CLASS_CODE_MR_FROM for value: 604 + /// + DL_CLASS_CODE_MR_FROM = 604, + + /// + /// Enum DL_CLASS_CODE_MR_TO for value: 605 + /// + DL_CLASS_CODE_MR_TO = 605, + + /// + /// Enum DL_CLASS_CODE_MR_NOTES for value: 606 + /// + DL_CLASS_CODE_MR_NOTES = 606, + + /// + /// Enum DL_CLASS_CODE_HR_FROM for value: 607 + /// + DL_CLASS_CODE_HR_FROM = 607, + + /// + /// Enum DL_CLASS_CODE_HR_TO for value: 608 + /// + DL_CLASS_CODE_HR_TO = 608, + + /// + /// Enum DL_CLASS_CODE_HR_NOTES for value: 609 + /// + DL_CLASS_CODE_HR_NOTES = 609, + + /// + /// Enum DL_CLASS_CODE_HC_FROM for value: 610 + /// + DL_CLASS_CODE_HC_FROM = 610, + + /// + /// Enum DL_CLASS_CODE_HC_TO for value: 611 + /// + DL_CLASS_CODE_HC_TO = 611, + + /// + /// Enum DL_CLASS_CODE_HC_NOTES for value: 612 + /// + DL_CLASS_CODE_HC_NOTES = 612, + + /// + /// Enum DL_CLASS_CODE_MC_FROM for value: 613 + /// + DL_CLASS_CODE_MC_FROM = 613, + + /// + /// Enum DL_CLASS_CODE_MC_TO for value: 614 + /// + DL_CLASS_CODE_MC_TO = 614, + + /// + /// Enum DL_CLASS_CODE_MC_NOTES for value: 615 + /// + DL_CLASS_CODE_MC_NOTES = 615, + + /// + /// Enum DL_CLASS_CODE_RE_FROM for value: 616 + /// + DL_CLASS_CODE_RE_FROM = 616, + + /// + /// Enum DL_CLASS_CODE_RE_TO for value: 617 + /// + DL_CLASS_CODE_RE_TO = 617, + + /// + /// Enum DL_CLASS_CODE_RE_NOTES for value: 618 + /// + DL_CLASS_CODE_RE_NOTES = 618, + + /// + /// Enum DL_CLASS_CODE_R_FROM for value: 619 + /// + DL_CLASS_CODE_R_FROM = 619, + + /// + /// Enum DL_CLASS_CODE_R_TO for value: 620 + /// + DL_CLASS_CODE_R_TO = 620, + + /// + /// Enum DL_CLASS_CODE_R_NOTES for value: 621 + /// + DL_CLASS_CODE_R_NOTES = 621, + + /// + /// Enum DL_CLASS_CODE_CA_FROM for value: 622 + /// + DL_CLASS_CODE_CA_FROM = 622, + + /// + /// Enum DL_CLASS_CODE_CA_TO for value: 623 + /// + DL_CLASS_CODE_CA_TO = 623, + + /// + /// Enum DL_CLASS_CODE_CA_NOTES for value: 624 + /// + DL_CLASS_CODE_CA_NOTES = 624, + + /// + /// Enum CITIZENSHIP_STATUS for value: 625 + /// + CITIZENSHIP_STATUS = 625, + + /// + /// Enum MILITARY_SERVICE_FROM for value: 626 + /// + MILITARY_SERVICE_FROM = 626, + + /// + /// Enum MILITARY_SERVICE_TO for value: 627 + /// + MILITARY_SERVICE_TO = 627, + + /// + /// Enum DL_CLASS_CODE_NT_FROM for value: 628 + /// + DL_CLASS_CODE_NT_FROM = 628, + + /// + /// Enum DL_CLASS_CODE_NT_TO for value: 629 + /// + DL_CLASS_CODE_NT_TO = 629, + + /// + /// Enum DL_CLASS_CODE_NT_NOTES for value: 630 + /// + DL_CLASS_CODE_NT_NOTES = 630, + + /// + /// Enum DL_CLASS_CODE_TN_FROM for value: 631 + /// + DL_CLASS_CODE_TN_FROM = 631, + + /// + /// Enum DL_CLASS_CODE_TN_TO for value: 632 + /// + DL_CLASS_CODE_TN_TO = 632, + + /// + /// Enum DL_CLASS_CODE_TN_NOTES for value: 633 + /// + DL_CLASS_CODE_TN_NOTES = 633, + + /// + /// Enum DL_CLASS_CODE_D3_FROM for value: 634 + /// + DL_CLASS_CODE_D3_FROM = 634, + + /// + /// Enum DL_CLASS_CODE_D3_TO for value: 635 + /// + DL_CLASS_CODE_D3_TO = 635, + + /// + /// Enum DL_CLASS_CODE_D3_NOTES for value: 636 + /// + DL_CLASS_CODE_D3_NOTES = 636, + + /// + /// Enum ALT_DATE_OF_EXPIRY for value: 637 + /// + ALT_DATE_OF_EXPIRY = 637, + + /// + /// Enum DL_CLASS_CODE_CD_FROM for value: 638 + /// + DL_CLASS_CODE_CD_FROM = 638, + + /// + /// Enum DL_CLASS_CODE_CD_TO for value: 639 + /// + DL_CLASS_CODE_CD_TO = 639, + + /// + /// Enum DL_CLASS_CODE_CD_NOTES for value: 640 + /// + DL_CLASS_CODE_CD_NOTES = 640, + + /// + /// Enum ISSUER_IDENTIFICATION_NUMBER for value: 641 + /// + ISSUER_IDENTIFICATION_NUMBER = 641, + + /// + /// Enum PAYMENT_PERIOD_FROM for value: 642 + /// + PAYMENT_PERIOD_FROM = 642, + + /// + /// Enum PAYMENT_PERIOD_TO for value: 643 + /// + PAYMENT_PERIOD_TO = 643, + + /// + /// Enum VACCINATION_CERTIFICATE_IDENTIFIER for value: 644 + /// + VACCINATION_CERTIFICATE_IDENTIFIER = 644, + + /// + /// Enum FIRST_NAME for value: 645 + /// + FIRST_NAME = 645, + + /// + /// Enum DATE_OF_ARRIVAL for value: 646 + /// + DATE_OF_ARRIVAL = 646, + + /// + /// Enum SECOND_NAME for value: 647 + /// + SECOND_NAME = 647, + + /// + /// Enum THIRD_NAME for value: 648 + /// + THIRD_NAME = 648, + + /// + /// Enum FOURTH_NAME for value: 649 + /// + FOURTH_NAME = 649, + + /// + /// Enum LAST_NAME for value: 650 + /// + LAST_NAME = 650, + + /// + /// Enum DL_CLASS_CODE_RM_FROM for value: 651 + /// + DL_CLASS_CODE_RM_FROM = 651, + + /// + /// Enum DL_CLASS_CODE_RM_NOTES for value: 652 + /// + DL_CLASS_CODE_RM_NOTES = 652, + + /// + /// Enum DL_CLASS_CODE_RM_TO for value: 653 + /// + DL_CLASS_CODE_RM_TO = 653, + + /// + /// Enum DL_CLASS_CODE_PW_FROM for value: 654 + /// + DL_CLASS_CODE_PW_FROM = 654, + + /// + /// Enum DL_CLASS_CODE_PW_NOTES for value: 655 + /// + DL_CLASS_CODE_PW_NOTES = 655, + + /// + /// Enum DL_CLASS_CODE_PW_TO for value: 656 + /// + DL_CLASS_CODE_PW_TO = 656, + + /// + /// Enum DL_CLASS_CODE_EB_FROM for value: 657 + /// + DL_CLASS_CODE_EB_FROM = 657, + + /// + /// Enum DL_CLASS_CODE_EB_NOTES for value: 658 + /// + DL_CLASS_CODE_EB_NOTES = 658, + + /// + /// Enum DL_CLASS_CODE_EB_TO for value: 659 + /// + DL_CLASS_CODE_EB_TO = 659, + + /// + /// Enum DL_CLASS_CODE_EC_FROM for value: 660 + /// + DL_CLASS_CODE_EC_FROM = 660, + + /// + /// Enum DL_CLASS_CODE_EC_NOTES for value: 661 + /// + DL_CLASS_CODE_EC_NOTES = 661, + + /// + /// Enum DL_CLASS_CODE_EC_TO for value: 662 + /// + DL_CLASS_CODE_EC_TO = 662, + + /// + /// Enum DL_CLASS_CODE_EC1_FROM for value: 663 + /// + DL_CLASS_CODE_EC1_FROM = 663, + + /// + /// Enum DL_CLASS_CODE_EC1_NOTES for value: 664 + /// + DL_CLASS_CODE_EC1_NOTES = 664, + + /// + /// Enum DL_CLASS_CODE_EC1_TO for value: 665 + /// + DL_CLASS_CODE_EC1_TO = 665, + + /// + /// Enum PLACE_OF_BIRTH_CITY for value: 666 + /// + PLACE_OF_BIRTH_CITY = 666, + + /// + /// Enum YEAR_OF_BIRTH for value: 667 + /// + YEAR_OF_BIRTH = 667, + + /// + /// Enum YEAR_OF_EXPIRY for value: 668 + /// + YEAR_OF_EXPIRY = 668, + + /// + /// Enum GRANDFATHER_NAME_MATERNAL for value: 669 + /// + GRANDFATHER_NAME_MATERNAL = 669, + + /// + /// Enum FIRST_SURNAME for value: 670 + /// + FIRST_SURNAME = 670, + + /// + /// Enum MONTH_OF_BIRTH for value: 671 + /// + MONTH_OF_BIRTH = 671, + + /// + /// Enum ADDRESS_FLOOR_NUMBER for value: 672 + /// + ADDRESS_FLOOR_NUMBER = 672, + + /// + /// Enum ADDRESS_ENTRANCE for value: 673 + /// + ADDRESS_ENTRANCE = 673, + + /// + /// Enum ADDRESS_BLOCK_NUMBER for value: 674 + /// + ADDRESS_BLOCK_NUMBER = 674, + + /// + /// Enum ADDRESS_STREET_NUMBER for value: 675 + /// + ADDRESS_STREET_NUMBER = 675, + + /// + /// Enum ADDRESS_STREET_TYPE for value: 676 + /// + ADDRESS_STREET_TYPE = 676, + + /// + /// Enum ADDRESS_CITY_SECTOR for value: 677 + /// + ADDRESS_CITY_SECTOR = 677, + + /// + /// Enum ADDRESS_COUNTY_TYPE for value: 678 + /// + ADDRESS_COUNTY_TYPE = 678, + + /// + /// Enum ADDRESS_CITY_TYPE for value: 679 + /// + ADDRESS_CITY_TYPE = 679, + + /// + /// Enum ADDRESS_BUILDING_TYPE for value: 680 + /// + ADDRESS_BUILDING_TYPE = 680, + + /// + /// Enum DATE_OF_RETIREMENT for value: 681 + /// + DATE_OF_RETIREMENT = 681, + + /// + /// Enum DOCUMENT_STATUS for value: 682 + /// + DOCUMENT_STATUS = 682, + + /// + /// Enum SIGNATURE for value: 683 + /// + SIGNATURE = 683, + + /// + /// Enum FT_UNIQUE_CERTIFICATE_IDENTIFIER for value: 684 + /// + FT_UNIQUE_CERTIFICATE_IDENTIFIER = 684, + + /// + /// Enum FT_EMAIL for value: 685 + /// + FT_EMAIL = 685, + + /// + /// Enum FT_DATE_OF_SPECIMEN_COLLECTION for value: 686 + /// + FT_DATE_OF_SPECIMEN_COLLECTION = 686, + + /// + /// Enum FT_TYPE_OF_TESTING for value: 687 + /// + FT_TYPE_OF_TESTING = 687, + + /// + /// Enum FT_RESULT_OF_TESTING for value: 688 + /// + FT_RESULT_OF_TESTING = 688, + + /// + /// Enum FT_METHOD_OF_TESTING for value: 689 + /// + FT_METHOD_OF_TESTING = 689, + + /// + /// Enum FT_DIGITAL_TRAVEL_AUTHORIZATION_NUMBER for value: 690 + /// + FT_DIGITAL_TRAVEL_AUTHORIZATION_NUMBER = 690, + + /// + /// Enum FT_DATE_OF_FIRST_POSITIVE_TEST_RESULT for value: 691 + /// + FT_DATE_OF_FIRST_POSITIVE_TEST_RESULT = 691, + + /// + /// Enum EF_CARD_ACCESS for value: 692 + /// + EF_CARD_ACCESS = 692, + + /// + /// Enum SHORT_FLIGHT_NUMBER for value: 693 + /// + SHORT_FLIGHT_NUMBER = 693, + + /// + /// Enum AIRLINE_CODE for value: 694 + /// + AIRLINE_CODE = 694 + } - /** Document class code */ - public const int DOCUMENT_CLASS_CODE = 0; - - /** Issuing country document code in accordance with the standard ISO 3166-1 (ICAO, document 9303) */ - public const int ISSUING_STATE_CODE = 1; - - /** Document number */ - public const int DOCUMENT_NUMBER = 2; - - /** Document expiration date */ - public const int DATE_OF_EXPIRY = 3; - - /** Date of issue */ - public const int DATE_OF_ISSUE = 4; - - /** Date of birth */ - public const int DATE_OF_BIRTH = 5; - - /** Place of birth */ - public const int PLACE_OF_BIRTH = 6; - - /** Personal number */ - public const int PERSONAL_NUMBER = 7; - - /** Surname */ - public const int SURNAME = 8; - - /** Given name (names) */ - public const int GIVEN_NAME = 9; - - /** Mother`s name */ - public const int MOTHERS_NAME = 10; - - /** Nationality */ - public const int NATIONALITY = 11; - - /** Sex */ - public const int SEX = 12; - - /** Height */ - public const int HEIGHT = 13; - - /** Weight */ - public const int WEIGHT = 14; - - /** Eyes color */ - public const int EYES_COLOR = 15; - - /** Hair color */ - public const int HAIR_COLOR = 16; - - /** Address */ - public const int ADDRESS = 17; - - /** Donation stamp */ - public const int DONOR = 18; - - /** Social security number */ - public const int SOCIAL_SECURITY_NUMBER = 19; - - /** Driving license class */ - public const int DL_CLASS = 20; - - /** Driving license permission code */ - public const int DL_ENDORSED = 21; - - /** Driving license restriction code */ - public const int DL_RESTRICTION_CODE = 22; - - /** Date when the owner of the document turns 21 years old */ - public const int DL_UNDER_21_DATE = 23; - - /** Document issuing authority */ - public const int AUTHORITY = 24; - - /** Full name */ - public const int SURNAME_AND_GIVEN_NAMES = 25; - - /** Nationality letter code according to standard ISO 3166-1 (ICAO doc 9303) */ - public const int NATIONALITY_CODE = 26; - - /** Passport number (used in visas) */ - public const int PASSPORT_NUMBER = 27; - - /** Invitation number (used in visas) */ - public const int INVITATION_NUMBER = 28; - - /** Visa ID */ - public const int VISA_ID = 29; - - /** Visa class */ - public const int VISA_CLASS = 30; - - /** Visa subclass */ - public const int VISA_SUBCLASS = 31; - - /** MRZ type */ - public const int MRZ_TYPE = 35; - - /** Optional data */ - public const int OPTIONAL_DATA = 36; - - /** Full name of the document class */ - public const int DOCUMENT_CLASS_NAME = 37; - - /** Full name of issuing state */ - public const int ISSUING_STATE_NAME = 38; - - /** Place of document issue */ - public const int PLACE_OF_ISSUE = 39; - - /** Document number checksum */ - public const int DOCUMENT_NUMBER_CHECKSUM = 40; - - /** Date of birth checksum */ - public const int DATE_OF_BIRTH_CHECKSUM = 41; - - /** Date of document expiration checksum */ - public const int DATE_OF_EXPIRY_CHECKSUM = 42; - - /** Personal number checksum */ - public const int PERSONAL_NUMBER_CHECKSUM = 43; - - /** Final checksum */ - public const int FINAL_CHECKSUM = 44; - - /** Passport number checksum (used in visas) */ - public const int PASSPORT_NUMBER_CHECKSUM = 45; - - /** Invitation number checksum (used in visas) */ - public const int INVITATION_NUMBER_CHECKSUM = 46; - - /** Visa identification number checksum */ - public const int VISA_ID_CHECKSUM = 47; - - /** Full name checksum */ - public const int SURNAME_AND_GIVEN_NAME_CHECKSUM = 48; - - /** Visa expiration date checksum */ - public const int VISA_VALID_UNTIL_CHECKSUM = 49; - - /** Other information */ - public const int OTHER = 50; - - /** MRZ strings */ - public const int MRZ_STRINGS = 51; - - /** Name suffix */ - public const int NAME_SUFFIX = 52; - - /** Name prefix */ - public const int NAME_PREFIX = 53; - - /** Checksum for the date of issue of the document */ - public const int DATE_OF_ISSUE_CHECKSUM = 54; - - /** Check digit for or the date of issue of the document */ - public const int DATE_OF_ISSUE_CHECK_DIGIT = 55; - - /** Document series */ - public const int DOCUMENT_SERIES = 56; - - /** Vehicle registration certificate number */ - public const int REG_CERT_REG_NUMBER = 57; - - /** Vehicle model */ - public const int REG_CERT_CAR_MODEL = 58; - - /** Vehicle color */ - public const int REG_CERT_CAR_COLOR = 59; - - /** Vehicle body number */ - public const int REG_CERT_BODY_NUMBER = 60; - - /** Vehicle type */ - public const int REG_CERT_CAR_TYPE = 61; - - /** Vehicle GVWR */ - public const int REG_CERT_MAX_WEIGHT = 62; - - /** Vehicle unladen weight */ - public const int REG_CERT_WEIGHT = 63; - - /** Address (region) */ - public const int ADDRESS_AREA = 64; - - /** Address (state) */ - public const int ADDRESS_STATE = 65; - - /** Address (building number) */ - public const int ADDRESS_BUILDING = 66; - - /** Address (house number) */ - public const int ADDRESS_HOUSE = 67; - - /** Address (flat number) */ - public const int ADDRESS_FLAT = 68; - - /** Place of registration */ - public const int PLACE_OF_REGISTRATION = 69; - - /** Date of registration */ - public const int DATE_OF_REGISTRATION = 70; - - /** Start date of residence */ - public const int RESIDENT_FROM = 71; - - /** End date of residence */ - public const int RESIDENT_UNTIL = 72; - - /** Issuing authority code */ - public const int AUTHORITY_CODE = 73; - - /** Place of birth address (region) */ - public const int PLACE_OF_BIRTH_AREA = 74; - - /** Place of birth address (state code) */ - public const int PLACE_OF_BIRTH_STATE_CODE = 75; - - /** Address (street) */ - public const int ADDRESS_STREET = 76; - - /** Address (city) */ - public const int ADDRESS_CITY = 77; - - /** Address (tax code) */ - public const int ADDRESS_JURISDICTION_CODE = 78; - - /** Address (postal code) */ - public const int ADDRESS_POSTAL_CODE = 79; - - /** Check digit for document number */ - public const int DOCUMENT_NUMBER_CHECK_DIGIT = 80; - - /** Check digit for date of birth */ - public const int DATE_OF_BIRTH_CHECK_DIGIT = 81; - - /** Check digit for date of expiry */ - public const int DATE_OF_EXPIRY_CHECK_DIGIT = 82; - - /** Check digit for personal number */ - public const int PERSONAL_NUMBER_CHECK_DIGIT = 83; - - /** Final check digit for all MRZ */ - public const int FINAL_CHECK_DIGIT = 84; - - /** Check digit for passport number (used in visas) */ - public const int PASSPORT_NUMBER_CHECK_DIGIT = 85; - - /** Check digit for invitation number (used in visas) */ - public const int INVITATION_NUMBER_CHECK_DIGIT = 86; - - /** Check digit for visa identification number */ - public const int VISA_ID_CHECK_DIGIT = 87; - - /** Check digit for full name */ - public const int SURNAME_AND_GIVEN_NAMES_CHECK_DIGIT = 88; - - /** Check digit for visa expiration date */ - public const int VISA_VALID_UNTIL_CHECK_DIGIT = 89; - - /** Permit type */ - public const int PERMIT_DL_CLASS = 90; - - /** Permit expiration date */ - public const int PERMIT_DATE_OF_EXPIRY = 91; - - /** Permit identifier */ - public const int PERMIT_IDENTIFIER = 92; - - /** Permit issue date */ - public const int PERMIT_DATE_OF_ISSUE = 93; - - /** Driving restriction code */ - public const int PERMIT_RESTRICTION_CODE = 94; - - /** Driving permit code */ - public const int PERMIT_ENDORSED = 95; - - /** A string that is used to validate a document against a database */ - public const int ISSUE_TIMESTAMP = 96; - - /** Number of duplicates */ - public const int NUMBER_OF_DUPLICATES = 97; - - /** Medical indicator codes */ - public const int MEDICAL_INDICATOR_CODES = 98; - - /** Non resident stamp */ - public const int NON_RESIDENT_INDICATOR = 99; - - /** Visa type */ - public const int VISA_TYPE = 100; - - /** Visa valid-from date */ - public const int VISA_VALID_FROM = 101; - - /** Visa valid-until date */ - public const int VISA_VALID_UNTIL = 102; - - /** Duration of stay on visa */ - public const int DURATION_OF_STAY = 103; - - /** Number of entries */ - public const int NUMBER_OF_ENTRIES = 104; - - /** Day in date */ - public const int DAY = 105; - - /** Month in date */ - public const int MONTH = 106; - - /** Year in date */ - public const int YEAR = 107; - - /** Unique customer identifier */ - public const int UNIQUE_CUSTOMER_IDENTIFIER = 108; - - /** Commercial vehicle code */ - public const int COMMERCIAL_VEHICLE_CODES = 109; - - /** Also known as (date of birth) */ - public const int AKA_DATE_OF_BIRTH = 110; - - /** Also known as (social security number) */ - public const int AKA_SOCIAL_SECURITY_NUMBER = 111; - - /** Also known as (last name) */ - public const int AKA_SURNAME = 112; - - /** Also known as (first name) */ - public const int AKA_GIVEN_NAMES = 113; - - /** Also known as (name suffix) */ - public const int AKA_NAME_SUFFIX = 114; - - /** Also known as (name prefix) */ - public const int AKA_NAME_PREFIX = 115; - - /** Postal address (street) */ - public const int MAILING_ADDRESS_STREET = 116; - - /** Postal address (city) */ - public const int MAILING_ADDRESS_CITY = 117; - - /** Postal address (tax code) */ - public const int MAILING_ADDRESS_JURISDICTION_CODE = 118; - - /** Postal address (zip) */ - public const int MAILING_ADDRESS_POSTAL_CODE = 119; - - /** Driver license validation number */ - public const int AUDIT_INFORMATION = 120; - - /** Inventory number */ - public const int INVENTORY_NUMBER = 121; - - /** Race ethnicity */ - public const int RACE_ETHNICITY = 122; - - /** Vehicle legal class */ - public const int JURISDICTION_VEHICLE_CLASS = 123; - - /** Legal permission code */ - public const int JURISDICTION_ENDORSEMENT_CODE = 124; - - /** Legal restriction code */ - public const int JURISDICTION_RESTRICTION_CODE = 125; - - /** Surname and (or) name at birth */ - public const int FAMILY_NAME = 126; - - /** Name (russian transcription) */ - public const int GIVEN_NAMES_RUS = 127; - - /** Visa identification number (russian transcription) */ - public const int VISA_ID_RUS = 128; - - /** Father`s name */ - public const int FATHERS_NAME = 129; - - /** Father`s name (russian transcription) */ - public const int FATHERS_NAME_RUS = 130; - - /** Full name (russian transcription) */ - public const int SURNAME_AND_GIVEN_NAME_RUS = 131; - - /** Place of birth (russian transcription) */ - public const int PLACE_OF_BIRTH_RUS = 132; - - /** Issuing authority (russian transcription) */ - public const int AUTHORITY_RUS = 133; - - /** Digital code of the state of issue of the document in accordance with ISO 3166-1 (ICAO Doc 9303) */ - public const int ISSUING_STATE_CODE_NUMERIC = 134; - - /** Digital code of nationality in accordance with ISO 3166-1 (ICAO Doc 9303) */ - public const int NATIONALITY_CODE_NUMERIC = 135; - - /** Vehicle engine power */ - public const int ENGINE_POWER = 136; - - /** Vehicle engine volume */ - public const int ENGINE_VOLUME = 137; - - /** Vehicle chassis number */ - public const int CHASSIS_NUMBER = 138; - - /** Vehicle engine number */ - public const int ENGINE_NUMBER = 139; - - /** Vehicle engine model */ - public const int ENGINE_MODEL = 140; - - /** Vehicle category */ - public const int VEHICLE_CATEGORY = 141; - - /** Identity card number */ - public const int IDENTITY_CARD_NUMBER = 142; - - /** Control number */ - public const int CONTROL_NUMBER = 143; - - /** Parent names */ - public const int PARENTS_GIVEN_NAMES = 144; - - /** Second last name */ - public const int SECOND_SURNAME = 145; - - /** Middle name */ - public const int MIDDLE_NAME = 146; - - /** Vehicle identification number */ - public const int REG_CERT_VIN = 147; - - /** Check digit for vehicle identification number */ - public const int REG_CERT_VIN_CHECK_DIGIT = 148; - - /** Checksum for vehicle identification number */ - public const int REG_CERT_VIN_CHECKSUM = 149; - - /** Check digit of the first line of the MRZ */ - public const int LINE_1_CHECK_DIGIT = 150; - - /** Check digit of the second line of the MRZ */ - public const int LINE_2_CHECK_DIGIT = 151; - - /** Check digit of the third line of the MRZ */ - public const int LINE_3_CHECK_DIGIT = 152; - - /** Checksum of the first line of the MRZ */ - public const int LINE_1_CHECKSUM = 153; - - /** Checksum of the second line of the MRZ */ - public const int LINE_2_CHECKSUM = 154; - - /** Checksum of the third line of the MRZ */ - public const int LINE_3_CHECKSUM = 155; - - /** Check digit of the vehicle registration number */ - public const int REG_CERT_REG_NUMBER_CHECK_DIGIT = 156; - - /** Checksum of the vehicle registration number */ - public const int REG_CERT_REG_NUMBER_CHECKSUM = 157; - - /** Vehicle code in accordance with ITS (Intelligent Transport System) */ - public const int REG_CERT_VEHICLE_ITS_CODE = 158; - - /** Card number for access to the RFID chip */ - public const int CARD_ACCESS_NUMBER = 159; - - /** Marital status */ - public const int MARITAL_STATUS = 160; - - /** Company name */ - public const int COMPANY_NAME = 161; - - /** Special notes */ - public const int SPECIAL_NOTES = 162; - - /** Spouse`s last name */ - public const int SURNAME_OF_SPOUSE = 163; - - /** Document status tracking number */ - public const int TRACKING_NUMBER = 164; - - /** Booklet number */ - public const int BOOKLET_NUMBER = 165; - - /** Children */ - public const int CHILDREN = 166; - - /** Copy number */ - public const int COPY_NUMBER = 167; - - /** Serial number */ - public const int SERIAL_NUMBER = 168; - - /** Dossier number */ - public const int DOSSIER_NUMBER = 169; - - /** Also known as (full name) */ - public const int AKA_SURNAME_AND_GIVEN_NAMES = 170; - - /** Territorial validity */ - public const int TERRITORIAL_VALIDITY = 171; - - /** MRZ strings with correct checksums (calculated) */ - public const int MRZ_STRINGS_WITH_CORRECT_CHECK_SUMS = 172; - - /** Restriction code for commercial driving license */ - public const int DL_CDL_RESTRICTION_CODE = 173; - - /** Date the document holder turns 18 years old */ - public const int DL_UNDER_18_DATE = 174; - - /** Record creation date */ - public const int DL_RECORD_CREATED = 175; - - /** Duplicate creation date */ - public const int DL_DUPLICATE_DATE = 176; - - /** Driving license type */ - public const int DL_ISSUE_TYPE = 177; - - /** Military card number */ - public const int MILITARY_BOOK_NUMBER = 178; - - /** Destination */ - public const int DESTINATION = 179; - - /** Blood type */ - public const int BLOOD_GROUP = 180; - - /** Sequence number */ - public const int SEQUENCE_NUMBER = 181; - - /** Vehicle body type */ - public const int REG_CERT_BODY_TYPE = 182; - - /** Make of vehicle */ - public const int REG_CERT_CAR_MARK = 183; - - /** Transaction number */ - public const int TRANSACTION_NUMBER = 184; - - /** Age */ - public const int AGE = 185; - - /** Registration number (document on the record-keeping system) */ - public const int FOLIO_NUMBER = 186; - - /** Voter personal number */ - public const int VOTER_KEY = 187; - - /** Address (municipality) */ - public const int ADDRESS_MUNICIPALITY = 188; - - /** Address (locality) */ - public const int ADDRESS_LOCATION = 189; - - /** Domain/sector */ - public const int SECTION = 190; - - /** OCR number */ - public const int OCR_NUMBER = 191; - - /** Federal elections */ - public const int FEDERAL_ELECTIONS = 192; - - /** Reference number */ - public const int REFERENCE_NUMBER = 193; - - /** Optional data checksum */ - public const int OPTIONAL_DATA_CHECKSUM = 194; - - /** Optional data check digit */ - public const int OPTIONAL_DATA_CHECK_DIGIT = 195; - - /** Visa number */ - public const int VISA_NUMBER = 196; - - /** Visa number checksum */ - public const int VISA_NUMBER_CHECKSUM = 197; - - /** Visa number check digit */ - public const int VISA_NUMBER_CHECK_DIGIT = 198; - - /** Voter */ - public const int VOTER = 199; - - /** Type/number of previous document */ - public const int PREVIOUS_TYPE = 200; - - /** Field from MRZ */ - public const int FIELD_FROM_MRZ = 220; - - /** Current date */ - public const int CURRENT_DATE = 221; - - /** Status expiration date */ - public const int STATUS_DATE_OF_EXPIRY = 251; - - /** bank note number */ - public const int BANK_NOTE_NUMBER = 252; - - /** Code of customer service center */ - public const int CSC_CODE = 253; - - /** Pseudonym */ - public const int ARTISTIC_NAME = 254; - - /** Academic rank */ - public const int ACADEMIC_TITLE = 255; - - /** Address (country) */ - public const int ADDRESS_COUNTRY = 256; - - /** Address (zip) */ - public const int ADDRESS_ZIP_CODE = 257; - - /** Information on a permit for permanent residence 1 (field for eID) */ - public const int E_ID_RESIDENCE_PERMIT_1 = 258; - - /** Information on a permit for permanent residence 2 (field for eID) */ - public const int E_ID_RESIDENCE_PERMIT_2 = 259; - - /** Place of birth address: street (field for eID) */ - public const int E_ID_PLACE_OF_BIRTH_STREET = 260; - - /** Place of birth address: city (field for eID) */ - public const int E_ID_PLACE_OF_BIRTH_CITY = 261; - - /** Place of birth address: state (field for eID) */ - public const int E_ID_PLACE_OF_BIRTH_STATE = 262; - - /** Place of birth address: country (field for eID) */ - public const int E_ID_PLACE_OF_BIRTH_COUNTRY = 263; - - /** Place of birth address: zip (field for eID) */ - public const int E_ID_PLACE_OF_BIRTH_ZIP_CODE = 264; - - /** Commercial driving license class */ - public const int CDL_CLASS = 265; - - /** Date when the holder of the document is 19 years old */ - public const int DL_UNDER_19_DATE = 266; - - /** Weight (pounds) */ - public const int WEIGHT_POUNDS = 267; - - /** Document expiration indicator */ - public const int LIMITED_DURATION_DOCUMENT_INDICATOR = 268; - - /** Driving license permit */ - public const int ENDORSEMENT_EXPIRATION_DATE = 269; - - /** Revision date */ - public const int REVISION_DATE = 270; - - /** Compliance type */ - public const int COMPLIANCE_TYPE = 271; - - /** Abbreviated last name */ - public const int FAMILY_NAME_TRUNCATION = 272; - - /** Abbreviated first name */ - public const int FIRST_NAME_TRUNCATION = 273; - - /** Abbreviated middle name */ - public const int MIDDLE_NAME_TRUNCATION = 274; - - /** Exam date */ - public const int EXAM_DATE = 275; - - /** Organization */ - public const int ORGANIZATION = 276; - - /** Department */ - public const int DEPARTMENT = 277; - - /** Salary level */ - public const int PAY_GRADE = 278; - - /** Rank/status/title */ - public const int RANK = 279; - - /** Number confirming the right to receive benefits */ - public const int BENEFITS_NUMBER = 280; - - /** Type of armed forces in which sponsor serves */ - public const int SPONSOR_SERVICE = 281; - - /** Sponsor status */ - public const int SPONSOR_STATUS = 282; - - /** Sponsor */ - public const int SPONSOR = 283; - - /** Degree of kindred */ - public const int RELATIONSHIP = 284; - - /** US Citizenship and Immigration Services Alien Registration Number */ - public const int USCIS = 285; - - /** Category */ - public const int CATEGORY = 286; - - /** Remainder term */ - public const int CONDITIONS = 287; - - /** Conditions */ - public const int IDENTIFIER = 288; - - /** Identifier */ - public const int CONFIGURATION = 289; - - /** Configuration */ - public const int DISCRETIONARY_DATA = 290; - - /** Optional data */ - public const int LINE_1_OPTIONAL_DATA = 291; - - /** Optional data from MRZ first line */ - public const int LINE_2_OPTIONAL_DATA = 292; - - /** Optional data from MRZ second line */ - public const int LINE_3_OPTIONAL_DATA = 293; - - /** Optional data from MRZ third line */ - public const int EQV_CODE = 294; - - /** EQV-code */ - public const int ALT_CODE = 295; - - /** ALT-code */ - public const int BINARY_CODE = 296; - - /** Binary code */ - public const int PSEUDO_CODE = 297; - - /** Pseudo code */ - public const int FEE = 298; - - /** Fee */ - public const int STAMP_NUMBER = 299; - - /** Stamp number */ - public const int SBH_SECURITY_OPTIONS = 300; - - /** Biometric data protection settings */ - public const int SBH_INTEGRITY_OPTIONS = 301; - - /** Biometric data integrity parameters */ - public const int DATE_OF_CREATION = 302; - - /** Biometric data creation date */ - public const int VALIDITY_PERIOD = 303; - - /** Biometric data validity period */ - public const int PATRON_HEADER_VERSION = 304; - - /** Biometric data header format version */ - public const int BDB_TYPE = 305; - - /** Biometric data record type */ - public const int BIOMETRIC_TYPE = 306; - - /** Biometric data type */ - public const int BIOMETRIC_SUBTYPE = 307; - - /** Biometric data subtype */ - public const int BIOMETRIC_PRODUCT_ID = 308; - - /** Biometric data id */ - public const int BIOMETRIC_FORMAT_OWNER = 309; - - /** Biometric data format */ - public const int BIOMETRIC_FORMAT_TYPE = 310; - - /** Phone number */ - public const int PHONE = 311; - - /** Profession */ - public const int PROFESSION = 312; - - /** Job position */ - public const int TITLE = 313; - - /** Common personal data */ - public const int PERSONAL_SUMMARY = 314; - - /** Other valid identifier */ - public const int OTHER_VALID_ID = 315; - - /** Custody info */ - public const int CUSTODY_INFO = 316; - - /** Other name */ - public const int OTHER_NAME = 317; - - /** Additional data */ - public const int OBSERVATIONS = 318; - - /** Tax information */ - public const int TAX = 319; - - /** Document personalization date */ - public const int DATE_OF_PERSONALIZATION = 320; - - /** Personalization serial number */ - public const int PERSONALIZATION_SN = 321; - - /** Record creation date */ - public const int DATE_OF_RECORD = 322; - - /** Date of creation of a record of persons for notification in case of unforeseen situations */ - public const int PERSON_TO_NOTIFY_DATE_OF_RECORD = 323; - - /** Person name for contingency notification */ - public const int PERSON_TO_NOTIFY_NAME = 324; - - /** Person phone for contingency notification */ - public const int PERSON_TO_NOTIFY_PHONE = 325; - - /** Person address for contingency notification */ - public const int PERSON_TO_NOTIFY_ADDRESS = 326; - - /** Text details of the organization issuing the DS certificate */ - public const int DS_CERTIFICATE_ISSUER = 327; - - /** Text details of the organization issuing the document */ - public const int DS_CERTIFICATE_SUBJECT = 328; - - /** DS-certificate start date */ - public const int DS_CERTIFICATE_VALID_FROM = 329; - - /** DS-certificate expiration date */ - public const int DS_CERTIFICATE_VALID_TO = 330; - - /** Vehicle category/restriction/conditions from data group DG1 of the eDL application */ - public const int VRC_DATA_OBJECT_ENTRY = 331; - - /** Type confirmation number */ - public const int TYPE_APPROVAL_NUMBER = 332; - - /** Administrative number */ - public const int ADMINISTRATIVE_NUMBER = 333; - - /** Document discriminator */ - public const int DOCUMENT_DISCRIMINATOR = 334; - - /** Data discriminator */ - public const int DATA_DISCRIMINATOR = 335; - - /** ISO issuer identifier */ - public const int ISO_ISSUER_ID_NUMBER = 336; - - /** The Garda National Immigration Bureau registration number */ - public const int GNIB_NUMBER = 340; - - /** Department number */ - public const int DEPT_NUMBER = 341; - - /** Telegraph code */ - public const int TELEX_CODE = 342; - - /** Allergies */ - public const int ALLERGIES = 343; - - /** Sp-code */ - public const int SP_CODE = 344; - - /** Court restriction code */ - public const int COURT_CODE = 345; - - /** County code */ - public const int CTY = 346; - - /** Sponsor social security number */ - public const int SPONSOR_SSN = 347; - - /** Military identification number */ - public const int DOD_NUMBER = 348; - - /** Novice driver until ... (date) */ - public const int MC_NOVICE_DATE = 349; - - /** Registration number in the computer system of the Norwegian Directorate of Immigration (the UDI) */ - public const int DUF_NUMBER = 350; - - /** Philippines Traffic Police Unit Code */ - public const int AGY = 351; - - /** PNR-code (book number) */ - public const int PNR_CODE = 352; - - /** Departure airport code */ - public const int FROM_AIRPORT_CODE = 353; - - /** Arrival airport code */ - public const int TO_AIRPORT_CODE = 354; - - /** Flight number */ - public const int FLIGHT_NUMBER = 355; - - /** Departure date */ - public const int DATE_OF_FLIGHT = 356; - - /** Seat number */ - public const int SEAT_NUMBER = 357; - - /** Boarding pass issue date */ - public const int DATE_OF_ISSUE_BOARDING_PASS = 358; - - /** Hidden weapons license, valid until... (date) */ - public const int CCW_UNTIL = 359; - - /** Reference number checksum */ - public const int REFERENCE_NUMBER_CHECKSUM = 360; - - /** Reference number check digit */ - public const int REFERENCE_NUMBER_CHECK_DIGIT = 361; - - /** Room number */ - public const int ROOM_NUMBER = 362; - - /** Religion */ - public const int RELIGION = 363; - - /** Number of months before the due date expiration of a document */ - public const int REMAINDER_TERM = 364; - - /** Electronic ticket indicator */ - public const int ELECTRONIC_TICKET_INDICATOR = 365; - - /** Free baggage allowance */ - public const int COMPARTMENT_CODE = 366; - - /** Frequent flyer number */ - public const int CHECK_IN_SEQUENCE_NUMBER = 367; - - /** Airline frequent flyer indicator */ - public const int AIRLINE_DESIGNATOR_OF_BOARDING_PASS_ISSUER = 368; - - /** Ticket number */ - public const int AIRLINE_NUMERIC_CODE = 369; - - /** Airline numeric code */ - public const int TICKET_NUMBER = 370; - - /** Boarding pass issuer code */ - public const int FREQUENT_FLYER_AIRLINE_DESIGNATOR = 371; - - /** Check-in sequence number */ - public const int FREQUENT_FLYER_NUMBER = 372; - - /** Compartment code */ - public const int FREE_BAGGAGE_ALLOWANCE = 373; - - /** PDF417 codec */ - public const int PDF_417_CODEC = 374; - - /** identity card checksum */ - public const int IDENTITY_CARD_NUMBER_CHECKSUM = 375; - - /** identity card check digit */ - public const int IDENTITY_CARD_NUMBER_CHECK_DIGIT = 376; - - /** Veteran */ - public const int VETERAN = 377; - - /** Validity date of A1 driver’s license */ - public const int DL_CLASS_CODE_A1_FROM = 378; - - /** Expiration date of A1 driver’s license */ - public const int DL_CLASS_CODE_A1_TO = 379; - - /** Restrictions for A1 driver’s license */ - public const int DL_CLASS_CODE_A1_NOTES = 380; - - /** Validity date of A driver’s license */ - public const int DL_CLASS_CODE_A_FROM = 381; - - /** Expiration date of A driver’s license */ - public const int DL_CLASS_CODE_A_TO = 382; - - /** Restrictions for A driver’s license */ - public const int DL_CLASS_CODE_A_NOTES = 383; - - /** Validity date of B driver’s license */ - public const int DL_CLASS_CODE_B_FROM = 384; - - /** Expiration date of B driver’s license */ - public const int DL_CLASS_CODE_B_TO = 385; - - /** Restrictions for B driver’s license */ - public const int DL_CLASS_CODE_B_NOTES = 386; - - /** Validity date of C1 driver’s license */ - public const int DL_CLASS_CODE_C1_FROM = 387; - - /** Expiration date of C1 driver’s license */ - public const int DL_CLASS_CODE_C1_TO = 388; - - /** Restrictions for C1 driver’s license */ - public const int DL_CLASS_CODE_C1_NOTES = 389; - - /** Validity date of C driver’s license */ - public const int DL_CLASS_CODE_C_FROM = 390; - - /** Expiration date of C driver’s license */ - public const int DL_CLASS_CODE_C_TO = 391; - - /** Restrictions for C driver’s license */ - public const int DL_CLASS_CODE_C_NOTES = 392; - - /** Validity date of D1 driver’s license */ - public const int DL_CLASS_CODE_D1_FROM = 393; - - /** Expiration date of D1 driver’s license */ - public const int DL_CLASS_CODE_D1_TO = 394; - - /** Restrictions for D1 driver’s license */ - public const int DL_CLASS_CODE_D1_NOTES = 395; - - /** Validity date of D driver’s license */ - public const int DL_CLASS_CODE_D_FROM = 396; - - /** Expiration date of D driver’s license */ - public const int DL_CLASS_CODE_D_TO = 397; - - /** Restrictions for D driver’s license */ - public const int DL_CLASS_CODE_D_NOTES = 398; - - /** Validity date of BE driver’s license */ - public const int DL_CLASS_CODE_BE_FROM = 399; - - /** Expiration date of BE driver’s license */ - public const int DL_CLASS_CODE_BE_TO = 400; - - /** Restrictions for BE driver’s license */ - public const int DL_CLASS_CODE_BE_NOTES = 401; - - /** Validity date of C1E driver’s license */ - public const int DL_CLASS_CODE_C1E_FROM = 402; - - /** Expiration date of C1E driver’s license */ - public const int DL_CLASS_CODE_C1E_TO = 403; - - /** Restrictions for C1E driver’s license */ - public const int DL_CLASS_CODE_C1E_NOTES = 404; - - /** Validity date of CE driver’s license */ - public const int DL_CLASS_CODE_CE_FROM = 405; - - /** Expiration date of CE driver’s license */ - public const int DL_CLASS_CODE_CE_TO = 406; - - /** Restrictions for CE driver’s license */ - public const int DL_CLASS_CODE_CE_NOTES = 407; - - /** Validity date of D1E driver’s license */ - public const int DL_CLASS_CODE_D1E_FROM = 408; - - /** Expiration date of D1E driver’s license */ - public const int DL_CLASS_CODE_D1E_TO = 409; - - /** Restrictions for D1E driver’s license */ - public const int DL_CLASS_CODE_D1E_NOTES = 410; - - /** Validity date of DE driver’s license */ - public const int DL_CLASS_CODE_DE_FROM = 411; - - /** Expiration date of DE driver’s license */ - public const int DL_CLASS_CODE_DE_TO = 412; - - /** Restrictions for DE driver’s license */ - public const int DL_CLASS_CODE_DE_NOTES = 413; - - /** Validity date of M driver’s license */ - public const int DL_CLASS_CODE_M_FROM = 414; - - /** Expiration date of M driver’s license */ - public const int DL_CLASS_CODE_M_TO = 415; - - /** Restrictions for M driver’s license */ - public const int DL_CLASS_CODE_M_NOTES = 416; - - /** Validity date of L driver’s license */ - public const int DL_CLASS_CODE_L_FROM = 417; - - /** Expiration date of L driver’s license */ - public const int DL_CLASS_CODE_L_TO = 418; - - /** Restrictions for L driver’s license */ - public const int DL_CLASS_CODE_L_NOTES = 419; - - /** Validity date of T driver’s license */ - public const int DL_CLASS_CODE_T_FROM = 420; - - /** Expiration date of T driver’s license */ - public const int DL_CLASS_CODE_T_TO = 421; - - /** Restrictions for T driver’s license */ - public const int DL_CLASS_CODE_T_NOTES = 422; - - /** Validity date of AM driver’s license */ - public const int DL_CLASS_CODE_AM_FROM = 423; - - /** Expiration date of AM driver’s license */ - public const int DL_CLASS_CODE_AM_TO = 424; - - /** Restrictions for AM driver’s license */ - public const int DL_CLASS_CODE_AM_NOTES = 425; - - /** Validity date of A2 driver’s license */ - public const int DL_CLASS_CODE_A2_FROM = 426; - - /** Expiration date of A2 driver’s license */ - public const int DL_CLASS_CODE_A2_TO = 427; - - /** Restrictions for A2 driver’s license */ - public const int DL_CLASS_CODE_A2_NOTES = 428; - - /** Validity date of B1 driver’s license */ - public const int DL_CLASS_CODE_B1_FROM = 429; - - /** Expiration date of B1 driver’s license */ - public const int DL_CLASS_CODE_B1_TO = 430; - - /** Restrictions for B1 driver’s license */ - public const int DL_CLASS_CODE_B1_NOTES = 431; - - /** Last name at birth */ - public const int SURNAME_AT_BIRTH = 432; - - /** Civil status */ - public const int CIVIL_STATUS = 433; - - /** Number of seats */ - public const int NUMBER_OF_SEATS = 434; - - /** Number of standing places */ - public const int NUMBER_OF_STANDING_PLACES = 435; - - /** Max speed */ - public const int MAX_SPEED = 436; - - /** Fuel type */ - public const int FUEL_TYPE = 437; - - /** Vehicle emission class */ - public const int EC_ENVIRONMENTAL_TYPE = 438; - - /** Engine power-to-weight ratio */ - public const int POWER_WEIGHT_RATIO = 439; - - /** Trailer with brakes maximum weight */ - public const int MAX_MASS_OF_TRAILER_BRAKED = 440; - - /** Trailer without brakes maximum weight */ - public const int MAX_MASS_OF_TRAILER_UNBRAKED = 441; - - /** Transmission type */ - public const int TRANSMISSION_TYPE = 442; - - /** Trailer equipment */ - public const int TRAILER_HITCH = 443; - - /** Accompanying person */ - public const int ACCOMPANIED_BY = 444; - - /** Police district */ - public const int POLICE_DISTRICT = 445; - - /** Date of document first issue */ - public const int FIRST_ISSUE_DATE = 446; - - /** Maximum payload */ - public const int PAYLOAD_CAPACITY = 447; - - /** Number of axles */ - public const int NUMBER_OF_AXLES = 448; - - /** Axle weight limit */ - public const int PERMISSIBLE_AXLE_LOAD = 449; - - /** Precinct */ - public const int PRECINCT = 450; - - /** Inviter */ - public const int INVITED_BY = 451; - - /** Purpose of arrival */ - public const int PURPOSE_OF_ENTRY = 452; - - /** Skin color */ - public const int SKIN_COLOR = 453; - - /** Complexion */ - public const int COMPLEXION = 454; - - /** Departure airport */ - public const int AIRPORT_FROM = 455; - - /** Arrival airport */ - public const int AIRPORT_TO = 456; - - /** Airline name */ - public const int AIRLINE_NAME = 457; - - /** Airline bonus program for frequent flyers */ - public const int AIRLINE_NAME_FREQUENT_FLYER = 458; - - /** License number */ - public const int LICENSE_NUMBER = 459; - - /** In tanks */ - public const int IN_TANKS = 460; - - /** Other than tanks */ - public const int EXCEPT_IN_TANKS = 461; - - /** Passenger with fast track priority (express formal procedures at the airport) */ - public const int FAST_TRACK = 462; - - /** Owner */ - public const int OWNER = 463; - - /** MRZ strings from ICAO RFID */ - public const int MRZ_STRINGS_ICAO_RFID = 464; - - /** Number of card issues with this number */ - public const int NUMBER_OF_CARD_ISSUANCE = 465; - - /** Card issues count checksum */ - public const int NUMBER_OF_CARD_ISSUANCE_CHECKSUM = 466; - - /** Card issues count check digit */ - public const int NUMBER_OF_CARD_ISSUANCE_CHECK_DIGIT = 467; - - /** Birth century */ - public const int CENTURY_DATE_OF_BIRTH = 468; - - /** Validity date of A3 driver’s license */ - public const int DL_CLASS_CODE_A3_FROM = 469; - - /** Expiration date of A3 driver’s license */ - public const int DL_CLASS_CODE_A3_TO = 470; - - /** Restrictions for A3 driver’s license */ - public const int DL_CLASS_CODE_A3_NOTES = 471; - - /** Validity date of C2 driver’s license */ - public const int DL_CLASS_CODE_C2_FROM = 472; - - /** Expiration date of C2 driver’s license */ - public const int DL_CLASS_CODE_C2_TO = 473; - - /** Restrictions for C2 driver’s license */ - public const int DL_CLASS_CODE_C2_NOTES = 474; - - /** Validity date of B2 driver’s license */ - public const int DL_CLASS_CODE_B2_FROM = 475; - - /** Expiration date of B2 driver’s license */ - public const int DL_CLASS_CODE_B2_TO = 476; - - /** Restrictions for B2 driver’s license */ - public const int DL_CLASS_CODE_B2_NOTES = 477; - - /** Validity date of D2 driver’s license */ - public const int DL_CLASS_CODE_D2_FROM = 478; - - /** Expiration date of D2 driver’s license */ - public const int DL_CLASS_CODE_D2_TO = 479; - - /** Restrictions for D2 driver’s license */ - public const int DL_CLASS_CODE_D2_NOTES = 480; - - /** Validity date of B2E driver’s license */ - public const int DL_CLASS_CODE_B2E_FROM = 481; - - /** Expiration date of B2E driver’s license */ - public const int DL_CLASS_CODE_B2E_TO = 482; - - /** Restrictions for B2E driver’s license */ - public const int DL_CLASS_CODE_B2E_NOTES = 483; - - /** Validity date of G driver’s license */ - public const int DL_CLASS_CODE_G_FROM = 484; - - /** Expiration date of G driver’s license */ - public const int DL_CLASS_CODE_G_TO = 485; - - /** Restrictions for G driver’s license */ - public const int DL_CLASS_CODE_G_NOTES = 486; - - /** Validity date of J driver’s license */ - public const int DL_CLASS_CODE_J_FROM = 487; - - /** Expiration date of J driver’s license */ - public const int DL_CLASS_CODE_J_TO = 488; - - /** Restrictions for J driver’s license */ - public const int DL_CLASS_CODE_J_NOTES = 489; - - /** Validity date of LC driver’s license */ - public const int DL_CLASS_CODE_LC_FROM = 490; - - /** Expiration date of LC driver’s license */ - public const int DL_CLASS_CODE_LC_TO = 491; - - /** Restrictions for LC driver’s license */ - public const int DL_CLASS_CODE_LC_NOTES = 492; - - /** Bank card number */ - public const int BANK_CARD_NUMBER = 493; - - /** Bank card validity */ - public const int BANK_CARD_VALID_THRU = 494; - - /** Tax number */ - public const int TAX_NUMBER = 495; - - /** Health insurance number */ - public const int HEALTH_NUMBER = 496; - - /** Grandfather`s name */ - public const int GRANDFATHER_NAME = 497; - - /** Recruit indicator */ - public const int SELECTEE_INDICATOR = 498; - - /** Mother`s last name */ - public const int MOTHER_SURNAME = 499; - - /** Mother`s first name */ - public const int MOTHER_GIVEN_NAME = 500; - - /** Father`s last name */ - public const int FATHER_SURNAME = 501; - - /** Father`s first name */ - public const int FATHER_GIVEN_NAME = 502; - - /** Mother`s date of birth */ - public const int MOTHER_DATE_OF_BIRTH = 503; - - /** Father`s date of birth */ - public const int FATHER_DATE_OF_BIRTH = 504; - - /** Mother`s personal number */ - public const int MOTHER_PERSONAL_NUMBER = 505; - - /** Father`s personal number */ - public const int FATHER_PERSONAL_NUMBER = 506; - - /** Mother`s place of birth */ - public const int MOTHER_PLACE_OF_BIRTH = 507; - - /** Father`s place of birth */ - public const int FATHER_PLACE_OF_BIRTH = 508; - - /** Mother`s country of birth */ - public const int MOTHER_COUNTRY_OF_BIRTH = 509; - - /** Father`s country of birth */ - public const int FATHER_COUNTRY_OF_BIRTH = 510; - - /** Date of document first renewal */ - public const int DATE_FIRST_RENEWAL = 511; - - /** Date of document second renewal */ - public const int DATE_SECOND_RENEWAL = 512; - - /** Place of examination */ - public const int PLACE_OF_EXAMINATION = 513; - - /** Application number */ - public const int APPLICATION_NUMBER = 514; - - /** Voucher number */ - public const int VOUCHER_NUMBER = 515; - - /** Authorization number */ - public const int AUTHORIZATION_NUMBER = 516; - - /** Faculty */ - public const int FACULTY = 517; - - /** Form of education */ - public const int FORM_OF_EDUCATION = 518; - - /** DNI number */ - public const int DNI_NUMBER = 519; - - /** Retirement number */ - public const int RETIREMENT_NUMBER = 520; - - /** Professional id number */ - public const int PROFESSIONAL_ID_NUMBER = 521; - - /** Age at issue */ - public const int AGE_AT_ISSUE = 522; - - /** Years since issue */ - public const int YEARS_SINCE_ISSUE = 523; - - /** Validity date of BTP driver’s license */ - public const int DL_CLASS_CODE_BTP_FROM = 524; - - /** Restrictions for BTP driver’s license */ - public const int DL_CLASS_CODE_BTP_NOTES = 525; - - /** Expiration date of BTP driver’s license */ - public const int DL_CLASS_CODE_BTP_TO = 526; - - /** Validity date of C3 driver’s license */ - public const int DL_CLASS_CODE_C3_FROM = 527; - - /** Restrictions for C3 driver’s license */ - public const int DL_CLASS_CODE_C3_NOTES = 528; - - /** Expiration date of C3 driver’s license */ - public const int DL_CLASS_CODE_C3_TO = 529; - - /** Validity date of E driver’s license */ - public const int DL_CLASS_CODE_E_FROM = 530; - - /** Restrictions for E driver’s license */ - public const int DL_CLASS_CODE_E_NOTES = 531; - - /** Expiration date of E driver’s license */ - public const int DL_CLASS_CODE_E_TO = 532; - - /** Validity date of F driver’s license */ - public const int DL_CLASS_CODE_F_FROM = 533; - - /** Restrictions for F driver’s license */ - public const int DL_CLASS_CODE_F_NOTES = 534; - - /** Expiration date of F driver’s license */ - public const int DL_CLASS_CODE_F_TO = 535; - - /** Validity date of FA driver’s license */ - public const int DL_CLASS_CODE_FA_FROM = 536; - - /** Restrictions for FA driver’s license */ - public const int DL_CLASS_CODE_FA_NOTES = 537; - - /** Expiration date of FA driver’s license */ - public const int DL_CLASS_CODE_FA_TO = 538; - - /** Validity date of FA1 driver’s license */ - public const int DL_CLASS_CODE_FA1_FROM = 539; - - /** Restrictions for FA1 driver’s license */ - public const int DL_CLASS_CODE_FA1_NOTES = 540; - - /** Expiration date of FA1 driver’s license */ - public const int DL_CLASS_CODE_FA1_TO = 541; - - /** Validity date of FB driver’s license */ - public const int DL_CLASS_CODE_FB_FROM = 542; - - /** Restrictions for FB driver’s license */ - public const int DL_CLASS_CODE_FB_NOTES = 543; - - /** Expiration date of FB driver’s license */ - public const int DL_CLASS_CODE_FB_TO = 544; - - /** Validity date of G1 driver’s license */ - public const int DL_CLASS_CODE_G1_FROM = 545; - - /** Restrictions for G1 driver’s license */ - public const int DL_CLASS_CODE_G1_NOTES = 546; - - /** Expiration date of G1 driver’s license */ - public const int DL_CLASS_CODE_G1_TO = 547; - - /** Validity date of H driver’s license */ - public const int DL_CLASS_CODE_H_FROM = 548; - - /** Restrictions for H driver’s license */ - public const int DL_CLASS_CODE_H_NOTES = 549; - - /** Expiration date of H driver’s license */ - public const int DL_CLASS_CODE_H_TO = 550; - - /** Validity date of I driver’s license */ - public const int DL_CLASS_CODE_I_FROM = 551; - - /** Restrictions for I driver’s license */ - public const int DL_CLASS_CODE_I_NOTES = 552; - - /** Expiration date of I driver’s license */ - public const int DL_CLASS_CODE_I_TO = 553; - - /** Validity date of K driver’s license */ - public const int DL_CLASS_CODE_K_FROM = 554; - - /** Restrictions for K driver’s license */ - public const int DL_CLASS_CODE_K_NOTES = 555; - - /** Expiration date of K driver’s license */ - public const int DL_CLASS_CODE_K_TO = 556; - - /** Validity date of LK driver’s license */ - public const int DL_CLASS_CODE_LK_FROM = 557; - - /** Restrictions for LK driver’s license */ - public const int DL_CLASS_CODE_LK_NOTES = 558; - - /** Expiration date of LK driver’s license */ - public const int DL_CLASS_CODE_LK_TO = 559; - - /** Validity date of N driver’s license */ - public const int DL_CLASS_CODE_N_FROM = 560; - - /** Restrictions for N driver’s license */ - public const int DL_CLASS_CODE_N_NOTES = 561; - - /** Expiration date of N driver’s license */ - public const int DL_CLASS_CODE_N_TO = 562; - - /** Validity date of S driver’s license */ - public const int DL_CLASS_CODE_S_FROM = 563; - - /** Restrictions for S driver’s license */ - public const int DL_CLASS_CODE_S_NOTES = 564; - - /** Expiration date of S driver’s license */ - public const int DL_CLASS_CODE_S_TO = 565; - - /** Validity date of TB driver’s license */ - public const int DL_CLASS_CODE_TB_FROM = 566; - - /** Restrictions for TB driver’s license */ - public const int DL_CLASS_CODE_TB_NOTES = 567; - - /** Expiration date of TB driver’s license */ - public const int DL_CLASS_CODE_TB_TO = 568; - - /** Validity date of TM driver’s license */ - public const int DL_CLASS_CODE_TM_FROM = 569; - - /** Restrictions for TM driver’s license */ - public const int DL_CLASS_CODE_TM_NOTES = 570; - - /** Expiration date of TM driver’s license */ - public const int DL_CLASS_CODE_TM_TO = 571; - - /** Validity date of TR driver’s license */ - public const int DL_CLASS_CODE_TR_FROM = 572; - - /** Restrictions for TR driver’s license */ - public const int DL_CLASS_CODE_TR_NOTES = 573; - - /** Expiration date of TR driver’s license */ - public const int DL_CLASS_CODE_TR_TO = 574; - - /** Validity date of TV driver’s license */ - public const int DL_CLASS_CODE_TV_FROM = 575; - - /** Restrictions for TV driver’s license */ - public const int DL_CLASS_CODE_TV_NOTES = 576; - - /** Expiration date of TV driver’s license */ - public const int DL_CLASS_CODE_TV_TO = 577; - - /** Validity date of V driver’s license */ - public const int DL_CLASS_CODE_V_FROM = 578; - - /** Restrictions for V driver’s license */ - public const int DL_CLASS_CODE_V_NOTES = 579; - - /** Expiration date of V driver’s license */ - public const int DL_CLASS_CODE_V_TO = 580; - - /** Validity date of W driver’s license */ - public const int DL_CLASS_CODE_W_FROM = 581; - - /** Restrictions for W driver’s license */ - public const int DL_CLASS_CODE_W_NOTES = 582; - - /** Expiration date of W driver’s license */ - public const int DL_CLASS_CODE_W_TO = 583; - - /** URL */ - public const int URL = 584; - - /** Caliber */ - public const int CALIBER = 585; - - /** Model */ - public const int MODEL = 586; - - /** Make */ - public const int MAKE = 587; - - /** Number of cylinders */ - public const int NUMBER_OF_CYLINDERS = 588; - - /** Surname of husband after registration */ - public const int SURNAME_OF_HUSBAND_AFTER_REGISTRATION = 589; - - /** Surname of wife after registration */ - public const int SURNAME_OF_WIFE_AFTER_REGISTRATION = 590; - - /** Date of birth of wife */ - public const int DATE_OF_BIRTH_OF_WIFE = 591; - - /** Date of birth of husband */ - public const int DATE_OF_BIRTH_OF_HUSBAND = 592; - - /** Citizenship of first person */ - public const int CITIZENSHIP_OF_FIRST_PERSON = 593; - - /** Citizenship of second person */ - public const int CITIZENSHIP_OF_SECOND_PERSON = 594; - - /** CVV code */ - public const int CVV = 595; - - /** Date of insurance expiry */ - public const int DATE_OF_INSURANCE_EXPIRY = 596; - - /** Mortgage */ - public const int MORTGAGE_BY = 597; - - /** Old document number */ - public const int OLD_DOCUMENT_NUMBER = 598; - - /** Old date of issue */ - public const int OLD_DATE_OF_ISSUE = 599; - - /** Old place of issue */ - public const int OLD_PLACE_OF_ISSUE = 600; - - /** Validity date of LR driver’s license */ - public const int DL_CLASS_CODE_LR_FROM = 601; - - /** Expiration date of LR driver’s license */ - public const int DL_CLASS_CODE_LR_TO = 602; - - /** Restrictions for LR driver’s license */ - public const int DL_CLASS_CODE_LR_NOTES = 603; - - /** Validity date of MR driver’s license */ - public const int DL_CLASS_CODE_MR_FROM = 604; - - /** Expiration date of MR driver’s license */ - public const int DL_CLASS_CODE_MR_TO = 605; - - /** Restrictions for MR driver’s license */ - public const int DL_CLASS_CODE_MR_NOTES = 606; - - /** Validity date of HR driver’s license */ - public const int DL_CLASS_CODE_HR_FROM = 607; - - /** Expiration date of HR driver’s license */ - public const int DL_CLASS_CODE_HR_TO = 608; - - /** Restrictions for HR driver’s license */ - public const int DL_CLASS_CODE_HR_NOTES = 609; - - /** Validity date of HC driver’s license */ - public const int DL_CLASS_CODE_HC_FROM = 610; - - /** Expiration date of HC driver’s license */ - public const int DL_CLASS_CODE_HC_TO = 611; - - /** Restrictions for HC driver’s license */ - public const int DL_CLASS_CODE_HC_NOTES = 612; - - /** Validity date of MC driver’s license */ - public const int DL_CLASS_CODE_MC_FROM = 613; - - /** Expiration date of MC driver’s license */ - public const int DL_CLASS_CODE_MC_TO = 614; - - /** Restrictions for MC driver’s license */ - public const int DL_CLASS_CODE_MC_NOTES = 615; - - /** Validity date of RE driver’s license */ - public const int DL_CLASS_CODE_RE_FROM = 616; - - /** Expiration date of RE driver’s license */ - public const int DL_CLASS_CODE_RE_TO = 617; - - /** Restrictions for RE driver’s license */ - public const int DL_CLASS_CODE_RE_NOTES = 618; - - /** Validity date of R driver’s license */ - public const int DL_CLASS_CODE_R_FROM = 619; - - /** Expiration date of R driver’s license */ - public const int DL_CLASS_CODE_R_TO = 620; - - /** Restrictions for R driver’s license */ - public const int DL_CLASS_CODE_R_NOTES = 621; - - /** Validity date of CA driver’s license */ - public const int DL_CLASS_CODE_CA_FROM = 622; - - /** Expiration date of CA driver’s license */ - public const int DL_CLASS_CODE_CA_TO = 623; - - /** Restrictions for CA driver’s license */ - public const int DL_CLASS_CODE_CA_NOTES = 624; - - /** Citizenship Status */ - public const int CITIZENSHIP_STATUS = 625; - - /** Military Service From */ - public const int MILITARY_SERVICE_FROM = 626; - - /** Military Service To */ - public const int MILITARY_SERVICE_TO = 627; - - /** Validity date of NT driver’s license */ - public const int DL_CLASS_CODE_NT_FROM = 628; - - /** Expiration date of NT driver’s license */ - public const int DL_CLASS_CODE_NT_TO = 629; - - /** Restrictions for NT driver’s license */ - public const int DL_CLASS_CODE_NT_NOTES = 630; - - /** Validity date of TN driver’s license */ - public const int DL_CLASS_CODE_TN_FROM = 631; - - /** Expiration date of TN driver’s license */ - public const int DL_CLASS_CODE_TN_TO = 632; - - /** Restrictions for TN driver’s license */ - public const int DL_CLASS_CODE_TN_NOTES = 633; - - /** Validity date of D3 driver’s license */ - public const int DL_CLASS_CODE_D3_FROM = 634; - - /** Expiration date of D3 driver’s license */ - public const int DL_CLASS_CODE_D3_TO = 635; - - /** Restrictions for D3 driver’s license */ - public const int DL_CLASS_CODE_D3_NOTES = 636; - - /** Alt Date of expire */ - public const int ALT_DATE_OF_EXPIRE = 637; - - /** Validity date of CD driver’s license */ - public const int DL_CLASS_CODE_CD_FROM = 638; - - /** Expiration date of CD driver’s license */ - public const int DL_CLASS_CODE_CD_TO = 639; - - /** Restrictions for CD driver’s license */ - public const int DL_CLASS_CODE_CD_NOTES = 640; - - /** Issuer identification number */ - public const int ISSUER_IDENTIFICATION_NUMBER = 641; - - /** Second name */ - public const int FT_SECOND_NAME = 647; - - /** Third name */ - public const int FT_THIRD_NAME = 648; - - /** Fourth name */ - public const int FT_FOURTH_NAME = 649; - - /** Last name */ - public const int FT_LAST_NAME = 650; - - public const int ADDRESS_COUNTY_TYPE = 678; - - public const int ADDRESS_CITY_TYPE = 679; - - public const int ADDRESS_BUILDING_TYPE = 680; - - public const int DATE_OF_RETIREMENT = 681; - - } } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextFieldValue.cs b/src/Regula.DocumentReader.WebClient/Model/TextFieldValue.cs index 1626c8a..596baa8 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextFieldValue.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextFieldValue.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,9 +29,21 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TextFieldValue /// - [DataContract] - public partial class TextFieldValue : IEquatable, IValidatableObject + [DataContract(Name = "TextFieldValue")] + public partial class TextFieldValue : IValidatableObject { + + /// + /// Gets or Sets Source + /// + [DataMember(Name = "source", IsRequired = true, EmitDefaultValue = true)] + public Source Source { get; set; } + + /// + /// Gets or Sets OriginalValidity + /// + [DataMember(Name = "originalValidity", IsRequired = true, EmitDefaultValue = true)] + public CheckResult OriginalValidity { get; set; } /// /// Initializes a new instance of the class. /// @@ -41,101 +55,84 @@ protected TextFieldValue() { } /// source (required). /// Parsed/processed value. Date format converted for output, delimiters removed (required). /// Original value as seen in the document. + /// originalValidity (required). /// originalSymbols. /// Page index of the image from input list (required). - /// Min recognition probability. Combined minimum probability from single characters probabilities. + /// Min recognition probability. Combined minimum probability from single characters probabilities (required). /// fieldRect. /// rfidOrigin. - public TextFieldValue(string source = default(string), string value = default(string), string originalValue = default(string), List originalSymbols = default(List), int pageIndex = default(int), int probability = default(int), RectangleCoordinates fieldRect = default(RectangleCoordinates), RfidOrigin rfidOrigin = default(RfidOrigin)) + /// Same as Result type, but used for safe parsing of not-described values. See Result type. (default to 0). + public TextFieldValue(Source source = default(Source), string value = default(string), string originalValue = default(string), CheckResult originalValidity = default(CheckResult), List originalSymbols = default(List), int pageIndex = default(int), int probability = default(int), RectangleCoordinates fieldRect = default(RectangleCoordinates), RfidOrigin rfidOrigin = default(RfidOrigin), int containerType = 0) { - // to ensure "source" is required (not null) - if (source == null) - { - throw new InvalidDataException("source is a required property for TextFieldValue and cannot be null"); - } - else - { - this.Source = source; - } - + this.Source = source; // to ensure "value" is required (not null) if (value == null) { - throw new InvalidDataException("value is a required property for TextFieldValue and cannot be null"); + throw new ArgumentNullException("value is a required property for TextFieldValue and cannot be null"); } - else - { - this.Value = value; - } - - // to ensure "pageIndex" is required (not null) - if (pageIndex == null) - { - throw new InvalidDataException("pageIndex is a required property for TextFieldValue and cannot be null"); - } - else - { - this.PageIndex = pageIndex; - } - + this.Value = value; + this.OriginalValidity = originalValidity; + this.PageIndex = pageIndex; + this.Probability = probability; this.OriginalValue = originalValue; this.OriginalSymbols = originalSymbols; - this.Probability = probability; this.FieldRect = fieldRect; this.RfidOrigin = rfidOrigin; + this.ContainerType = containerType; } - - /// - /// Gets or Sets Source - /// - [DataMember(Name="source", EmitDefaultValue=true)] - public string Source { get; set; } /// /// Parsed/processed value. Date format converted for output, delimiters removed /// /// Parsed/processed value. Date format converted for output, delimiters removed - [DataMember(Name="value", EmitDefaultValue=true)] + [DataMember(Name = "value", IsRequired = true, EmitDefaultValue = true)] public string Value { get; set; } /// /// Original value as seen in the document /// /// Original value as seen in the document - [DataMember(Name="originalValue", EmitDefaultValue=false)] - public string OriginalValue { get; set; } + [DataMember(Name = "originalValue", EmitDefaultValue = false)] + public string? OriginalValue { get; set; } /// /// Gets or Sets OriginalSymbols /// - [DataMember(Name="originalSymbols", EmitDefaultValue=false)] - public List OriginalSymbols { get; set; } + [DataMember(Name = "originalSymbols", EmitDefaultValue = false)] + public List? OriginalSymbols { get; set; } /// /// Page index of the image from input list /// /// Page index of the image from input list - [DataMember(Name="pageIndex", EmitDefaultValue=true)] + [DataMember(Name = "pageIndex", IsRequired = true, EmitDefaultValue = true)] public int PageIndex { get; set; } /// /// Min recognition probability. Combined minimum probability from single characters probabilities /// /// Min recognition probability. Combined minimum probability from single characters probabilities - [DataMember(Name="probability", EmitDefaultValue=false)] + [DataMember(Name = "probability", IsRequired = true, EmitDefaultValue = true)] public int Probability { get; set; } /// /// Gets or Sets FieldRect /// - [DataMember(Name="fieldRect", EmitDefaultValue=false)] - public RectangleCoordinates FieldRect { get; set; } + [DataMember(Name = "fieldRect", EmitDefaultValue = false)] + public RectangleCoordinates? FieldRect { get; set; } /// /// Gets or Sets RfidOrigin /// - [DataMember(Name="rfidOrigin", EmitDefaultValue=false)] - public RfidOrigin RfidOrigin { get; set; } + [DataMember(Name = "rfidOrigin", EmitDefaultValue = false)] + public RfidOrigin? RfidOrigin { get; set; } + + /// + /// Same as Result type, but used for safe parsing of not-described values. See Result type. + /// + /// Same as Result type, but used for safe parsing of not-described values. See Result type. + [DataMember(Name = "containerType", EmitDefaultValue = false)] + public int? ContainerType { get; set; } /// /// Returns the string presentation of the object @@ -143,20 +140,22 @@ protected TextFieldValue() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TextFieldValue {\n"); sb.Append(" Source: ").Append(Source).Append("\n"); sb.Append(" Value: ").Append(Value).Append("\n"); sb.Append(" OriginalValue: ").Append(OriginalValue).Append("\n"); + sb.Append(" OriginalValidity: ").Append(OriginalValidity).Append("\n"); sb.Append(" OriginalSymbols: ").Append(OriginalSymbols).Append("\n"); sb.Append(" PageIndex: ").Append(PageIndex).Append("\n"); sb.Append(" Probability: ").Append(Probability).Append("\n"); sb.Append(" FieldRect: ").Append(FieldRect).Append("\n"); sb.Append(" RfidOrigin: ").Append(RfidOrigin).Append("\n"); + sb.Append(" ContainerType: ").Append(ContainerType).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -166,118 +165,23 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TextFieldValue); - } - - /// - /// Returns true if TextFieldValue instances are equal - /// - /// Instance of TextFieldValue to be compared - /// Boolean - public bool Equals(TextFieldValue input) - { - if (input == null) - return false; - - return - ( - this.Source == input.Source || - (this.Source != null && - this.Source.Equals(input.Source)) - ) && - ( - this.Value == input.Value || - (this.Value != null && - this.Value.Equals(input.Value)) - ) && - ( - this.OriginalValue == input.OriginalValue || - (this.OriginalValue != null && - this.OriginalValue.Equals(input.OriginalValue)) - ) && - ( - this.OriginalSymbols == input.OriginalSymbols || - this.OriginalSymbols != null && - input.OriginalSymbols != null && - this.OriginalSymbols.SequenceEqual(input.OriginalSymbols) - ) && - ( - this.PageIndex == input.PageIndex || - (this.PageIndex != null && - this.PageIndex.Equals(input.PageIndex)) - ) && - ( - this.Probability == input.Probability || - (this.Probability != null && - this.Probability.Equals(input.Probability)) - ) && - ( - this.FieldRect == input.FieldRect || - (this.FieldRect != null && - this.FieldRect.Equals(input.FieldRect)) - ) && - ( - this.RfidOrigin == input.RfidOrigin || - (this.RfidOrigin != null && - this.RfidOrigin.Equals(input.RfidOrigin)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Source != null) - hashCode = hashCode * 59 + this.Source.GetHashCode(); - if (this.Value != null) - hashCode = hashCode * 59 + this.Value.GetHashCode(); - if (this.OriginalValue != null) - hashCode = hashCode * 59 + this.OriginalValue.GetHashCode(); - if (this.OriginalSymbols != null) - hashCode = hashCode * 59 + this.OriginalSymbols.GetHashCode(); - if (this.PageIndex != null) - hashCode = hashCode * 59 + this.PageIndex.GetHashCode(); - if (this.Probability != null) - hashCode = hashCode * 59 + this.Probability.GetHashCode(); - if (this.FieldRect != null) - hashCode = hashCode * 59 + this.FieldRect.GetHashCode(); - if (this.RfidOrigin != null) - hashCode = hashCode * 59 + this.RfidOrigin.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - - // Probability (int) maximum - if(this.Probability > (int)100) + if (this.Probability > (int)100) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Probability, must be a value less than or equal to 100.", new [] { "Probability" }); + yield return new ValidationResult("Invalid value for Probability, must be a value less than or equal to 100.", new [] { "Probability" }); } // Probability (int) minimum - if(this.Probability < (int)0) + if (this.Probability < (int)0) { - yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Probability, must be a value greater than or equal to 0.", new [] { "Probability" }); + yield return new ValidationResult("Invalid value for Probability, must be a value greater than or equal to 0.", new [] { "Probability" }); } yield break; diff --git a/src/Regula.DocumentReader.WebClient/Model/TextItem.cs b/src/Regula.DocumentReader.WebClient/Model/TextItem.cs new file mode 100644 index 0000000..6579e1c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TextItem.cs @@ -0,0 +1,93 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TextItem + /// + [DataContract(Name = "TextItem")] + public partial class TextItem : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TextItem() { } + /// + /// Initializes a new instance of the class. + /// + /// text (required). + public TextItem(Text text = default(Text)) + { + // to ensure "text" is required (not null) + if (text == null) + { + throw new ArgumentNullException("text is a required property for TextItem and cannot be null"); + } + this.Text = text; + } + + /// + /// Gets or Sets Text + /// + [DataMember(Name = "Text", IsRequired = true, EmitDefaultValue = true)] + public Text Text { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TextItem {\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TextPostProcessing.cs b/src/Regula.DocumentReader.WebClient/Model/TextPostProcessing.cs index 75491ef..11ffb75 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextPostProcessing.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextPostProcessing.cs @@ -1,43 +1,55 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class TextPostProcessing + /// + /// Defines TextPostProcessing + /// + public enum TextPostProcessing { + /// + /// Enum NO_CHANGE for value: 0 + /// + NO_CHANGE = 0, - - public const int NO_CHANGE = 0; + /// + /// Enum UPPERCASE for value: 1 + /// + UPPERCASE = 1, - - public const int UPPERCASE = 1; - - - public const int LOWERCASE = 2; - - - public const int CAPITAL = 3; + /// + /// Enum LOWERCASE for value: 2 + /// + LOWERCASE = 2, + /// + /// Enum CAPITAL for value: 3 + /// + CAPITAL = 3 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/TextResult.cs b/src/Regula.DocumentReader.WebClient/Model/TextResult.cs index ecab932..15f189f 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TextResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TextResult.cs @@ -1,25 +1,28 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +30,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TextResult /// - [DataContract] - public partial class TextResult : ResultItem, IEquatable, IValidatableObject + [DataContract(Name = "TextResult")] + public partial class TextResult : ResultItem, IValidatableObject { /// /// Initializes a new instance of the class. @@ -39,24 +42,25 @@ protected TextResult() { } /// Initializes a new instance of the class. /// /// text (required). - public TextResult(Text text = default(Text), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType) + /// bufLength. + /// light. + /// listIdx. + /// pageIdx. + /// resultType (required) (default to Result.TEXT). + public TextResult(Text text = default(Text), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), Result resultType = Result.TEXT) : base(bufLength, light, listIdx, pageIdx, resultType) { // to ensure "text" is required (not null) if (text == null) { - throw new InvalidDataException("text is a required property for TextResult and cannot be null"); - } - else - { - this.Text = text; + throw new ArgumentNullException("text is a required property for TextResult and cannot be null"); } - + this.Text = text; } - + /// /// Gets or Sets Text /// - [DataMember(Name="Text", EmitDefaultValue=true)] + [DataMember(Name = "Text", IsRequired = true, EmitDefaultValue = true)] public Text Text { get; set; } /// @@ -65,14 +69,14 @@ protected TextResult() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TextResult {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -83,46 +87,13 @@ public override string ToJson() } /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TextResult); - } - - /// - /// Returns true if TextResult instances are equal - /// - /// Instance of TextResult to be compared - /// Boolean - public bool Equals(TextResult input) - { - if (input == null) - return false; - - return base.Equals(input) && - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ); - } - - /// - /// Gets the hash code + /// To validate all properties of the instance /// - /// Hash code - public override int GetHashCode() + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - unchecked // Overflow is fine, just wrap - { - int hashCode = base.GetHashCode(); - if (this.Text != null) - hashCode = hashCode * 59 + this.Text.GetHashCode(); - return hashCode; - } + return this.BaseValidate(validationContext); } /// @@ -130,9 +101,12 @@ public override int GetHashCode() /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + protected IEnumerable BaseValidate(ValidationContext validationContext) { - foreach(var x in base.BaseValidate(validationContext)) yield return x; + foreach (var x in base.BaseValidate(validationContext)) + { + yield return x; + } yield break; } } diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionImage.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionImage.cs index 0303ed8..481831e 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionImage.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TransactionImage.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TransactionImage /// - [DataContract] - public partial class TransactionImage : IEquatable, IValidatableObject + [DataContract(Name = "TransactionImage")] + public partial class TransactionImage : IValidatableObject { /// /// Initializes a new instance of the class. @@ -38,12 +40,12 @@ public partial class TransactionImage : IEquatable, IValidata { this.Image = image; } - + /// /// Gets or Sets Image /// - [DataMember(Name="image", EmitDefaultValue=false)] - public ImagesFieldValue Image { get; set; } + [DataMember(Name = "image", EmitDefaultValue = false)] + public ImagesFieldValue? Image { get; set; } /// /// Returns the string presentation of the object @@ -51,13 +53,13 @@ public partial class TransactionImage : IEquatable, IValidata /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TransactionImage {\n"); sb.Append(" Image: ").Append(Image).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -67,55 +69,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionImage); - } - - /// - /// Returns true if TransactionImage instances are equal - /// - /// Instance of TransactionImage to be compared - /// Boolean - public bool Equals(TransactionImage input) - { - if (input == null) - return false; - - return - ( - this.Image == input.Image || - (this.Image != null && - this.Image.Equals(input.Image)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Image != null) - hashCode = hashCode * 59 + this.Image.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionImagesFieldValue.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionImagesFieldValue.cs deleted file mode 100644 index c16a865..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionImagesFieldValue.cs +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.1.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// TransactionImagesFieldValue - /// - [DataContract] - public partial class TransactionImagesFieldValue : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// fieldType. - /// light. - /// listIdx. - /// Page index of the image from input list. - /// Image url. - public TransactionImagesFieldValue(int fieldType = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), string url = default(string)) - { - this.FieldType = fieldType; - this.Light = light; - this.ListIdx = listIdx; - this.PageIdx = pageIdx; - this.Url = url; - } - - /// - /// Gets or Sets FieldType - /// - [DataMember(Name="fieldType", EmitDefaultValue=false)] - public int FieldType { get; set; } - - /// - /// Gets or Sets Light - /// - [DataMember(Name="light", EmitDefaultValue=false)] - public int Light { get; set; } - - /// - /// Gets or Sets ListIdx - /// - [DataMember(Name="listIdx", EmitDefaultValue=false)] - public int ListIdx { get; set; } - - /// - /// Page index of the image from input list - /// - /// Page index of the image from input list - [DataMember(Name="pageIdx", EmitDefaultValue=false)] - public int PageIdx { get; set; } - - /// - /// Image url - /// - /// Image url - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class TransactionImagesFieldValue {\n"); - sb.Append(" FieldType: ").Append(FieldType).Append("\n"); - sb.Append(" Light: ").Append(Light).Append("\n"); - sb.Append(" ListIdx: ").Append(ListIdx).Append("\n"); - sb.Append(" PageIdx: ").Append(PageIdx).Append("\n"); - sb.Append(" Url: ").Append(Url).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionImagesFieldValue); - } - - /// - /// Returns true if TransactionImagesFieldValue instances are equal - /// - /// Instance of TransactionImagesFieldValue to be compared - /// Boolean - public bool Equals(TransactionImagesFieldValue input) - { - if (input == null) - return false; - - return - ( - this.FieldType == input.FieldType || - (this.FieldType != null && - this.FieldType.Equals(input.FieldType)) - ) && - ( - this.Light == input.Light || - (this.Light != null && - this.Light.Equals(input.Light)) - ) && - ( - this.ListIdx == input.ListIdx || - (this.ListIdx != null && - this.ListIdx.Equals(input.ListIdx)) - ) && - ( - this.PageIdx == input.PageIdx || - (this.PageIdx != null && - this.PageIdx.Equals(input.PageIdx)) - ) && - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.FieldType != null) - hashCode = hashCode * 59 + this.FieldType.GetHashCode(); - if (this.Light != null) - hashCode = hashCode * 59 + this.Light.GetHashCode(); - if (this.ListIdx != null) - hashCode = hashCode * 59 + this.ListIdx.GetHashCode(); - if (this.PageIdx != null) - hashCode = hashCode * 59 + this.PageIdx.GetHashCode(); - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionInfo.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionInfo.cs index 8cc5c6a..6e388eb 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionInfo.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TransactionInfo.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TransactionInfo /// - [DataContract] - public partial class TransactionInfo : IEquatable, IValidatableObject + [DataContract(Name = "TransactionInfo")] + public partial class TransactionInfo : IValidatableObject { /// /// Initializes a new instance of the class. @@ -40,8 +42,8 @@ public partial class TransactionInfo : IEquatable, IValidatabl /// Transaction tag. /// Transaction identifier. /// User name. - /// SDK version. - public TransactionInfo(string computerName = default(string), string dateTime = default(string), DocumentsDatabase documentsDatabase = default(DocumentsDatabase), string systemInfo = default(string), string tag = default(string), string transactionID = default(string), string userName = default(string), string version = default(string)) + /// SDK version. + public TransactionInfo(string computerName = default(string), string dateTime = default(string), DocumentsDatabase documentsDatabase = default(DocumentsDatabase), string systemInfo = default(string), string tag = default(string), string transactionID = default(string), string userName = default(string), string varVersion = default(string)) { this.ComputerName = computerName; this.DateTime = dateTime; @@ -50,63 +52,63 @@ public partial class TransactionInfo : IEquatable, IValidatabl this.Tag = tag; this.TransactionID = transactionID; this.UserName = userName; - this.Version = version; + this.VarVersion = varVersion; } - + /// /// Computer name /// /// Computer name - [DataMember(Name="ComputerName", EmitDefaultValue=false)] - public string ComputerName { get; set; } + [DataMember(Name = "ComputerName", EmitDefaultValue = false)] + public string? ComputerName { get; set; } /// /// Date and time /// /// Date and time - [DataMember(Name="DateTime", EmitDefaultValue=false)] - public string DateTime { get; set; } + [DataMember(Name = "DateTime", EmitDefaultValue = false)] + public string? DateTime { get; set; } /// /// Gets or Sets DocumentsDatabase /// - [DataMember(Name="DocumentsDatabase", EmitDefaultValue=false)] - public DocumentsDatabase DocumentsDatabase { get; set; } + [DataMember(Name = "DocumentsDatabase", EmitDefaultValue = false)] + public DocumentsDatabase? DocumentsDatabase { get; set; } /// /// System information /// /// System information - [DataMember(Name="SystemInfo", EmitDefaultValue=false)] - public string SystemInfo { get; set; } + [DataMember(Name = "SystemInfo", EmitDefaultValue = false)] + public string? SystemInfo { get; set; } /// /// Transaction tag /// /// Transaction tag - [DataMember(Name="Tag", EmitDefaultValue=false)] - public string Tag { get; set; } + [DataMember(Name = "Tag", EmitDefaultValue = false)] + public string? Tag { get; set; } /// /// Transaction identifier /// /// Transaction identifier - [DataMember(Name="TransactionID", EmitDefaultValue=false)] - public string TransactionID { get; set; } + [DataMember(Name = "TransactionID", EmitDefaultValue = false)] + public string? TransactionID { get; set; } /// /// User name /// /// User name - [DataMember(Name="UserName", EmitDefaultValue=false)] - public string UserName { get; set; } + [DataMember(Name = "UserName", EmitDefaultValue = false)] + public string? UserName { get; set; } /// /// SDK version /// /// SDK version - [DataMember(Name="Version", EmitDefaultValue=false)] - public string Version { get; set; } + [DataMember(Name = "Version", EmitDefaultValue = false)] + public string? VarVersion { get; set; } /// /// Returns the string presentation of the object @@ -114,7 +116,7 @@ public partial class TransactionInfo : IEquatable, IValidatabl /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TransactionInfo {\n"); sb.Append(" ComputerName: ").Append(ComputerName).Append("\n"); sb.Append(" DateTime: ").Append(DateTime).Append("\n"); @@ -123,11 +125,11 @@ public override string ToString() sb.Append(" Tag: ").Append(Tag).Append("\n"); sb.Append(" TransactionID: ").Append(TransactionID).Append("\n"); sb.Append(" UserName: ").Append(UserName).Append("\n"); - sb.Append(" Version: ").Append(Version).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -137,104 +139,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionInfo); - } - - /// - /// Returns true if TransactionInfo instances are equal - /// - /// Instance of TransactionInfo to be compared - /// Boolean - public bool Equals(TransactionInfo input) - { - if (input == null) - return false; - - return - ( - this.ComputerName == input.ComputerName || - (this.ComputerName != null && - this.ComputerName.Equals(input.ComputerName)) - ) && - ( - this.DateTime == input.DateTime || - (this.DateTime != null && - this.DateTime.Equals(input.DateTime)) - ) && - ( - this.DocumentsDatabase == input.DocumentsDatabase || - (this.DocumentsDatabase != null && - this.DocumentsDatabase.Equals(input.DocumentsDatabase)) - ) && - ( - this.SystemInfo == input.SystemInfo || - (this.SystemInfo != null && - this.SystemInfo.Equals(input.SystemInfo)) - ) && - ( - this.Tag == input.Tag || - (this.Tag != null && - this.Tag.Equals(input.Tag)) - ) && - ( - this.TransactionID == input.TransactionID || - (this.TransactionID != null && - this.TransactionID.Equals(input.TransactionID)) - ) && - ( - this.UserName == input.UserName || - (this.UserName != null && - this.UserName.Equals(input.UserName)) - ) && - ( - this.Version == input.Version || - (this.Version != null && - this.Version.Equals(input.Version)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ComputerName != null) - hashCode = hashCode * 59 + this.ComputerName.GetHashCode(); - if (this.DateTime != null) - hashCode = hashCode * 59 + this.DateTime.GetHashCode(); - if (this.DocumentsDatabase != null) - hashCode = hashCode * 59 + this.DocumentsDatabase.GetHashCode(); - if (this.SystemInfo != null) - hashCode = hashCode * 59 + this.SystemInfo.GetHashCode(); - if (this.Tag != null) - hashCode = hashCode * 59 + this.Tag.GetHashCode(); - if (this.TransactionID != null) - hashCode = hashCode * 59 + this.TransactionID.GetHashCode(); - if (this.UserName != null) - hashCode = hashCode * 59 + this.UserName.GetHashCode(); - if (this.Version != null) - hashCode = hashCode * 59 + this.Version.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionProcessGetResponse.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessGetResponse.cs index e019332..f1edc38 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionProcessGetResponse.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessGetResponse.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TransactionProcessGetResponse /// - [DataContract] - public partial class TransactionProcessGetResponse : IEquatable, IValidatableObject + [DataContract(Name = "TransactionProcessGetResponse")] + public partial class TransactionProcessGetResponse : IValidatableObject { /// /// Initializes a new instance of the class. @@ -44,30 +46,30 @@ public partial class TransactionProcessGetResponse : IEquatable /// Gets or Sets TransactionId /// - [DataMember(Name="transactionId", EmitDefaultValue=false)] - public Guid TransactionId { get; set; } + [DataMember(Name = "transactionId", EmitDefaultValue = false)] + public Guid? TransactionId { get; set; } /// /// Gets or Sets Tag /// - [DataMember(Name="tag", EmitDefaultValue=false)] - public string Tag { get; set; } + [DataMember(Name = "tag", EmitDefaultValue = false)] + public string? Tag { get; set; } /// /// Gets or Sets OutData /// - [DataMember(Name="outData", EmitDefaultValue=false)] - public OutData OutData { get; set; } + [DataMember(Name = "outData", EmitDefaultValue = false)] + public OutData? OutData { get; set; } /// /// Gets or Sets InData /// - [DataMember(Name="inData", EmitDefaultValue=false)] - public InData InData { get; set; } + [DataMember(Name = "inData", EmitDefaultValue = false)] + public InData? InData { get; set; } /// /// Returns the string presentation of the object @@ -75,7 +77,7 @@ public partial class TransactionProcessGetResponse : IEquatableString presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TransactionProcessGetResponse {\n"); sb.Append(" TransactionId: ").Append(TransactionId).Append("\n"); sb.Append(" Tag: ").Append(Tag).Append("\n"); @@ -84,7 +86,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -94,76 +96,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionProcessGetResponse); - } - - /// - /// Returns true if TransactionProcessGetResponse instances are equal - /// - /// Instance of TransactionProcessGetResponse to be compared - /// Boolean - public bool Equals(TransactionProcessGetResponse input) - { - if (input == null) - return false; - - return - ( - this.TransactionId == input.TransactionId || - (this.TransactionId != null && - this.TransactionId.Equals(input.TransactionId)) - ) && - ( - this.Tag == input.Tag || - (this.Tag != null && - this.Tag.Equals(input.Tag)) - ) && - ( - this.OutData == input.OutData || - (this.OutData != null && - this.OutData.Equals(input.OutData)) - ) && - ( - this.InData == input.InData || - (this.InData != null && - this.InData.Equals(input.InData)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.TransactionId != null) - hashCode = hashCode * 59 + this.TransactionId.GetHashCode(); - if (this.Tag != null) - hashCode = hashCode * 59 + this.Tag.GetHashCode(); - if (this.OutData != null) - hashCode = hashCode * 59 + this.OutData.GetHashCode(); - if (this.InData != null) - hashCode = hashCode * 59 + this.InData.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionProcessRequest.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessRequest.cs index ebc5726..7c60965 100644 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionProcessRequest.cs +++ b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessRequest.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,8 +29,8 @@ namespace Regula.DocumentReader.WebClient.Model /// /// TransactionProcessRequest /// - [DataContract] - public partial class TransactionProcessRequest : IEquatable, IValidatableObject + [DataContract(Name = "TransactionProcessRequest")] + public partial class TransactionProcessRequest : IValidatableObject { /// /// Initializes a new instance of the class. @@ -51,13 +53,9 @@ protected TransactionProcessRequest() { } // to ensure "processParam" is required (not null) if (processParam == null) { - throw new InvalidDataException("processParam is a required property for TransactionProcessRequest and cannot be null"); - } - else - { - this.ProcessParam = processParam; + throw new ArgumentNullException("processParam is a required property for TransactionProcessRequest and cannot be null"); } - + this.ProcessParam = processParam; this.List = list; this.LivePortrait = livePortrait; this.ExtPortrait = extPortrait; @@ -66,58 +64,64 @@ protected TransactionProcessRequest() { } this.PassBackObject = passBackObject; this.Dtc = dtc; } - + /// /// Gets or Sets ProcessParam /// - [DataMember(Name="processParam", EmitDefaultValue=true)] + [DataMember(Name = "processParam", IsRequired = true, EmitDefaultValue = true)] public ProcessParams ProcessParam { get; set; } /// /// Gets or Sets List /// - [DataMember(Name="List", EmitDefaultValue=false)] - public List List { get; set; } + [DataMember(Name = "List", EmitDefaultValue = false)] + public List? List { get; set; } /// /// Live portrait photo /// /// Live portrait photo - [DataMember(Name="livePortrait", EmitDefaultValue=false)] - public string LivePortrait { get; set; } + /* + Base64 encoded data + */ + [DataMember(Name = "livePortrait", EmitDefaultValue = false)] + public string? LivePortrait { get; set; } /// /// Portrait photo from an external source /// /// Portrait photo from an external source - [DataMember(Name="extPortrait", EmitDefaultValue=false)] - public string ExtPortrait { get; set; } + /* + Base64 encoded data + */ + [DataMember(Name = "extPortrait", EmitDefaultValue = false)] + public string? ExtPortrait { get; set; } /// /// Gets or Sets ContainerList /// - [DataMember(Name="ContainerList", EmitDefaultValue=false)] - public ContainerList ContainerList { get; set; } + [DataMember(Name = "ContainerList", EmitDefaultValue = false)] + public ContainerList? ContainerList { get; set; } /// /// Gets or Sets SystemInfo /// - [DataMember(Name="systemInfo", EmitDefaultValue=false)] - public ProcessSystemInfo SystemInfo { get; set; } + [DataMember(Name = "systemInfo", EmitDefaultValue = false)] + public ProcessSystemInfo? SystemInfo { get; set; } /// /// Free-form object to be included in response. Must be object, not list or simple value. Do not affect document processing. Use it freely to pass your app params. Stored in process logs. /// /// Free-form object to be included in response. Must be object, not list or simple value. Do not affect document processing. Use it freely to pass your app params. Stored in process logs. - [DataMember(Name="passBackObject", EmitDefaultValue=false)] - public Dictionary PassBackObject { get; set; } + [DataMember(Name = "passBackObject", EmitDefaultValue = false)] + public Dictionary? PassBackObject { get; set; } /// /// Digital Travel Credential (DTC-VC) data in base64 format for processing /// /// Digital Travel Credential (DTC-VC) data in base64 format for processing - [DataMember(Name="dtc", EmitDefaultValue=false)] - public string Dtc { get; set; } + [DataMember(Name = "dtc", EmitDefaultValue = false)] + public string? Dtc { get; set; } /// /// Returns the string presentation of the object @@ -125,7 +129,7 @@ protected TransactionProcessRequest() { } /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class TransactionProcessRequest {\n"); sb.Append(" ProcessParam: ").Append(ProcessParam).Append("\n"); sb.Append(" List: ").Append(List).Append("\n"); @@ -138,7 +142,7 @@ public override string ToString() sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -148,106 +152,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionProcessRequest); - } - - /// - /// Returns true if TransactionProcessRequest instances are equal - /// - /// Instance of TransactionProcessRequest to be compared - /// Boolean - public bool Equals(TransactionProcessRequest input) - { - if (input == null) - return false; - - return - ( - this.ProcessParam == input.ProcessParam || - (this.ProcessParam != null && - this.ProcessParam.Equals(input.ProcessParam)) - ) && - ( - this.List == input.List || - this.List != null && - input.List != null && - this.List.SequenceEqual(input.List) - ) && - ( - this.LivePortrait == input.LivePortrait || - (this.LivePortrait != null && - this.LivePortrait.Equals(input.LivePortrait)) - ) && - ( - this.ExtPortrait == input.ExtPortrait || - (this.ExtPortrait != null && - this.ExtPortrait.Equals(input.ExtPortrait)) - ) && - ( - this.ContainerList == input.ContainerList || - (this.ContainerList != null && - this.ContainerList.Equals(input.ContainerList)) - ) && - ( - this.SystemInfo == input.SystemInfo || - (this.SystemInfo != null && - this.SystemInfo.Equals(input.SystemInfo)) - ) && - ( - this.PassBackObject == input.PassBackObject || - this.PassBackObject != null && - input.PassBackObject != null && - this.PassBackObject.SequenceEqual(input.PassBackObject) - ) && - ( - this.Dtc == input.Dtc || - (this.Dtc != null && - this.Dtc.Equals(input.Dtc)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.ProcessParam != null) - hashCode = hashCode * 59 + this.ProcessParam.GetHashCode(); - if (this.List != null) - hashCode = hashCode * 59 + this.List.GetHashCode(); - if (this.LivePortrait != null) - hashCode = hashCode * 59 + this.LivePortrait.GetHashCode(); - if (this.ExtPortrait != null) - hashCode = hashCode * 59 + this.ExtPortrait.GetHashCode(); - if (this.ContainerList != null) - hashCode = hashCode * 59 + this.ContainerList.GetHashCode(); - if (this.SystemInfo != null) - hashCode = hashCode * 59 + this.SystemInfo.GetHashCode(); - if (this.PassBackObject != null) - hashCode = hashCode * 59 + this.PassBackObject.GetHashCode(); - if (this.Dtc != null) - hashCode = hashCode * 59 + this.Dtc.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionProcessResult.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessResult.cs new file mode 100644 index 0000000..b6d627b --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TransactionProcessResult.cs @@ -0,0 +1,110 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// TransactionProcessResult + /// + [DataContract(Name = "TransactionProcessResult")] + public partial class TransactionProcessResult : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// outData. + /// inData. + /// tag. + /// transactionId. + public TransactionProcessResult(OutData outData = default(OutData), InData inData = default(InData), string tag = default(string), Guid transactionId = default(Guid)) + { + this.OutData = outData; + this.InData = inData; + this.Tag = tag; + this.TransactionId = transactionId; + } + + /// + /// Gets or Sets OutData + /// + [DataMember(Name = "OutData", EmitDefaultValue = false)] + public OutData? OutData { get; set; } + + /// + /// Gets or Sets InData + /// + [DataMember(Name = "InData", EmitDefaultValue = false)] + public InData? InData { get; set; } + + /// + /// Gets or Sets Tag + /// + [DataMember(Name = "tag", EmitDefaultValue = false)] + public string? Tag { get; set; } + + /// + /// Gets or Sets TransactionId + /// + [DataMember(Name = "transactionId", EmitDefaultValue = false)] + public Guid? TransactionId { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TransactionProcessResult {\n"); + sb.Append(" OutData: ").Append(OutData).Append("\n"); + sb.Append(" InData: ").Append(InData).Append("\n"); + sb.Append(" Tag: ").Append(Tag).Append("\n"); + sb.Append(" TransactionId: ").Append(TransactionId).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TransactionScenarioRequest.cs b/src/Regula.DocumentReader.WebClient/Model/TransactionScenarioRequest.cs deleted file mode 100644 index 62cf8f0..0000000 --- a/src/Regula.DocumentReader.WebClient/Model/TransactionScenarioRequest.cs +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Regula Document Reader Web API - * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core - * - * The version of the OpenAPI document: 7.2.0 - * - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; - -namespace Regula.DocumentReader.WebClient.Model -{ - /// - /// TransactionScenarioRequest - /// - [DataContract] - public partial class TransactionScenarioRequest : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - /// scenario. - public TransactionScenarioRequest(string scenario = default(string)) - { - this.Scenario = scenario; - } - - /// - /// Gets or Sets Scenario - /// - [DataMember(Name="scenario", EmitDefaultValue=false)] - public string Scenario { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class TransactionScenarioRequest {\n"); - sb.Append(" Scenario: ").Append(Scenario).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TransactionScenarioRequest); - } - - /// - /// Returns true if TransactionScenarioRequest instances are equal - /// - /// Instance of TransactionScenarioRequest to be compared - /// Boolean - public bool Equals(TransactionScenarioRequest input) - { - if (input == null) - return false; - - return - ( - this.Scenario == input.Scenario || - (this.Scenario != null && - this.Scenario.Equals(input.Scenario)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Scenario != null) - hashCode = hashCode * 59 + this.Scenario.GetHashCode(); - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/Regula.DocumentReader.WebClient/Model/TrfFtBytes.cs b/src/Regula.DocumentReader.WebClient/Model/TrfFtBytes.cs new file mode 100644 index 0000000..ae86b06 --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TrfFtBytes.cs @@ -0,0 +1,124 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to store an array of binary information that is a part of one of the informational data groups + /// + [DataContract(Name = "TrfFtBytes")] + public partial class TrfFtBytes : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TrfFtBytes() { } + /// + /// Initializes a new instance of the class. + /// + /// Logical type of the field (required). + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification (required). + /// Length of Data array (required). + /// Binary data array. Base64 encoded. (required). + public TrfFtBytes(int type = default(int), decimal status = default(decimal), decimal length = default(decimal), string data = default(string)) + { + this.Type = type; + this.Status = status; + this.Length = length; + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for TrfFtBytes and cannot be null"); + } + this.Data = data; + } + + /// + /// Logical type of the field + /// + /// Logical type of the field + [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)] + public int Type { get; set; } + + /// + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification + /// + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification + [DataMember(Name = "Status", IsRequired = true, EmitDefaultValue = true)] + public decimal Status { get; set; } + + /// + /// Length of Data array + /// + /// Length of Data array + [DataMember(Name = "Length", IsRequired = true, EmitDefaultValue = true)] + public decimal Length { get; set; } + + /// + /// Binary data array. Base64 encoded. + /// + /// Binary data array. Base64 encoded. + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TrfFtBytes {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Length: ").Append(Length).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/TrfFtString.cs b/src/Regula.DocumentReader.WebClient/Model/TrfFtString.cs new file mode 100644 index 0000000..7dfc23c --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/TrfFtString.cs @@ -0,0 +1,123 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// Structure is used to store information about the numeric field (4 bytes) that is a part of one of the informational data groups. + /// + [DataContract(Name = "TrfFtString")] + public partial class TrfFtString : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TrfFtString() { } + /// + /// Initializes a new instance of the class. + /// + /// type. + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification. + /// Mask of format of text information (for example, «YYMMDD» for date of birth). + /// Numeric value. (required). + public TrfFtString(int type = default(int), int status = default(int), string format = default(string), string data = default(string)) + { + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for TrfFtString and cannot be null"); + } + this.Data = data; + this.Type = type; + this.Status = status; + this.Format = format; + } + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "Type", EmitDefaultValue = false)] + public int? Type { get; set; } + + /// + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification + /// + /// Result of logical analysis of compliance of the contents of the field with the requirements of the specification + [DataMember(Name = "Status", EmitDefaultValue = false)] + public int? Status { get; set; } + + /// + /// Mask of format of text information (for example, «YYMMDD» for date of birth) + /// + /// Mask of format of text information (for example, «YYMMDD» for date of birth) + [DataMember(Name = "Format", EmitDefaultValue = false)] + public string? Format { get; set; } + + /// + /// Numeric value. + /// + /// Numeric value. + [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)] + public string Data { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class TrfFtString {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Format: ").Append(Format).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Model/VerificationResult.cs b/src/Regula.DocumentReader.WebClient/Model/VerificationResult.cs index 62505d9..fe1ca9b 100644 --- a/src/Regula.DocumentReader.WebClient/Model/VerificationResult.cs +++ b/src/Regula.DocumentReader.WebClient/Model/VerificationResult.cs @@ -1,46 +1,60 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { - public class VerificationResult + /// + /// Defines VerificationResult + /// + public enum VerificationResult { - - /** Comparison result unknown */ - public const int DISABLED = 0; - - /** Verification passed */ - public const int VERIFIED = 1; - - /** Verification failed */ - public const int NOT_VERIFIED = 2; - - /** Positive comparison result */ - public const int COMPARE_MATCH = 3; - - /** Negative comparison result */ - public const int COMPARE_NOT_MATCH = 4; - + /// + /// Enum DISABLED for value: 0 + /// + DISABLED = 0, + + /// + /// Enum VERIFIED for value: 1 + /// + VERIFIED = 1, + + /// + /// Enum NOT_VERIFIED for value: 2 + /// + NOT_VERIFIED = 2, + + /// + /// Enum COMPARE_MATCH for value: 3 + /// + COMPARE_MATCH = 3, + + /// + /// Enum COMPARE_NOT_MATCH for value: 4 + /// + COMPARE_NOT_MATCH = 4 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/VerifiedFieldMap.cs b/src/Regula.DocumentReader.WebClient/Model/VerifiedFieldMap.cs index 59039e3..47d74f6 100644 --- a/src/Regula.DocumentReader.WebClient/Model/VerifiedFieldMap.cs +++ b/src/Regula.DocumentReader.WebClient/Model/VerifiedFieldMap.cs @@ -1,25 +1,27 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 7.2.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model @@ -27,76 +29,97 @@ namespace Regula.DocumentReader.WebClient.Model /// /// VerifiedFieldMap /// - [DataContract] - public partial class VerifiedFieldMap : IEquatable, IValidatableObject + [DataContract(Name = "VerifiedFieldMap")] + public partial class VerifiedFieldMap : IValidatableObject { + + /// + /// Gets or Sets WFieldType + /// + [DataMember(Name = "wFieldType", IsRequired = true, EmitDefaultValue = true)] + public TextFieldType WFieldType { get; set; } + + /// + /// Gets or Sets WLCID + /// + [DataMember(Name = "wLCID", IsRequired = true, EmitDefaultValue = true)] + public LCID WLCID { get; set; } /// /// Initializes a new instance of the class. /// - /// wFieldType. - /// wLCID. + [JsonConstructorAttribute] + protected VerifiedFieldMap() { } + /// + /// Initializes a new instance of the class. + /// + /// wFieldType (required). + /// wLCID (required). /// Field data extracted from mrz(machine readable zone). /// Field data extracted from visual zone. /// Field data extracted from barcode. /// Field data extracted from rfid chip. - /// results comparison matrix. Elements of the matrix with indices 0, 1, 2, 3 take one of the values Disabled(0), Verified(1) or Not_Verified(2), elements with indices 4, 5, 6, 7, 8 are one of the values Disabled(0), Compare_Match(3) or Compare_Not_Match(4). Elements of the Matrix matrix have the following semantic meaning: - element with index 0 –– the result of verification of data from the MRZ; - 1 –– the result of verification of data from the RFID microcircuit; - 2 –– the result of verification of data from text areas of the document; - 3 –– the result of verification data from barcodes; - 4 - the result of comparing MRZ data and RFID microcircuits; - 5 - the result of comparing MRZ data and text areas of document filling; - 6 - the result of comparing MRZ data and bar codes; - 7 - the result of comparing the data of text areas of the document and the RFID chip; - 8 - the result of comparing the data of the text areas of the document and barcodes; - 9 - the result of comparing the data of the RFID chip and barcodes.. - public VerifiedFieldMap(int wFieldType = default(int), int wLCID = default(int), string fieldMRZ = default(string), string fieldVisual = default(string), string fieldBarcode = default(string), string fieldRFID = default(string), List matrix = default(List)) + /// results comparison matrix. Elements of the matrix with indices 0, 1, 2, 3 take one of the values Disabled(0), Verified(1) or Not_Verified(2), elements with indices 4, 5, 6, 7, 8 are one of the values Disabled(0), Compare_Match(3) or Compare_Not_Match(4). Elements of the Matrix matrix have the following semantic meaning: - element with index 0 –– the result of verification of data from the MRZ; - 1 –– the result of verification of data from the RFID microcircuit; - 2 –– the result of verification of data from text areas of the document; - 3 –– the result of verification data from barcodes; - 4 - the result of comparing MRZ data and RFID microcircuits; - 5 - the result of comparing MRZ data and text areas of document filling; - 6 - the result of comparing MRZ data and bar codes; - 7 - the result of comparing the data of text areas of the document and the RFID chip; - 8 - the result of comparing the data of the text areas of the document and barcodes; - 9 - the result of comparing the data of the RFID chip and barcodes. (required). + /// fieldType. + public VerifiedFieldMap(TextFieldType wFieldType = default(TextFieldType), LCID wLCID = default(LCID), string fieldMRZ = default(string), string fieldVisual = default(string), string fieldBarcode = default(string), string fieldRFID = default(string), List matrix = default(List), int fieldType = default(int)) { this.WFieldType = wFieldType; this.WLCID = wLCID; + // to ensure "matrix" is required (not null) + if (matrix == null) + { + throw new ArgumentNullException("matrix is a required property for VerifiedFieldMap and cannot be null"); + } + this.Matrix = matrix; this.FieldMRZ = fieldMRZ; this.FieldVisual = fieldVisual; this.FieldBarcode = fieldBarcode; this.FieldRFID = fieldRFID; - this.Matrix = matrix; + this.FieldType = fieldType; } - - /// - /// Gets or Sets WFieldType - /// - [DataMember(Name="wFieldType", EmitDefaultValue=false)] - public int WFieldType { get; set; } - - /// - /// Gets or Sets WLCID - /// - [DataMember(Name="wLCID", EmitDefaultValue=false)] - public int WLCID { get; set; } /// /// Field data extracted from mrz(machine readable zone) /// /// Field data extracted from mrz(machine readable zone) - [DataMember(Name="Field_MRZ", EmitDefaultValue=false)] - public string FieldMRZ { get; set; } + [DataMember(Name = "Field_MRZ", EmitDefaultValue = false)] + public string? FieldMRZ { get; set; } /// /// Field data extracted from visual zone /// /// Field data extracted from visual zone - [DataMember(Name="Field_Visual", EmitDefaultValue=false)] - public string FieldVisual { get; set; } + [DataMember(Name = "Field_Visual", EmitDefaultValue = false)] + public string? FieldVisual { get; set; } /// /// Field data extracted from barcode /// /// Field data extracted from barcode - [DataMember(Name="Field_Barcode", EmitDefaultValue=false)] - public string FieldBarcode { get; set; } + [DataMember(Name = "Field_Barcode", EmitDefaultValue = false)] + public string? FieldBarcode { get; set; } /// /// Field data extracted from rfid chip /// /// Field data extracted from rfid chip - [DataMember(Name="Field_RFID", EmitDefaultValue=false)] - public string FieldRFID { get; set; } + [DataMember(Name = "Field_RFID", EmitDefaultValue = false)] + public string? FieldRFID { get; set; } /// /// results comparison matrix. Elements of the matrix with indices 0, 1, 2, 3 take one of the values Disabled(0), Verified(1) or Not_Verified(2), elements with indices 4, 5, 6, 7, 8 are one of the values Disabled(0), Compare_Match(3) or Compare_Not_Match(4). Elements of the Matrix matrix have the following semantic meaning: - element with index 0 –– the result of verification of data from the MRZ; - 1 –– the result of verification of data from the RFID microcircuit; - 2 –– the result of verification of data from text areas of the document; - 3 –– the result of verification data from barcodes; - 4 - the result of comparing MRZ data and RFID microcircuits; - 5 - the result of comparing MRZ data and text areas of document filling; - 6 - the result of comparing MRZ data and bar codes; - 7 - the result of comparing the data of text areas of the document and the RFID chip; - 8 - the result of comparing the data of the text areas of the document and barcodes; - 9 - the result of comparing the data of the RFID chip and barcodes. /// /// results comparison matrix. Elements of the matrix with indices 0, 1, 2, 3 take one of the values Disabled(0), Verified(1) or Not_Verified(2), elements with indices 4, 5, 6, 7, 8 are one of the values Disabled(0), Compare_Match(3) or Compare_Not_Match(4). Elements of the Matrix matrix have the following semantic meaning: - element with index 0 –– the result of verification of data from the MRZ; - 1 –– the result of verification of data from the RFID microcircuit; - 2 –– the result of verification of data from text areas of the document; - 3 –– the result of verification data from barcodes; - 4 - the result of comparing MRZ data and RFID microcircuits; - 5 - the result of comparing MRZ data and text areas of document filling; - 6 - the result of comparing MRZ data and bar codes; - 7 - the result of comparing the data of text areas of the document and the RFID chip; - 8 - the result of comparing the data of the text areas of the document and barcodes; - 9 - the result of comparing the data of the RFID chip and barcodes. - [DataMember(Name="Matrix", EmitDefaultValue=false)] - public List Matrix { get; set; } + /* + [1,0,0,0,0,3,0,0,0,0] + */ + [DataMember(Name = "Matrix", IsRequired = true, EmitDefaultValue = true)] + public List Matrix { get; set; } + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", EmitDefaultValue = false)] + public int? FieldType { get; set; } /// /// Returns the string presentation of the object @@ -104,7 +127,7 @@ public partial class VerifiedFieldMap : IEquatable, IValidata /// String presentation of the object public override string ToString() { - var sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); sb.Append("class VerifiedFieldMap {\n"); sb.Append(" WFieldType: ").Append(WFieldType).Append("\n"); sb.Append(" WLCID: ").Append(WLCID).Append("\n"); @@ -113,10 +136,11 @@ public override string ToString() sb.Append(" FieldBarcode: ").Append(FieldBarcode).Append("\n"); sb.Append(" FieldRFID: ").Append(FieldRFID).Append("\n"); sb.Append(" Matrix: ").Append(Matrix).Append("\n"); + sb.Append(" FieldType: ").Append(FieldType).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -126,98 +150,12 @@ public virtual string ToJson() return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); } - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as VerifiedFieldMap); - } - - /// - /// Returns true if VerifiedFieldMap instances are equal - /// - /// Instance of VerifiedFieldMap to be compared - /// Boolean - public bool Equals(VerifiedFieldMap input) - { - if (input == null) - return false; - - return - ( - this.WFieldType == input.WFieldType || - (this.WFieldType != null && - this.WFieldType.Equals(input.WFieldType)) - ) && - ( - this.WLCID == input.WLCID || - (this.WLCID != null && - this.WLCID.Equals(input.WLCID)) - ) && - ( - this.FieldMRZ == input.FieldMRZ || - (this.FieldMRZ != null && - this.FieldMRZ.Equals(input.FieldMRZ)) - ) && - ( - this.FieldVisual == input.FieldVisual || - (this.FieldVisual != null && - this.FieldVisual.Equals(input.FieldVisual)) - ) && - ( - this.FieldBarcode == input.FieldBarcode || - (this.FieldBarcode != null && - this.FieldBarcode.Equals(input.FieldBarcode)) - ) && - ( - this.FieldRFID == input.FieldRFID || - (this.FieldRFID != null && - this.FieldRFID.Equals(input.FieldRFID)) - ) && - ( - this.Matrix == input.Matrix || - this.Matrix != null && - input.Matrix != null && - this.Matrix.SequenceEqual(input.Matrix) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.WFieldType != null) - hashCode = hashCode * 59 + this.WFieldType.GetHashCode(); - if (this.WLCID != null) - hashCode = hashCode * 59 + this.WLCID.GetHashCode(); - if (this.FieldMRZ != null) - hashCode = hashCode * 59 + this.FieldMRZ.GetHashCode(); - if (this.FieldVisual != null) - hashCode = hashCode * 59 + this.FieldVisual.GetHashCode(); - if (this.FieldBarcode != null) - hashCode = hashCode * 59 + this.FieldBarcode.GetHashCode(); - if (this.FieldRFID != null) - hashCode = hashCode * 59 + this.FieldRFID.GetHashCode(); - if (this.Matrix != null) - hashCode = hashCode * 59 + this.Matrix.GetHashCode(); - return hashCode; - } - } - /// /// To validate all properties of the instance /// /// Validation context /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { yield break; } diff --git a/src/Regula.DocumentReader.WebClient/Model/Visibility.cs b/src/Regula.DocumentReader.WebClient/Model/Visibility.cs index c27f879..d8499bd 100644 --- a/src/Regula.DocumentReader.WebClient/Model/Visibility.cs +++ b/src/Regula.DocumentReader.WebClient/Model/Visibility.cs @@ -1,47 +1,61 @@ -/* +/* * Regula Document Reader Web API * - * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core * - * The version of the OpenAPI document: 6.5.0 - * + * The version of the OpenAPI document: 7.6.0 * Generated by: https://github.com/openapitools/openapi-generator.git */ + using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; +using System.IO; using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; namespace Regula.DocumentReader.WebClient.Model { + /// /// Enumeration contains visibility status of the security element - public class Visibility + /// + /// Enumeration contains visibility status of the security element + public enum Visibility { - - - public const int INVISIBLE = 0; - - - public const int VISIBLE = 1; - - - public const int COLORED = 2; - - - public const int GRAYSCALE = 4; - - - public const int WHITE_IR_MATCHING = 8; - + /// + /// Enum INVISIBLE for value: 0 + /// + INVISIBLE = 0, + + /// + /// Enum VISIBLE for value: 1 + /// + VISIBLE = 1, + + /// + /// Enum COLORED for value: 2 + /// + COLORED = 2, + + /// + /// Enum GRAYSCALE for value: 4 + /// + GRAYSCALE = 4, + + /// + /// Enum WHITE_IR_MATCHING for value: 8 + /// + WHITE_IR_MATCHING = 8 } + } diff --git a/src/Regula.DocumentReader.WebClient/Model/VisualExtendedFieldItem.cs b/src/Regula.DocumentReader.WebClient/Model/VisualExtendedFieldItem.cs new file mode 100644 index 0000000..2bcbe3d --- /dev/null +++ b/src/Regula.DocumentReader.WebClient/Model/VisualExtendedFieldItem.cs @@ -0,0 +1,216 @@ +/* + * Regula Document Reader Web API + * + * Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core + * + * The version of the OpenAPI document: 7.6.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Regula.DocumentReader.WebClient.Client.FileParameter; +using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter; + +namespace Regula.DocumentReader.WebClient.Model +{ + /// + /// VisualExtendedFieldItem + /// + [DataContract(Name = "VisualExtendedFieldItem")] + public partial class VisualExtendedFieldItem : IValidatableObject + { + + /// + /// Gets or Sets WFieldType + /// + [DataMember(Name = "wFieldType", IsRequired = true, EmitDefaultValue = true)] + public TextFieldType WFieldType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected VisualExtendedFieldItem() { } + /// + /// Initializes a new instance of the class. + /// + /// fieldType (required). + /// wFieldType (required). + /// Field symbolic name (null-terminated string) (required). + /// Number of StringsResult array elements (required). + /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. (required). + /// Buf_Text text string length (required). + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' (required). + /// fieldMask. + /// validity. + /// inComparison. + /// wLCID. + /// reserved2. + /// reserved3. + public VisualExtendedFieldItem(int fieldType = default(int), TextFieldType wFieldType = default(TextFieldType), string fieldName = default(string), decimal stringsCount = default(decimal), List stringsResult = default(List), decimal bufLength = default(decimal), string bufText = default(string), string fieldMask = default(string), int validity = default(int), int inComparison = default(int), int wLCID = default(int), int reserved2 = default(int), int reserved3 = default(int)) + { + this.FieldType = fieldType; + this.WFieldType = wFieldType; + // to ensure "fieldName" is required (not null) + if (fieldName == null) + { + throw new ArgumentNullException("fieldName is a required property for VisualExtendedFieldItem and cannot be null"); + } + this.FieldName = fieldName; + this.StringsCount = stringsCount; + // to ensure "stringsResult" is required (not null) + if (stringsResult == null) + { + throw new ArgumentNullException("stringsResult is a required property for VisualExtendedFieldItem and cannot be null"); + } + this.StringsResult = stringsResult; + this.BufLength = bufLength; + // to ensure "bufText" is required (not null) + if (bufText == null) + { + throw new ArgumentNullException("bufText is a required property for VisualExtendedFieldItem and cannot be null"); + } + this.BufText = bufText; + this.FieldMask = fieldMask; + this.Validity = validity; + this.InComparison = inComparison; + this.WLCID = wLCID; + this.Reserved2 = reserved2; + this.Reserved3 = reserved3; + } + + /// + /// Gets or Sets FieldType + /// + [DataMember(Name = "FieldType", IsRequired = true, EmitDefaultValue = true)] + public int FieldType { get; set; } + + /// + /// Field symbolic name (null-terminated string) + /// + /// Field symbolic name (null-terminated string) + [DataMember(Name = "FieldName", IsRequired = true, EmitDefaultValue = true)] + public string FieldName { get; set; } + + /// + /// Number of StringsResult array elements + /// + /// Number of StringsResult array elements + [DataMember(Name = "StringsCount", IsRequired = true, EmitDefaultValue = true)] + public decimal StringsCount { get; set; } + + /// + /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. + /// + /// Array of recognizing probabilities for a each line of text field. Only for Result.VISUAL_TEXT and Result.MRZ_TEXT results. + [DataMember(Name = "StringsResult", IsRequired = true, EmitDefaultValue = true)] + public List StringsResult { get; set; } + + /// + /// Buf_Text text string length + /// + /// Buf_Text text string length + [DataMember(Name = "Buf_Length", IsRequired = true, EmitDefaultValue = true)] + public decimal BufLength { get; set; } + + /// + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' + /// + /// Text field data in UTF8 format. Results of reading different lines of a multi-line field are separated by '^' + [DataMember(Name = "Buf_Text", IsRequired = true, EmitDefaultValue = true)] + public string BufText { get; set; } + + /// + /// Gets or Sets FieldMask + /// + [DataMember(Name = "FieldMask", EmitDefaultValue = false)] + public string? FieldMask { get; set; } + + /// + /// Gets or Sets Validity + /// + [DataMember(Name = "Validity", EmitDefaultValue = false)] + public int? Validity { get; set; } + + /// + /// Gets or Sets InComparison + /// + [DataMember(Name = "InComparison", EmitDefaultValue = false)] + public int? InComparison { get; set; } + + /// + /// Gets or Sets WLCID + /// + [DataMember(Name = "wLCID", EmitDefaultValue = false)] + public int? WLCID { get; set; } + + /// + /// Gets or Sets Reserved2 + /// + [DataMember(Name = "Reserved2", EmitDefaultValue = false)] + public int? Reserved2 { get; set; } + + /// + /// Gets or Sets Reserved3 + /// + [DataMember(Name = "Reserved3", EmitDefaultValue = false)] + public int? Reserved3 { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class VisualExtendedFieldItem {\n"); + sb.Append(" FieldType: ").Append(FieldType).Append("\n"); + sb.Append(" WFieldType: ").Append(WFieldType).Append("\n"); + sb.Append(" FieldName: ").Append(FieldName).Append("\n"); + sb.Append(" StringsCount: ").Append(StringsCount).Append("\n"); + sb.Append(" StringsResult: ").Append(StringsResult).Append("\n"); + sb.Append(" BufLength: ").Append(BufLength).Append("\n"); + sb.Append(" BufText: ").Append(BufText).Append("\n"); + sb.Append(" FieldMask: ").Append(FieldMask).Append("\n"); + sb.Append(" Validity: ").Append(Validity).Append("\n"); + sb.Append(" InComparison: ").Append(InComparison).Append("\n"); + sb.Append(" WLCID: ").Append(WLCID).Append("\n"); + sb.Append(" Reserved2: ").Append(Reserved2).Append("\n"); + sb.Append(" Reserved3: ").Append(Reserved3).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.csproj b/src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.csproj index ba90f2c..01ca3eb 100644 --- a/src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.csproj +++ b/src/Regula.DocumentReader.WebClient/Regula.DocumentReader.WebClient.csproj @@ -1,23 +1,24 @@ - - - netstandard2.0 - Alexander Satsukevich - Regula Ltd. - DocumentReader WebClient - regula document processing id card rfid ocr barcode ipi - Regula.DocumentReader.WebClient - 5.8.3 - 5.8.3 - true - regula_web_client.snk - 10 - - - - - - - - - - \ No newline at end of file + + + false + net8.0 + Regula.DocumentReader.WebClient + Alexander Satsukevich + Regula Ltd. + DocumentReader WebClient + Regula document processing ID card RFID OCR barcode IPI + Regula.DocumentReader.WebClient + 5.8.3 + 5.8.3 + true + regula_web_client.snk + 10 + annotations + + + + + + + + diff --git a/update-models.sh b/update-models.sh index fedf8e5..e45c062 100755 --- a/update-models.sh +++ b/update-models.sh @@ -1,15 +1,13 @@ +#!/bin/sh + DOCS_DEFINITION_FOLDER="${PWD}/../DocumentReader-web-openapi" \ \ -&& ENUM_MAPPINGS="TextFieldType=int,GraphicFieldType=int,Scenario=string,DocumentFormat=int,\ -Light=int,Result=int,VerificationResult=int,RfidLocation=int,\ -DocumentTypeRecognitionResult=int,ProcessingStatus=int,Source=string,CheckResult=int,\ -LCID=int,DocumentType=int,MeasureSystem=int,SecurityFeatureType=int,CheckDiagnose=int,\ -Critical=int,Visibility=int,AuthenticityResultType=int,ImageQualityCheckType=int,\ -LogLevel=string,MRZFormat=string,TextPostProcessing=int"\ -\ -&& docker run --user "$(id -u):$(id -g)" --rm -v "${PWD}:/client" -v "${DOCS_DEFINITION_FOLDER}:/definitions" \ -openapitools/openapi-generator-cli:v5.0.0 generate \ --i /definitions/index.yml -g csharp -o /client/ \ --c /client/csharp-generator-config.json \ ---global-property models \ ---import-mappings $ENUM_MAPPINGS \ No newline at end of file +&& docker run --user "$(id -u):$(id -g)" --rm \ +-v "${PWD}:/client" \ +-v "${DOCS_DEFINITION_FOLDER}:/definitions" \ +openapitools/openapi-generator-cli:v7.12.0 generate \ +-g csharp \ +-i /definitions/index.yml \ +-o /client/ --openapi-normalizer REF_AS_PARENT_IN_ALLOF=true \ +-t /client/generator-templates \ +-c /client/csharp-generator-config.json || exit 1 \ No newline at end of file