diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..820000aa --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "./shared-config/.eslintrc.json" +} diff --git a/.gitignore b/.gitignore index 4f033a9d..a8444def 100644 --- a/.gitignore +++ b/.gitignore @@ -1,118 +1,23 @@ -# Created by https://www.gitignore.io/api/node,java,xcode,macos,linux,swift,windows,intellij,reactnative,objective-c,androidstudio,visualstudiocode -# Edit at https://www.gitignore.io/?templates=node,java,xcode,macos,linux,swift,windows,intellij,reactnative,objective-c,androidstudio,visualstudiocode - -### AndroidStudio ### -# Covers files to be ignored for android development using Android Studio. - -# Built application files -*.apk -*.ap_ - -# Files for the ART/Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle -.gradle/ -build/ - -# Signing files -.signing/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio -/*/build/ -/*/local.properties -/*/out -/*/*/build -/*/*/production -captures/ -.navigation/ -*.ipr -*~ -*.swp - -# Android Patch -gen-external-apklibs - -# External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild - -# NDK -obj/ - -# IntelliJ IDEA -*.iml -*.iws -/out/ - -# User-specific configurations -.idea/ - -# OS-specific files -.DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -ehthumbs.db -Thumbs.db - -# Legacy Eclipse project files -.classpath -.project -.cproject -.settings/ - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.war -*.ear - -# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml) -hs_err_pid* - -## Plugin-specific files: - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Mongo Explorer plugin -.idea/mongoSettings.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### AndroidStudio Patch ### - -!/gradle/wrapper/gradle-wrapper.jar +# Created by https://www.toptal.com/developers/gitignore/api/git,java,node,linux,macos,react,swift,xcode,windows,intellij,sonarqube,objective-c,reactnative,androidstudio,terraform +# Edit at https://www.toptal.com/developers/gitignore?templates=git,java,node,linux,macos,react,swift,xcode,windows,intellij,sonarqube,objective-c,reactnative,androidstudio,terraform + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt ### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff @@ -122,6 +27,9 @@ fabric.properties .idea/**/dictionaries .idea/**/shelf +# AWS User-specific +.idea/**/aws.xml + # Generated files .idea/**/contentModel.xml @@ -142,9 +50,14 @@ fabric.properties # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules +# *.iml +# *.ipr # CMake cmake-build-*/ @@ -153,17 +66,28 @@ cmake-build-*/ .idea/**/mongoSettings.xml # File-based project format +*.iws # IntelliJ +out/ # mpeltonen/sbt-idea plugin +.idea_modules/ # JIRA plugin +atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml +# SonarLint plugin +.idea/sonarlint/ + # Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties # Editor-based Rest Client .idea/httpRequests @@ -180,28 +104,59 @@ cmake-build-*/ # *.ipr # Sonarlint plugin -.idea/sonarlint +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# Azure Toolkit for IntelliJ plugin +# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij +.idea/**/azureSettings.xml ### Java ### # Compiled class file +*.class # Log file +*.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) +.mtj.tmp/ # Package Files # *.jar +*.war *.nar +*.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* ### Linux ### +*~ # temporary files which can be created if a process still has a handle open of a deleted file .fuse_hidden* @@ -217,18 +172,23 @@ cmake-build-*/ ### macOS ### # General +.DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon + # Thumbnails +._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd +.Spotlight-V100 .TemporaryItems +.Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent @@ -239,13 +199,22 @@ Network Trash Folder Temporary Items .apdisk +### macOS Patch ### +# iCloud generated files +*.icloud + ### Node ### # Logs logs npm-debug.log* yarn-debug.log* yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* +.npmrc +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids @@ -258,6 +227,7 @@ lib-cov # Coverage directory used by tools like istanbul coverage +*.lcov # nyc test coverage .nyc_output @@ -278,8 +248,11 @@ build/Release node_modules/ jspm_packages/ -# TypeScript v1 declaration files -typings/ +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo # Optional npm cache directory .npm @@ -287,6 +260,15 @@ typings/ # Optional eslint cache .eslintcache +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + # Optional REPL history .node_repl_history @@ -296,22 +278,40 @@ typings/ # Yarn Integrity file .yarn-integrity -# dotenv environment variables file +# dotenv environment variable files .env -.env.test +.env.development.local +.env.test.local +.env.production.local +.env.local # parcel-bundler cache (https://parceljs.org/) .cache +.parcel-cache -# next.js build output +# Next.js build output .next +out -# nuxt.js build output +# Nuxt.js build / generate output .nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public # vuepress build output .vuepress/dist +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + # Serverless directories .serverless/ @@ -321,15 +321,44 @@ typings/ # DynamoDB Local files .dynamodb/ +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + ### Objective-C ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -DerivedData/ +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -338,15 +367,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -363,11 +388,11 @@ xcuserdata/ # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ # fastlane -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control @@ -384,75 +409,56 @@ iOSInjectionProject/ ### Objective-C Patch ### -### ReactNative ### -# React Native Stack Base - -.expo -__generated__ - -### ReactNative.Android Stack ### -# Built application files -*.aab - -# Files for the ART/Dalvik VM - -# Java class files - -# Generated files - -# Gradle files +### react ### +.DS_* +**/*.backup.* +**/*.back.* -# Local configuration file (sdk path, etc) +node_modules -# Proguard folder generated by Eclipse +*.sublime* -# Log Files +psd +thumb +sketch -# Android Studio Navigation editor temp files +### ReactNative ### +# React Native Stack Base -# Android Studio captures folder +.expo +__generated__ -# IntelliJ -.idea/gradle.xml -.idea/libraries -.idea/caches -# Android Studio 3 in .gitignore file. +### ReactNative.Xcode Stack ### -# Keystore files -# Uncomment the following lines if you do not want to check your keystore files in. -#*.jks -#*.keystore +## Xcode 8 and earlier -# External native build folder generated in Android Studio 2.2 and later +### ReactNative.Gradle Stack ### +.gradle +**/build/ +!src/**/build/ -# Google Services (e.g. APIs or Firebase) -# google-services.json +# Ignore Gradle GUI config +gradle-app.setting -# Freeline -freeline.py -freeline/ -freeline_project_description.json +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar -# fastlane -fastlane/screenshots -fastlane/readme.md +# Avoid ignore Gradle wrappper properties +!gradle-wrapper.properties -# Version control -vcs.xml +# Cache of project +.gradletasknamecache -# lint -lint/intermediates/ -lint/generated/ -lint/outputs/ -lint/tmp/ -# lint/reports/ +# Eclipse Gradle plugin generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath ### ReactNative.macOS Stack ### # General # Icon must end with two \r -Icon - # Thumbnails @@ -473,6 +479,8 @@ Icon ### ReactNative.Node Stack ### # Logs +# Diagnostic reports (https://nodejs.org/api/report.html) + # Runtime data # Directory for instrumented libs generated by jscoverage/JSCover @@ -491,57 +499,54 @@ Icon # Dependency directories -# TypeScript v1 declaration files +# Snowpack dependency directory (https://snowpack.dev/) + +# TypeScript cache # Optional npm cache directory # Optional eslint cache +# Optional stylelint cache + +# Microbundle cache + # Optional REPL history # Output of 'npm pack' # Yarn Integrity file -# dotenv environment variables file +# dotenv environment variable files # parcel-bundler cache (https://parceljs.org/) -# next.js build output +# Next.js build output -# nuxt.js build output +# Nuxt.js build / generate output + +# Gatsby files +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public # vuepress build output +# vuepress v2.x temp and cache directory + +# Docusaurus cache and generated files + # Serverless directories # FuseBox cache # DynamoDB Local files -### ReactNative.Gradle Stack ### +# TernJS port file -# Ignore Gradle GUI config -gradle-app.setting +# Stores VSCode versions used for testing VSCode extensions -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Cache of project -.gradletasknamecache - -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties - -### ReactNative.Xcode Stack ### -# Xcode -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## User settings - -## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) - -## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +# yarn v2 ### ReactNative.Buck Stack ### buck-out/ @@ -550,6 +555,51 @@ buck-out/ .buckversion .fakebuckversion +### ReactNative.Android Stack ### +# Gradle files +.gradle/ + +# Local configuration file (sdk path, etc) +local.properties + +# Log/OS Files + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.apk +output.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof + +### SonarQube ### +# SonarQube ignore files. +# https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner +# Sonar Scanner working directories +.sonar/ +.sonarqube/ +.scannerwork/ + +# http://www.sonarlint.org/commandline/ +# SonarLint working directories, configuration files (including credentials) +.sonarlint/ + ### Swift ### # Xcode # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore @@ -558,6 +608,7 @@ buck-out/ + ## Playgrounds timeline.xctimeline playground.xcworkspace @@ -567,6 +618,11 @@ playground.xcworkspace # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods @@ -582,9 +638,13 @@ playground.xcworkspace # Carthage/Checkouts +# Accio dependency management +Dependencies/ +.accio/ + # fastlane -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control @@ -594,19 +654,47 @@ playground.xcworkspace # https://github.com/johnno1962/injectionforxcode -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json +### Terraform ### +# Local .terraform directories +**/.terraform/* + +# .tfstate files +*.tfstate +*.tfstate.* + +# Crash log files +crash.log +crash.*.log + +# Exclude all .tfvars files, which are likely to contain sensitive data, such as +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject +# to change depending on the environment. +*.tfvars +*.tfvars.json + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json -### VisualStudioCode Patch ### -# Ignore all local history of files -.history +# Include override files you do wish to add to version control using negated pattern +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +# Ignore CLI configuration files +.terraformrc +terraform.rc ### Windows ### # Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db ehthumbs_vista.db # Dump file @@ -629,22 +717,138 @@ $RECYCLE.BIN/ *.lnk ### Xcode ### -# Xcode -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - - ### Xcode Patch ### *.xcodeproj/* !*.xcodeproj/project.pbxproj !*.xcodeproj/xcshareddata/ +!*.xcodeproj/project.xcworkspace/ !*.xcworkspace/contents.xcworkspacedata /*.gcno **/xcshareddata/WorkspaceSettings.xcsettings -# End of https://www.gitignore.io/api/node,java,xcode,macos,linux,swift,windows,intellij,reactnative,objective-c,androidstudio,visualstudiocode +### AndroidStudio ### +# Covers files to be ignored for android development using Android Studio. -dist +# Built application files +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files + +# Generated files +bin/ +gen/ + +# Gradle files + +# Signing files +.signing/ + +# Local configuration file (sdk path, etc) + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files + +# Android Studio +/*/build/ +/*/local.properties +/*/out +/*/*/build +/*/*/production +.navigation/ +*.ipr +*.swp + +# Keystore files + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Android Patch +gen-external-apklibs + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# NDK +obj/ + +# IntelliJ IDEA +/out/ + +# User-specific configurations +.idea/caches/ +.idea/libraries/ +.idea/shelf/ +.idea/workspace.xml +.idea/tasks.xml +.idea/.name +.idea/compiler.xml +.idea/copyright/profiles_settings.xml +.idea/encodings.xml +.idea/misc.xml +.idea/modules.xml +.idea/scopes/scope_settings.xml +.idea/dictionaries +.idea/vcs.xml +.idea/jsLibraryMappings.xml +.idea/datasources.xml +.idea/dataSources.ids +.idea/sqlDataSources.xml +.idea/dynamic.xml +.idea/uiDesigner.xml +.idea/assetWizardSettings.xml +.idea/gradle.xml +.idea/jarRepositories.xml +.idea/navEditor.xml + +# Legacy Eclipse project files +.cproject +.settings/ + +# Mobile Tools for Java (J2ME) + +# Package Files # + +# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml) + +## Plugin-specific files: + +# mpeltonen/sbt-idea plugin + +# JIRA plugin + +# Mongo Explorer plugin +.idea/mongoSettings.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) + +### AndroidStudio Patch ### + +!/gradle/wrapper/gradle-wrapper.jar + +# End of https://www.toptal.com/developers/gitignore/api/git,java,node,linux,macos,react,swift,xcode,windows,intellij,sonarqube,objective-c,reactnative,androidstudio,terraform + +# ============================================================================= +# Custom overrides +# ============================================================================= + +## Temp +build_image/ +/.projectile +/.dir-locals.el +/.importjs.js + +# TSOA +src/routes.ts + +# Jest jest.json junit.xml diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..f3899d99 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "printWidth": 120, + "semi": true, + "singleQuote": false, + "tabWidth": 4, + "trailingComma": "all", + "useTabs": true +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 1a047055..bcf0baf1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,30 +6,50 @@ "[handlebars]": { "editor.formatOnSave": false }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, "[sql]": { "editor.formatOnSave": false }, - "auto-close-tag.activationOnLanguage": [ - "html", - "javascriptreact", - "typescriptreact" - ], + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "auto-close-tag.activationOnLanguage": ["html", "javascriptreact", "typescriptreact"], + "cSpell.words": ["jwks", "uinfin", "singpass", "corppass"], "editor.codeActionsOnSave": { - "source.fixAll.tslint": "explicit" + "source.fixAll.eslint": "explicit" }, + "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.detectIndentation": false, "editor.formatOnSave": true, "editor.insertSpaces": false, "files.associations": { - "*.tsconfig.json": "jsonc", - "*.tslint.json": "jsonc" + "*.tsconfig.json": "jsonc" }, "files.insertFinalNewline": true, "files.trimTrailingWhitespace": true, "search.useIgnoreFiles": true, - "sequencediagrams.diagram.style": "simple", - "tslint.jsEnable": true, - "typescript.tsdk": "./node_modules/typescript/lib", - "typescriptHero.imports.multiLineWrapThreshold": 120, - "typescriptHero.imports.stringQuoteStyle": "\"" + "typescript.tsdk": "./node_modules/typescript/lib" } diff --git a/CHANGELOG.md b/CHANGELOG.md index cb0428e6..6101d1ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,526 +1,531 @@ # Changelogs +## 8.3.8 + +- Updated dependencies to fix npm audit +- Migrated from `tslint` to `eslint` and `prettier` + ## 8.3.7 -- Add optional `overrideDecryptKey` to corppass and singpass helper's `getIdTokenPayload` method -- Add `extractJwtHeader` and `extractKidFromIdToken` method +- Add optional `overrideDecryptKey` to corppass and singpass helper's `getIdTokenPayload` method +- Add `extractJwtHeader` and `extractKidFromIdToken` method ## 8.3.4 -- Add all new profiles for book facilities UAT +- Add all new profiles for book facilities UAT ## 8.3.3 -- Add new profiles for book facilities UAT +- Add new profiles for book facilities UAT ## 8.3.1 -- Add new profiles for book facilities UAT +- Add new profiles for book facilities UAT ## 8.2.0 -- **[WARNING]** Remove `vehiclestatus` as a mock param option for `getPersonInfo` in fake helper -- Add `vehicles` as a mock param option for `getPersonInfo` in fake helper to mock multiple registered vehicles - - add `vehicleno`, `status` and `iulabelno` as mock param options for `vehicles` +- **[WARNING]** Remove `vehiclestatus` as a mock param option for `getPersonInfo` in fake helper +- Add `vehicles` as a mock param option for `getPersonInfo` in fake helper to mock multiple registered vehicles + - add `vehicleno`, `status` and `iulabelno` as mock param options for `vehicles` ## 8.1.0 -- Add `regadd` as mock param options for fake profile -- Add `mrSGFromBedok` +- Add `regadd` as mock param options for fake profile +- Add `mrSGFromBedok` ## 7.4.0 -- Update `proxy-agent` from `5.0.0` to `6.3.0` +- Update `proxy-agent` from `5.0.0` to `6.3.0` ## 7.2.0 -- **[WARNING]** Updated deps - - Updated `axios` from `~0.27.2` to `~1.3.5` -- **[WARNING]** Changed tsconfig target from `ES6` to `ES2019` +- **[WARNING]** Updated deps + - Updated `axios` from `~0.27.2` to `~1.3.5` +- **[WARNING]** Changed tsconfig target from `ES6` to `ES2019` ## 7.1.5 -- Update fake profile of mrsMYMommyPerfect to cater for marital status and marriage cert of 50 chars +- Update fake profile of mrsMYMommyPerfect to cater for marital status and marriage cert of 50 chars ## 7.1.2 -- take in new parameter for corppass ndi helper, to allow for proxy endpoints to be called instead of directly calling corppass endpoints +- take in new parameter for corppass ndi helper, to allow for proxy endpoints to be called instead of directly calling corppass endpoints ## 7.1.1 -- patch the additionalHeaders to be send along with the request +- patch the additionalHeaders to be send along with the request ## 7.1.0 -- add additionalHeaders optional params to corppass helper -- add overrideAuthUrl to corppass helper's constructAuthorizationUrl method +- add additionalHeaders optional params to corppass helper +- add overrideAuthUrl to corppass helper's constructAuthorizationUrl method ## 7.0.5 -- Update dev dependencies, no breaking changes expected +- Update dev dependencies, no breaking changes expected ## 7.0.4 -- Add support for new Singpass domain +- Add support for new Singpass domain ## 7.0.0 -- **[BREAKING]** Generate schema based on MyInfo API TUO 3.2.0 - - Change `PersonCommon` to `PersonBasic` where basic profile return type is expected - - Update `MyInfoHelper.getPersonCommon()` to `MyInfoHelper.getPersonBasic()` - - Update mock profiles to match the latest specs -- **[BREAKING]** Update MyInfo domain - - `merdekagen`, `gstvoucher`, and `silversupport` have been moved from `PersonCommon` to `PersonCommunity` - - `merdekagen.code` is now string instead of enum - - `silversupport.year` and gstvoucher.year are now string instead of number (note: still returned as number in prod) - - `occupation.code` and `occupation.desc` have been removed (note: still returned as empty strings in prod) - - `address.type` is now "UNFORMATTED" instead of "unformatted" +- **[BREAKING]** Generate schema based on MyInfo API TUO 3.2.0 + - Change `PersonCommon` to `PersonBasic` where basic profile return type is expected + - Update `MyInfoHelper.getPersonCommon()` to `MyInfoHelper.getPersonBasic()` + - Update mock profiles to match the latest specs +- **[BREAKING]** Update MyInfo domain + - `merdekagen`, `gstvoucher`, and `silversupport` have been moved from `PersonCommon` to `PersonCommunity` + - `merdekagen.code` is now string instead of enum + - `silversupport.year` and gstvoucher.year are now string instead of number (note: still returned as number in prod) + - `occupation.code` and `occupation.desc` have been removed (note: still returned as empty strings in prod) + - `address.type` is now "UNFORMATTED" instead of "unformatted" ## 6.3.0 -- Added NDI helper +- Added NDI helper ## 6.2.1 -- update app reviewer mock profile +- update app reviewer mock profile ## 6.2.0 -- Added corppass helper +- Added corppass helper ## 6.1.11 -- Updated UINFIN regex to support M series users +- Updated UINFIN regex to support M series users ## 6.1.10 -- Reduce brv2 archetypes name length +- Reduce brv2 archetypes name length ## 6.1.9 -- Use BaseProfile instead of MrSGDaddyPerfect to generate brv2 archetypes +- Use BaseProfile instead of MrSGDaddyPerfect to generate brv2 archetypes ## 6.1.8 -- Add missing marriage date to brv2 archetypes +- Add missing marriage date to brv2 archetypes ## 6.1.7 -- Fix proxy profile status url +- Fix proxy profile status url ## 6.1.6 -- update BRV2 ICA UAT archetypes +- update BRV2 ICA UAT archetypes ## 6.1.5 -- add BRV2 ICA UAT archetypes +- add BRV2 ICA UAT archetypes ## 6.1.4 -- Export Util to root +- Export Util to root ## 6.1.3 -- add setLogger method to override logging behaviour +- add setLogger method to override logging behaviour ## 6.1.2 -- add overrideAuthUrl to singpass helper's constructAuthorizationUrl method +- add overrideAuthUrl to singpass helper's constructAuthorizationUrl method ## 6.1.0 -- Updated depedencies, no breaking changes expected +- Updated depedencies, no breaking changes expected ## 6.0.0 -- **[BREAKING]** Removed `moment` -- **[WARNING]** Updated npm dependencies -- **[WARNING]** Replaced `js-joda` with `@js-joda/core` +- **[BREAKING]** Removed `moment` +- **[WARNING]** Updated npm dependencies +- **[WARNING]** Replaced `js-joda` with `@js-joda/core` ## 5.2.8 -- add proxyProfileStatusUrl optional param to myinfo helper -- add additionalHeaders optional params to myinfo and singpass helper +- add proxyProfileStatusUrl optional param to myinfo helper +- add additionalHeaders optional params to myinfo and singpass helper ## 5.2.7 -- Reset child nric for testing +- Reset child nric for testing ## 5.2.6 -- Fixed proxyUrl to not be constructed if not provided +- Fixed proxyUrl to not be constructed if not provided ## 5.2.5 -- Added 3 optional keys to MyInfoHelper: proxyTokenUrl, proxyPersonUrl, proxyPersonBasicUrl to support proxying MyInfo calls without affecting signature generation +- Added 3 optional keys to MyInfoHelper: proxyTokenUrl, proxyPersonUrl, proxyPersonBasicUrl to support proxying MyInfo calls without affecting signature generation ## 5.2.4 -- Update axios to 0.24.0 +- Update axios to 0.24.0 ## 5.2.3 -- Update axios to 0.23.0 +- Update axios to 0.23.0 ## 5.2.2 -- merge PRs for security fixes +- merge PRs for security fixes ## 5.2.1 -- redacting sensitive values in error logs +- redacting sensitive values in error logs ## 5.2.0 -- Fixed logging to ensure that uinfin is never logged even for errors +- Fixed logging to ensure that uinfin is never logged even for errors ## 5.1.21 -- Update occupation logic in fake helper +- Update occupation logic in fake helper ## 5.1.18 -- Don't add the field in transformed mockParams when value is not specified +- Don't add the field in transformed mockParams when value is not specified ## 5.1.17 -- Update yearofAssesment to string -- update test cases +- Update yearofAssesment to string +- update test cases ## 5.1.16 -- Convert all the amounts to Number, while transforming CPF/Income data from mockParams -- Add a value for last updatedAt in finances Mock Data +- Convert all the amounts to Number, while transforming CPF/Income data from mockParams +- Add a value for last updatedAt in finances Mock Data ## 5.1.13 -- Add fake profile of Singapore citizen without address +- Add fake profile of Singapore citizen without address ## 5.1.12 -- Fix cpfcontribution history bug -- Update test cases +- Fix cpfcontribution history bug +- Update test cases ## 5.1.11 -- intialized cpfContributions -- Added test cases for getPerson +- intialized cpfContributions +- Added test cases for getPerson ## 5.1.9 -- Removed request library dependency -- Made state param optional in myinfo-helper's getToken -- Made all props in myinfo-helper constructor that are only required for retrieval of full person data optional -- Fixed fake-helper typing +- Removed request library dependency +- Made state param optional in myinfo-helper's getToken +- Made all props in myinfo-helper constructor that are only required for retrieval of full person data optional +- Fixed fake-helper typing ## 5.1.8 -- Revert back to using querystring lib to generate url query in myinfo-helper's constructAuthorizationUrl +- Revert back to using querystring lib to generate url query in myinfo-helper's constructAuthorizationUrl ## 5.1.7 -- Remove attributes from myinfo helper's constructor, take in attributes in separate myinfo helper functions +- Remove attributes from myinfo helper's constructor, take in attributes in separate myinfo helper functions ## 5.1.6 -- Fixed myinfo-helper's getPerson missing await and slash -- Fixed myinfo-helper's contructAuthorizationUrl querystring encoding +- Fixed myinfo-helper's getPerson missing await and slash +- Fixed myinfo-helper's contructAuthorizationUrl querystring encoding ## 5.1.5 -- Fixed myinfo-helper's authorization url -- Fixed myinfo-request post +- Fixed myinfo-helper's authorization url +- Fixed myinfo-request post ## 5.1.4 -- Added getPerson in fake-helper +- Added getPerson in fake-helper ## 5.1.3 -- fixing lint errors +- fixing lint errors ## 5.1.2 -- Added employment in mock params for bypass login -- Added cpf details and noa-basic for finances card +- Added employment in mock params for bypass login +- Added cpf details and noa-basic for finances card ## 5.1.1 -- Add missing parameter 'grant_type' in myinfo-helper's getToken function +- Add missing parameter 'grant_type' in myinfo-helper's getToken function ## 5.1.0 -- Add functionalities in myinfo-helper for retrieving full person data +- Add functionalities in myinfo-helper for retrieving full person data ## 5.0.6 -- Update japanese profile to have employer and occupation +- Update japanese profile to have employer and occupation ## 5.0.4 -- **[WARNING]** Updated Myinfo model typings and renamed the namespace from `Components` to `MyInfoComponents` -- **[WARNING]** Myinfo enum descriptions are now capitalized as per latest Myinfo swagger -- **[WARNING]** Updated npm dependencies -- Added `generate-myinfo-typings` script to dynamically generate typings from Myinfo swagger to keep them in sync -- Added Myinfo enum typings (e.g. `MyInfoEdulevel`) -- Manually add / overwrite some `PersonCommon` data properties (e.g. add `gstvoucher`, change `vehicles` to array) +- **[WARNING]** Updated Myinfo model typings and renamed the namespace from `Components` to `MyInfoComponents` +- **[WARNING]** Myinfo enum descriptions are now capitalized as per latest Myinfo swagger +- **[WARNING]** Updated npm dependencies +- Added `generate-myinfo-typings` script to dynamically generate typings from Myinfo swagger to keep them in sync +- Added Myinfo enum typings (e.g. `MyInfoEdulevel`) +- Manually add / overwrite some `PersonCommon` data properties (e.g. add `gstvoucher`, change `vehicles` to array) ## 4.2.30 -- Update dependencies +- Update dependencies ## 4.2.29 -- Update female profiles to have alias name = LEE XIU +- Update female profiles to have alias name = LEE XIU ## 4.2.28 -- Add msSGTeenager17 female +- Add msSGTeenager17 female ## 4.2.27 -- Update mrSGTeenager17 to be single and no child +- Update mrSGTeenager17 to be single and no child ## 4.2.24 -- Remove logs on SingpassSessionId in refreshSession in singpass-helper. +- Remove logs on SingpassSessionId in refreshSession in singpass-helper. ## 4.2.23 -- Update logic for refreshSession: set maxRedirects to 0 to prevent calling callback API with session id header +- Update logic for refreshSession: set maxRedirects to 0 to prevent calling callback API with session id header ## 4.2.22 -- Update pioneergen and merdekagen profile generation -- dob check to fallback to archetype dob -- set eligibility to false for opt out archetypes -- set MG archetypes dob year to 1959 -- clear eligibility / quantum values from PG archetypes -- add dob to PG archetypes +- Update pioneergen and merdekagen profile generation +- dob check to fallback to archetype dob +- set eligibility to false for opt out archetypes +- set MG archetypes dob year to 1959 +- clear eligibility / quantum values from PG archetypes +- add dob to PG archetypes ## 4.2.21 -- add children in fake-helper +- add children in fake-helper ## 4.2.19 -- add divorcedate in fake-helper +- add divorcedate in fake-helper ## 4.2.18 -- minor changes in pioneergen quantum value when dob is given during login +- minor changes in pioneergen quantum value when dob is given during login ## 4.2.17 -- Update pioneergen quantum value when dob is given during login +- Update pioneergen quantum value when dob is given during login ## 4.2.16 -- Update merdekagen and pioneergen eligibility values when dob is given during login +- Update merdekagen and pioneergen eligibility values when dob is given during login ## 4.2.15 -- Update fake profiles quantum value +- Update fake profiles quantum value ## 4.2.14 -- Change pioneergen quantum from number to string in myinfo-domain +- Change pioneergen quantum from number to string in myinfo-domain ## 4.2.13 -- Add fake profiles for Pioneergen +- Add fake profiles for Pioneergen ## 4.2.12 -- Add pioneergen property in myinfo-domain +- Add pioneergen property in myinfo-domain ## 4.2.11 -- Update profile to have default passportNumber and passport expiryDate +- Update profile to have default passportNumber and passport expiryDate ## 4.2.10 -- Add tob & sex to child +- Add tob & sex to child ## 4.2.9 -- Add tob & sex to child +- Add tob & sex to child ## 4.2.8 -- Revert update constructAuthorizationUrl +- Revert update constructAuthorizationUrl ## 4.2.7 -- Update constructAuthorizationUrl to set redirectUri if exist +- Update constructAuthorizationUrl to set redirectUri if exist ## 4.2.6 -- Restore refreshSession for singpass-helper -- Fix vulnerability 1598 -- Upgrade jest to 26 +- Restore refreshSession for singpass-helper +- Fix vulnerability 1598 +- Upgrade jest to 26 ## 4.2.5 -- Reset child nric for testing +- Reset child nric for testing ## 4.2.4 -- Updated `request` module to fix `ajv` lib vulnerability +- Updated `request` module to fix `ajv` lib vulnerability ## 4.2.3 -- export new mock profile aged 17 +- export new mock profile aged 17 ## 4.2.2 -- added new mock profile aged 17 +- added new mock profile aged 17 ## 4.2.1 -- Add empty string for remaining marital types +- Add empty string for remaining marital types ## 4.2.0 -- updated node-jose to v2.0.0, only compatible with node 10 and above +- updated node-jose to v2.0.0, only compatible with node 10 and above ## 4.1.0 -- updated mock profile to include drivinglicence -- added default response fields for mock profile (lastupdated, source, classification) +- updated mock profile to include drivinglicence +- added default response fields for mock profile (lastupdated, source, classification) ## 4.0.0 -- **[BREAKING]** Update mock profiles to match new deprecated myinfo fields +- **[BREAKING]** Update mock profiles to match new deprecated myinfo fields ## 3.2.22 -- remove http-status-codes lib +- remove http-status-codes lib ## 3.2.21 -- update child6YearsOld to use nric which is valid for immunisation records +- update child6YearsOld to use nric which is valid for immunisation records ## 3.2.20 -- updated filterThroughMyInfoAttributes to include vehicle array +- updated filterThroughMyInfoAttributes to include vehicle array ## 3.2.19 -- updated edulevel and residentialstatus typing with empty string +- updated edulevel and residentialstatus typing with empty string ## 3.2.18 -- updated person and personbasic with prod resemblance response -- updated vehicles to array for personbasic (so that it is the same structure as person) -- updated housingtype, hdbtype, comstatus with empty strings -- updated base profile with updated personbasic interface -- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree`, `mrSGDaddyPerfect`, `mrAppReviewer` mock profiles -- updated fake-helper with corrected response +- updated person and personbasic with prod resemblance response +- updated vehicles to array for personbasic (so that it is the same structure as person) +- updated housingtype, hdbtype, comstatus with empty strings +- updated base profile with updated personbasic interface +- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree`, `mrSGDaddyPerfect`, `mrAppReviewer` mock profiles +- updated fake-helper with corrected response ## 3.2.16 -- added default lifestatus param to children mock data +- added default lifestatus param to children mock data ## 3.2.15 -- udpated bypass to allow customise name +- udpated bypass to allow customise name ## 3.2.14 -- udpated bypass to allow customise alias name +- udpated bypass to allow customise alias name ## 3.2.13 -- udpated handling in fake-helper for hdb and housing params -- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` mock profiles +- udpated handling in fake-helper for hdb and housing params +- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` mock profiles ## 3.2.12 -- fixed handling for new params in fake-helper -- added `qdlValidity` in myinfo domain map +- fixed handling for new params in fake-helper +- added `qdlValidity` in myinfo domain map ## 3.2.11 -- removed `ownerprivate` and `householdincome` from mock profiles -- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` mock profiles -- updated fake-helper to handle new mock params `hdbtype`, `housingtype`, `drivingqdlvalidity`, `vehiclestatus` +- removed `ownerprivate` and `householdincome` from mock profiles +- updated `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` mock profiles +- updated fake-helper to handle new mock params `hdbtype`, `housingtype`, `drivingqdlvalidity`, `vehiclestatus` ## 3.2.10 -- updated default values of some params in base mock profiles +- updated default values of some params in base mock profiles ## 3.2.9 -- add aliasname for MrAppReviewer profile +- add aliasname for MrAppReviewer profile ## 3.2.8 -- removed uinfin from MrAppReviewer profile +- removed uinfin from MrAppReviewer profile ## 3.2.7 -- refactored `filterThroughAttributes` method in fake-helper to checked for nested paths +- refactored `filterThroughAttributes` method in fake-helper to checked for nested paths ## 3.2.6 -- add `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` in fake-profiles.ts +- add `mrSGFreshGradYoungParent`, `mrsPRHdbOwnerWorkingAdult`, `mrSGUncleRetiree` in fake-profiles.ts ## 3.2.5 -- add `MrAppReviewer` in fake-profiles.ts +- add `MrAppReviewer` in fake-profiles.ts ## 3.2.4 -- add `MR_APP_REVIEWER` as fake profile +- add `MR_APP_REVIEWER` as fake profile ## 3.2.2 -- change baseProfile merdekagen.eligibility value to false -- add merdekagen.eligibility value of True to all uncle profiles -- add logic to handle merdekagen.eligibility value to True if overwrite age is higher than 60 +- change baseProfile merdekagen.eligibility value to false +- add merdekagen.eligibility value of True to all uncle profiles +- add logic to handle merdekagen.eligibility value to True if overwrite age is higher than 60 ## 3.0.3 -- Changed basic person and Mr SG Daddy Perfect email addresses from "myinfotesting@gmail.com" to test email address -- Changed the phone numbers of basic person, Mr SG Perfect, and profiles with sponsored children to the test number +- Changed basic person and Mr SG Daddy Perfect email addresses from "myinfotesting@gmail.com" to test email address +- Changed the phone numbers of basic person, Mr SG Perfect, and profiles with sponsored children to the test number ## 3.0.2 -- Added dynamic dob to baseProfile to ensure profile is always age 59 +- Added dynamic dob to baseProfile to ensure profile is always age 59 ## 3.0.1 -- added uneditable field sex to mrSGDaddyMissingUneditableFields mock profile +- added uneditable field sex to mrSGDaddyMissingUneditableFields mock profile ## 2.3.4 -- Updated comments regarding axios proxy-agent -- Organized imports for index.ts +- Updated comments regarding axios proxy-agent +- Organized imports for index.ts ## 2.3.3 -- Update axios client to use proxy-agent () +- Update axios client to use proxy-agent () ## 2.3.2 -- Replaced with axios-https-proxy-fix with axios () +- Replaced with axios-https-proxy-fix with axios () ## 2.3.0 -- Sync'd configurations with mol-lib-connfig -- Updated dependencies +- Sync'd configurations with mol-lib-connfig +- Updated dependencies ## 2.2.27 -- added fake profiles for SG/PR with no local addresses -- added fake profile for foreigner with blank address fields -- added fake profile for foreigner with absent address object +- added fake profiles for SG/PR with no local addresses +- added fake profile for foreigner with blank address fields +- added fake profile for foreigner with absent address object ## 2.1.0 -- Using mol-lib-config -- Removed baseurl (doesn't play nice with declaration files) -- Updated with myinfo v3 Person declarations -- Added prepush scripts to ensure code quality +- Using mol-lib-config +- Removed baseurl (doesn't play nice with declaration files) +- Updated with myinfo v3 Person declarations +- Added prepush scripts to ensure code quality diff --git a/package-lock.json b/package-lock.json index 80245c91..63d30a68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,8 +28,17 @@ "@types/node": "^18.19.15", "@types/node-jose": "^1.1.13", "@types/rosie": "0.0.45", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/eslint-plugin-tslint": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", "dotenv": "^16.4.3", "dtsgenerator": "^3.19.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsdoc": "^48.0.6", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-sonarjs": "^0.24.0", "handlebars": "^4.7.8", "husky": "^9.0.10", "jest": "^29.7.0", @@ -37,17 +46,23 @@ "jest-junit": "^16.0.0", "lint-staged": "^15.2.2", "nock": "^13.5.1", + "prettier": "^3.2.5", "shelljs": "~0.8.5", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", - "tslint": "^6.1.3", - "tslint-config-security": "^1.16.0", - "tslint-no-circular-imports": "~0.7.0", - "tslint-sonarts": "^1.9.0", "typescript": "^5.3.3", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.1/xlsx-0.20.1.tgz" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -184,6 +199,15 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", @@ -215,6 +239,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", @@ -663,6 +696,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", @@ -705,6 +747,153 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", + "integrity": "sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==", + "dev": true, + "dependencies": { + "comment-parser": "1.4.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -722,6 +911,33 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -747,6 +963,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -760,6 +989,54 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -839,27 +1116,6 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -975,15 +1231,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1026,18 +1273,6 @@ "node": "*" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -1198,25 +1433,60 @@ "@js-joda/core": ">=1.11.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "optional": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=14" + "node": ">= 8" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { @@ -1345,6 +1615,18 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/jsonwebtoken": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", @@ -1384,6 +1666,12 @@ "integrity": "sha512-t3ZEJ4xIE5CaJnsWcU+nY8R7rhvIEfX2xHNpvK6mA+CwUyvYJJ7SdU+pIodqTv0w4I0cBCWuJ4wzmwZOsjZdOg==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", + "dev": true + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -1405,6 +1693,223 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz", + "integrity": "sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/type-utils": "7.0.1", + "@typescript-eslint/utils": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-7.0.1.tgz", + "integrity": "sha512-IZCRgd1wNtc6tRQMvMy1DeEbmISDickzQ4K/k7DmizBzzjaBtoX8J2XwDgeC4iSHqRpUGChqxYqUASzWPu+stw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "7.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0", + "tslint": "^5.0.0 || ^6.0.0", + "typescript": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.0.1.tgz", + "integrity": "sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/typescript-estree": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.1.tgz", + "integrity": "sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.0.1.tgz", + "integrity": "sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.0.1", + "@typescript-eslint/utils": "7.0.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.1.tgz", + "integrity": "sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.1.tgz", + "integrity": "sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/typescript-estree": "7.0.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.1.tgz", + "integrity": "sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.0.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -1417,6 +1922,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", @@ -1437,6 +1951,22 @@ "node": ">= 14" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1452,16 +1982,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -1492,6 +2031,15 @@ "node": ">= 8" } }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1504,72 +2052,224 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, "dependencies": { - "tslib": "^2.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { @@ -1583,6 +2283,15 @@ "node": ">=8" } }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", @@ -1787,12 +2496,33 @@ "dev": true }, "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { @@ -1910,6 +2640,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/cli-truncate/node_modules/emoji-regex": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", @@ -1933,6 +2675,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -1947,15 +2704,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1985,18 +2733,6 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -2074,6 +2810,15 @@ "node": ">=16" } }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2174,6 +2919,12 @@ } } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -2183,6 +2934,41 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.3.tgz", + "integrity": "sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -2231,6 +3017,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/dotenv": { "version": "16.4.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.3.tgz", @@ -2313,27 +3123,138 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { @@ -2356,6 +3277,313 @@ "source-map": "~0.6.1" } }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "48.0.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.6.tgz", + "integrity": "sha512-LgwXOX6TWxxFYcbdVe+BJ94Kl/pgjSPYHLzqEdAMXTA1BH9WDx7iJ+9/iDajPF64LtzWX8C1mCfpbMZjJGhAOw==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.42.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.6.0", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-prefer-arrow": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", + "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=2.0.0" + } + }, + "node_modules/eslint-plugin-sonarjs": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.24.0.tgz", + "integrity": "sha512-87zp50mbbNrSTuoEOebdRQBPa0mdejA5UEjyuScyIw8hEpEjfWP89Qhkq5xVZfVyVSRQKZc9alVm7yRKQvvUmg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -2368,6 +3596,30 @@ "node": ">=4" } }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -2444,12 +3696,61 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -2459,6 +3760,18 @@ "bser": "2.1.1" } }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2472,18 +3785,41 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, "node_modules/follow-redirects": { "version": "1.15.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", @@ -2503,6 +3839,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -2574,6 +3919,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2604,6 +3976,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -2625,6 +4016,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-uri": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", @@ -2661,13 +4069,78 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { @@ -2675,6 +4148,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -2696,6 +4175,15 @@ "uglify-js": "^3.1.4" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2705,6 +4193,57 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", @@ -2790,13 +4329,29 @@ } ] }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-local": { @@ -2843,6 +4398,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -2864,6 +4433,22 @@ "node": ">= 12" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2879,6 +4464,61 @@ "is-base64": "bin/is-base64" } }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -2891,6 +4531,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -2912,6 +4576,30 @@ "node": ">=6" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2921,6 +4609,58 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -2933,6 +4673,69 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2964,39 +4767,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -3362,27 +5132,6 @@ "node": ">=10.12.0" } }, - "node_modules/jest-junit/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-junit/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-leak-detector": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", @@ -3642,39 +5391,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -3793,6 +5509,15 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3805,12 +5530,30 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -3861,36 +5604,6 @@ "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -3910,6 +5623,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -3928,6 +5650,19 @@ "node": ">=6" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lilconfig": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", @@ -4121,6 +5856,18 @@ "node": ">=18.0.0" } }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/listr2/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -4156,6 +5903,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -4174,15 +5936,18 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -4226,6 +5991,12 @@ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -4265,6 +6036,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/log-update/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -4331,6 +6114,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/log-update/node_modules/type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", @@ -4389,39 +6187,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4443,6 +6208,15 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -4630,39 +6404,122 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nonce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nonce/-/nonce-1.0.4.tgz", - "integrity": "sha512-FVPu+tMZPP91HDwiq1DNhn9WIhg4/uo6mXR0xXAn0IMOxDmjJOkgbH0tm7qtowvAFZofWZRX+9KWZpNURrgtSA==", + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nonce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nonce/-/nonce-1.0.4.tgz", + "integrity": "sha512-FVPu+tMZPP91HDwiq1DNhn9WIhg4/uo6mXR0xXAn0IMOxDmjJOkgbH0tm7qtowvAFZofWZRX+9KWZpNURrgtSA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, "engines": { - "node": ">=0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/object.groupby": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { @@ -4689,6 +6546,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4705,27 +6579,15 @@ } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4775,6 +6637,18 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -4851,6 +6725,15 @@ "node": "14 || >=16.14" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -4902,6 +6785,82 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -4989,6 +6948,15 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pure-rand": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", @@ -5005,6 +6973,26 @@ } ] }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -5023,6 +7011,24 @@ "node": ">= 0.10" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5061,7 +7067,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -5070,6 +7076,15 @@ "node": ">=8" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -5101,27 +7116,126 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/rosie": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/rosie/-/rosie-2.1.1.tgz", + "integrity": "sha512-2AXB7WrIZXtKMZ6Q/PlozqPF5nu/x7NEvRJZOblrJuprrPfm5gL8JVvJPj9aaib9F8IUALnLUFhzXrwEtnI5cQ==", "engines": { - "node": ">=0.12" + "node": ">=10" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true - }, - "node_modules/rosie": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/rosie/-/rosie-2.1.1.tgz", - "integrity": "sha512-2AXB7WrIZXtKMZ6Q/PlozqPF5nu/x7NEvRJZOblrJuprrPfm5gL8JVvJPj9aaib9F8IUALnLUFhzXrwEtnI5cQ==", + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, "engines": { - "node": ">=10" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-buffer": { @@ -5143,22 +7257,82 @@ } ] }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "ret": "~0.1.10" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/shebang-command": { @@ -5241,6 +7415,24 @@ "node": "*" } }, + "node_modules/side-channel": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -5350,6 +7542,28 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -5367,6 +7581,15 @@ "node": ">=10" } }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -5389,27 +7612,6 @@ "node": ">=10" } }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -5442,15 +7644,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5466,19 +7659,19 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { + "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/strip-ansi": { + "node_modules/string-width/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", @@ -5493,8 +7686,52 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -5506,11 +7743,15 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -5625,6 +7866,12 @@ "node": "*" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -5658,6 +7905,18 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "node_modules/ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-jest": { "version": "29.1.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", @@ -5701,39 +7960,6 @@ } } }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -5766,308 +7992,151 @@ "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" - } - }, - "node_modules/tslint-config-security": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tslint-config-security/-/tslint-config-security-1.16.0.tgz", - "integrity": "sha512-wwM+COg4FX1Gl6VnvaTV9zqcUY6cs4XkiP6T3qhc6s20Xy4J9irui6+fkP07yVkrwfcNFneji3YcIwiMvKSQPQ==", - "dev": true, - "dependencies": { - "safe-regex": "^1.1.0" + "typescript": ">=2.7" }, - "peerDependencies": { - "tslib": "^1.9.2", - "tslint": "^5.8.0", - "typescript": "^2.9.1 || ^3.0.1" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/tslint-no-circular-imports": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tslint-no-circular-imports/-/tslint-no-circular-imports-0.7.0.tgz", - "integrity": "sha512-k3wxpeMC4ef40UbpfBVHEHIzKfNZq5/SCtAO1YjGsaNTklo+K53/TWLrym+poA65RJFDiYgYNWvkeIIkJNA0Vw==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "peerDependencies": { - "tslint": ">=5.0.0", - "typescript": ">=2.1.0" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/tslint-sonarts": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslint-sonarts/-/tslint-sonarts-1.9.0.tgz", - "integrity": "sha512-CJWt+IiYI8qggb2O/JPkS6CkC5DY1IcqRsm9EHJ+AxoWK70lvtP7jguochyNDMP2vIz/giGdWCfEM39x/I/Vnw==", - "deprecated": "Package no longer supported. Consider using eslint-plugin-sonarjs.", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { - "immutable": "^3.8.2" + "minimist": "^1.2.0" }, "bin": { - "tsrunner": "bin/tsrunner" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "tslint": "^5.11.0", - "typescript": "^2.2 || ^3.0" + "json5": "lib/cli.js" } }, - "node_modules/tslint/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { "node": ">=4" } }, - "node_modules/tslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/tslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/tslint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">= 0.8.0" } }, - "node_modules/tslint/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/tslint/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/tslint/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/tslint/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tslint/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/typed-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/tslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": "*" - } - }, - "node_modules/tslint/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "node": ">= 0.4" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tslint/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/tslint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" + "node": ">= 0.4" }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { @@ -6096,6 +8165,21 @@ "node": ">=0.8.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -6140,6 +8224,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -6209,6 +8302,41 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -6250,15 +8378,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6288,16 +8407,16 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -6312,6 +8431,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6407,15 +8541,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6445,18 +8570,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index b50641fe..a0c60bae 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,13 @@ "prepublishOnly": "npm run build", "test": "./shared-scripts/jest-test-unit-integration.sh", "test:ext": "./shared-scripts/jest-test-external.sh", - "lint": "./shared-scripts/ts-lint.sh", + "lint": "./shared-scripts/es-lint.sh './**/*.ts'", "build": "./scripts/build.sh", "generate-myinfo-typings": "ts-node --project ./shared-config/script.tsconfig.json ./scripts/generate-myinfo-typings" }, "lint-staged": { "*.ts": [ - "npm run lint --" + "./shared-scripts/es-lint.sh" ] }, "dependencies": { @@ -41,8 +41,17 @@ "@types/node": "^18.19.15", "@types/node-jose": "^1.1.13", "@types/rosie": "0.0.45", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/eslint-plugin-tslint": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", "dotenv": "^16.4.3", "dtsgenerator": "^3.19.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsdoc": "^48.0.6", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-sonarjs": "^0.24.0", "handlebars": "^4.7.8", "husky": "^9.0.10", "jest": "^29.7.0", @@ -50,13 +59,10 @@ "jest-junit": "^16.0.0", "lint-staged": "^15.2.2", "nock": "^13.5.1", + "prettier": "^3.2.5", "shelljs": "~0.8.5", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", - "tslint": "^6.1.3", - "tslint-config-security": "^1.16.0", - "tslint-no-circular-imports": "~0.7.0", - "tslint-sonarts": "^1.9.0", "typescript": "^5.3.3", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.1/xlsx-0.20.1.tgz" } diff --git a/scripts/generate-myinfo-typings/common.ts b/scripts/generate-myinfo-typings/common.ts index c710b488..1c8e6f32 100644 --- a/scripts/generate-myinfo-typings/common.ts +++ b/scripts/generate-myinfo-typings/common.ts @@ -8,9 +8,9 @@ export interface EnumTyping { enumEntries: Record[]; } -export const FILE_HEADER = `// tslint:disable +export const FILE_HEADER = `/* eslint-disable */ // ============================================================================= -// This file was generated with \`npm run generate-myinfo-typings\` on ${new Date().toISOString().split('T')[0]} +// This file was generated with \`npm run generate-myinfo-typings\` on ${new Date().toISOString().split("T")[0]} // Any modifications to this file may be overwritten when the script runs again // Check README.md for more information // ============================================================================= diff --git a/scripts/generate-myinfo-typings/enum-worksheet-parser.ts b/scripts/generate-myinfo-typings/enum-worksheet-parser.ts index 029bb6a2..a4417317 100644 --- a/scripts/generate-myinfo-typings/enum-worksheet-parser.ts +++ b/scripts/generate-myinfo-typings/enum-worksheet-parser.ts @@ -61,7 +61,7 @@ export class EnumWorksheetParser { if (_.isEmpty(tableIndexes)) { throw new Error( - `Sheet: ${this.sheetName} does not have any headers of the correct format (e.g. | ... code | Descripton |), format has likely changed.` + `Sheet: ${this.sheetName} does not have any headers of the correct format (e.g. | ... code | Descripton |), format has likely changed.`, ); } diff --git a/scripts/generate-myinfo-typings/generate-enums.ts b/scripts/generate-myinfo-typings/generate-enums.ts index 772323d8..a6760953 100644 --- a/scripts/generate-myinfo-typings/generate-enums.ts +++ b/scripts/generate-myinfo-typings/generate-enums.ts @@ -1,4 +1,4 @@ -// tslint:disable: no-console tsr-detect-non-literal-fs-filename no-commented-code +/* eslint-disable no-console */ import axios from "axios"; import * as fs from "fs"; import handlebars from "handlebars"; @@ -68,7 +68,9 @@ function getCustomEnums(options: Options): EnumNamespace[] { filenames.forEach((file) => { if (file.match(/.json$/)) { - const customEnum: EnumNamespace = JSON.parse(fs.readFileSync(path.join(options.customEnumDir, file), "utf8")); + const customEnum: EnumNamespace = JSON.parse( + fs.readFileSync(path.join(options.customEnumDir, file), "utf8"), + ); customEnums.push(customEnum); } }); @@ -92,7 +94,11 @@ function prepareEnumNamespacesForWriting(namespaces: EnumNamespace[]): EnumNames const { enumNamespace, enumTypings } = namespace; // Validate the enum - if (_.isNil(enumNamespace) || _.isEmpty(enumTypings) || enumTypings.some((enumTyping) => _.isEmpty(enumTyping))) { + if ( + _.isNil(enumNamespace) || + _.isEmpty(enumTypings) || + enumTypings.some((enumTyping) => _.isEmpty(enumTyping)) + ) { console.warn(`Malformed enum typing detected, skipping...`, enumNamespace); return; } @@ -117,7 +123,7 @@ function prepareEnumNamespacesForWriting(namespaces: EnumNamespace[]): EnumNames } function removeEmptyEnumKeysOrValues( - enums: EnumNamespace["enumTypings"][number] + enums: EnumNamespace["enumTypings"][number], ): EnumNamespace["enumTypings"][number] { const { enumName, enumEntries } = enums; @@ -139,10 +145,8 @@ function renameDuplicateEnums(enums: EnumNamespace["enumTypings"][number]): Enum const cleanEnumEntries = enumEntries.map((entry) => { let key = entry.key; if (enumEntryKeyList.includes(key)) { - // tslint:disable: tsr-detect-non-literal-regexp const countInstances = new RegExp(`^${key}`, "i"); const extractCounter = new RegExp(`^${key}_(.*)`, "i"); - // tslint:enable: tsr-detect-non-literal-regexp // count instances of key const instanceCount = enumEntryKeyList.filter((k) => k.match(countInstances)).length; @@ -171,7 +175,7 @@ function renameDuplicateEnums(enums: EnumNamespace["enumTypings"][number]): Enum function writeEnumsToFiles(options: Options, namespaces: EnumNamespace[]): string[] { return namespaces.map((namespace) => { - const filename = `${_.kebabCase(namespace.enumNamespace).replace(/my\-info/, "myinfo")}.ts`; + const filename = `${_.kebabCase(namespace.enumNamespace).replace(/my-info/, "myinfo")}.ts`; const generatedFileDir = path.join(options.outputDir, "generated"); const enumUtilsPath = path.join(__dirname, "../../src/util/EnumUtils"); diff --git a/scripts/generate-myinfo-typings/index.ts b/scripts/generate-myinfo-typings/index.ts index 6d3e1792..1c841a54 100644 --- a/scripts/generate-myinfo-typings/index.ts +++ b/scripts/generate-myinfo-typings/index.ts @@ -1,4 +1,4 @@ -// tslint:disable: no-console tsr-detect-non-literal-fs-filename no-commented-code +/* eslint-disable no-console */ import dtsgenerator, { parseSchema } from "dtsgenerator"; import * as fs from "fs"; import * as handlebars from "handlebars"; @@ -38,9 +38,8 @@ const argv = yargs return yargs .positional(`swagger-path`, { type: `string`, - describe: - `The MyInfo API swagger file path - The latest version may be downloaded from https://api.singpass.gov.sg/developers` + describe: `The MyInfo API swagger file path + The latest version may be downloaded from https://api.singpass.gov.sg/developers`, }) .option(`output-dir`, { alias: "o", @@ -54,13 +53,13 @@ const argv = yargs requiresArg: true, describe: "URL to the latest myinfo code reference tables", // NOTE: To be updated where necessary - default: "https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx" + default: + "https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx", }); }, - handler: () => { }, + handler: () => {}, }) - .help() - .argv; + .help().argv; const swaggerPath = argv["swagger-path"]; const outputDir = argv["output-dir"]; @@ -79,15 +78,11 @@ async function executeScript() { console.log("Generating API typings from MyInfo API swaggger file..."); const apiSwaggerTypingsFileName = await generateApiSwaggerTypings(); - console.log("Generating enums typings from MyInfo codes table..."); const myinfoCodesEnumsFileNames = await generateMyInfoCodeEnums({ myinfoCodeRefTableUrl, outputDir }); console.log("Generating index..."); - await generateIndex([ - apiSwaggerTypingsFileName, - ...myinfoCodesEnumsFileNames, - "profilestatus-domain.ts"]); + await generateIndex([apiSwaggerTypingsFileName, ...myinfoCodesEnumsFileNames, "profilestatus-domain.ts"]); } // ============================================================================= @@ -95,12 +90,12 @@ async function executeScript() { // ============================================================================= function clearGeneratedFiles() { - const generatedDir = outputDir + '/generated'; + const generatedDir = outputDir + "/generated"; fs.readdir(generatedDir, (err, files) => { if (err) throw err; for (const file of files) { - fs.unlink(`${generatedDir}/${file}`, e => { + fs.unlink(`${generatedDir}/${file}`, (e) => { if (e) throw e; }); } @@ -159,10 +154,10 @@ function sanitizeSwagger(swagger: any): any { // Remove components we don't need delete swagger.components.requestBodies; delete swagger.components.securitySchemes; - delete swagger.components.schemas["AuthTokenResponse"]; - delete swagger.components.schemas["JWTAccessToken"]; - delete swagger.components.schemas["TokenError"]; - delete swagger.components.schemas["Error"]; + delete swagger.components.schemas.AuthTokenResponse; + delete swagger.components.schemas.JWTAccessToken; + delete swagger.components.schemas.TokenError; + delete swagger.components.schemas.Error; // Fix nulls swagger = deepMapObject(swagger, (value) => value ?? ""); @@ -181,24 +176,27 @@ function sanitizeSwagger(swagger: any): any { async function writeSwaggerTypingsSource(swagger: any): Promise { const schema = parseSchema(swagger); - const { components } = (schema.content as any); + const { components } = schema.content as any; // add custom data items to domains const customDataItems = [ { folder: "person", domain: "Person" }, { folder: "person-common", domain: "PersonCommon" }, ]; - customDataItems.forEach(customDataItem => { + customDataItems.forEach((customDataItem) => { const inputDirectory = `${outputDir}/custom/${customDataItem.folder}`; if (fs.existsSync(inputDirectory)) { const filenames = fs.readdirSync(inputDirectory); - filenames.forEach(file => { + filenames.forEach((file) => { if (file.match(/.json$/)) { const dataItem = JSON.parse(fs.readFileSync(`${inputDirectory}/${file}`, "utf8")); components.schemas = { ...components.schemas, ...dataItem }; - if (!components.schemas[customDataItem.domain].properties) components.schemas[customDataItem.domain].properties = {}; + if (!components.schemas[customDataItem.domain].properties) + components.schemas[customDataItem.domain].properties = {}; Object.keys(dataItem).forEach((key) => { - components.schemas[customDataItem.domain].properties[key] = { "allOf": [{ "$ref": "#/components/schemas/" + key }] }; + components.schemas[customDataItem.domain].properties[key] = { + allOf: [{ $ref: "#/components/schemas/" + key }], + }; }); } }); @@ -206,7 +204,10 @@ async function writeSwaggerTypingsSource(swagger: any): Promise { }); let typingsSource = await dtsgenerator({ contents: [schema] }); - typingsSource = typingsSource.replace("declare namespace Components {", "export declare namespace MyInfoComponents {"); + typingsSource = typingsSource.replace( + "declare namespace Components {", + "export declare namespace MyInfoComponents {", + ); typingsSource = typingsSource.replace("namespace Schemas {", "export namespace Schemas {"); const filename = "myinfo-domain.ts"; diff --git a/shared-config/.eslintignore b/shared-config/.eslintignore new file mode 100644 index 00000000..d872d6a8 --- /dev/null +++ b/shared-config/.eslintignore @@ -0,0 +1,3 @@ +node_modules +dist/ +build/ diff --git a/shared-config/.eslintrc.json b/shared-config/.eslintrc.json new file mode 100644 index 00000000..2ace2ef2 --- /dev/null +++ b/shared-config/.eslintrc.json @@ -0,0 +1,138 @@ +{ + "env": { + "es6": true, + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:import/recommended", + "plugin:sonarjs/recommended", + "plugin:import/typescript", + "prettier" + ], + "overrides": [ + { + "files": ["src/migrations/record/*.ts"], + "rules": { + "max-len": "off" + } + }, + { + "files": ["**/*.spec.ts"], + "rules": { + "max-lines-per-function": "off", + "no-console": "off", + "sonarjs/cognitive-complexity": "off" + } + } + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "eslint-plugin-jsdoc", + "eslint-plugin-prefer-arrow", + "sonarjs", + "eslint-plugin-import", + "@typescript-eslint" + ], + "root": true, + "rules": { + "@typescript-eslint/ban-types": "warn", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-loss-of-precision": "warn", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-shadow": ["error"], + "arrow-body-style": "off", + "default-case-last": "error", + "dot-notation": "error", + "eqeqeq": ["error", "smart"], + "id-denylist": [ + "error", + "any", + "Number", + "number", + "String", + "string", + "Boolean", + "boolean", + "Undefined", + "undefined" + ], + "import/no-cycle": "error", + "import/no-unresolved": "off", + "jsdoc/check-alignment": 1, + "jsdoc/multiline-blocks": 1, + "jsdoc/no-multi-asterisks": 1, + "jsdoc/tag-lines": [ + "warn", + "any", + { + "startLines": 1 + } + ], + // "indent": ["warn", "tab", { "SwitchCase": 1, "offsetTernaryExpressions": true }], + // "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], + "max-len": [ + "warn", + { + "code": 200 + } + ], + "max-lines-per-function": [ + "error", + { + "max": 200, + "skipBlankLines": true, + "skipComments": true + } + ], + "max-params": [ + "error", + { + "max": 7 + } + ], + "new-parens": "error", + "no-bitwise": "error", + "no-caller": "error", + "no-cond-assign": "error", + "no-console": "error", + "no-eval": "error", + "no-extra-parens": "off", + "no-invalid-this": "warn", + "no-multi-str": "warn", + "no-multiple-empty-lines": "error", + "no-new-wrappers": "error", + "no-shadow": "off", + "no-throw-literal": "error", + "no-trailing-spaces": "error", + "no-undef-init": "error", + "no-unsafe-finally": "error", + "no-var": "error", + "object-shorthand": "error", + "one-var": ["error", "never"], + "prefer-arrow/prefer-arrow-functions": [ + "error", + { + "allowStandaloneDeclarations": true + } + ], + "prefer-const": "error", + "radix": "error", + "semi": 2, + "sonarjs/no-duplicate-string": "warn", + "sonarjs/prefer-immediate-return": "off", + "spaced-comment": [ + "error", + "always", + { + "markers": ["/"] + } + ], + "valid-typeof": "off" + } +} diff --git a/shared-config/jest.config.js b/shared-config/jest.config.js index 0fd0f59c..56ca4c43 100644 --- a/shared-config/jest.config.js +++ b/shared-config/jest.config.js @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ // ============================================================================= // This creates a base jest config // ============================================================================= @@ -21,27 +22,20 @@ exports.createBaseConfig = (testType) => { transform: { ".(js|ts|jsx|tsx)$": "ts-jest", }, - modulePaths: [ - "src", - ], - moduleFileExtensions: [ - "js", - "ts", - "jsx", - "tsx", - ], + modulePaths: ["src"], + moduleFileExtensions: ["js", "ts", "jsx", "tsx"], testResultsProcessor: "jest-bamboo-reporter", setupFiles: ["/shared-config/jest.setup.ts"], verbose: true, bail: true, reporters: [ - "default", + "default", [ - "jest-junit", - { - outputName: "junit.xml" - } - ] + "jest-junit", + { + outputName: "junit.xml", + }, + ], ], }; @@ -69,7 +63,6 @@ function getTestMatch(testType) { // FIXME: Backwards compatibility default: - // tslint:disable-next-line: no-console console.warn("Unknown Jest testType"); return [ `/src/**/__tests__/**/*.spec.[jt]s?(x)`, @@ -79,6 +72,7 @@ function getTestMatch(testType) { } function getMaxConcurrency(testType) { + // eslint-disable-next-line sonarjs/no-small-switch switch (testType) { case exports.TestType.BENCHMARK: return 1; diff --git a/shared-config/jest.setup.ts b/shared-config/jest.setup.ts index 96968923..4b8c3a85 100644 --- a/shared-config/jest.setup.ts +++ b/shared-config/jest.setup.ts @@ -1,7 +1,8 @@ +/* eslint-disable no-empty */ // Attempt to import this module if installed try { require("reflect-metadata"); -} catch (error) { } +} catch (error) {} // Allow for more time allowance jest.setTimeout(10000); diff --git a/shared-config/tslint.json b/shared-config/tslint.json deleted file mode 100644 index a4c3caf8..00000000 --- a/shared-config/tslint.json +++ /dev/null @@ -1,111 +0,0 @@ -// ============================================================================= -// This is the typescript linter config file meant for the project source -// ============================================================================= -{ - "extends": [ - "tslint:recommended", - "tslint-sonarts", - "tslint-config-security", - "tslint-no-circular-imports" - ], - "linterOptions": { - "exclude": [ - "**/*dist{*,*/**/*}", - "**/*node_modules{*,*/**/*}" - ] - }, - "jsRules": { - "curly": false, - "indent": [ - true, - "tabs" - ], - "max-line-length": [ - true, - 300 - ], - "no-empty": false, - "no-string-literal": false, - "object-literal-key-quotes": false, - "object-literal-sort-keys": false, - "ordered-imports": [ - true, - { - "import-sources-order": "any", - "named-imports-order": "case-insensitive" - } - ], - "space-before-function-paren": [ - true, - { - "anonymous": "always", - "asyncArrow": "always", - "named": "never" - } - ] - }, - "rules": { - "align": false, - "arrow-return-shorthand": false, - "ban-types": false, - "class-name": true, - "curly": false, - "forin": false, - "indent": [ - true, - "tabs" - ], - "interface-name": [ - false - ], - "jsx-alignment": false, - "jsx-no-lambda": false, - "max-classes-per-file": false, - "max-line-length": [ - true, - 300 - ], - "member-access": [ - true, - "check-accessor" - ], - "member-ordering": [ - false - ], - "no-consecutive-blank-lines": false, - "no-duplicate-string": false, - "no-empty": false, - "no-empty-interface": false, - "no-identical-functions": false, - "no-invalid-await": false, - "no-namespace": [ - false - ], - "no-string-literal": false, - "no-trailing-whitespace": true, - "no-var-requires": false, - "object-literal-key-quotes": false, - "object-literal-sort-keys": false, - "ordered-imports": [ - true, - { - "import-sources-order": "any", - "named-imports-order": "case-insensitive" - } - ], - "prefer-immediate-return": false, - "semicolon": [ - true, - "always", - "ignore-bound-class-methods" - ], - "variable-name": [ - true, - "ban-keywords" - ], - "whitespace": [ - true, - "check-module" - ] - } -} diff --git a/shared-scripts/ts-lint.sh b/shared-scripts/es-lint.sh similarity index 76% rename from shared-scripts/ts-lint.sh rename to shared-scripts/es-lint.sh index 58abfff2..18ac958f 100755 --- a/shared-scripts/ts-lint.sh +++ b/shared-scripts/es-lint.sh @@ -2,7 +2,7 @@ echo "==============================================================================" echo "Script: $(basename "$0")" -echo "This script runs ts-lint" +echo "This script runs es-lint" echo "==============================================================================" # ============================================================================== @@ -30,16 +30,19 @@ SCRIPT_DIR=$( dirname $( ${READLINK} -f $0 ) ) # Inputs # ============================================================================== -export TS_CONFIG_PATH=${TS_CONFIG_PATH:-"./tsconfig.json"} - -export TSLINT_CONFIG_PATH=${TSLINT_CONFIG_PATH:-"./tslint.json"} - -export FILES=${@:-""} +export ESLINT_CONFIG_PATH=${ESLINT_CONFIG_PATH:-".eslintrc"} +export AUTO_FIX=${AUTO_FIX:-true} # ============================================================================== # Script # ============================================================================== +if [ $AUTO_FIX != "true" ]; then unset AUTO_FIX; fi; + # Lint -echo "Linting with tslint" -npx tslint -p ${TS_CONFIG_PATH} -c ${TSLINT_CONFIG_PATH} --fix ${FILES} +echo "Linting with eslint" +npx eslint -c ${ESLINT_CONFIG_PATH} ${AUTO_FIX:+--fix} "$@" + +# Prettier +echo "Running prettier" +npx prettier --check ${AUTO_FIX:+--write} "$@" diff --git a/src/client/__tests__/axios-client.spec.ts b/src/client/__tests__/axios-client.spec.ts index 8d0f3e0b..a531ce44 100644 --- a/src/client/__tests__/axios-client.spec.ts +++ b/src/client/__tests__/axios-client.spec.ts @@ -1,8 +1,6 @@ +import * as http from "http"; import * as nock from "nock"; import { createClient } from "../axios-client"; -import * as http from "http"; - -// tslint:disable: no-console describe("Axios Client", () => { let consoleLogSpy: jest.SpyInstance; @@ -46,11 +44,11 @@ describe("Axios Client", () => { const response = await client.get(uinfin, { baseURL, headers: { - uinfin + uinfin, }, params: { - uinfin - } + uinfin, + }, }); expect(response.status).toEqual(200); @@ -67,14 +65,14 @@ describe("Axios Client", () => { try { const client = createClient(); - const response = await client.get(uinfin, { + await client.get(uinfin, { baseURL, headers: { - uinfin + uinfin, }, params: { - uinfin - } + uinfin, + }, }); fail("Should not reach here"); } catch (error) { @@ -83,10 +81,10 @@ describe("Axios Client", () => { expect(consoleLogSpy).toHaveBeenCalledTimes(2); expect(consoleLogSpy).toHaveBeenNthCalledWith(1, "Requesting", { method: "get", url: "S***1111D" }); expect(consoleLogSpy).toHaveBeenNthCalledWith(2, "Error occurred while responding to request", { - method: 'get', - url: 'S***1111D', + method: "get", + url: "S***1111D", status: 400, - data: 'something S***1111D something' + data: "something S***1111D something", }); } }); @@ -94,16 +92,18 @@ describe("Axios Client", () => { it("should not log any uinfin when failing to make a request", async () => { try { const client = createClient(); - client.interceptors.request.use(() => { throw new Error(`something ${uinfin} something`); }); + client.interceptors.request.use(() => { + throw new Error(`something ${uinfin} something`); + }); await client.get(uinfin, { baseURL, headers: { - uinfin + uinfin, }, params: { - uinfin - } + uinfin, + }, }); fail("Should not reach here"); } catch (error) { @@ -124,18 +124,20 @@ describe("Axios Client", () => { }); it("should not log any uinfin when failing to receive a response", async () => { - jest.spyOn(http, "request").mockImplementation(() => { throw new Error(`something ${uinfin} something`); }); + jest.spyOn(http, "request").mockImplementation(() => { + throw new Error(`something ${uinfin} something`); + }); try { const client = createClient(); await client.get(uinfin, { baseURL, headers: { - uinfin + uinfin, }, params: { - uinfin - } + uinfin, + }, }); fail("Should not reach here"); } catch (error) { diff --git a/src/client/axios-client.ts b/src/client/axios-client.ts index fa5004ba..d5dd3085 100644 --- a/src/client/axios-client.ts +++ b/src/client/axios-client.ts @@ -1,5 +1,5 @@ import axios, { AxiosInstance, AxiosRequestConfig } from "axios"; -import { ProxyAgent } from 'proxy-agent'; +import { ProxyAgent } from "proxy-agent"; import { logger } from "../util/Logger"; import { redactUinfin } from "../util/RedactorUtil"; @@ -7,8 +7,8 @@ export const createClient = (requestConfig: AxiosRequestConfig = {}): AxiosInsta // Note: Due to axios not being able to automatically pick up proxy env vars, we have to manually define a custom proxy agent // Axios 0.19.0 has not fixed this issue yet, so we are using this workaround: https://github.com/axios/axios/issues/925#issuecomment-419352052 const proxyConfig = getProxyConfig(); - if (!!proxyConfig) { - const proxyAgent = new ProxyAgent({host: proxyConfig}); + if (proxyConfig) { + const proxyAgent = new ProxyAgent({ host: proxyConfig }); requestConfig = { httpAgent: proxyAgent, httpsAgent: proxyAgent, @@ -31,31 +31,37 @@ const getProxyConfig = (): string => { }; const addRequestLogs = (instance: AxiosInstance) => { - instance.interceptors.request.use((request) => { - if (!!request) { - logger.log("Requesting", { - method: request.method, - url: redactUinfin(request.url) - }); - } - return request; - }, (error) => { - logger.log(`Error occurred while making a request`, error); - return Promise.reject(error); - }); + instance.interceptors.request.use( + (request) => { + if (request) { + logger.log("Requesting", { + method: request.method, + url: redactUinfin(request.url), + }); + } + return request; + }, + (error) => { + logger.log(`Error occurred while making a request`, error); + return Promise.reject(error); + }, + ); }; const addResponseLogs = (instance: AxiosInstance) => { - instance.interceptors.response.use((response) => { - if (!!response) { - logger.log(`Responded`, { - method: response.config.method, - url: redactUinfin(response.config.url) - }); - } - return response; - }, (error) => { - logger.log(`Error occurred while responding to request`, error); - return Promise.reject(error); - }); + instance.interceptors.response.use( + (response) => { + if (response) { + logger.log(`Responded`, { + method: response.config.method, + url: redactUinfin(response.config.url), + }); + } + return response; + }, + (error) => { + logger.log(`Error occurred while responding to request`, error); + return Promise.reject(error); + }, + ); }; diff --git a/src/corppass/__tests__/corppass-helper-ndi.spec.ts b/src/corppass/__tests__/corppass-helper-ndi.spec.ts index e40af3e4..0c3795d7 100644 --- a/src/corppass/__tests__/corppass-helper-ndi.spec.ts +++ b/src/corppass/__tests__/corppass-helper-ndi.spec.ts @@ -12,12 +12,12 @@ const mockDecryptKey = const mockSignKey = '{"kty": "EC","d": "QMS1DAh9RHzH7Oqj2FL5FW1j7FeQWqNjIfoaSfV14x8","use": "sig","crv": "P-256","kid": "jqjQh6u7LHFFxCPf12PqBzbDfpnqL9I0qR8Gqllq6vU","x": "17aNA7ePDntFNM0hKfTFcFoXhHK0nJ7n4zDwXfwi22s","y": "fGJn6q2zQitVVJY91Fr1oe4bErqy5SL3V4AC4e_4dmQ","alg": "ES256"}'; const mockTokenResponse: TokenResponse = { - access_token: 'MOCK_ACCESS_TOKEN', + access_token: "MOCK_ACCESS_TOKEN", refresh_token: "MOCK_REFRESH_TOKEN", id_token: "MOCK_ID_TOKEN", token_type: "bearer", expires_in: 599, - scope: "openid" + scope: "openid", }; const createMockIdTokenPayload = (overrideProps?: Partial): NDIIdTokenPayload => ({ @@ -45,7 +45,6 @@ const createMockIdTokenPayload = (overrideProps?: Partial): N ...overrideProps, }); -// tslint:disable-next-line: no-big-function describe("NDI Corppass Helper", () => { const props: NdiOidcHelperConstructor = { oidcConfigUrl: mockOidcConfigUrl, @@ -147,53 +146,64 @@ describe("NDI Corppass Helper", () => { }); describe("Authorisation info api", () => { - const MOCK_AUTH_INFO = { - "Result_Set": { - "ESrvc_Row_Count": 1, - "ESrvc_Result": [{ - "CPESrvcID": "EserviceId", - "Auth_Result_Set": + Result_Set: { + ESrvc_Row_Count: 1, + ESrvc_Result: [ { - "Row_Count": 2, - "Row": [{ - "CPEntID_SUB": "", - "CPRole": "CorppassRole", - "StartDate": "2024-01-16", - "EndDate": "9999-12-31", - "Parameter": [{ - "name": "Agencies", - "value": "AGY" - }] - }, { - "CPEntID_SUB": "", - "CPRole": "CorppassRole", - "StartDate": "2000-01-16", - "EndDate": "2000-12-31", - "Parameter": [{ - "name": "Agencies", - "value": "AGY" - }] - }] - } - }, { - "CPESrvcID": "EserviceId2", - "Auth_Result_Set": + CPESrvcID: "EserviceId", + Auth_Result_Set: { + Row_Count: 2, + Row: [ + { + CPEntID_SUB: "", + CPRole: "CorppassRole", + StartDate: "2024-01-16", + EndDate: "9999-12-31", + Parameter: [ + { + name: "Agencies", + value: "AGY", + }, + ], + }, + { + CPEntID_SUB: "", + CPRole: "CorppassRole", + StartDate: "2000-01-16", + EndDate: "2000-12-31", + Parameter: [ + { + name: "Agencies", + value: "AGY", + }, + ], + }, + ], + }, + }, { - "Row_Count": 1, - "Row": [{ - "CPEntID_SUB": "", - "CPRole": "CorppassRole", - "StartDate": "2000-01-16", - "EndDate": "2000-12-31", - "Parameter": [{ - "name": "Agencies", - "value": "AGY" - }] - }] - } - }] - } + CPESrvcID: "EserviceId2", + Auth_Result_Set: { + Row_Count: 1, + Row: [ + { + CPEntID_SUB: "", + CPRole: "CorppassRole", + StartDate: "2000-01-16", + EndDate: "2000-12-31", + Parameter: [ + { + name: "Agencies", + value: "AGY", + }, + ], + }, + ], + }, + }, + ], + }, }; const MOCK_RAW_AUTH_PAYLOAD = { @@ -212,7 +222,9 @@ describe("NDI Corppass Helper", () => { additionalHeaders: mockAdditionalHeaders, }); - const mockVerifyJwsUsingKeyStore = jest.spyOn(JweUtils, "verifyJwsUsingKeyStore").mockResolvedValueOnce({ payload: JSON.stringify(MOCK_RAW_AUTH_PAYLOAD) } as unknown as JWS.VerificationResult); + const mockVerifyJwsUsingKeyStore = jest.spyOn(JweUtils, "verifyJwsUsingKeyStore").mockResolvedValueOnce({ + payload: JSON.stringify(MOCK_RAW_AUTH_PAYLOAD), + } as unknown as JWS.VerificationResult); const axiosMock = jest.fn(); // First get is to get OIDC Config @@ -222,9 +234,8 @@ describe("NDI Corppass Helper", () => { data: { token_endpoint: "https://mockcorppass.sg/mga/sps/oauth/oauth20/token", issuer: "https://mockcorppass.sg", - 'authorization-info_endpoint': "https://mockcorppass.sg/authorization-info", + "authorization-info_endpoint": "https://mockcorppass.sg/authorization-info", jwks_uri: "https://mockcorppass.sg/.well-known/keys", - }, }; }); @@ -235,7 +246,6 @@ describe("NDI Corppass Helper", () => { status: 200, data: { keys: "MOCK_KEYS", - }, }; }); @@ -243,37 +253,40 @@ describe("NDI Corppass Helper", () => { const axiosPostMock = jest.fn((): any => Promise.resolve({ status: 200, - data: "TEST_AUTH_INFO_TOKEN" - , + data: "TEST_AUTH_INFO_TOKEN", }), ); corppassHelper._testExports.getCorppassClient().get = axiosMock; corppassHelper._testExports.getCorppassClient().post = axiosPostMock; - expect(await corppassHelper.getAuthorisationInfoTokenPayload(mockTokenResponse)).toStrictEqual(MOCK_AUTH_PAYLOAD); + expect(await corppassHelper.getAuthorisationInfoTokenPayload(mockTokenResponse)).toStrictEqual( + MOCK_AUTH_PAYLOAD, + ); expect(axiosMock.mock.calls[0]).toEqual( - expect.arrayContaining([ - mockOidcConfigUrl, - { headers: mockAdditionalHeaders }, - ]), + expect.arrayContaining([mockOidcConfigUrl, { headers: mockAdditionalHeaders }]), ); expect(axiosMock.mock.calls[1]).toEqual( expect.arrayContaining([ - 'https://www.proxy.gov.sg/.well-known/keys', + "https://www.proxy.gov.sg/.well-known/keys", { headers: mockAdditionalHeaders }, ]), ); - expect(mockVerifyJwsUsingKeyStore).toHaveBeenCalledWith('TEST_AUTH_INFO_TOKEN', 'MOCK_KEYS'); + expect(mockVerifyJwsUsingKeyStore).toHaveBeenCalledWith("TEST_AUTH_INFO_TOKEN", "MOCK_KEYS"); expect(axiosMock).toHaveBeenCalledTimes(2); expect(axiosPostMock).toHaveBeenCalledTimes(1); expect(axiosPostMock.mock.calls[0]).toEqual( expect.arrayContaining([ "https://www.proxy.gov.sg/authorization-info", null, - { headers: { "Authorization": `Bearer ${mockTokenResponse.access_token}`, ...mockAdditionalHeaders } }, + { + headers: { + Authorization: `Bearer ${mockTokenResponse.access_token}`, + ...mockAdditionalHeaders, + }, + }, ]), ); }); @@ -285,19 +298,22 @@ describe("NDI Corppass Helper", () => { additionalHeaders: mockAdditionalHeaders, }); expect(corppassHelper.extractActiveAuthResultFromAuthInfoToken(MOCK_AUTH_PAYLOAD)).toStrictEqual({ - EserviceId: [{ - "CPEntID_SUB": "", - "CPRole": "CorppassRole", - "StartDate": "2024-01-16", - "EndDate": "9999-12-31", - "Parameter": [{ - "name": "Agencies", - "value": "AGY" - }] - }], - EserviceId2: [] + EserviceId: [ + { + CPEntID_SUB: "", + CPRole: "CorppassRole", + StartDate: "2024-01-16", + EndDate: "9999-12-31", + Parameter: [ + { + name: "Agencies", + value: "AGY", + }, + ], + }, + ], + EserviceId2: [], }); - }); }); @@ -305,7 +321,7 @@ describe("NDI Corppass Helper", () => { const mockOverrideDecryptKey = '{"kty": "EC","d": "AA1YtF2O779tiuJ4Rs3UVItxgX3GFOgQ-aycS-n-lFU","use": "enc","crv": "P-256","kid": "MOCK-OVERRIDE-DECRYPT-KEY-ID","x": "MFqQFZrB74cDhiBHhIBg9iCB-qj86vU45dj2iA-RAjs","y": "yUOsmZh4rd3qwqXRgRCIaAyRcOj4S0mD6tEsd-aTlL0","alg": "ECDH-ES+A256KW"}'; - const mockVerifiedJws = { payload: JSON.stringify({ mockResults: 'VERIFIED_JWS' }) }; + const mockVerifiedJws = { payload: JSON.stringify({ mockResults: "VERIFIED_JWS" }) }; it("should use proxy url when specified", async () => { const corppassHelper = new NdiOidcHelper({ ...props, @@ -313,8 +329,12 @@ describe("NDI Corppass Helper", () => { additionalHeaders: mockAdditionalHeaders, }); - const mockDecryptJwe = jest.spyOn(JweUtils, "decryptJWE").mockResolvedValueOnce({ payload: 'DECRYPT_RESULTS' } as unknown as JWE.DecryptResult); - const mockVerifyJWS = jest.spyOn(JweUtils, "verifyJWS").mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); + const mockDecryptJwe = jest + .spyOn(JweUtils, "decryptJWE") + .mockResolvedValueOnce({ payload: "DECRYPT_RESULTS" } as unknown as JWE.DecryptResult); + const mockVerifyJWS = jest + .spyOn(JweUtils, "verifyJWS") + .mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); const axiosMock = jest.fn(); // First get is to get OIDC Config @@ -324,9 +344,8 @@ describe("NDI Corppass Helper", () => { data: { token_endpoint: "https://mockcorppass.sg/mga/sps/oauth/oauth20/token", issuer: "https://mockcorppass.sg", - 'authorization-info_endpoint': "https://mockcorppass.sg/authorization-info", + "authorization-info_endpoint": "https://mockcorppass.sg/authorization-info", jwks_uri: "https://mockcorppass.sg/.well-known/keys", - }, }; }); @@ -337,33 +356,27 @@ describe("NDI Corppass Helper", () => { status: 200, data: { keys: ["MOCK_KEY"], - }, }; }); - corppassHelper._testExports.getCorppassClient().get = axiosMock; await corppassHelper.getIdTokenPayload(mockTokenResponse); expect(axiosMock.mock.calls[0]).toEqual( - expect.arrayContaining([ - mockOidcConfigUrl, - { headers: mockAdditionalHeaders }, - ]), + expect.arrayContaining([mockOidcConfigUrl, { headers: mockAdditionalHeaders }]), ); expect(axiosMock.mock.calls[1]).toEqual( expect.arrayContaining([ - 'https://www.proxy.gov.sg/.well-known/keys', + "https://www.proxy.gov.sg/.well-known/keys", { headers: mockAdditionalHeaders }, ]), ); - expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockDecryptKey, 'json',); - expect(mockVerifyJWS).toHaveBeenCalledWith('DECRYPT_RESULTS', JSON.stringify("MOCK_KEY"), 'json'); + expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockDecryptKey, "json"); + expect(mockVerifyJWS).toHaveBeenCalledWith("DECRYPT_RESULTS", JSON.stringify("MOCK_KEY"), "json"); expect(axiosMock).toHaveBeenCalledTimes(2); - }); it("should use overrideDecryptKey when specified", async () => { @@ -373,8 +386,12 @@ describe("NDI Corppass Helper", () => { additionalHeaders: mockAdditionalHeaders, }); - const mockDecryptJwe = jest.spyOn(JweUtils, "decryptJWE").mockResolvedValueOnce({ payload: 'DECRYPT_RESULTS' } as unknown as JWE.DecryptResult); - const mockVerifyJWS = jest.spyOn(JweUtils, "verifyJWS").mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); + const mockDecryptJwe = jest + .spyOn(JweUtils, "decryptJWE") + .mockResolvedValueOnce({ payload: "DECRYPT_RESULTS" } as unknown as JWE.DecryptResult); + const mockVerifyJWS = jest + .spyOn(JweUtils, "verifyJWS") + .mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); const axiosMock = jest.fn(); // First get is to get OIDC Config @@ -384,9 +401,8 @@ describe("NDI Corppass Helper", () => { data: { token_endpoint: "https://mockcorppass.sg/mga/sps/oauth/oauth20/token", issuer: "https://mockcorppass.sg", - 'authorization-info_endpoint': "https://mockcorppass.sg/authorization-info", + "authorization-info_endpoint": "https://mockcorppass.sg/authorization-info", jwks_uri: "https://mockcorppass.sg/.well-known/keys", - }, }; }); @@ -397,33 +413,27 @@ describe("NDI Corppass Helper", () => { status: 200, data: { keys: ["MOCK_KEY"], - }, }; }); - corppassHelper._testExports.getCorppassClient().get = axiosMock; await corppassHelper.getIdTokenPayload(mockTokenResponse, { key: mockOverrideDecryptKey, format: "json" }); expect(axiosMock.mock.calls[0]).toEqual( - expect.arrayContaining([ - mockOidcConfigUrl, - { headers: mockAdditionalHeaders }, - ]), + expect.arrayContaining([mockOidcConfigUrl, { headers: mockAdditionalHeaders }]), ); expect(axiosMock.mock.calls[1]).toEqual( expect.arrayContaining([ - 'https://www.proxy.gov.sg/.well-known/keys', + "https://www.proxy.gov.sg/.well-known/keys", { headers: mockAdditionalHeaders }, ]), ); - expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockOverrideDecryptKey, 'json',); - expect(mockVerifyJWS).toHaveBeenCalledWith('DECRYPT_RESULTS', JSON.stringify("MOCK_KEY"), 'json'); + expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockOverrideDecryptKey, "json"); + expect(mockVerifyJWS).toHaveBeenCalledWith("DECRYPT_RESULTS", JSON.stringify("MOCK_KEY"), "json"); expect(axiosMock).toHaveBeenCalledTimes(2); - }); }); }); diff --git a/src/corppass/__tests__/corppass-helper.test.ts b/src/corppass/__tests__/corppass-helper.test.ts index ffc09b4d..4ae86266 100644 --- a/src/corppass/__tests__/corppass-helper.test.ts +++ b/src/corppass/__tests__/corppass-helper.test.ts @@ -39,11 +39,9 @@ describe("Corppass Helper", () => { describe("constructing authorization url", () => { it("should construct the correct authorzation endpoint", () => { - const authUrl = helper.constructAuthorizationUrl( - "af0ifjsldkj", - "a2ghskf1234las", - ); - const expected = "https://mockcorppass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; + const authUrl = helper.constructAuthorizationUrl("af0ifjsldkj", "a2ghskf1234las"); + const expected = + "https://mockcorppass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; expect(authUrl).toEqual(expected); }); }); @@ -67,7 +65,9 @@ describe("Corppass Helper", () => { const mockPayload = createMockIdTokenPayload({ sub: undefined, }); - expect(() => helper.extractInfoFromIdTokenSubject(mockPayload)).toThrowError("Token payload sub property is not defined"); + expect(() => helper.extractInfoFromIdTokenSubject(mockPayload)).toThrowError( + "Token payload sub property is not defined", + ); }); it("should throw an error if sub property does not contain a valid NRIC", () => { @@ -75,7 +75,9 @@ describe("Corppass Helper", () => { sub: `s=some-nonsense,u=f09fcf4c-f57b-40b5-a8e0-6fb6eef640e3`, }); - expect(() => helper.extractInfoFromIdTokenSubject(mockPayload)).toThrowError("Token payload sub property is invalid, does not contain valid NRIC"); + expect(() => helper.extractInfoFromIdTokenSubject(mockPayload)).toThrowError( + "Token payload sub property is invalid, does not contain valid NRIC", + ); }); }); }); diff --git a/src/corppass/corppass-helper-ndi.ts b/src/corppass/corppass-helper-ndi.ts index a0d15dba..d9c40cf4 100644 --- a/src/corppass/corppass-helper-ndi.ts +++ b/src/corppass/corppass-helper-ndi.ts @@ -65,7 +65,7 @@ interface OidcConfig { authorization_endpoint: string; token_endpoint: string; jwks_uri: string; - 'authorization-info_endpoint': string; + "authorization-info_endpoint": string; } export class NdiOidcHelper { @@ -140,7 +140,9 @@ export class NdiOidcHelper { "content-type": "application/x-www-form-urlencoded", }, }; - const finalTokenEndpoint = this.proxyBaseUrl ? token_endpoint.replace(issuer, this.proxyBaseUrl) : token_endpoint; + const finalTokenEndpoint = this.proxyBaseUrl + ? token_endpoint.replace(issuer, this.proxyBaseUrl) + : token_endpoint; const response = await this.axiosClient.post(finalTokenEndpoint, body, config); if (!response.data.id_token) { logger.error("Failed to get ID token: invalid response data", response.data); @@ -214,7 +216,7 @@ export class NdiOidcHelper { const { sub } = payload; if (sub) { - const trimmedSub = sub.replace(/ /g, ''); + const trimmedSub = sub.replace(/ /g, ""); const nricRegex = /s=([STFGM]\d{7}[A-Z])[^,]*/i; const [, nric] = trimmedSub.match(nricRegex) || []; const uuidRegex = /u=([^,]*)/i; @@ -238,10 +240,12 @@ export class NdiOidcHelper { public async getAuthorisationInfoTokenPayload(tokens: TokenResponse): Promise { try { const { - data: { 'authorization-info_endpoint': authorisationInfoEndpoint, jwks_uri, issuer }, + data: { "authorization-info_endpoint": authorisationInfoEndpoint, jwks_uri, issuer }, } = await this.axiosClient.get(this.oidcConfigUrl, { headers: this.additionalHeaders }); - const finalAuthorisationInfoUri = this.proxyBaseUrl ? authorisationInfoEndpoint.replace(issuer, this.proxyBaseUrl) : authorisationInfoEndpoint; + const finalAuthorisationInfoUri = this.proxyBaseUrl + ? authorisationInfoEndpoint.replace(issuer, this.proxyBaseUrl) + : authorisationInfoEndpoint; const { access_token: accessToken } = tokens; const config = { headers: { @@ -252,14 +256,20 @@ export class NdiOidcHelper { const { data: authorisationInfoJws } = await this.axiosClient.post(finalAuthorisationInfoUri, null, config); const finalJwksUri = this.proxyBaseUrl ? jwks_uri.replace(issuer, this.proxyBaseUrl) : jwks_uri; - const { data: { keys }, } = await this.axiosClient.get(finalJwksUri, { headers: this.additionalHeaders }); + const { + data: { keys }, + } = await this.axiosClient.get(finalJwksUri, { headers: this.additionalHeaders }); const verifiedJws = await JweUtil.verifyJwsUsingKeyStore(authorisationInfoJws, keys); const authorisationInfoTokenPayload = JSON.parse(verifiedJws.payload.toString()) as AuthInfoTokenPayload; - authorisationInfoTokenPayload.AuthInfo = JSON.parse(authorisationInfoTokenPayload.AuthInfo as unknown as string); + authorisationInfoTokenPayload.AuthInfo = JSON.parse( + authorisationInfoTokenPayload.AuthInfo as unknown as string, + ); if (authorisationInfoTokenPayload.TPAuthInfo) { - authorisationInfoTokenPayload.TPAuthInfo = JSON.parse(authorisationInfoTokenPayload.TPAuthInfo as unknown as string); + authorisationInfoTokenPayload.TPAuthInfo = JSON.parse( + authorisationInfoTokenPayload.TPAuthInfo as unknown as string, + ); } return authorisationInfoTokenPayload; @@ -269,8 +279,12 @@ export class NdiOidcHelper { } } - public extractActiveAuthResultFromAuthInfoToken(authInfoTokenPayload: AuthInfoTokenPayload): Record { - const { AuthInfo: { Result_Set: authInfoResultSet } } = authInfoTokenPayload; + public extractActiveAuthResultFromAuthInfoToken( + authInfoTokenPayload: AuthInfoTokenPayload, + ): Record { + const { + AuthInfo: { Result_Set: authInfoResultSet }, + } = authInfoTokenPayload; const { ESrvc_Row_Count: resultCount, ESrvc_Result: results } = authInfoResultSet; if (!resultCount) { diff --git a/src/corppass/corppass-helper.ts b/src/corppass/corppass-helper.ts index c069c8cc..7edc6069 100644 --- a/src/corppass/corppass-helper.ts +++ b/src/corppass/corppass-helper.ts @@ -4,7 +4,7 @@ import { createClient } from "../client/axios-client"; import { JweUtil } from "../util"; import { logger } from "../util/Logger"; import { SingpassMyInfoError } from "../util/error/SingpassMyinfoError"; -import { EntityInfo, TokenResponse, UserInfo } from './shared-constants'; +import { EntityInfo, TokenResponse, UserInfo } from "./shared-constants"; interface AccessTokenPayload { exp: number; @@ -42,7 +42,6 @@ export interface OidcHelperConstructor { } export class OidcHelper { - private axiosClient: AxiosInstance = createClient({ timeout: 10000, }); @@ -67,11 +66,7 @@ export class OidcHelper { this.additionalHeaders = props.additionalHeaders || {}; } - public constructAuthorizationUrl = ( - state: string, - nonce?: string, - overrideAuthUrl?: string, - ): string => { + public constructAuthorizationUrl = (state: string, nonce?: string, overrideAuthUrl?: string): string => { const queryParams = { state, ...(nonce ? { nonce } : {}), @@ -82,7 +77,7 @@ export class OidcHelper { }; const queryString = querystringUtil.stringify(queryParams); return `${overrideAuthUrl ?? this.authorizationUrl}?${queryString}`; - } + }; /** * Get tokens from Corppass endpoint. Note: This will fail if not on an IP whitelisted by SP. @@ -101,7 +96,7 @@ export class OidcHelper { const config = { headers: { ...this.additionalHeaders, - "content-type": "application/x-www-form-urlencoded" + "content-type": "application/x-www-form-urlencoded", }, ...axiosRequestConfig, }; @@ -111,13 +106,16 @@ export class OidcHelper { throw new SingpassMyInfoError("Failed to get ID token"); } return response.data; - } + }; /** * Get fresh tokens from Corppass endpoint. Note: This will fail if not on an IP whitelisted by SP. * Use getIdTokenPayload on returned Token Response to get the token payload */ - public refreshTokens = async (refreshToken: string, axiosRequestConfig?: AxiosRequestConfig): Promise => { + public refreshTokens = async ( + refreshToken: string, + axiosRequestConfig?: AxiosRequestConfig, + ): Promise => { const params = { scope: "openid", grant_type: "refresh_token", @@ -130,7 +128,7 @@ export class OidcHelper { const config = { headers: { ...this.additionalHeaders, - "content-type": "application/x-www-form-urlencoded" + "content-type": "application/x-www-form-urlencoded", }, ...axiosRequestConfig, }; @@ -140,7 +138,7 @@ export class OidcHelper { throw new SingpassMyInfoError("Failed to get ID token"); } return response.data; - } + }; /** * Decodes the access Token JWT inside the TokenResponse to get the payload @@ -176,11 +174,15 @@ export class OidcHelper { /** * Returns the NRIC, system defined ID and country code from the ID token payload */ - public extractInfoFromIdTokenSubject(payload: IdTokenPayload): { nric: string, uuid?: string, countryCode?: string } { + public extractInfoFromIdTokenSubject(payload: IdTokenPayload): { + nric: string; + uuid?: string; + countryCode?: string; + } { const { sub } = payload; if (sub) { - const trimmedSub = sub.replace(/ /g, ''); + const trimmedSub = sub.replace(/ /g, ""); const nricRegex = /s=([STFGM]\d{7}[A-Z])[^,]*/i; const [, nric] = trimmedSub.match(nricRegex) || []; const uuidRegex = /u=([^,]*)/i; diff --git a/src/corppass/shared-constants.ts b/src/corppass/shared-constants.ts index 1543279d..0eebbe3e 100644 --- a/src/corppass/shared-constants.ts +++ b/src/corppass/shared-constants.ts @@ -44,30 +44,30 @@ export interface AuthInfoResultSet { export interface TPAccessInfo { Result_Set: { - ESrvc_Row_Count: number, + ESrvc_Row_Count: number; ESrvc_Result: { - CPESrvcID: string, + CPESrvcID: string; Auth_Set: { - ENT_ROW_COUNT: number, + ENT_ROW_COUNT: number; TP_Auth: { - CP_Clnt_ID: string, - CP_ClntEnt_TYPE: string, + CP_Clnt_ID: string; + CP_ClntEnt_TYPE: string; Auth_Result_Set: { - Row_Count: number, + Row_Count: number; Row: { - CP_ClntEnt_SUB: string, - CPRole: string, - StartDate: string, - EndDate: string, + CP_ClntEnt_SUB: string; + CPRole: string; + StartDate: string; + EndDate: string; Parameter?: { - name: string, + name: string; value: string; - }[], - }[], - }, - }[], - }, - }[], + }[]; + }[]; + }; + }[]; + }; + }[]; }; } diff --git a/src/myinfo/domain/__tests__/domain.spec.ts b/src/myinfo/domain/__tests__/domain.spec.ts index 9d870922..9467b2c0 100644 --- a/src/myinfo/domain/__tests__/domain.spec.ts +++ b/src/myinfo/domain/__tests__/domain.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ import axios from "axios"; import * as path from "path"; import * as shell from "shelljs"; @@ -68,7 +69,7 @@ describe("MyInfoDomain", () => { const generatedFolder = path.join(__dirname, "fixtures/output/generated"); beforeAll(async () => { - shell.rm('-rf', generatedFolder); + shell.rm("-rf", generatedFolder); shell.mkdir("-p", generatedFolder); // mock @@ -90,17 +91,19 @@ describe("MyInfoDomain", () => { afterAll(() => { // clean up generated files so they don't get tracked - shell.rm('-rf', generatedFolder); + shell.rm("-rf", generatedFolder); }); describe("Single Table", () => { it("should provide access to enums", () => { - const NewMyInfoSingleTable: typeof MyInfoSingleTable = require("./fixtures/output/generated/myinfo-single-table").MyInfoSingleTable; + const NewMyInfoSingleTable: typeof MyInfoSingleTable = + require("./fixtures/output/generated/myinfo-single-table").MyInfoSingleTable; expect(NewMyInfoSingleTable).toHaveProperty("DEREGISTERED"); expect(NewMyInfoSingleTable.DEREGISTERED).toEqual("2"); }); it("should provide access to EnumUtil methods", () => { - const NewMyInfoSingleTable: typeof MyInfoSingleTable = require("./fixtures/output/generated/myinfo-single-table").MyInfoSingleTable; + const NewMyInfoSingleTable: typeof MyInfoSingleTable = + require("./fixtures/output/generated/myinfo-single-table").MyInfoSingleTable; const enumKey = "DEREGISTERED"; const enumValue = NewMyInfoSingleTable.fn.toEnumValue("2"); @@ -137,7 +140,8 @@ describe("MyInfoDomain", () => { describe("Custom Table", () => { it("should override MyInfo enums with custom enums", () => { - const NewMyInfoCustomTable: typeof MyInfoCustomTable = require("./fixtures/output/generated/myinfo-custom-table").MyInfoCustomTable; + const NewMyInfoCustomTable: typeof MyInfoCustomTable = + require("./fixtures/output/generated/myinfo-custom-table").MyInfoCustomTable; expect(NewMyInfoCustomTable).toHaveProperty("Apple"); expect(NewMyInfoCustomTable.Apple).toEqual("A"); }); diff --git a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-custom-table.ts b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-custom-table.ts index c53a10e9..189d4881 100644 --- a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-custom-table.ts +++ b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-custom-table.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2022-09-22 // Any modifications to this file may be overwritten when the script runs again @@ -24,6 +24,9 @@ export namespace MyInfoCustomTable { values: EnumUtils.valuesFunc(MyInfoCustomTable), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoCustomTable), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoCustomTable), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoCustomTable, MyInfoCustomTableMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoCustomTable, + MyInfoCustomTableMapping, + ), }; } diff --git a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-multiple-table.ts b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-multiple-table.ts index 36234f61..ed3d00a1 100644 --- a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-multiple-table.ts +++ b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-multiple-table.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2022-09-22 // Any modifications to this file may be overwritten when the script runs again @@ -47,7 +47,10 @@ export namespace MyInfoMultipleTable { values: EnumUtils.valuesFunc(Cpfdependantprotectionscheme), toEnumKey: EnumUtils.toEnumKeyFunc(Cpfdependantprotectionscheme), toEnumValue: EnumUtils.toEnumValueFunc(Cpfdependantprotectionscheme), - toEnumDesc: EnumUtils.toEnumDescFunc(Cpfdependantprotectionscheme, CpfdependantprotectionschemeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + Cpfdependantprotectionscheme, + CpfdependantprotectionschemeMapping, + ), }; } export namespace Cpfmedishieldlife { @@ -56,7 +59,10 @@ export namespace MyInfoMultipleTable { values: EnumUtils.valuesFunc(Cpfmedishieldlife), toEnumKey: EnumUtils.toEnumKeyFunc(Cpfmedishieldlife), toEnumValue: EnumUtils.toEnumValueFunc(Cpfmedishieldlife), - toEnumDesc: EnumUtils.toEnumDescFunc(Cpfmedishieldlife, CpfmedishieldlifeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + Cpfmedishieldlife, + CpfmedishieldlifeMapping, + ), }; } } diff --git a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-single-table.ts b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-single-table.ts index 48451890..1931adc6 100644 --- a/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-single-table.ts +++ b/src/myinfo/domain/__tests__/fixtures/baseline/myinfo-single-table.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2022-09-22 // Any modifications to this file may be overwritten when the script runs again @@ -24,6 +24,9 @@ export namespace MyInfoSingleTable { values: EnumUtils.valuesFunc(MyInfoSingleTable), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoSingleTable), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoSingleTable), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoSingleTable, MyInfoSingleTableMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoSingleTable, + MyInfoSingleTableMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-agency-code.ts b/src/myinfo/domain/generated/myinfo-agency-code.ts index 57edd8a5..62486332 100644 --- a/src/myinfo/domain/generated/myinfo-agency-code.ts +++ b/src/myinfo/domain/generated/myinfo-agency-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -198,7 +198,7 @@ enum MyInfoAgencyCodeMapping { "MARITIME_AND_PORT_AUTHORITY_OF_SINGAPORE" = "MARITIME AND PORT AUTHORITY OF SINGAPORE", } -type MyInfoAgencyCodeDesc = `${ MyInfoAgencyCodeMapping }`; +type MyInfoAgencyCodeDesc = `${MyInfoAgencyCodeMapping}`; export namespace MyInfoAgencyCode { export const fn = { @@ -206,6 +206,9 @@ export namespace MyInfoAgencyCode { values: EnumUtils.valuesFunc(MyInfoAgencyCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoAgencyCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoAgencyCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoAgencyCode, MyInfoAgencyCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoAgencyCode, + MyInfoAgencyCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-child-vacc-req-code.ts b/src/myinfo/domain/generated/myinfo-child-vacc-req-code.ts index 59ed345a..f7083160 100644 --- a/src/myinfo/domain/generated/myinfo-child-vacc-req-code.ts +++ b/src/myinfo/domain/generated/myinfo-child-vacc-req-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -14,7 +14,7 @@ enum MyInfoChildVaccReqCodeMapping { "MINIMUM_VACCINATION_REQUIREMENT_FOR_PRESCHOOL_ADMISSION_FULFILLED" = "MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL ADMISSION FULFILLED", } -type MyInfoChildVaccReqCodeDesc = `${ MyInfoChildVaccReqCodeMapping }`; +type MyInfoChildVaccReqCodeDesc = `${MyInfoChildVaccReqCodeMapping}`; export namespace MyInfoChildVaccReqCode { export const fn = { @@ -22,6 +22,9 @@ export namespace MyInfoChildVaccReqCode { values: EnumUtils.valuesFunc(MyInfoChildVaccReqCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoChildVaccReqCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoChildVaccReqCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoChildVaccReqCode, MyInfoChildVaccReqCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoChildVaccReqCode, + MyInfoChildVaccReqCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-com-status-code.ts b/src/myinfo/domain/generated/myinfo-com-status-code.ts index bd4378bd..7005f93a 100644 --- a/src/myinfo/domain/generated/myinfo-com-status-code.ts +++ b/src/myinfo/domain/generated/myinfo-com-status-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -16,7 +16,7 @@ enum MyInfoComStatusCodeMapping { "NOT_ELIGIBLE" = "NOT ELIGIBLE", } -type MyInfoComStatusCodeDesc = `${ MyInfoComStatusCodeMapping }`; +type MyInfoComStatusCodeDesc = `${MyInfoComStatusCodeMapping}`; export namespace MyInfoComStatusCode { export const fn = { @@ -24,6 +24,9 @@ export namespace MyInfoComStatusCode { values: EnumUtils.valuesFunc(MyInfoComStatusCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoComStatusCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoComStatusCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoComStatusCode, MyInfoComStatusCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoComStatusCode, + MyInfoComStatusCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-country-place-code.ts b/src/myinfo/domain/generated/myinfo-country-place-code.ts index 5dec6e95..0626de23 100644 --- a/src/myinfo/domain/generated/myinfo-country-place-code.ts +++ b/src/myinfo/domain/generated/myinfo-country-place-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -548,7 +548,7 @@ enum MyInfoCountryPlaceCodeMapping { "ZIMBABWE" = "ZIMBABWE", } -type MyInfoCountryPlaceCodeDesc = `${ MyInfoCountryPlaceCodeMapping }`; +type MyInfoCountryPlaceCodeDesc = `${MyInfoCountryPlaceCodeMapping}`; export namespace MyInfoCountryPlaceCode { export const fn = { @@ -556,6 +556,9 @@ export namespace MyInfoCountryPlaceCode { values: EnumUtils.valuesFunc(MyInfoCountryPlaceCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoCountryPlaceCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoCountryPlaceCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoCountryPlaceCode, MyInfoCountryPlaceCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoCountryPlaceCode, + MyInfoCountryPlaceCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-dialect-code.ts b/src/myinfo/domain/generated/myinfo-dialect-code.ts index e47840cd..2dcd140d 100644 --- a/src/myinfo/domain/generated/myinfo-dialect-code.ts +++ b/src/myinfo/domain/generated/myinfo-dialect-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -304,7 +304,7 @@ enum MyInfoDialectCodeMapping { "YIDDISH" = "YIDDISH", } -type MyInfoDialectCodeDesc = `${ MyInfoDialectCodeMapping }`; +type MyInfoDialectCodeDesc = `${MyInfoDialectCodeMapping}`; export namespace MyInfoDialectCode { export const fn = { @@ -312,6 +312,9 @@ export namespace MyInfoDialectCode { values: EnumUtils.valuesFunc(MyInfoDialectCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoDialectCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoDialectCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoDialectCode, MyInfoDialectCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoDialectCode, + MyInfoDialectCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-driving-licence-validity-code.ts b/src/myinfo/domain/generated/myinfo-driving-licence-validity-code.ts index dc05ff21..2df0216f 100644 --- a/src/myinfo/domain/generated/myinfo-driving-licence-validity-code.ts +++ b/src/myinfo/domain/generated/myinfo-driving-licence-validity-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -20,7 +20,7 @@ enum MyInfoDrivingLicenceValidityCodeMapping { "NOT_HOLDING" = "NOT HOLDING", } -type MyInfoDrivingLicenceValidityCodeDesc = `${ MyInfoDrivingLicenceValidityCodeMapping }`; +type MyInfoDrivingLicenceValidityCodeDesc = `${MyInfoDrivingLicenceValidityCodeMapping}`; export namespace MyInfoDrivingLicenceValidityCode { export const fn = { @@ -28,6 +28,9 @@ export namespace MyInfoDrivingLicenceValidityCode { values: EnumUtils.valuesFunc(MyInfoDrivingLicenceValidityCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoDrivingLicenceValidityCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoDrivingLicenceValidityCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoDrivingLicenceValidityCode, MyInfoDrivingLicenceValidityCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoDrivingLicenceValidityCode, + MyInfoDrivingLicenceValidityCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-edu-level-code.ts b/src/myinfo/domain/generated/myinfo-edu-level-code.ts index 64872833..73f2c5f6 100644 --- a/src/myinfo/domain/generated/myinfo-edu-level-code.ts +++ b/src/myinfo/domain/generated/myinfo-edu-level-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -34,7 +34,7 @@ enum MyInfoEduLevelCodeMapping { "MODULAR_CERTIFICATION_NON_AWARD_COURSES_NON_FULL_QUALIFICATIONS" = "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)", } -type MyInfoEduLevelCodeDesc = `${ MyInfoEduLevelCodeMapping }`; +type MyInfoEduLevelCodeDesc = `${MyInfoEduLevelCodeMapping}`; export namespace MyInfoEduLevelCode { export const fn = { @@ -42,6 +42,9 @@ export namespace MyInfoEduLevelCode { values: EnumUtils.valuesFunc(MyInfoEduLevelCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoEduLevelCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoEduLevelCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoEduLevelCode, MyInfoEduLevelCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoEduLevelCode, + MyInfoEduLevelCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-hdb-type-code.ts b/src/myinfo/domain/generated/myinfo-hdb-type-code.ts index 2a284569..83a2a742 100644 --- a/src/myinfo/domain/generated/myinfo-hdb-type-code.ts +++ b/src/myinfo/domain/generated/myinfo-hdb-type-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -26,7 +26,7 @@ enum MyInfoHDBTypeCodeMapping { "STUDIO_APARTMENT_HDB" = "STUDIO APARTMENT (HDB)", } -type MyInfoHDBTypeCodeDesc = `${ MyInfoHDBTypeCodeMapping }`; +type MyInfoHDBTypeCodeDesc = `${MyInfoHDBTypeCodeMapping}`; export namespace MyInfoHDBTypeCode { export const fn = { @@ -34,6 +34,9 @@ export namespace MyInfoHDBTypeCode { values: EnumUtils.valuesFunc(MyInfoHDBTypeCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoHDBTypeCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoHDBTypeCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoHDBTypeCode, MyInfoHDBTypeCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoHDBTypeCode, + MyInfoHDBTypeCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-housing-type-code.ts b/src/myinfo/domain/generated/myinfo-housing-type-code.ts index 6fb75f0a..c01b1567 100644 --- a/src/myinfo/domain/generated/myinfo-housing-type-code.ts +++ b/src/myinfo/domain/generated/myinfo-housing-type-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -24,7 +24,7 @@ enum MyInfoHousingTypeCodeMapping { "APARTMENT" = "APARTMENT", } -type MyInfoHousingTypeCodeDesc = `${ MyInfoHousingTypeCodeMapping }`; +type MyInfoHousingTypeCodeDesc = `${MyInfoHousingTypeCodeMapping}`; export namespace MyInfoHousingTypeCode { export const fn = { @@ -32,6 +32,9 @@ export namespace MyInfoHousingTypeCode { values: EnumUtils.valuesFunc(MyInfoHousingTypeCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoHousingTypeCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoHousingTypeCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoHousingTypeCode, MyInfoHousingTypeCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoHousingTypeCode, + MyInfoHousingTypeCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-insurer-code.ts b/src/myinfo/domain/generated/myinfo-insurer-code.ts index cdb649b5..ae783399 100644 --- a/src/myinfo/domain/generated/myinfo-insurer-code.ts +++ b/src/myinfo/domain/generated/myinfo-insurer-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -17,7 +17,7 @@ export namespace MyInfoInsurerCode { "INCOME_INSURANCE" = "INCOME INSURANCE", } - type CpfdependantprotectionschemeDesc = `${ CpfdependantprotectionschemeMapping }`; + type CpfdependantprotectionschemeDesc = `${CpfdependantprotectionschemeMapping}`; export enum Cpfmedishieldlife { "INCOME_INSURANCE" = "NTU", @@ -39,7 +39,7 @@ export namespace MyInfoInsurerCode { "RAFFLES_HEALTH_INSURANCE" = "RAFFLES HEALTH INSURANCE", } - type CpfmedishieldlifeDesc = `${ CpfmedishieldlifeMapping }`; + type CpfmedishieldlifeDesc = `${CpfmedishieldlifeMapping}`; export namespace Cpfdependantprotectionscheme { export const fn = { @@ -47,7 +47,10 @@ export namespace MyInfoInsurerCode { values: EnumUtils.valuesFunc(Cpfdependantprotectionscheme), toEnumKey: EnumUtils.toEnumKeyFunc(Cpfdependantprotectionscheme), toEnumValue: EnumUtils.toEnumValueFunc(Cpfdependantprotectionscheme), - toEnumDesc: EnumUtils.toEnumDescFunc(Cpfdependantprotectionscheme, CpfdependantprotectionschemeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + Cpfdependantprotectionscheme, + CpfdependantprotectionschemeMapping, + ), }; } export namespace Cpfmedishieldlife { @@ -56,7 +59,10 @@ export namespace MyInfoInsurerCode { values: EnumUtils.valuesFunc(Cpfmedishieldlife), toEnumKey: EnumUtils.toEnumKeyFunc(Cpfmedishieldlife), toEnumValue: EnumUtils.toEnumValueFunc(Cpfmedishieldlife), - toEnumDesc: EnumUtils.toEnumDescFunc(Cpfmedishieldlife, CpfmedishieldlifeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + Cpfmedishieldlife, + CpfmedishieldlifeMapping, + ), }; } } diff --git a/src/myinfo/domain/generated/myinfo-life-status-code.ts b/src/myinfo/domain/generated/myinfo-life-status-code.ts index c458706a..e933c242 100644 --- a/src/myinfo/domain/generated/myinfo-life-status-code.ts +++ b/src/myinfo/domain/generated/myinfo-life-status-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -16,7 +16,7 @@ enum MyInfoLifeStatusCodeMapping { "DECEASED" = "DECEASED", } -type MyInfoLifeStatusCodeDesc = `${ MyInfoLifeStatusCodeMapping }`; +type MyInfoLifeStatusCodeDesc = `${MyInfoLifeStatusCodeMapping}`; export namespace MyInfoLifeStatusCode { export const fn = { @@ -24,6 +24,9 @@ export namespace MyInfoLifeStatusCode { values: EnumUtils.valuesFunc(MyInfoLifeStatusCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoLifeStatusCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoLifeStatusCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoLifeStatusCode, MyInfoLifeStatusCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoLifeStatusCode, + MyInfoLifeStatusCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-marital-status-code.ts b/src/myinfo/domain/generated/myinfo-marital-status-code.ts index 3bb172a2..e04d64f2 100644 --- a/src/myinfo/domain/generated/myinfo-marital-status-code.ts +++ b/src/myinfo/domain/generated/myinfo-marital-status-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -20,7 +20,7 @@ enum MyInfoMaritalStatusCodeMapping { "DIVORCED" = "DIVORCED", } -type MyInfoMaritalStatusCodeDesc = `${ MyInfoMaritalStatusCodeMapping }`; +type MyInfoMaritalStatusCodeDesc = `${MyInfoMaritalStatusCodeMapping}`; export namespace MyInfoMaritalStatusCode { export const fn = { @@ -28,6 +28,9 @@ export namespace MyInfoMaritalStatusCode { values: EnumUtils.valuesFunc(MyInfoMaritalStatusCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoMaritalStatusCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoMaritalStatusCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoMaritalStatusCode, MyInfoMaritalStatusCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoMaritalStatusCode, + MyInfoMaritalStatusCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-merdeka-generation-message-code.ts b/src/myinfo/domain/generated/myinfo-merdeka-generation-message-code.ts index 290dcdc7..2bf133b0 100644 --- a/src/myinfo/domain/generated/myinfo-merdeka-generation-message-code.ts +++ b/src/myinfo/domain/generated/myinfo-merdeka-generation-message-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -26,7 +26,7 @@ enum MyInfoMerdekaGenerationMessageCodeMapping { "NIL_STATUS" = "Please contact 1800-2222-888 for further details on your eligibility.", } -type MyInfoMerdekaGenerationMessageCodeDesc = `${ MyInfoMerdekaGenerationMessageCodeMapping }`; +type MyInfoMerdekaGenerationMessageCodeDesc = `${MyInfoMerdekaGenerationMessageCodeMapping}`; export namespace MyInfoMerdekaGenerationMessageCode { export const fn = { @@ -34,6 +34,9 @@ export namespace MyInfoMerdekaGenerationMessageCode { values: EnumUtils.valuesFunc(MyInfoMerdekaGenerationMessageCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoMerdekaGenerationMessageCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoMerdekaGenerationMessageCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoMerdekaGenerationMessageCode, MyInfoMerdekaGenerationMessageCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc< + MyInfoMerdekaGenerationMessageCode, + MyInfoMerdekaGenerationMessageCodeDesc + >(MyInfoMerdekaGenerationMessageCode, MyInfoMerdekaGenerationMessageCodeMapping), }; } diff --git a/src/myinfo/domain/generated/myinfo-nationality-citizenship-code.ts b/src/myinfo/domain/generated/myinfo-nationality-citizenship-code.ts index 1b76c45e..7f9e5948 100644 --- a/src/myinfo/domain/generated/myinfo-nationality-citizenship-code.ts +++ b/src/myinfo/domain/generated/myinfo-nationality-citizenship-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -502,7 +502,7 @@ enum MyInfoNationalityCitizenshipCodeMapping { "ZIMBABWEAN" = "ZIMBABWEAN", } -type MyInfoNationalityCitizenshipCodeDesc = `${ MyInfoNationalityCitizenshipCodeMapping }`; +type MyInfoNationalityCitizenshipCodeDesc = `${MyInfoNationalityCitizenshipCodeMapping}`; export namespace MyInfoNationalityCitizenshipCode { export const fn = { @@ -510,6 +510,9 @@ export namespace MyInfoNationalityCitizenshipCode { values: EnumUtils.valuesFunc(MyInfoNationalityCitizenshipCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoNationalityCitizenshipCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoNationalityCitizenshipCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoNationalityCitizenshipCode, MyInfoNationalityCitizenshipCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoNationalityCitizenshipCode, + MyInfoNationalityCitizenshipCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-pass-type-code.ts b/src/myinfo/domain/generated/myinfo-pass-type-code.ts index 1baa37de..f2139155 100644 --- a/src/myinfo/domain/generated/myinfo-pass-type-code.ts +++ b/src/myinfo/domain/generated/myinfo-pass-type-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -46,7 +46,7 @@ enum MyInfoPassTypeCodeMapping { "IMMIGRATION_EXEMPTION_ORDER" = "IMMIGRATION EXEMPTION ORDER", } -type MyInfoPassTypeCodeDesc = `${ MyInfoPassTypeCodeMapping }`; +type MyInfoPassTypeCodeDesc = `${MyInfoPassTypeCodeMapping}`; export namespace MyInfoPassTypeCode { export const fn = { @@ -54,6 +54,9 @@ export namespace MyInfoPassTypeCode { values: EnumUtils.valuesFunc(MyInfoPassTypeCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoPassTypeCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoPassTypeCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoPassTypeCode, MyInfoPassTypeCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoPassTypeCode, + MyInfoPassTypeCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-pioneer-generation-message-code.ts b/src/myinfo/domain/generated/myinfo-pioneer-generation-message-code.ts index 66ab4f8f..f0ecce20 100644 --- a/src/myinfo/domain/generated/myinfo-pioneer-generation-message-code.ts +++ b/src/myinfo/domain/generated/myinfo-pioneer-generation-message-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -26,7 +26,7 @@ enum MyInfoPioneerGenerationMessageCodeMapping { "NIL_STATUS" = "Please call 1800-2222-888 to start receiving your PG benefits.", } -type MyInfoPioneerGenerationMessageCodeDesc = `${ MyInfoPioneerGenerationMessageCodeMapping }`; +type MyInfoPioneerGenerationMessageCodeDesc = `${MyInfoPioneerGenerationMessageCodeMapping}`; export namespace MyInfoPioneerGenerationMessageCode { export const fn = { @@ -34,6 +34,9 @@ export namespace MyInfoPioneerGenerationMessageCode { values: EnumUtils.valuesFunc(MyInfoPioneerGenerationMessageCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoPioneerGenerationMessageCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoPioneerGenerationMessageCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoPioneerGenerationMessageCode, MyInfoPioneerGenerationMessageCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc< + MyInfoPioneerGenerationMessageCode, + MyInfoPioneerGenerationMessageCodeDesc + >(MyInfoPioneerGenerationMessageCode, MyInfoPioneerGenerationMessageCodeMapping), }; } diff --git a/src/myinfo/domain/generated/myinfo-race-code.ts b/src/myinfo/domain/generated/myinfo-race-code.ts index 6d99fb58..55c4aa8f 100644 --- a/src/myinfo/domain/generated/myinfo-race-code.ts +++ b/src/myinfo/domain/generated/myinfo-race-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -466,7 +466,7 @@ enum MyInfoRaceCodeMapping { "ZIMBABWEAN" = "ZIMBABWEAN", } -type MyInfoRaceCodeDesc = `${ MyInfoRaceCodeMapping }`; +type MyInfoRaceCodeDesc = `${MyInfoRaceCodeMapping}`; export namespace MyInfoRaceCode { export const fn = { diff --git a/src/myinfo/domain/generated/myinfo-relationship-type-code.ts b/src/myinfo/domain/generated/myinfo-relationship-type-code.ts index df0907e8..ba1bb1ea 100644 --- a/src/myinfo/domain/generated/myinfo-relationship-type-code.ts +++ b/src/myinfo/domain/generated/myinfo-relationship-type-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -28,7 +28,7 @@ enum MyInfoRelationshipTypeCodeMapping { "SISTER" = "SISTER", } -type MyInfoRelationshipTypeCodeDesc = `${ MyInfoRelationshipTypeCodeMapping }`; +type MyInfoRelationshipTypeCodeDesc = `${MyInfoRelationshipTypeCodeMapping}`; export namespace MyInfoRelationshipTypeCode { export const fn = { @@ -36,6 +36,9 @@ export namespace MyInfoRelationshipTypeCode { values: EnumUtils.valuesFunc(MyInfoRelationshipTypeCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoRelationshipTypeCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoRelationshipTypeCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoRelationshipTypeCode, MyInfoRelationshipTypeCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoRelationshipTypeCode, + MyInfoRelationshipTypeCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-residential-code.ts b/src/myinfo/domain/generated/myinfo-residential-code.ts index 56147e7d..e0bd075d 100644 --- a/src/myinfo/domain/generated/myinfo-residential-code.ts +++ b/src/myinfo/domain/generated/myinfo-residential-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -22,7 +22,7 @@ enum MyInfoResidentialCodeMapping { "NOT_APPLICABLE" = "NOT APPLICABLE", } -type MyInfoResidentialCodeDesc = `${ MyInfoResidentialCodeMapping }`; +type MyInfoResidentialCodeDesc = `${MyInfoResidentialCodeMapping}`; export namespace MyInfoResidentialCode { export const fn = { @@ -30,6 +30,9 @@ export namespace MyInfoResidentialCode { values: EnumUtils.valuesFunc(MyInfoResidentialCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoResidentialCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoResidentialCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoResidentialCode, MyInfoResidentialCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoResidentialCode, + MyInfoResidentialCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-school-code.ts b/src/myinfo/domain/generated/myinfo-school-code.ts index 3a2e682c..002f161f 100644 --- a/src/myinfo/domain/generated/myinfo-school-code.ts +++ b/src/myinfo/domain/generated/myinfo-school-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -778,7 +778,7 @@ enum MyInfoSchoolCodeMapping { "NORTHOAKS_PRIMARY_SCHOOL" = "NORTHOAKS PRIMARY SCHOOL", } -type MyInfoSchoolCodeDesc = `${ MyInfoSchoolCodeMapping }`; +type MyInfoSchoolCodeDesc = `${MyInfoSchoolCodeMapping}`; export namespace MyInfoSchoolCode { export const fn = { @@ -786,6 +786,9 @@ export namespace MyInfoSchoolCode { values: EnumUtils.valuesFunc(MyInfoSchoolCode), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoSchoolCode), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoSchoolCode), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoSchoolCode, MyInfoSchoolCodeMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoSchoolCode, + MyInfoSchoolCodeMapping, + ), }; } diff --git a/src/myinfo/domain/generated/myinfo-sex-code.ts b/src/myinfo/domain/generated/myinfo-sex-code.ts index 3046c8e0..ae03c906 100644 --- a/src/myinfo/domain/generated/myinfo-sex-code.ts +++ b/src/myinfo/domain/generated/myinfo-sex-code.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -18,7 +18,7 @@ enum MyInfoSexCodeMapping { "UNKNOWN" = "UNKNOWN", } -type MyInfoSexCodeDesc = `${ MyInfoSexCodeMapping }`; +type MyInfoSexCodeDesc = `${MyInfoSexCodeMapping}`; export namespace MyInfoSexCode { export const fn = { diff --git a/src/myinfo/domain/generated/myinfo-vehicle-status.ts b/src/myinfo/domain/generated/myinfo-vehicle-status.ts index a8428d38..165b1678 100644 --- a/src/myinfo/domain/generated/myinfo-vehicle-status.ts +++ b/src/myinfo/domain/generated/myinfo-vehicle-status.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again @@ -16,7 +16,7 @@ enum MyInfoVehicleStatusMapping { "DEREGISTERED" = "DE-REGISTERED", } -type MyInfoVehicleStatusDesc = `${ MyInfoVehicleStatusMapping }`; +type MyInfoVehicleStatusDesc = `${MyInfoVehicleStatusMapping}`; export namespace MyInfoVehicleStatus { export const fn = { @@ -24,6 +24,9 @@ export namespace MyInfoVehicleStatus { values: EnumUtils.valuesFunc(MyInfoVehicleStatus), toEnumKey: EnumUtils.toEnumKeyFunc(MyInfoVehicleStatus), toEnumValue: EnumUtils.toEnumValueFunc(MyInfoVehicleStatus), - toEnumDesc: EnumUtils.toEnumDescFunc(MyInfoVehicleStatus, MyInfoVehicleStatusMapping), + toEnumDesc: EnumUtils.toEnumDescFunc( + MyInfoVehicleStatus, + MyInfoVehicleStatusMapping, + ), }; } diff --git a/src/myinfo/domain/index.ts b/src/myinfo/domain/index.ts index 43d1d76b..3b6ad0ce 100644 --- a/src/myinfo/domain/index.ts +++ b/src/myinfo/domain/index.ts @@ -1,4 +1,4 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again diff --git a/src/myinfo/domain/map.ts b/src/myinfo/domain/map.ts index 41aea897..3c792e2d 100644 --- a/src/myinfo/domain/map.ts +++ b/src/myinfo/domain/map.ts @@ -1135,1133 +1135,1133 @@ export namespace occupation { "96299": "OTHER_ELEMENTARY_WORKERS_NEC"; } interface Desc2Code { - "LEGISLATOR": "11110"; - "SENIOR_GOVERNMENT_OFFICIAL": "11121"; - "SENIOR_STATUTORY_BOARD_OFFICIAL": "11122"; - "SENIOR_OFFICIAL_OF_POLITICAL_PARTY_ORGANISATION": "11140"; - "SENIOR_OFFICIAL_OF_EMPLOYERS_WORKERS_AND_OTHER_ECONOMIC_INTEREST_ORGANISATION": "11150"; - "SENIOR_OFFICIAL_OF_HUMANITARIAN_AND_OTHER_SPECIAL_INTEREST_ORGANISATION": "11160"; - "MANAGING_DIRECTOR_CHIEF_EXECUTIVE_OFFICER": "11201"; - "COMPANY_DIRECTOR": "11202"; - "CHIEF_OPERATING_OFFICER_GENERAL_MANAGER": "11203"; - "BUDGETING_AND_FINANCIAL_ACCOUNTING_MANAGER_INCLUDING_FINANCIAL_CONTROLLER": "12111"; - "ADMINISTRATION_MANAGER": "12112"; - "PERSONNEL_HUMAN_RESOURCE_MANAGER": "12121"; - "INDUSTRIAL_RELATIONS_MANAGER": "12122"; - "TRAINING_MANAGER": "12123"; - "POLICY_AND_PLANNING_MANAGER": "12130"; - "PREMISES_AND_FACILITIES_MAINTENANCE_MANAGER": "12191"; - "LANDSCAPE_OPERATIONS_MANAGER": "12192"; - "WORKING_PROPRIETOR_BUSINESS_SERVICES_AND_ADMINISTRATIVE_SERVICES": "12193"; - "OTHER_BUSINESS_SERVICES_AND_ADMINISTRATION_MANAGERS_NEC": "12199"; - "SALES_AND_MARKETING_MANAGER": "12211"; - "BUSINESS_DEVELOPMENT_MANAGER": "12212"; - "ADVERTISING_PUBLIC_RELATIONS_MANAGER": "12220"; - "RESEARCH_AND_DEVELOPMENT_MANAGER": "12230"; - "CUSTOMER_SERVICE_MANAGER": "12241"; - "CALL_CENTRE_MANAGER": "12242"; - "PRODUCTION_MANAGER_IN_AGRICULTURE_AND_FISHERIES": "13101"; - "WORKING_PROPRIETOR_AGRICULTURE_AND_FISHERIES": "13102"; - "MANUFACTURING_PLANT_PRODUCTION_MANAGER": "13211"; - "WORKING_PROPRIETOR_MANUFACTURING": "13212"; - "BUILDING_AND_CONSTRUCTION_PROJECT_MANAGER": "13231"; - "WORKING_PROPRIETOR_CONSTRUCTION": "13232"; - "SUPPLY_AND_DISTRIBUTION_LOGISTICS_WAREHOUSING_MANAGER": "13241"; - "PROCUREMENT_PURCHASING_MANAGER": "13242"; - "TRANSPORT_OPERATIONS_MANAGER": "13243"; - "POSTAL_SERVICE_MANAGER": "13244"; - "WORKING_PROPRIETOR_TRANSPORT_STORAGE_AND_COURIER": "13245"; - "TECHNICAL_ENGINEERING_SERVICES_MANAGER_EG_SHIPYARD_MANAGER": "13291"; - "QUALITY_ASSURANCE_MANAGER": "13292"; - "OTHER_PRODUCTION_AND_OPERATIONS_MANAGERS_NEC_EG_MINING_MANAGER": "13299"; - "CHIEF_INFORMATION_OFFICER_CHIEF_TECHNOLOGY_OFFICER_CHIEF_SECURITY_OFFICER": "13301"; - "SOFTWARE_AND_APPLICATIONS_MANAGER": "13302"; - "NETWORK_AND_COMMUNICATIONS_MANAGER": "13303"; - "IT_SERVICE_MANAGER": "13304"; - "WORKING_PROPRIETOR_INFORMATION_AND_COMMUNICATIONS_TECHNOLOGY_SERVICE": "13305"; - "CHILD_CARE_SERVICES_MANAGER": "13410"; - "HEALTH_SERVICES_MANAGER": "13420"; - "AGED_CARE_SERVICES_MANAGER": "13430"; - "SOCIAL_WELFARE_MANAGER": "13440"; - "SCHOOL_PRINCIPAL": "13451"; - "OTHER_EDUCATION_MANAGERS_INCLUDING_REGISTRARS_AND_DEANS_OF_EDUCATION_INSTITUTIONS": "13459"; - "FINANCIAL_INSURANCE_SERVICES_MANAGER_EG_FINANCIAL_INSTITUTION_BRANCH_MANAGER": "13460"; - "WORKING_PROPRIETOR_PROFESSIONAL_FINANCIAL_COMMUNITY_AND_SOCIAL_SERVICES": "13491"; - "OTHER_PROFESSIONAL_FINANCIAL_COMMUNITY_AND_SOCIAL_SERVICES_MANAGERS_NEC": "13499"; - "HOTEL_OPERATIONS_LODGING_SERVICES_MANAGER": "14111"; - "WORKING_PROPRIETOR_LODGING_SERVICES": "14112"; - "RESTAURANT_MANAGER": "14121"; - "CATERING_SERVICES_MANAGER": "14122"; - "WORKING_PROPRIETOR_RESTAURANT_AND_OTHER_CATERING_SERVICES": "14123"; - "RETAIL_SHOP_SALES_MANAGER": "14201"; - "WHOLESALE_TRADE_MANAGER": "14202"; - "WORKING_PROPRIETOR_RETAIL_TRADE": "14203"; - "WORKING_PROPRIETOR_WHOLESALE_TRADE": "14204"; - "SPORTS_CENTRE_MANAGER": "14310"; - "CASINO_OPERATIONS_MANAGER": "14321"; - "AMUSEMENT_THEME_PARK_MANAGER": "14322"; - "CINEMA_MANAGER": "14323"; - "PARK_GARDEN_NATURE_RESERVE_MANAGER": "14324"; - "DISCOTHEQUE_KARAOKE_NIGHTCLUB_MANAGER": "14325"; - "OTHER_RECREATION_CENTRE_MANAGERS": "14329"; - "ARTS_AND_CULTURAL_CENTRE_MANAGER": "14330"; - "WORKING_PROPRIETOR_SPORTS_RECREATION_ARTS_AND_OTHER_SERVICES": "14391"; - "OTHER_SERVICES_MANAGERS_NEC": "14399"; + LEGISLATOR: "11110"; + SENIOR_GOVERNMENT_OFFICIAL: "11121"; + SENIOR_STATUTORY_BOARD_OFFICIAL: "11122"; + SENIOR_OFFICIAL_OF_POLITICAL_PARTY_ORGANISATION: "11140"; + SENIOR_OFFICIAL_OF_EMPLOYERS_WORKERS_AND_OTHER_ECONOMIC_INTEREST_ORGANISATION: "11150"; + SENIOR_OFFICIAL_OF_HUMANITARIAN_AND_OTHER_SPECIAL_INTEREST_ORGANISATION: "11160"; + MANAGING_DIRECTOR_CHIEF_EXECUTIVE_OFFICER: "11201"; + COMPANY_DIRECTOR: "11202"; + CHIEF_OPERATING_OFFICER_GENERAL_MANAGER: "11203"; + BUDGETING_AND_FINANCIAL_ACCOUNTING_MANAGER_INCLUDING_FINANCIAL_CONTROLLER: "12111"; + ADMINISTRATION_MANAGER: "12112"; + PERSONNEL_HUMAN_RESOURCE_MANAGER: "12121"; + INDUSTRIAL_RELATIONS_MANAGER: "12122"; + TRAINING_MANAGER: "12123"; + POLICY_AND_PLANNING_MANAGER: "12130"; + PREMISES_AND_FACILITIES_MAINTENANCE_MANAGER: "12191"; + LANDSCAPE_OPERATIONS_MANAGER: "12192"; + WORKING_PROPRIETOR_BUSINESS_SERVICES_AND_ADMINISTRATIVE_SERVICES: "12193"; + OTHER_BUSINESS_SERVICES_AND_ADMINISTRATION_MANAGERS_NEC: "12199"; + SALES_AND_MARKETING_MANAGER: "12211"; + BUSINESS_DEVELOPMENT_MANAGER: "12212"; + ADVERTISING_PUBLIC_RELATIONS_MANAGER: "12220"; + RESEARCH_AND_DEVELOPMENT_MANAGER: "12230"; + CUSTOMER_SERVICE_MANAGER: "12241"; + CALL_CENTRE_MANAGER: "12242"; + PRODUCTION_MANAGER_IN_AGRICULTURE_AND_FISHERIES: "13101"; + WORKING_PROPRIETOR_AGRICULTURE_AND_FISHERIES: "13102"; + MANUFACTURING_PLANT_PRODUCTION_MANAGER: "13211"; + WORKING_PROPRIETOR_MANUFACTURING: "13212"; + BUILDING_AND_CONSTRUCTION_PROJECT_MANAGER: "13231"; + WORKING_PROPRIETOR_CONSTRUCTION: "13232"; + SUPPLY_AND_DISTRIBUTION_LOGISTICS_WAREHOUSING_MANAGER: "13241"; + PROCUREMENT_PURCHASING_MANAGER: "13242"; + TRANSPORT_OPERATIONS_MANAGER: "13243"; + POSTAL_SERVICE_MANAGER: "13244"; + WORKING_PROPRIETOR_TRANSPORT_STORAGE_AND_COURIER: "13245"; + TECHNICAL_ENGINEERING_SERVICES_MANAGER_EG_SHIPYARD_MANAGER: "13291"; + QUALITY_ASSURANCE_MANAGER: "13292"; + OTHER_PRODUCTION_AND_OPERATIONS_MANAGERS_NEC_EG_MINING_MANAGER: "13299"; + CHIEF_INFORMATION_OFFICER_CHIEF_TECHNOLOGY_OFFICER_CHIEF_SECURITY_OFFICER: "13301"; + SOFTWARE_AND_APPLICATIONS_MANAGER: "13302"; + NETWORK_AND_COMMUNICATIONS_MANAGER: "13303"; + IT_SERVICE_MANAGER: "13304"; + WORKING_PROPRIETOR_INFORMATION_AND_COMMUNICATIONS_TECHNOLOGY_SERVICE: "13305"; + CHILD_CARE_SERVICES_MANAGER: "13410"; + HEALTH_SERVICES_MANAGER: "13420"; + AGED_CARE_SERVICES_MANAGER: "13430"; + SOCIAL_WELFARE_MANAGER: "13440"; + SCHOOL_PRINCIPAL: "13451"; + OTHER_EDUCATION_MANAGERS_INCLUDING_REGISTRARS_AND_DEANS_OF_EDUCATION_INSTITUTIONS: "13459"; + FINANCIAL_INSURANCE_SERVICES_MANAGER_EG_FINANCIAL_INSTITUTION_BRANCH_MANAGER: "13460"; + WORKING_PROPRIETOR_PROFESSIONAL_FINANCIAL_COMMUNITY_AND_SOCIAL_SERVICES: "13491"; + OTHER_PROFESSIONAL_FINANCIAL_COMMUNITY_AND_SOCIAL_SERVICES_MANAGERS_NEC: "13499"; + HOTEL_OPERATIONS_LODGING_SERVICES_MANAGER: "14111"; + WORKING_PROPRIETOR_LODGING_SERVICES: "14112"; + RESTAURANT_MANAGER: "14121"; + CATERING_SERVICES_MANAGER: "14122"; + WORKING_PROPRIETOR_RESTAURANT_AND_OTHER_CATERING_SERVICES: "14123"; + RETAIL_SHOP_SALES_MANAGER: "14201"; + WHOLESALE_TRADE_MANAGER: "14202"; + WORKING_PROPRIETOR_RETAIL_TRADE: "14203"; + WORKING_PROPRIETOR_WHOLESALE_TRADE: "14204"; + SPORTS_CENTRE_MANAGER: "14310"; + CASINO_OPERATIONS_MANAGER: "14321"; + AMUSEMENT_THEME_PARK_MANAGER: "14322"; + CINEMA_MANAGER: "14323"; + PARK_GARDEN_NATURE_RESERVE_MANAGER: "14324"; + DISCOTHEQUE_KARAOKE_NIGHTCLUB_MANAGER: "14325"; + OTHER_RECREATION_CENTRE_MANAGERS: "14329"; + ARTS_AND_CULTURAL_CENTRE_MANAGER: "14330"; + WORKING_PROPRIETOR_SPORTS_RECREATION_ARTS_AND_OTHER_SERVICES: "14391"; + OTHER_SERVICES_MANAGERS_NEC: "14399"; - "PHYSICIST_ASTRONOMER": "21110"; - "METEOROLOGIST": "21120"; - "CHEMIST": "21130"; - "GEOLOGIST": "21141"; - "GEOPHYSICIST": "21142"; - "OTHER_PHYSICAL_SCIENCE_PROFESSIONALS": "21149"; - "MATHEMATICIAN": "21211"; - "OPERATIONS_RESEARCH_ANALYST": "21212"; - "ACTUARY": "21213"; - "STATISTICIAN": "21220"; - "BIOLOGIST_GENERAL": "21311"; - "BOTANIST": "21312"; - "ZOOLOGIST": "21313"; - "OTHER_BIOLOGISTS_BOTANISTS_ZOOLOGISTS_AND_RELATED_PROFESSIONALS": "21319"; - "AGRONOMIST": "21321"; - "HORTICULTURIST_ARBORIST": "21322"; - "PLANT_PATHOLOGIST": "21323"; - "SOIL_SCIENTIST": "21324"; - "FLORICULTURIST_ORCHIDOLOGIST": "21325"; - "PLANT_TISSUE_CULTURIST": "21326"; - "AQUACULTURIST": "21327"; - "OTHER_FARMING_FORESTRY_AND_FISHERY_ADVISERS": "21329"; - "ENVIRONMENTAL_OFFICER_ENVIRONMENTAL_PROTECTION": "21331"; - "ENVIRONMENT_RESEARCH_SCIENTIST_EG_ECOLOGIST": "21332"; - "ENERGY_MANAGER": "21333"; - "OTHER_ENVIRONMENTAL_PROTECTION_AND_RELATED_PROFESSIONALS": "21339"; - "PHARMACOLOGIST": "21341"; - "ANATOMIST": "21342"; - "BIOCHEMIST": "21343"; - "PHYSIOLOGIST": "21344"; - "ANIMAL_SCIENTIST": "21345"; - "MEDICAL_SCIENTIST": "21346"; - "OTHER_PHARMACOLOGISTS_AND_RELATED_PROFESSIONALS": "21349"; - "MANUFACTURING_ENGINEER_GENERAL": "21411"; - "PRODUCTION_ENGINEER": "21412"; - "AUTOMATION_ENGINEER": "21413"; - "QUALITY_CONTROL_ASSURANCE_ENGINEER": "21414"; - "OTHER_INDUSTRIAL_AND_PRODUCTION_ENGINEERS": "21419"; - "CIVIL_ENGINEER_GENERAL": "21421"; - "STRUCTURAL_ENGINEER_GENERAL": "21422"; - "BUILDING_CONSTRUCTION_ENGINEER": "21423"; - "SOIL_MECHANIC_PILING_ENGINEER": "21424"; - "OTHER_CIVIL_ENGINEERS": "21429"; - "ENVIRONMENTAL_ENGINEER": "21431"; - "SEWERAGE_SANITARY_ENGINEER": "21432"; - "MECHANICAL_ENGINEER_GENERAL": "21441"; - "INDUSTRIAL_MACHINERY_AND_TOOLS_ENGINEER": "21442"; - "MARINE_ENGINEER_SHORE_BASED": "21443"; - "NAVAL_ARCHITECT": "21444"; - "AERONAUTICAL_ENGINEER": "21445"; - "AUTOMOTIVE_ENGINEER": "21446"; - "AIR_CONDITIONING_REFRIGERATION_ENGINEER": "21447"; - "OTHER_MECHANICAL_ENGINEERS": "21449"; - "CHEMICAL_ENGINEER_GENERAL": "21451"; - "CHEMICAL_ENGINEER_PETROLEUM": "21452"; - "CHEMICAL_ENGINEER_PETROCHEMICALS": "21453"; - "OTHER_CHEMICAL_ENGINEERS": "21459"; - "PETROLEUM_NATURAL_GAS_ENGINEER": "21461"; - "METALLURGIST": "21462"; - "OTHER_MINING_ENGINEERS_METALLURGISTS_AND_RELATED_PROFESSIONALS": "21469"; - "BIOMEDICAL_ENGINEER": "21491"; - "MATERIALS_ENGINEER": "21492"; - "INDUSTRIAL_SAFETY_ENGINEER": "21493"; - "QUANTITY_SURVEYOR": "21494"; - "CERAMICS_GLASS_TECHNOLOGIST": "21495"; - "FOOD_AND_DRINK_TECHNOLOGIST": "21496"; - "OTHER_ENGINEERING_PROFESSIONALS_NEC": "21499"; - "ELECTRICAL_ENGINEER_GENERAL": "21511"; - "POWER_GENERATION_AND_DISTRIBUTION_ENGINEER": "21512"; - "LIFT_ENGINEER": "21513"; - "OTHER_ELECTRICAL_ENGINEERS": "21519"; - "ELECTRONICS_ENGINEER_GENERAL": "21521"; - "COMPUTER_ENGINEER": "21522"; - "SEMI_CONDUCTOR_ENGINEER": "21523"; - "AUDIO_AND_VIDEO_EQUIPMENT_ENGINEER": "21524"; - "INSTRUMENTATION_ENGINEER": "21525"; - "EMBEDDED_SYSTEMS_ENGINEER": "21526"; - "OTHER_ELECTRONICS_ENGINEERS": "21529"; - "TELECOMMUNICATIONS_ENGINEER": "21530"; - "BUILDING_ARCHITECT": "21610"; - "LANDSCAPE_ARCHITECT": "21620"; - "TOWN_PLANNER": "21641"; - "OTHER_RELATED_PLANNERS_EG_TRAFFIC_PLANNER": "21649"; - "SURVEYOR_GENERAL": "21651"; - "LAND_SURVEYOR": "21652"; - "HYDROGRAPHIC_SURVEYOR": "21653"; - "CARTOGRAPHER": "21654"; - "OTHER_SURVEYORS_AND_CARTOGRAPHERS": "21659"; - "GENERAL_PRACTITIONER_PHYSICIAN": "22110"; - "CARDIOLOGIST": "22121"; - "DERMATOLOGIST": "22122"; - "GASTROENTEROLOGIST": "22123"; - "INTERNAL_MEDICINE_PHYSICIAN": "22124"; - "MEDICAL_ONCOLOGIST": "22125"; - "PAEDIATRICIAN": "22126"; - "RESPIRATORY_PHYSICIAN": "22127"; - "PSYCHIATRIST": "22128"; - "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_MEDICAL_EG_ENDOCRINOLOGIST_GERIATRICIAN_HAEMATOLOGIST_INFECTIOUS_DISEASES_PHYSICIAN_NEUROLOGIST_NUCLEAR_MEDICINE_PHYSICIAN_REHABILITATION_PHYSICIAN_RENAL_PHYSICIAN_RHEUMATOLOGIST": "22129"; - "GENERAL_SURGEON": "22131"; - "CARDIOTHORACIC_SURGEON": "22132"; - "HAND_SURGEON": "22133"; - "NEUROSURGEON": "22134"; - "ORTHOPAEDIC_SURGEON": "22135"; - "PAEDIATRIC_SURGEON": "22136"; - "PLASTIC_SURGEON": "22137"; - "UROLOGIST": "22138"; - "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_SURGICAL": "22139"; - "ANAESTHESIOLOGIST": "22141"; - "DIAGNOSTIC_RADIOLOGIST": "22142"; - "EMERGENCY_PHYSICIAN": "22143"; - "OBSTETRICIAN_GYNAECOLOGIST": "22144"; - "OPHTHALMOLOGIST": "22145"; - "PATHOLOGIST": "22146"; - "PUBLIC_HEALTH_PHYSICIAN": "22147"; - "OTORHINOLARYNGOLOGIST_EAR_NOSE_THROAT_ENT_SURGEON": "22148"; - "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_OTHER_SPECIALISATIONS_EG_OCCUPATIONAL_PHYSICIAN_RADIATION_ONCOLOGIST": "22149"; - "TRADITIONAL_CHINESE_MEDICINE_PHYSICIAN": "22301"; - "TRADITIONAL_CHINESE_MEDICINE_ACUPUNCTURIST": "22302"; - "VETERINARIAN": "22500"; - "DENTIST_GENERAL": "22611"; - "SPECIALISED_DENTIST_EG_ORTHODONTIST": "22612"; - "PHARMACIST_DISPENSING": "22621"; - "OTHER_PHARMACISTS": "22629"; - "OCCUPATIONAL_HEALTH_PROFESSIONAL": "22631"; - "ENVIRONMENTAL_OFFICER_PUBLIC_HEALTH": "22632"; - "OTHER_ENVIRONMENTAL_AND_OCCUPATIONAL_HEALTH_AND_HYGIENE_PROFESSIONALS": "22639"; - "OTHER_HEALTH_PROFESSIONALS_NEC": "22690"; - "UNIVERSITY_LECTURER": "23101"; - "POLYTECHNIC_LECTURER": "23102"; - "OTHER_UNIVERSITY_POLYTECHNIC_AND_HIGHER_EDUCATION_TEACHERS": "23109"; - "TECHNICAL_VOCATIONAL_COMMERCIAL_EDUCATION_INSTITUTE_TEACHER": "23200"; - "PRE_UNIVERSITY_INCLUDING_JUNIOR_COLLEGE_AND_SECONDARY_SCHOOL_TEACHER": "23300"; - "PRIMARY_SCHOOL_TEACHER": "23400"; - "EDUCATION_METHODS_ADVISER": "23511"; - "TEACHING_AID_SPECIALIST_INCLUDING_AUDIO_VISUAL_AID_SPECIALIST": "23512"; - "OTHER_EDUCATION_METHODS_SPECIALISTS": "23519"; - "TEACHER_OF_THE_BLIND": "23521"; - "TEACHER_OF_THE_DEAF": "23522"; - "TEACHER_OF_THE_MENTALLY_HANDICAPPED": "23523"; - "OTHER_SPECIAL_EDUCATION_TEACHERS": "23529"; - "OTHER_TEACHING_PROFESSIONALS_NEC": "23590"; - "ACCOUNTANT": "24111"; - "AUDITOR_ACCOUNTING": "24112"; - "FINANCIAL_INVESTMENT_ADVISER": "24120"; - "FINANCIAL_ANALYST_EG_EQUITIES_ANALYST_CREDIT_ANALYST": "24131"; - "RISK_ANALYST_FINANCIAL": "24132"; - "FUND_MANAGER": "24133"; - "TREASURY_MANAGER": "24134"; - "OTHER_FINANCIAL_ANALYSTS_AND_RELATED_PROFESSIONALS_EG_FINANCIAL_PRODUCT_STRUCTURER": "24139"; - "MANAGEMENT_CONSULTANT": "24211"; - "BUSINESS_CONSULTANT": "24212"; - "POLICY_ADMINISTRATION_PROFESSIONAL_EG_POLICY_ANALYST": "24220"; - "HUMAN_RESOURCE_CONSULTANT_EXCLUDING_EXECUTIVE_SEARCH_CONSULTANT": "24231"; - "EXECUTIVE_SEARCH_CONSULTANT": "24232"; - "CREATIVE_DIRECTOR_ADVERTISING": "24311"; - "MARKET_RESEARCH_ANALYST": "24312"; - "PUBLIC_RELATIONS_CONSULTANT_AND_RELATED_PROFESSIONAL": "24320"; - "SYSTEMS_DESIGNER_ANALYST": "25111"; - "IT_BUSINESS_PROCESS_CONSULTANT_BUSINESS_ANALYST": "25112"; - "SOFTWARE_DEVELOPER": "25121"; - "WEB_DEVELOPER": "25122"; - "MULTIMEDIA_INCLUDING_COMPUTER_GAMES_DEVELOPER": "25123"; - "APPLICATIONS_SYSTEMS_PROGRAMMER": "25140"; - "INFORMATION_TECHNOLOGY_TESTING_QUALITY_ASSURANCE_SPECIALIST": "25151"; - "INFORMATION_TECHNOLOGY_AUDITOR": "25152"; - "INFORMATION_TECHNOLOGY_PROJECT_MANAGER": "25160"; - "SOFTWARE_AND_APPLICATIONS_DEVELOPER_AND_ANALYST_NEC": "25190"; - "DATABASE_ADMINISTRATOR": "25211"; - "DATABASE_ARCHITECT": "25212"; - "NETWORK_COMPUTER_SYSTEMS_ADMINISTRATOR": "25220"; - "NETWORK_INFRASTRUCTURE_ARCHITECT_AND_ENGINEER": "25230"; - "INFORMATION_TECHNOLOGY_SECURITY_SPECIALIST": "25240"; - "DATABASE_AND_NETWORK_PROFESSIONAL_NEC": "25290"; - "ADVOCATE_SOLICITOR": "26111"; - "LAWYER_EXCLUDING_ADVOCATE_AND_SOLICITOR": "26112"; - "LEGAL_OFFICER": "26113"; - "JUDGE": "26120"; - "ARCHIVIST": "26211"; - "CURATOR_ART_GALLERY_AND_MUSEUM": "26212"; - "CONSERVATOR_ART_WORKS": "26213"; - "LIBRARIAN": "26221"; - "OTHER_INFORMATION_PROFESSIONALS": "26229"; - "ECONOMIST": "26310"; - "SOCIOLOGIST": "26321"; - "ANTHROPOLOGIST": "26322"; - "SOCIAL_RESEARCH_ANALYST": "26323"; - "HISTORIAN": "26331"; - "POLITICAL_SCIENTIST": "26332"; - "OTHER_SOCIAL_SCIENCE_PROFESSIONALS_EG_PHILOSOPHER": "26339"; - "PSYCHOLOGIST": "26340"; - "SOCIAL_WORKER_GENERAL": "26351"; - "SOCIAL_WORKER_DELINQUENCY": "26352"; - "MEDICAL_SOCIAL_WORKER": "26353"; - "COUNSELLOR_REHABILITATION": "26354"; - "COUNSELLOR_DRUGS_AND_ALCOHOL": "26355"; - "COUNSELLOR_FAMILY": "26356"; - "SCHOOL_COUNSELLOR": "26357"; - "OTHER_SOCIAL_WORK_AND_COUNSELLING_PROFESSIONALS": "26359"; - "AUTHOR": "26411"; - "SCRIPT_WRITER": "26412"; - "ADVERTISING_COPYWRITER": "26413"; - "TECHNICAL_WRITER": "26414"; - "CONTINUITY_AND_SCRIPT_EDITOR": "26415"; - "BOOK_EDITOR": "26416"; - "OTHER_AUTHORS_AND_RELATED_WRITERS": "26419"; - "JOURNALIST": "26421"; - "EDITOR_NEWS_AND_PERIODICALS": "26422"; - "SCULPTOR": "26511"; - "PAINTER": "26512"; - "CARTOONIST": "26513"; - "OTHER_VISUAL_ARTISTS": "26519"; - "INSTRUMENTALIST": "26521"; - "COMPOSER_ORCHESTRATOR": "26522"; - "CONDUCTOR_DIRECTOR_OF_ORCHESTRA_BAND_CHOIR": "26523"; - "SINGER": "26524"; - "OTHER_MUSICIANS_COMPOSERS_AND_SINGERS": "26529"; - "DANCER": "26531"; - "CHOREOGRAPHER": "26532"; - "PRODUCER_STAGE_FILM_TELEVISION_COMPUTER_GAMES_VIDEO_AND_RADIO": "26541"; - "DIRECTOR_STAGE_FILM_TELEVISION_AND_RADIO": "26542"; - "ARTISTIC_DIRECTOR_STAGE_FILM_TELEVISION_AND_RADIO": "26543"; - "PRODUCER_DIRECTOR_OF_COMMERCIALS": "26544"; - "EDITOR_RADIO_TELEVISION_AND_VIDEO": "26545"; - "OTHER_FILM_STAGE_AND_RELATED_DIRECTORS_AND_PRODUCERS": "26549"; - "ACTOR": "26550"; - "MINISTER_OF_RELIGION": "29011"; - "OTHER_RELIGIOUS_PROFESSIONALS": "29019"; - "OTHER_PROFESSIONALS_NEC": "29090"; + PHYSICIST_ASTRONOMER: "21110"; + METEOROLOGIST: "21120"; + CHEMIST: "21130"; + GEOLOGIST: "21141"; + GEOPHYSICIST: "21142"; + OTHER_PHYSICAL_SCIENCE_PROFESSIONALS: "21149"; + MATHEMATICIAN: "21211"; + OPERATIONS_RESEARCH_ANALYST: "21212"; + ACTUARY: "21213"; + STATISTICIAN: "21220"; + BIOLOGIST_GENERAL: "21311"; + BOTANIST: "21312"; + ZOOLOGIST: "21313"; + OTHER_BIOLOGISTS_BOTANISTS_ZOOLOGISTS_AND_RELATED_PROFESSIONALS: "21319"; + AGRONOMIST: "21321"; + HORTICULTURIST_ARBORIST: "21322"; + PLANT_PATHOLOGIST: "21323"; + SOIL_SCIENTIST: "21324"; + FLORICULTURIST_ORCHIDOLOGIST: "21325"; + PLANT_TISSUE_CULTURIST: "21326"; + AQUACULTURIST: "21327"; + OTHER_FARMING_FORESTRY_AND_FISHERY_ADVISERS: "21329"; + ENVIRONMENTAL_OFFICER_ENVIRONMENTAL_PROTECTION: "21331"; + ENVIRONMENT_RESEARCH_SCIENTIST_EG_ECOLOGIST: "21332"; + ENERGY_MANAGER: "21333"; + OTHER_ENVIRONMENTAL_PROTECTION_AND_RELATED_PROFESSIONALS: "21339"; + PHARMACOLOGIST: "21341"; + ANATOMIST: "21342"; + BIOCHEMIST: "21343"; + PHYSIOLOGIST: "21344"; + ANIMAL_SCIENTIST: "21345"; + MEDICAL_SCIENTIST: "21346"; + OTHER_PHARMACOLOGISTS_AND_RELATED_PROFESSIONALS: "21349"; + MANUFACTURING_ENGINEER_GENERAL: "21411"; + PRODUCTION_ENGINEER: "21412"; + AUTOMATION_ENGINEER: "21413"; + QUALITY_CONTROL_ASSURANCE_ENGINEER: "21414"; + OTHER_INDUSTRIAL_AND_PRODUCTION_ENGINEERS: "21419"; + CIVIL_ENGINEER_GENERAL: "21421"; + STRUCTURAL_ENGINEER_GENERAL: "21422"; + BUILDING_CONSTRUCTION_ENGINEER: "21423"; + SOIL_MECHANIC_PILING_ENGINEER: "21424"; + OTHER_CIVIL_ENGINEERS: "21429"; + ENVIRONMENTAL_ENGINEER: "21431"; + SEWERAGE_SANITARY_ENGINEER: "21432"; + MECHANICAL_ENGINEER_GENERAL: "21441"; + INDUSTRIAL_MACHINERY_AND_TOOLS_ENGINEER: "21442"; + MARINE_ENGINEER_SHORE_BASED: "21443"; + NAVAL_ARCHITECT: "21444"; + AERONAUTICAL_ENGINEER: "21445"; + AUTOMOTIVE_ENGINEER: "21446"; + AIR_CONDITIONING_REFRIGERATION_ENGINEER: "21447"; + OTHER_MECHANICAL_ENGINEERS: "21449"; + CHEMICAL_ENGINEER_GENERAL: "21451"; + CHEMICAL_ENGINEER_PETROLEUM: "21452"; + CHEMICAL_ENGINEER_PETROCHEMICALS: "21453"; + OTHER_CHEMICAL_ENGINEERS: "21459"; + PETROLEUM_NATURAL_GAS_ENGINEER: "21461"; + METALLURGIST: "21462"; + OTHER_MINING_ENGINEERS_METALLURGISTS_AND_RELATED_PROFESSIONALS: "21469"; + BIOMEDICAL_ENGINEER: "21491"; + MATERIALS_ENGINEER: "21492"; + INDUSTRIAL_SAFETY_ENGINEER: "21493"; + QUANTITY_SURVEYOR: "21494"; + CERAMICS_GLASS_TECHNOLOGIST: "21495"; + FOOD_AND_DRINK_TECHNOLOGIST: "21496"; + OTHER_ENGINEERING_PROFESSIONALS_NEC: "21499"; + ELECTRICAL_ENGINEER_GENERAL: "21511"; + POWER_GENERATION_AND_DISTRIBUTION_ENGINEER: "21512"; + LIFT_ENGINEER: "21513"; + OTHER_ELECTRICAL_ENGINEERS: "21519"; + ELECTRONICS_ENGINEER_GENERAL: "21521"; + COMPUTER_ENGINEER: "21522"; + SEMI_CONDUCTOR_ENGINEER: "21523"; + AUDIO_AND_VIDEO_EQUIPMENT_ENGINEER: "21524"; + INSTRUMENTATION_ENGINEER: "21525"; + EMBEDDED_SYSTEMS_ENGINEER: "21526"; + OTHER_ELECTRONICS_ENGINEERS: "21529"; + TELECOMMUNICATIONS_ENGINEER: "21530"; + BUILDING_ARCHITECT: "21610"; + LANDSCAPE_ARCHITECT: "21620"; + TOWN_PLANNER: "21641"; + OTHER_RELATED_PLANNERS_EG_TRAFFIC_PLANNER: "21649"; + SURVEYOR_GENERAL: "21651"; + LAND_SURVEYOR: "21652"; + HYDROGRAPHIC_SURVEYOR: "21653"; + CARTOGRAPHER: "21654"; + OTHER_SURVEYORS_AND_CARTOGRAPHERS: "21659"; + GENERAL_PRACTITIONER_PHYSICIAN: "22110"; + CARDIOLOGIST: "22121"; + DERMATOLOGIST: "22122"; + GASTROENTEROLOGIST: "22123"; + INTERNAL_MEDICINE_PHYSICIAN: "22124"; + MEDICAL_ONCOLOGIST: "22125"; + PAEDIATRICIAN: "22126"; + RESPIRATORY_PHYSICIAN: "22127"; + PSYCHIATRIST: "22128"; + OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_MEDICAL_EG_ENDOCRINOLOGIST_GERIATRICIAN_HAEMATOLOGIST_INFECTIOUS_DISEASES_PHYSICIAN_NEUROLOGIST_NUCLEAR_MEDICINE_PHYSICIAN_REHABILITATION_PHYSICIAN_RENAL_PHYSICIAN_RHEUMATOLOGIST: "22129"; + GENERAL_SURGEON: "22131"; + CARDIOTHORACIC_SURGEON: "22132"; + HAND_SURGEON: "22133"; + NEUROSURGEON: "22134"; + ORTHOPAEDIC_SURGEON: "22135"; + PAEDIATRIC_SURGEON: "22136"; + PLASTIC_SURGEON: "22137"; + UROLOGIST: "22138"; + OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_SURGICAL: "22139"; + ANAESTHESIOLOGIST: "22141"; + DIAGNOSTIC_RADIOLOGIST: "22142"; + EMERGENCY_PHYSICIAN: "22143"; + OBSTETRICIAN_GYNAECOLOGIST: "22144"; + OPHTHALMOLOGIST: "22145"; + PATHOLOGIST: "22146"; + PUBLIC_HEALTH_PHYSICIAN: "22147"; + OTORHINOLARYNGOLOGIST_EAR_NOSE_THROAT_ENT_SURGEON: "22148"; + OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_OTHER_SPECIALISATIONS_EG_OCCUPATIONAL_PHYSICIAN_RADIATION_ONCOLOGIST: "22149"; + TRADITIONAL_CHINESE_MEDICINE_PHYSICIAN: "22301"; + TRADITIONAL_CHINESE_MEDICINE_ACUPUNCTURIST: "22302"; + VETERINARIAN: "22500"; + DENTIST_GENERAL: "22611"; + SPECIALISED_DENTIST_EG_ORTHODONTIST: "22612"; + PHARMACIST_DISPENSING: "22621"; + OTHER_PHARMACISTS: "22629"; + OCCUPATIONAL_HEALTH_PROFESSIONAL: "22631"; + ENVIRONMENTAL_OFFICER_PUBLIC_HEALTH: "22632"; + OTHER_ENVIRONMENTAL_AND_OCCUPATIONAL_HEALTH_AND_HYGIENE_PROFESSIONALS: "22639"; + OTHER_HEALTH_PROFESSIONALS_NEC: "22690"; + UNIVERSITY_LECTURER: "23101"; + POLYTECHNIC_LECTURER: "23102"; + OTHER_UNIVERSITY_POLYTECHNIC_AND_HIGHER_EDUCATION_TEACHERS: "23109"; + TECHNICAL_VOCATIONAL_COMMERCIAL_EDUCATION_INSTITUTE_TEACHER: "23200"; + PRE_UNIVERSITY_INCLUDING_JUNIOR_COLLEGE_AND_SECONDARY_SCHOOL_TEACHER: "23300"; + PRIMARY_SCHOOL_TEACHER: "23400"; + EDUCATION_METHODS_ADVISER: "23511"; + TEACHING_AID_SPECIALIST_INCLUDING_AUDIO_VISUAL_AID_SPECIALIST: "23512"; + OTHER_EDUCATION_METHODS_SPECIALISTS: "23519"; + TEACHER_OF_THE_BLIND: "23521"; + TEACHER_OF_THE_DEAF: "23522"; + TEACHER_OF_THE_MENTALLY_HANDICAPPED: "23523"; + OTHER_SPECIAL_EDUCATION_TEACHERS: "23529"; + OTHER_TEACHING_PROFESSIONALS_NEC: "23590"; + ACCOUNTANT: "24111"; + AUDITOR_ACCOUNTING: "24112"; + FINANCIAL_INVESTMENT_ADVISER: "24120"; + FINANCIAL_ANALYST_EG_EQUITIES_ANALYST_CREDIT_ANALYST: "24131"; + RISK_ANALYST_FINANCIAL: "24132"; + FUND_MANAGER: "24133"; + TREASURY_MANAGER: "24134"; + OTHER_FINANCIAL_ANALYSTS_AND_RELATED_PROFESSIONALS_EG_FINANCIAL_PRODUCT_STRUCTURER: "24139"; + MANAGEMENT_CONSULTANT: "24211"; + BUSINESS_CONSULTANT: "24212"; + POLICY_ADMINISTRATION_PROFESSIONAL_EG_POLICY_ANALYST: "24220"; + HUMAN_RESOURCE_CONSULTANT_EXCLUDING_EXECUTIVE_SEARCH_CONSULTANT: "24231"; + EXECUTIVE_SEARCH_CONSULTANT: "24232"; + CREATIVE_DIRECTOR_ADVERTISING: "24311"; + MARKET_RESEARCH_ANALYST: "24312"; + PUBLIC_RELATIONS_CONSULTANT_AND_RELATED_PROFESSIONAL: "24320"; + SYSTEMS_DESIGNER_ANALYST: "25111"; + IT_BUSINESS_PROCESS_CONSULTANT_BUSINESS_ANALYST: "25112"; + SOFTWARE_DEVELOPER: "25121"; + WEB_DEVELOPER: "25122"; + MULTIMEDIA_INCLUDING_COMPUTER_GAMES_DEVELOPER: "25123"; + APPLICATIONS_SYSTEMS_PROGRAMMER: "25140"; + INFORMATION_TECHNOLOGY_TESTING_QUALITY_ASSURANCE_SPECIALIST: "25151"; + INFORMATION_TECHNOLOGY_AUDITOR: "25152"; + INFORMATION_TECHNOLOGY_PROJECT_MANAGER: "25160"; + SOFTWARE_AND_APPLICATIONS_DEVELOPER_AND_ANALYST_NEC: "25190"; + DATABASE_ADMINISTRATOR: "25211"; + DATABASE_ARCHITECT: "25212"; + NETWORK_COMPUTER_SYSTEMS_ADMINISTRATOR: "25220"; + NETWORK_INFRASTRUCTURE_ARCHITECT_AND_ENGINEER: "25230"; + INFORMATION_TECHNOLOGY_SECURITY_SPECIALIST: "25240"; + DATABASE_AND_NETWORK_PROFESSIONAL_NEC: "25290"; + ADVOCATE_SOLICITOR: "26111"; + LAWYER_EXCLUDING_ADVOCATE_AND_SOLICITOR: "26112"; + LEGAL_OFFICER: "26113"; + JUDGE: "26120"; + ARCHIVIST: "26211"; + CURATOR_ART_GALLERY_AND_MUSEUM: "26212"; + CONSERVATOR_ART_WORKS: "26213"; + LIBRARIAN: "26221"; + OTHER_INFORMATION_PROFESSIONALS: "26229"; + ECONOMIST: "26310"; + SOCIOLOGIST: "26321"; + ANTHROPOLOGIST: "26322"; + SOCIAL_RESEARCH_ANALYST: "26323"; + HISTORIAN: "26331"; + POLITICAL_SCIENTIST: "26332"; + OTHER_SOCIAL_SCIENCE_PROFESSIONALS_EG_PHILOSOPHER: "26339"; + PSYCHOLOGIST: "26340"; + SOCIAL_WORKER_GENERAL: "26351"; + SOCIAL_WORKER_DELINQUENCY: "26352"; + MEDICAL_SOCIAL_WORKER: "26353"; + COUNSELLOR_REHABILITATION: "26354"; + COUNSELLOR_DRUGS_AND_ALCOHOL: "26355"; + COUNSELLOR_FAMILY: "26356"; + SCHOOL_COUNSELLOR: "26357"; + OTHER_SOCIAL_WORK_AND_COUNSELLING_PROFESSIONALS: "26359"; + AUTHOR: "26411"; + SCRIPT_WRITER: "26412"; + ADVERTISING_COPYWRITER: "26413"; + TECHNICAL_WRITER: "26414"; + CONTINUITY_AND_SCRIPT_EDITOR: "26415"; + BOOK_EDITOR: "26416"; + OTHER_AUTHORS_AND_RELATED_WRITERS: "26419"; + JOURNALIST: "26421"; + EDITOR_NEWS_AND_PERIODICALS: "26422"; + SCULPTOR: "26511"; + PAINTER: "26512"; + CARTOONIST: "26513"; + OTHER_VISUAL_ARTISTS: "26519"; + INSTRUMENTALIST: "26521"; + COMPOSER_ORCHESTRATOR: "26522"; + CONDUCTOR_DIRECTOR_OF_ORCHESTRA_BAND_CHOIR: "26523"; + SINGER: "26524"; + OTHER_MUSICIANS_COMPOSERS_AND_SINGERS: "26529"; + DANCER: "26531"; + CHOREOGRAPHER: "26532"; + PRODUCER_STAGE_FILM_TELEVISION_COMPUTER_GAMES_VIDEO_AND_RADIO: "26541"; + DIRECTOR_STAGE_FILM_TELEVISION_AND_RADIO: "26542"; + ARTISTIC_DIRECTOR_STAGE_FILM_TELEVISION_AND_RADIO: "26543"; + PRODUCER_DIRECTOR_OF_COMMERCIALS: "26544"; + EDITOR_RADIO_TELEVISION_AND_VIDEO: "26545"; + OTHER_FILM_STAGE_AND_RELATED_DIRECTORS_AND_PRODUCERS: "26549"; + ACTOR: "26550"; + MINISTER_OF_RELIGION: "29011"; + OTHER_RELIGIOUS_PROFESSIONALS: "29019"; + OTHER_PROFESSIONALS_NEC: "29090"; - "ASSISTANT_CIVIL_AND_STRUCTURAL_ENGINEER": "31001"; - "ASSISTANT_ELECTRICAL_ENGINEER": "31002"; - "ASSISTANT_ELECTRONICS_ENGINEER": "31003"; - "ASSISTANT_MECHANICAL_ENGINEER": "31004"; - "ASSISTANT_CHEMICAL_ENGINEER": "31005"; - "ASSISTANT_MANUFACTURING_ENGINEER": "31006"; - "OTHER_ASSISTANT_ENGINEERS": "31009"; - "CHEMISTRY_TECHNICIAN": "31111"; - "PHYSICS_TECHNICIAN": "31112"; - "OTHER_CHEMICAL_AND_PHYSICAL_SCIENCE_TECHNICIANS": "31119"; - "CIVIL_ENGINEERING_TECHNICIAN": "31121"; - "STRUCTURAL_ENGINEERING_TECHNICIAN": "31122"; - "BUILDING_TECHNICIAN": "31123"; - "LAND_SURVEYING_TECHNICIAN": "31124"; - "RESIDENT_TECHNICAL_OFFICER": "31125"; - "OTHER_CIVIL_ENGINEERING_AND_RELATED_TECHNICIANS": "31129"; - "ELECTRICAL_ENGINEERING_TECHNICIAN_GENERAL": "31131"; - "ELECTRICAL_ENGINEERING_TECHNICIAN_HIGH_VOLTAGE": "31132"; - "OTHER_ELECTRICAL_ENGINEERING_TECHNICIANS": "31139"; - "ELECTRONICS_ENGINEERING_TECHNICIAN_GENERAL": "31141"; - "SEMI_CONDUCTOR_TECHNICIAN": "31142"; - "AUDIO_AND_VIDEO_EQUIPMENT_TECHNICIAN": "31143"; - "INSTRUMENTATION_TECHNICIAN": "31144"; - "OTHER_ELECTRONICS_ENGINEERING_TECHNICIANS": "31149"; - "MECHANICAL_ENGINEERING_TECHNICIAN_GENERAL": "31151"; - "AERONAUTICAL_ENGINEERING_TECHNICIAN": "31152"; - "AUTOMOTIVE_ENGINEERING_TECHNICIAN": "31153"; - "AIR_CONDITIONING_REFRIGERATION_ENGINEERING_TECHNICIAN": "31154"; - "MACHINING_TOOLING_TECHNICIAN": "31155"; - "TOOL_MOULD_DESIGNER": "31156"; - "MARINE_SURVEYOR_SHIP_AND_NAUTICAL": "31157"; - "AIRWORTHINESS_SURVEYOR": "31158"; - "OTHER_MECHANICAL_ENGINEERING_TECHNICIANS": "31159"; - "CHEMICAL_ENGINEERING_TECHNICIAN_GENERAL": "31161"; - "CHEMICAL_ENGINEERING_TECHNICIAN_PETROLEUM_AND_NATURAL_GAS": "31162"; - "CHEMICAL_ENGINEERING_TECHNICIAN_PETROCHEMICALS": "31163"; - "OTHER_CHEMICAL_ENGINEERING_TECHNICIANS": "31169"; - "MANUFACTURING_ENGINEERING_TECHNICIAN_GENERAL": "31171"; - "PRODUCTION_ENGINEERING_TECHNICIAN": "31172"; - "AUTOMATION_DESIGNER": "31173"; - "AUTOMATION_TECHNICIAN": "31174"; - "QUALITY_ASSURANCE_TECHNICIAN": "31175"; - "OTHER_MANUFACTURING_ENGINEERING_TECHNICIANS": "31179"; - "DRAUGHTSMAN_GENERAL": "31181"; - "MECHANICAL_DRAUGHTSMAN": "31182"; - "ELECTRICAL_ELECTRONICS_DRAUGHTSMAN": "31183"; - "CIVIL_STRUCTURAL_ENGINEERING_DRAUGHTSMAN": "31184"; - "ARCHITECTURAL_DRAUGHTSMAN": "31185"; - "MARINE_DRAUGHTSMAN": "31186"; - "OTHER_DRAUGHTSMEN_EG_CARTOGRAPHICAL_DRAUGHTSMAN": "31189"; - "MECHATRONICS_TECHNICIAN": "31191"; - "REFINING_SMELTING_TECHNICIAN": "31192"; - "PHYSICAL_METALLURGY_TECHNICIAN": "31193"; - "PETROLEUM_AND_NATURAL_GAS_EXTRACTION_TECHNICIAN": "31194"; - "ELECTRONIC_PRE_PRESS_TECHNICIAN": "31195"; - "PRECISION_OPTICS_TECHNICIAN": "31196"; - "QUANTITY_SURVEYING_TECHNICIAN": "31197"; - "OTHER_PHYSICAL_AND_ENGINEERING_SCIENCE_TECHNICIANS_NEC": "31199"; - "BIOLOGICAL_TECHNICIAN": "31411"; - "FOOD_SCIENCE_TECHNICIAN": "31412"; - "OTHER_LIFE_SCIENCE_TECHNICIANS": "31419"; - "HORTICULTURAL_TECHNICIAN": "31421"; - "PLANT_TISSUE_CULTURE_TECHNICIAN": "31422"; - "FARMING_TECHNICIAN_ANIMAL_PRODUCTION": "31423"; - "OTHER_AGRONOMY_HORTICULTURAL_AND_FARMING_RELATED_TECHNICIANS": "31429"; - "CHIEF_ENGINEER_OFFICER_SHIP": "31511"; - "MARINE_ENGINEER_OFFICER": "31512"; - "MARINE_SUPERINTENDENT_ENGINEER": "31513"; - "SHIP_CAPTAIN": "31521"; - "SHIPS_NAVIGATING_OFFICER": "31522"; - "SHIP_PILOT": "31523"; - "MARINE_SUPERINTENDENT_DECK": "31524"; - "OTHER_SHIPS_DECK_OFFICERS_AND_PILOTS": "31529"; - "COMMERCIAL_AIRLINE_PILOT": "31531"; - "AIRCRAFT_PILOT_EXCEPT_COMMERCIAL_AIRLINE_AND_AIR_FORCE": "31532"; - "FLIGHT_NAVIGATOR": "31533"; - "FLIGHT_ENGINEER": "31534"; - "FLYING_INSTRUCTOR_EXCEPT_AIR_FORCE": "31535"; - "OTHER_AIRCRAFT_PILOTS_AND_RELATED_ASSOCIATE_PROFESSIONALS": "31539"; - "AIR_TRAFFIC_CONTROLLER": "31540"; - "SEA_TRAFFIC_CONTROLLER": "31560"; - "AIR_TRANSPORT_SERVICE_SUPERVISOR": "31571"; - "MRT_SERVICE_SUPERVISOR": "31572"; - "ROAD_TRANSPORT_SUPERVISOR": "31573"; - "PORT_SHIPPING_OPERATIONS_SUPERVISOR": "31574"; - "OTHER_TRANSPORT_OPERATIONS_SUPERVISORS": "31579"; - "PORT_MASTER_DOCKMASTER": "31591"; - "PORT_CAPTAIN": "31592"; - "SHIP_CHARTERER": "31593"; - "FLIGHT_OPERATIONS_OFFICER": "31594"; - "AIR_CARGO_OFFICER": "31595"; - "LOAD_SHEET_OFFICER_AIRCRAFT": "31596"; - "MRT_OPERATIONS_OFFICER": "31597"; - "OTHER_TRANSPORT_CONTROLLERS_AND_RELATED_WORKERS_NEC": "31599"; - "PREMISES_AND_FACILITIES_MAINTENANCE_OFFICER": "31601"; - "LANDSCAPE_OPERATIONS_OFFICER": "31602"; - "PARKS_OFFICER": "31603"; - "FIRE_AND_SAFETY_INSPECTOR": "31711"; - "OTHER_BUILDING_AND_FIRE_INSPECTORS": "31719"; - "SAFETY_INSPECTOR_VEHICLES_PROCESSES_AND_PRODUCTS": "31720"; - "MEDICAL_DIAGNOSTIC_RADIOGRAPHER": "32111"; - "RADIATION_THERAPIST": "32112"; - "SONOGRAPHER": "32113"; - "MEDICAL_X_RAY_TECHNICIAN": "32114"; - "OTHER_MEDICAL_IMAGING_THERAPEUTIC_EQUIPMENT_TECHNICIANS_AND_RELATED_ASSOCIATE_PROFESSIONALS": "32119"; - "MEDICAL_AND_PATHOLOGY_LABORATORY_TECHNICIAN": "32120"; - "PHARMACEUTICAL_TECHNICIAN": "32130"; - "ORTHOPAEDIC_TECHNICIAN": "32141"; - "ORTHOPAEDIC_APPLIANCE_MAKER_AND_REPAIRER": "32142"; - "DENTAL_TECHNICIAN": "32143"; - "REGISTERED_NURSE": "32201"; - "ENROLLED_ASSISTANT_NURSE": "32202"; - "TRADITIONAL_AND_COMPLEMENTARY_MEDICINE_ASSOCIATE_PROFESSIONALS_EG_HOMEOPATH_AND_NATUROPATH": "32300"; - "VETERINARY_TECHNICIAN_ASSISTANT": "32400"; - "DENTAL_NURSE": "32511"; - "DENTAL_ORAL_HEALTH_THERAPIST": "32512"; - "DIETITIAN": "32521"; - "NUTRITIONIST": "32522"; - "AUDIOLOGIST": "32531"; - "SPEECH_THERAPIST": "32532"; - "OPTOMETRIST": "32541"; - "OPTICIAN": "32542"; - "PHYSIOTHERAPIST": "32551"; - "MASSAGE_THERAPIST": "32552"; - "OTHER_PHYSICAL_THERAPISTS_AND_RELATED_ASSOCIATE_PROFESSIONALS": "32559"; - "OCCUPATIONAL_THERAPIST": "32560"; - "ENVIRONMENTAL_INSPECTOR_ENVIRONMENTAL_PUBLIC_HEALTH": "32571"; - "OCCUPATIONAL_HEALTH_INSPECTOR": "32572"; - "OSTEOPATH": "32591"; - "CHIROPRACTOR": "32592"; - "PODIATRIST": "32593"; - "PARAMEDIC": "32594"; - "COMMUNITY_HEALTH_WORKER": "32595"; - "OTHER_HEALTH_ASSOCIATE_PROFESSIONALS_NEC": "32599"; - "SECURITIES_AND_FINANCE_DEALER_BROKER": "33111"; - "FOREIGN_EXCHANGE_DEALER_BROKER": "33112"; - "FINANCIAL_DERIVATIVES_DEALER_BROKER": "33113"; - "COMMODITIES_DERIVATIVES_BROKER": "33114"; - "OTHER_FINANCE_DEALERS_AND_BROKERS": "33119"; - "CREDIT_AND_LOANS_OFFICER": "33120"; - "ACCOUNTING_ASSOCIATE_PROFESSIONAL_EG_ASSISTANT_ACCOUNTANT_AUDIT_ACCOUNTING_EXECUTIVE": "33130"; - "STATISTICAL_OFFICER": "33141"; - "RESEARCH_OFFICER_STATISTICAL": "33142"; - "OTHER_STATISTICAL_MATHEMATICAL_AND_ACTUARIAL_ASSOCIATE_PROFESSIONALS": "33149"; - "APPRAISER_VALUER": "33151"; - "ASSESSOR": "33152"; - "INSURANCE_SALES_AGENT_BROKER_INCLUDING_INDEPENDENT_FINANCIAL_PLANNER": "33211"; - "INSURANCE_UNDERWRITER": "33212"; - "OTHER_INSURANCE_REPRESENTATIVES": "33219"; - "BUSINESS_DEVELOPMENT_EXECUTIVE": "33221"; - "MARKETING_AND_SALES_REPRESENTATIVE_TECHNICAL": "33222"; - "MARKETING_AND_SALES_REPRESENTATIVE_MEDICAL_AND_PHARMACEUTICAL_PRODUCTS": "33223"; - "MARKETING_AND_SALES_REPRESENTATIVE_ICT": "33224"; - "MARKETING_AND_SALES_REPRESENTATIVE_INSTITUTIONAL_SALES_OF_FINANCIAL_PRODUCTS": "33225"; - "AFTER_SALES_ADVISER_CLIENT_ACCOUNT_SERVICE_EXECUTIVE": "33226"; - "OTHER_COMMERCIAL_AND_MARKETING_SALES_REPRESENTATIVES": "33229"; - "BUYER": "33231"; - "PURCHASING_AGENT": "33232"; - "TRADE_BROKER_INCLUDING_OIL_AND_BUNKER_TRADER": "33241"; - "SHIP_BROKER": "33242"; - "SALES_AND_RELATED_ASSOCIATE_PROFESSIONAL_NEC": "33290"; - "CLEARING_AND_FORWARDING_AGENT": "33311"; - "SHIP_AGENT": "33312"; - "EXHIBITION_CONFERENCE_EVENT_PLANNER": "33320"; - "EMPLOYMENT_AGENT_LABOUR_CONTRACTOR": "33330"; - "REAL_ESTATE_AGENT": "33340"; - "AUCTIONEER": "33391"; - "ADVERTISING_SALESMAN": "33392"; - "OTHER_BUSINESS_SERVICES_AGENTS_NEC_EG_SPORTS_AGENT_ARTISTE_AGENT": "33399"; - "PUBLIC_RELATIONS_CORPORATE_COMMUNICATIONS_OFFICER": "33450"; - "PERSONNEL_HUMAN_RESOURCE_OFFICER": "33461"; - "INDUSTRIAL_RELATIONS_OFFICER": "33462"; - "TRAINING_OFFICER": "33463"; - "CREWING_EXECUTIVE_SHIP": "33464"; - "MANAGEMENT_EXECUTIVE": "33491"; - "RESEARCH_OFFICER_NON_STATISTICAL": "33492"; - "OPERATIONS_OFFICER_EXCEPT_TRANSPORT_OPERATIONS": "33493"; - "OTHER_ADMINISTRATIVE_AND_RELATED_ASSOCIATE_PROFESSIONALS_NEC": "33499"; - "CUSTOMS_IMMIGRATION_OFFICER": "33510"; - "POLICE_INSPECTOR": "33550"; - "GOVERNMENT_TAX_AND_EXCISE_OFFICIAL": "33591"; - "GOVERNMENT_SOCIAL_BENEFITS_OFFICIAL": "33592"; - "GOVERNMENT_LICENSING_OFFICIAL": "33593"; - "OTHER_GOVERNMENT_ASSOCIATE_PROFESSIONALS_NEC": "33599"; - "LEGAL_ASSOCIATE_PROFESSIONAL_EG_PARALEGAL": "34110"; - "YOUTH_WORKER": "34121"; - "OTHER_SOCIAL_WORK_ASSOCIATE_PROFESSIONALS": "34129"; - "PROFESSIONAL_SPORTSMAN": "34210"; - "SPORTS_COACH": "34221"; - "MARTIAL_ARTS_INSTRUCTOR": "34222"; - "PHYSICAL_FITNESS_INSTRUCTOR_INCLUDING_YOGA_INSTRUCTOR_AND_AEROBICS_INSTRUCTOR": "34223"; - "SPORTS_OFFICIAL": "34224"; - "OTHER_RELATED_INSTRUCTORS_AND_ASSOCIATE_PROFESSIONALS_EG_ADVENTURE_TRAINING_INSTRUCTOR_AND_SCUBA_DIVING_INSTRUCTOR": "34229"; - "PHOTOGRAPHER": "34310"; - "INTERIOR_DESIGNER": "34321"; - "LANDSCAPE_DESIGNER": "34322"; - "DISPLAY_ARTIST": "34323"; - "DECORATOR_AND_RELATED_WORKER_EG_WINDOW_DRESSER_AND_SET_DESIGNER": "34324"; - "LIBRARY_OFFICER": "34331"; - "GALLERY_MUSEUM_AND_RELATED_TECHNICIAN": "34332"; - "FASHION_GARMENT_DESIGNER": "34351"; - "PRODUCT_DESIGNER": "34352"; - "GRAPHIC_DESIGNER": "34361"; - "MULTIMEDIA_INCLUDING_COMPUTER_GAMES_DESIGNER": "34362"; - "MULTIMEDIA_ARTIST": "34363"; - "ANIMATOR": "34364"; - "OTHER_GRAPHIC_AND_MULTIMEDIA_DESIGNERS_AND_ARTISTS": "34369"; - "COMMERCIAL_ARTIST": "34391"; - "TATTOOIST": "34392"; - "OTHER_ARTISTIC_AND_CULTURAL_ASSOCIATE_PROFESSIONALS_NEC": "34399"; - "RADIO_PRESENTER": "34411"; - "TELEVISION_PRESENTER": "34412"; - "DUBBING_ARTISTE": "34413"; - "DISC_JOCKEY": "34414"; - "OTHER_RADIO_AND_TELEVISION_PRESENTERS_AND_RELATED_ASSOCIATE_PROFESSIONALS": "34419"; - "CLOWN": "34421"; - "MAGICIAN": "34422"; - "ACROBAT": "34423"; - "AERIALIST": "34424"; - "OTHER_CLOWNS_MAGICIANS_AND_RELATED_ASSOCIATE_PROFESSIONALS": "34429"; - "COMPUTER_SYSTEMS_OPERATOR": "35110"; - "COMPUTER_TECHNICIAN_INCLUDING_IT_USER_HELPDESK_TECHNICIAN": "35120"; - "WEBSITE_ADMINISTRATOR_WEBMASTER": "35140"; - "BROADCASTING_OPERATIONS_TECHNICIAN": "35211"; - "VIDEO_CAMERA_OPERATOR": "35212"; - "TELEVISION_MOTION_PICTURE_CAMERA_OPERATOR": "35213"; - "RADIO_AND_TELEVISION_STUDIO_EQUIPMENT_OPERATOR": "35214"; - "SOUND_RECORDING_EQUIPMENT_OPERATOR": "35215"; - "OTHER_BROADCASTING_TECHNICIANS_AND_AUDIO_VISUAL_OPERATORS": "35219"; - "TELECOMMUNICATIONS_TECHNICIAN": "35220"; - "TELECOMMUNICATIONS_SERVICE_SUPERVISOR": "35231"; - "RADIO_TELEPHONE_OPERATOR_LAND_BASED": "35232"; - "SHIPS_RADIO_OFFICER": "35233"; - "FLIGHT_RADIO_OPERATOR": "35234"; - "OTHER_TELECOMMUNICATIONS_EQUIPMENT_OPERATORS": "35239"; - "OPTICAL_AND_ELECTRONIC_EQUIPMENT_OPERATOR_NEC": "35290"; - "PRE_PRIMARY_EDUCATION_TEACHER": "36100"; - "LANGUAGE_INSTRUCTOR_EXTRACURRICULUM": "36201"; - "ART_AND_CRAFT_INSTRUCTOR_EXTRACURRICULUM": "36202"; - "INFORMATION_TECHNOLOGY_TRAINER_EXTRACURRICULUM": "36203"; - "MUSIC_INSTRUCTOR_EXTRACURRICULUM": "36204"; - "DANCE_INSTRUCTOR_EXTRACURRICULUM": "36205"; - "SPEECH_AND_DRAMA_INSTRUCTOR_EXTRACURRICULUM": "36206"; - "OTHER_EXTRACURRICULUM_INSTRUCTORS": "36209"; - "PRIVATE_TUTOR_ACADEMIC": "36910"; - "RELIEF_TEACHER": "36991"; - "OTHER_TEACHING_ASSOCIATE_PROFESSIONALS_NEC": "36999"; - "TRANSLATOR": "39101"; - "INTERPRETER": "39102"; - "NON_ORDAINED_RELIGIOUS_ASSOCIATE_PROFESSIONAL": "39910"; - "OTHER_ASSOCIATE_PROFESSIONALS_NEC": "39990"; + ASSISTANT_CIVIL_AND_STRUCTURAL_ENGINEER: "31001"; + ASSISTANT_ELECTRICAL_ENGINEER: "31002"; + ASSISTANT_ELECTRONICS_ENGINEER: "31003"; + ASSISTANT_MECHANICAL_ENGINEER: "31004"; + ASSISTANT_CHEMICAL_ENGINEER: "31005"; + ASSISTANT_MANUFACTURING_ENGINEER: "31006"; + OTHER_ASSISTANT_ENGINEERS: "31009"; + CHEMISTRY_TECHNICIAN: "31111"; + PHYSICS_TECHNICIAN: "31112"; + OTHER_CHEMICAL_AND_PHYSICAL_SCIENCE_TECHNICIANS: "31119"; + CIVIL_ENGINEERING_TECHNICIAN: "31121"; + STRUCTURAL_ENGINEERING_TECHNICIAN: "31122"; + BUILDING_TECHNICIAN: "31123"; + LAND_SURVEYING_TECHNICIAN: "31124"; + RESIDENT_TECHNICAL_OFFICER: "31125"; + OTHER_CIVIL_ENGINEERING_AND_RELATED_TECHNICIANS: "31129"; + ELECTRICAL_ENGINEERING_TECHNICIAN_GENERAL: "31131"; + ELECTRICAL_ENGINEERING_TECHNICIAN_HIGH_VOLTAGE: "31132"; + OTHER_ELECTRICAL_ENGINEERING_TECHNICIANS: "31139"; + ELECTRONICS_ENGINEERING_TECHNICIAN_GENERAL: "31141"; + SEMI_CONDUCTOR_TECHNICIAN: "31142"; + AUDIO_AND_VIDEO_EQUIPMENT_TECHNICIAN: "31143"; + INSTRUMENTATION_TECHNICIAN: "31144"; + OTHER_ELECTRONICS_ENGINEERING_TECHNICIANS: "31149"; + MECHANICAL_ENGINEERING_TECHNICIAN_GENERAL: "31151"; + AERONAUTICAL_ENGINEERING_TECHNICIAN: "31152"; + AUTOMOTIVE_ENGINEERING_TECHNICIAN: "31153"; + AIR_CONDITIONING_REFRIGERATION_ENGINEERING_TECHNICIAN: "31154"; + MACHINING_TOOLING_TECHNICIAN: "31155"; + TOOL_MOULD_DESIGNER: "31156"; + MARINE_SURVEYOR_SHIP_AND_NAUTICAL: "31157"; + AIRWORTHINESS_SURVEYOR: "31158"; + OTHER_MECHANICAL_ENGINEERING_TECHNICIANS: "31159"; + CHEMICAL_ENGINEERING_TECHNICIAN_GENERAL: "31161"; + CHEMICAL_ENGINEERING_TECHNICIAN_PETROLEUM_AND_NATURAL_GAS: "31162"; + CHEMICAL_ENGINEERING_TECHNICIAN_PETROCHEMICALS: "31163"; + OTHER_CHEMICAL_ENGINEERING_TECHNICIANS: "31169"; + MANUFACTURING_ENGINEERING_TECHNICIAN_GENERAL: "31171"; + PRODUCTION_ENGINEERING_TECHNICIAN: "31172"; + AUTOMATION_DESIGNER: "31173"; + AUTOMATION_TECHNICIAN: "31174"; + QUALITY_ASSURANCE_TECHNICIAN: "31175"; + OTHER_MANUFACTURING_ENGINEERING_TECHNICIANS: "31179"; + DRAUGHTSMAN_GENERAL: "31181"; + MECHANICAL_DRAUGHTSMAN: "31182"; + ELECTRICAL_ELECTRONICS_DRAUGHTSMAN: "31183"; + CIVIL_STRUCTURAL_ENGINEERING_DRAUGHTSMAN: "31184"; + ARCHITECTURAL_DRAUGHTSMAN: "31185"; + MARINE_DRAUGHTSMAN: "31186"; + OTHER_DRAUGHTSMEN_EG_CARTOGRAPHICAL_DRAUGHTSMAN: "31189"; + MECHATRONICS_TECHNICIAN: "31191"; + REFINING_SMELTING_TECHNICIAN: "31192"; + PHYSICAL_METALLURGY_TECHNICIAN: "31193"; + PETROLEUM_AND_NATURAL_GAS_EXTRACTION_TECHNICIAN: "31194"; + ELECTRONIC_PRE_PRESS_TECHNICIAN: "31195"; + PRECISION_OPTICS_TECHNICIAN: "31196"; + QUANTITY_SURVEYING_TECHNICIAN: "31197"; + OTHER_PHYSICAL_AND_ENGINEERING_SCIENCE_TECHNICIANS_NEC: "31199"; + BIOLOGICAL_TECHNICIAN: "31411"; + FOOD_SCIENCE_TECHNICIAN: "31412"; + OTHER_LIFE_SCIENCE_TECHNICIANS: "31419"; + HORTICULTURAL_TECHNICIAN: "31421"; + PLANT_TISSUE_CULTURE_TECHNICIAN: "31422"; + FARMING_TECHNICIAN_ANIMAL_PRODUCTION: "31423"; + OTHER_AGRONOMY_HORTICULTURAL_AND_FARMING_RELATED_TECHNICIANS: "31429"; + CHIEF_ENGINEER_OFFICER_SHIP: "31511"; + MARINE_ENGINEER_OFFICER: "31512"; + MARINE_SUPERINTENDENT_ENGINEER: "31513"; + SHIP_CAPTAIN: "31521"; + SHIPS_NAVIGATING_OFFICER: "31522"; + SHIP_PILOT: "31523"; + MARINE_SUPERINTENDENT_DECK: "31524"; + OTHER_SHIPS_DECK_OFFICERS_AND_PILOTS: "31529"; + COMMERCIAL_AIRLINE_PILOT: "31531"; + AIRCRAFT_PILOT_EXCEPT_COMMERCIAL_AIRLINE_AND_AIR_FORCE: "31532"; + FLIGHT_NAVIGATOR: "31533"; + FLIGHT_ENGINEER: "31534"; + FLYING_INSTRUCTOR_EXCEPT_AIR_FORCE: "31535"; + OTHER_AIRCRAFT_PILOTS_AND_RELATED_ASSOCIATE_PROFESSIONALS: "31539"; + AIR_TRAFFIC_CONTROLLER: "31540"; + SEA_TRAFFIC_CONTROLLER: "31560"; + AIR_TRANSPORT_SERVICE_SUPERVISOR: "31571"; + MRT_SERVICE_SUPERVISOR: "31572"; + ROAD_TRANSPORT_SUPERVISOR: "31573"; + PORT_SHIPPING_OPERATIONS_SUPERVISOR: "31574"; + OTHER_TRANSPORT_OPERATIONS_SUPERVISORS: "31579"; + PORT_MASTER_DOCKMASTER: "31591"; + PORT_CAPTAIN: "31592"; + SHIP_CHARTERER: "31593"; + FLIGHT_OPERATIONS_OFFICER: "31594"; + AIR_CARGO_OFFICER: "31595"; + LOAD_SHEET_OFFICER_AIRCRAFT: "31596"; + MRT_OPERATIONS_OFFICER: "31597"; + OTHER_TRANSPORT_CONTROLLERS_AND_RELATED_WORKERS_NEC: "31599"; + PREMISES_AND_FACILITIES_MAINTENANCE_OFFICER: "31601"; + LANDSCAPE_OPERATIONS_OFFICER: "31602"; + PARKS_OFFICER: "31603"; + FIRE_AND_SAFETY_INSPECTOR: "31711"; + OTHER_BUILDING_AND_FIRE_INSPECTORS: "31719"; + SAFETY_INSPECTOR_VEHICLES_PROCESSES_AND_PRODUCTS: "31720"; + MEDICAL_DIAGNOSTIC_RADIOGRAPHER: "32111"; + RADIATION_THERAPIST: "32112"; + SONOGRAPHER: "32113"; + MEDICAL_X_RAY_TECHNICIAN: "32114"; + OTHER_MEDICAL_IMAGING_THERAPEUTIC_EQUIPMENT_TECHNICIANS_AND_RELATED_ASSOCIATE_PROFESSIONALS: "32119"; + MEDICAL_AND_PATHOLOGY_LABORATORY_TECHNICIAN: "32120"; + PHARMACEUTICAL_TECHNICIAN: "32130"; + ORTHOPAEDIC_TECHNICIAN: "32141"; + ORTHOPAEDIC_APPLIANCE_MAKER_AND_REPAIRER: "32142"; + DENTAL_TECHNICIAN: "32143"; + REGISTERED_NURSE: "32201"; + ENROLLED_ASSISTANT_NURSE: "32202"; + TRADITIONAL_AND_COMPLEMENTARY_MEDICINE_ASSOCIATE_PROFESSIONALS_EG_HOMEOPATH_AND_NATUROPATH: "32300"; + VETERINARY_TECHNICIAN_ASSISTANT: "32400"; + DENTAL_NURSE: "32511"; + DENTAL_ORAL_HEALTH_THERAPIST: "32512"; + DIETITIAN: "32521"; + NUTRITIONIST: "32522"; + AUDIOLOGIST: "32531"; + SPEECH_THERAPIST: "32532"; + OPTOMETRIST: "32541"; + OPTICIAN: "32542"; + PHYSIOTHERAPIST: "32551"; + MASSAGE_THERAPIST: "32552"; + OTHER_PHYSICAL_THERAPISTS_AND_RELATED_ASSOCIATE_PROFESSIONALS: "32559"; + OCCUPATIONAL_THERAPIST: "32560"; + ENVIRONMENTAL_INSPECTOR_ENVIRONMENTAL_PUBLIC_HEALTH: "32571"; + OCCUPATIONAL_HEALTH_INSPECTOR: "32572"; + OSTEOPATH: "32591"; + CHIROPRACTOR: "32592"; + PODIATRIST: "32593"; + PARAMEDIC: "32594"; + COMMUNITY_HEALTH_WORKER: "32595"; + OTHER_HEALTH_ASSOCIATE_PROFESSIONALS_NEC: "32599"; + SECURITIES_AND_FINANCE_DEALER_BROKER: "33111"; + FOREIGN_EXCHANGE_DEALER_BROKER: "33112"; + FINANCIAL_DERIVATIVES_DEALER_BROKER: "33113"; + COMMODITIES_DERIVATIVES_BROKER: "33114"; + OTHER_FINANCE_DEALERS_AND_BROKERS: "33119"; + CREDIT_AND_LOANS_OFFICER: "33120"; + ACCOUNTING_ASSOCIATE_PROFESSIONAL_EG_ASSISTANT_ACCOUNTANT_AUDIT_ACCOUNTING_EXECUTIVE: "33130"; + STATISTICAL_OFFICER: "33141"; + RESEARCH_OFFICER_STATISTICAL: "33142"; + OTHER_STATISTICAL_MATHEMATICAL_AND_ACTUARIAL_ASSOCIATE_PROFESSIONALS: "33149"; + APPRAISER_VALUER: "33151"; + ASSESSOR: "33152"; + INSURANCE_SALES_AGENT_BROKER_INCLUDING_INDEPENDENT_FINANCIAL_PLANNER: "33211"; + INSURANCE_UNDERWRITER: "33212"; + OTHER_INSURANCE_REPRESENTATIVES: "33219"; + BUSINESS_DEVELOPMENT_EXECUTIVE: "33221"; + MARKETING_AND_SALES_REPRESENTATIVE_TECHNICAL: "33222"; + MARKETING_AND_SALES_REPRESENTATIVE_MEDICAL_AND_PHARMACEUTICAL_PRODUCTS: "33223"; + MARKETING_AND_SALES_REPRESENTATIVE_ICT: "33224"; + MARKETING_AND_SALES_REPRESENTATIVE_INSTITUTIONAL_SALES_OF_FINANCIAL_PRODUCTS: "33225"; + AFTER_SALES_ADVISER_CLIENT_ACCOUNT_SERVICE_EXECUTIVE: "33226"; + OTHER_COMMERCIAL_AND_MARKETING_SALES_REPRESENTATIVES: "33229"; + BUYER: "33231"; + PURCHASING_AGENT: "33232"; + TRADE_BROKER_INCLUDING_OIL_AND_BUNKER_TRADER: "33241"; + SHIP_BROKER: "33242"; + SALES_AND_RELATED_ASSOCIATE_PROFESSIONAL_NEC: "33290"; + CLEARING_AND_FORWARDING_AGENT: "33311"; + SHIP_AGENT: "33312"; + EXHIBITION_CONFERENCE_EVENT_PLANNER: "33320"; + EMPLOYMENT_AGENT_LABOUR_CONTRACTOR: "33330"; + REAL_ESTATE_AGENT: "33340"; + AUCTIONEER: "33391"; + ADVERTISING_SALESMAN: "33392"; + OTHER_BUSINESS_SERVICES_AGENTS_NEC_EG_SPORTS_AGENT_ARTISTE_AGENT: "33399"; + PUBLIC_RELATIONS_CORPORATE_COMMUNICATIONS_OFFICER: "33450"; + PERSONNEL_HUMAN_RESOURCE_OFFICER: "33461"; + INDUSTRIAL_RELATIONS_OFFICER: "33462"; + TRAINING_OFFICER: "33463"; + CREWING_EXECUTIVE_SHIP: "33464"; + MANAGEMENT_EXECUTIVE: "33491"; + RESEARCH_OFFICER_NON_STATISTICAL: "33492"; + OPERATIONS_OFFICER_EXCEPT_TRANSPORT_OPERATIONS: "33493"; + OTHER_ADMINISTRATIVE_AND_RELATED_ASSOCIATE_PROFESSIONALS_NEC: "33499"; + CUSTOMS_IMMIGRATION_OFFICER: "33510"; + POLICE_INSPECTOR: "33550"; + GOVERNMENT_TAX_AND_EXCISE_OFFICIAL: "33591"; + GOVERNMENT_SOCIAL_BENEFITS_OFFICIAL: "33592"; + GOVERNMENT_LICENSING_OFFICIAL: "33593"; + OTHER_GOVERNMENT_ASSOCIATE_PROFESSIONALS_NEC: "33599"; + LEGAL_ASSOCIATE_PROFESSIONAL_EG_PARALEGAL: "34110"; + YOUTH_WORKER: "34121"; + OTHER_SOCIAL_WORK_ASSOCIATE_PROFESSIONALS: "34129"; + PROFESSIONAL_SPORTSMAN: "34210"; + SPORTS_COACH: "34221"; + MARTIAL_ARTS_INSTRUCTOR: "34222"; + PHYSICAL_FITNESS_INSTRUCTOR_INCLUDING_YOGA_INSTRUCTOR_AND_AEROBICS_INSTRUCTOR: "34223"; + SPORTS_OFFICIAL: "34224"; + OTHER_RELATED_INSTRUCTORS_AND_ASSOCIATE_PROFESSIONALS_EG_ADVENTURE_TRAINING_INSTRUCTOR_AND_SCUBA_DIVING_INSTRUCTOR: "34229"; + PHOTOGRAPHER: "34310"; + INTERIOR_DESIGNER: "34321"; + LANDSCAPE_DESIGNER: "34322"; + DISPLAY_ARTIST: "34323"; + DECORATOR_AND_RELATED_WORKER_EG_WINDOW_DRESSER_AND_SET_DESIGNER: "34324"; + LIBRARY_OFFICER: "34331"; + GALLERY_MUSEUM_AND_RELATED_TECHNICIAN: "34332"; + FASHION_GARMENT_DESIGNER: "34351"; + PRODUCT_DESIGNER: "34352"; + GRAPHIC_DESIGNER: "34361"; + MULTIMEDIA_INCLUDING_COMPUTER_GAMES_DESIGNER: "34362"; + MULTIMEDIA_ARTIST: "34363"; + ANIMATOR: "34364"; + OTHER_GRAPHIC_AND_MULTIMEDIA_DESIGNERS_AND_ARTISTS: "34369"; + COMMERCIAL_ARTIST: "34391"; + TATTOOIST: "34392"; + OTHER_ARTISTIC_AND_CULTURAL_ASSOCIATE_PROFESSIONALS_NEC: "34399"; + RADIO_PRESENTER: "34411"; + TELEVISION_PRESENTER: "34412"; + DUBBING_ARTISTE: "34413"; + DISC_JOCKEY: "34414"; + OTHER_RADIO_AND_TELEVISION_PRESENTERS_AND_RELATED_ASSOCIATE_PROFESSIONALS: "34419"; + CLOWN: "34421"; + MAGICIAN: "34422"; + ACROBAT: "34423"; + AERIALIST: "34424"; + OTHER_CLOWNS_MAGICIANS_AND_RELATED_ASSOCIATE_PROFESSIONALS: "34429"; + COMPUTER_SYSTEMS_OPERATOR: "35110"; + COMPUTER_TECHNICIAN_INCLUDING_IT_USER_HELPDESK_TECHNICIAN: "35120"; + WEBSITE_ADMINISTRATOR_WEBMASTER: "35140"; + BROADCASTING_OPERATIONS_TECHNICIAN: "35211"; + VIDEO_CAMERA_OPERATOR: "35212"; + TELEVISION_MOTION_PICTURE_CAMERA_OPERATOR: "35213"; + RADIO_AND_TELEVISION_STUDIO_EQUIPMENT_OPERATOR: "35214"; + SOUND_RECORDING_EQUIPMENT_OPERATOR: "35215"; + OTHER_BROADCASTING_TECHNICIANS_AND_AUDIO_VISUAL_OPERATORS: "35219"; + TELECOMMUNICATIONS_TECHNICIAN: "35220"; + TELECOMMUNICATIONS_SERVICE_SUPERVISOR: "35231"; + RADIO_TELEPHONE_OPERATOR_LAND_BASED: "35232"; + SHIPS_RADIO_OFFICER: "35233"; + FLIGHT_RADIO_OPERATOR: "35234"; + OTHER_TELECOMMUNICATIONS_EQUIPMENT_OPERATORS: "35239"; + OPTICAL_AND_ELECTRONIC_EQUIPMENT_OPERATOR_NEC: "35290"; + PRE_PRIMARY_EDUCATION_TEACHER: "36100"; + LANGUAGE_INSTRUCTOR_EXTRACURRICULUM: "36201"; + ART_AND_CRAFT_INSTRUCTOR_EXTRACURRICULUM: "36202"; + INFORMATION_TECHNOLOGY_TRAINER_EXTRACURRICULUM: "36203"; + MUSIC_INSTRUCTOR_EXTRACURRICULUM: "36204"; + DANCE_INSTRUCTOR_EXTRACURRICULUM: "36205"; + SPEECH_AND_DRAMA_INSTRUCTOR_EXTRACURRICULUM: "36206"; + OTHER_EXTRACURRICULUM_INSTRUCTORS: "36209"; + PRIVATE_TUTOR_ACADEMIC: "36910"; + RELIEF_TEACHER: "36991"; + OTHER_TEACHING_ASSOCIATE_PROFESSIONALS_NEC: "36999"; + TRANSLATOR: "39101"; + INTERPRETER: "39102"; + NON_ORDAINED_RELIGIOUS_ASSOCIATE_PROFESSIONAL: "39910"; + OTHER_ASSOCIATE_PROFESSIONALS_NEC: "39990"; - "CLERICAL_SUPERVISOR": "40000"; - "OFFICE_CLERK_GENERAL": "41101"; - "FILING_AND_COPYING_CLERK": "41102"; - "PERSONNEL_HUMAN_RESOURCE_CLERK": "41103"; - "OTHER_ADMINISTRATIVE_CLERKS_EG_PUBLIC_RELATIONS_CLERK": "41109"; - "SECRETARY": "41201"; - "VERBATIM_REPORTER": "41202"; - "STENOGRAPHER": "41311"; - "TYPIST": "41312"; - "OTHER_WORD_PROCESSORS_AND_RELATED_OPERATORS": "41319"; - "DATA_ENTRY_CLERK": "41320"; - "BANK_TELLER": "42111"; - "POSTAL_SERVICE_COUNTER_CLERK": "42112"; - "MONEY_CHANGER": "42113"; - "OTHER_TELLERS_AND_COUNTER_CLERKS": "42119"; - "PAWNBROKER": "42131"; - "MONEYLENDER": "42132"; - "BILL_COLLECTOR": "42141"; - "OTHER_BILL_COLLECTORS_AND_RELATED_WORKERS": "42149"; - "TRAVEL_AGENCY_SERVICE_CLERK": "42210"; - "TELEPHONE_OPERATOR": "42230"; - "RECEPTIONIST_GENERAL": "42241"; - "HOTEL_RECEPTIONIST": "42242"; - "MEDICAL_DENTAL_RECEPTIONIST": "42243"; - "AIRPORT_RECEPTIONIST_CLERK": "42244"; - "CUSTOMER_SERVICE_CLERK": "42245"; - "CONTACT_CENTRE_INFORMATION_CLERK": "42246"; - "OTHER_RECEPTIONISTS_AND_INFORMATION_CLERKS": "42249"; - "CLIENT_INFORMATION_CLERK_NEC": "42290"; - "BOOKKEEPER": "43111"; - "LEDGER_AND_ACCOUNTS_CLERK": "43112"; - "AUDIT_CLERK": "43113"; - "PAYROLL_WAGES_CLERK": "43114"; - "BILLING_CLERK": "43115"; - "PURCHASING_CLERK": "43116"; - "OTHER_ACCOUNTING_CLERKS_EG_COST_CLERK": "43119"; - "BANK_OPERATIONS_CLERK": "43121"; - "INSURANCE_UNDERWRITING_CLERK": "43122"; - "SECURITIES_CLERK": "43123"; - "OTHER_FINANCE_AND_INSURANCE_CLERKS_EG_CREDIT_CLERK": "43129"; - "STATISTICAL_CLERK_GENERAL": "43141"; - "ENUMERATOR_MARKET_RESEARCH_INTERVIEWER": "43142"; - "OTHER_STATISTICAL_CLERKS": "43149"; - "DATA_PROCESSING_CONTROL_CLERK": "43151"; - "OTHER_COMPUTER_OPERATIONS_CLERKS": "43159"; - "STOCK_RECORDS_CLERK": "43211"; - "STOREKEEPER": "43212"; - "OTHER_STOCK_CLERKS": "43219"; - "MATERIAL_PLANNING_CLERK": "43221"; - "PRODUCTION_PLANNING_CLERK": "43222"; - "OTHER_PRODUCTION_CLERKS": "43229"; - "SHIPPING_CLERK": "43231"; - "OTHER_TRANSPORT_CLERKS_EG_LAND_AND_AIR_TRANSPORT": "43239"; - "LIBRARY_CLERK": "44110"; - "LEGAL_CLERK": "44170"; - "PROOFREADING_CLERK": "44191"; - "OTHER_CLERICAL_SUPPORT_WORKERS_NEC": "44199"; + CLERICAL_SUPERVISOR: "40000"; + OFFICE_CLERK_GENERAL: "41101"; + FILING_AND_COPYING_CLERK: "41102"; + PERSONNEL_HUMAN_RESOURCE_CLERK: "41103"; + OTHER_ADMINISTRATIVE_CLERKS_EG_PUBLIC_RELATIONS_CLERK: "41109"; + SECRETARY: "41201"; + VERBATIM_REPORTER: "41202"; + STENOGRAPHER: "41311"; + TYPIST: "41312"; + OTHER_WORD_PROCESSORS_AND_RELATED_OPERATORS: "41319"; + DATA_ENTRY_CLERK: "41320"; + BANK_TELLER: "42111"; + POSTAL_SERVICE_COUNTER_CLERK: "42112"; + MONEY_CHANGER: "42113"; + OTHER_TELLERS_AND_COUNTER_CLERKS: "42119"; + PAWNBROKER: "42131"; + MONEYLENDER: "42132"; + BILL_COLLECTOR: "42141"; + OTHER_BILL_COLLECTORS_AND_RELATED_WORKERS: "42149"; + TRAVEL_AGENCY_SERVICE_CLERK: "42210"; + TELEPHONE_OPERATOR: "42230"; + RECEPTIONIST_GENERAL: "42241"; + HOTEL_RECEPTIONIST: "42242"; + MEDICAL_DENTAL_RECEPTIONIST: "42243"; + AIRPORT_RECEPTIONIST_CLERK: "42244"; + CUSTOMER_SERVICE_CLERK: "42245"; + CONTACT_CENTRE_INFORMATION_CLERK: "42246"; + OTHER_RECEPTIONISTS_AND_INFORMATION_CLERKS: "42249"; + CLIENT_INFORMATION_CLERK_NEC: "42290"; + BOOKKEEPER: "43111"; + LEDGER_AND_ACCOUNTS_CLERK: "43112"; + AUDIT_CLERK: "43113"; + PAYROLL_WAGES_CLERK: "43114"; + BILLING_CLERK: "43115"; + PURCHASING_CLERK: "43116"; + OTHER_ACCOUNTING_CLERKS_EG_COST_CLERK: "43119"; + BANK_OPERATIONS_CLERK: "43121"; + INSURANCE_UNDERWRITING_CLERK: "43122"; + SECURITIES_CLERK: "43123"; + OTHER_FINANCE_AND_INSURANCE_CLERKS_EG_CREDIT_CLERK: "43129"; + STATISTICAL_CLERK_GENERAL: "43141"; + ENUMERATOR_MARKET_RESEARCH_INTERVIEWER: "43142"; + OTHER_STATISTICAL_CLERKS: "43149"; + DATA_PROCESSING_CONTROL_CLERK: "43151"; + OTHER_COMPUTER_OPERATIONS_CLERKS: "43159"; + STOCK_RECORDS_CLERK: "43211"; + STOREKEEPER: "43212"; + OTHER_STOCK_CLERKS: "43219"; + MATERIAL_PLANNING_CLERK: "43221"; + PRODUCTION_PLANNING_CLERK: "43222"; + OTHER_PRODUCTION_CLERKS: "43229"; + SHIPPING_CLERK: "43231"; + OTHER_TRANSPORT_CLERKS_EG_LAND_AND_AIR_TRANSPORT: "43239"; + LIBRARY_CLERK: "44110"; + LEGAL_CLERK: "44170"; + PROOFREADING_CLERK: "44191"; + OTHER_CLERICAL_SUPPORT_WORKERS_NEC: "44199"; - "CHIEF_STEWARD_SHIP": "51111"; - "CABIN_ATTENDANT_STEWARD": "51112"; - "RAIL_STATION_SERVICE_ASSISTANT": "51121"; - "TICKET_INSPECTOR": "51122"; - "OTHER_TRANSPORT_SERVICE_INSPECTORS_AND_RELATED_WORKERS_EG_BUS_CONDUCTOR": "51129"; - "TOUR_GUIDE": "51131"; - "NATURE_GUIDE_INCLUDING_ZOO_BIRDPARK_AND_AQUARIUM": "51132"; - "THEME_PARK_GUIDE": "51133"; - "OTHER_GUIDES_EG_MUSEUM_HISTORICAL_SITES": "51139"; - "CHEF": "51201"; - "COOK": "51202"; - "CAPTAIN_WAITER_WAITER_SUPERVISOR": "51311"; - "WAITER": "51312"; - "BARTENDER": "51320"; - "BAR_LOUNGE_HOSTESS": "51330"; - "WAITER_AND_BARTENDER_NEC_EG_FOOD_CHECKER_CATERING_SERVICES": "51390"; - "HAIR_STYLIST_HAIRDRESSER": "51411"; - "BARBER": "51412"; - "OTHER_HAIR_CARE_WORKERS_EG_HAIR_THERAPIST_CONSULTANT": "51419"; - "BEAUTICIAN": "51421"; - "MANICURIST": "51422"; - "MAKE_UP_ARTIST_STAGE_FILM_AND_STUDIO": "51423"; - "MASSEUR_NON_MEDICAL_INCLUDING_FOOT_REFLEXOLOGIST": "51491"; - "SLIMMING_CONSULTANT": "51492"; - "OTHER_WELLNESS_RELATED_WORKERS_NEC": "51499"; - "HOUSEKEEPER_HOTELS_AND_OTHER_ESTABLISHMENTS": "51501"; - "HOUSE_STEWARD": "51502"; - "HOUSEKEEPING_MATRON": "51503"; - "OTHER_HOUSEKEEPERS_AND_RELATED_WORKERS_EG_PERSONAL_BUTLER": "51509"; - "POSTAL_COURIER_SERVICE_SUPERVISOR": "51601"; - "POSTMAN": "51602"; - "PROCESS_SERVER": "51603"; - "DESPATCH_WORKER": "51604"; - "OTHER_MAIL_DISTRIBUTION_WORKERS_EG_MAIL_SORTER": "51609"; - "GAMING_SUPERVISOR": "51701"; - "BOOKMAKER_CROUPIER_CASINO_DEALER_AND_RELATED_GAMING_WORKER": "51702"; - "ASTROLOGER_FORTUNE_TELLER_AND_RELATED_WORKER": "51910"; - "UNDERTAKER": "51931"; - "EMBALMER": "51932"; - "PET_GROOMER": "51941"; - "KEEPER_TRAINER_IN_ZOOLOGICAL_BIRD_AND_AQUATIC_PARKS": "51942"; - "KEEPER_TRAINER_IN_CROCODILE_FARM": "51943"; - "HORSE_TRAINER": "51944"; - "DOG_TRAINER": "51945"; - "OTHER_ANIMAL_BIRD_KEEPERS_AND_ANIMAL_CARE_WORKERS": "51949"; - "DRIVING_INSTRUCTOR_TESTER": "51950"; - "SOCIAL_ESCORT": "51991"; - "OTHER_PERSONAL_SERVICE_WORKERS_NEC": "51999"; - "HAWKER_STALL_HOLDER_EXCLUDING_PREPARED_FOOD_OR_DRINKS": "52110"; - "HAWKER_STALL_HOLDER_PREPARED_FOOD_OR_DRINKS": "52120"; - "NEWSVENDOR": "52130"; - "OTHER_STALL_SALES_WORKERS": "52190"; - "SALES_SUPERVISOR": "52201"; - "SHOP_SALES_ASSISTANT": "52202"; - "CAGE_COUNT_SUPERVISOR": "52301"; - "CASHIER_GENERAL": "52302"; - "OFFICE_CASHIER": "52303"; - "OTHER_CASHIERS_TICKET_AND_RELATED_CLERKS": "52309"; - "FASHION_MODEL": "52411"; - "OTHER_MODELS_EG_ARTISTS_MODEL": "52419"; - "SALES_DEMONSTRATOR": "52421"; - "SALESPERSON_DOOR_TO_DOOR": "52422"; - "TELEMARKETER": "52440"; - "PETROL_STATION_ATTENDANT": "52491"; - "FOOD_SERVICE_COUNTER_ATTENDANT": "52492"; - "SALES_WORKER_NEC_EG_SHIP_CHANDLER": "52499"; - "BABYSITTER_HOUSEHOLD": "53111"; - "CONFINEMENT_NANNY": "53112"; - "CHILD__AFTER_SCHOOL_CARE_CENTRE_WORKER": "53113"; - "CHILD_YOUTH_RESIDENTIAL_CARE_ASSISTANT": "53114"; - "TEACHERS_AIDE": "53120"; - "HEALTHCARE_ASSISTANT": "53201"; - "OTHER_PERSONAL_CARE_WORKER_EG_OLD_FOLKS_HOME": "53209"; - "FIRE_FIGHTING_AND_RESCUE_OFFICER": "54110"; - "POLICE_OFFICER": "54121"; - "NARCOTICS_OFFICER": "54122"; - "AUXILIARY_POLICE_OFFICER": "54123"; - "PRISON_OFFICER": "54130"; - "PRIVATE_SECURITY_OFFICER": "54140"; - "LIFEGUARD": "54150"; - "PRIVATE_INVESTIGATOR": "54191"; - "INDUSTRIAL_INVESTIGATOR": "54192"; - "INSURANCE_INVESTIGATOR": "54193"; - "PARK_RANGER": "54194"; - "OTHER_PROTECTIVE_SERVICES_AND_RELATED_WORKERS_NEC": "54199"; - "CINEMA_PROJECTIONIST": "59001"; - "OTHER_SERVICE_WORKERS_NEC_EG_MICROPHONE_OPERATOR": "59009"; + CHIEF_STEWARD_SHIP: "51111"; + CABIN_ATTENDANT_STEWARD: "51112"; + RAIL_STATION_SERVICE_ASSISTANT: "51121"; + TICKET_INSPECTOR: "51122"; + OTHER_TRANSPORT_SERVICE_INSPECTORS_AND_RELATED_WORKERS_EG_BUS_CONDUCTOR: "51129"; + TOUR_GUIDE: "51131"; + NATURE_GUIDE_INCLUDING_ZOO_BIRDPARK_AND_AQUARIUM: "51132"; + THEME_PARK_GUIDE: "51133"; + OTHER_GUIDES_EG_MUSEUM_HISTORICAL_SITES: "51139"; + CHEF: "51201"; + COOK: "51202"; + CAPTAIN_WAITER_WAITER_SUPERVISOR: "51311"; + WAITER: "51312"; + BARTENDER: "51320"; + BAR_LOUNGE_HOSTESS: "51330"; + WAITER_AND_BARTENDER_NEC_EG_FOOD_CHECKER_CATERING_SERVICES: "51390"; + HAIR_STYLIST_HAIRDRESSER: "51411"; + BARBER: "51412"; + OTHER_HAIR_CARE_WORKERS_EG_HAIR_THERAPIST_CONSULTANT: "51419"; + BEAUTICIAN: "51421"; + MANICURIST: "51422"; + MAKE_UP_ARTIST_STAGE_FILM_AND_STUDIO: "51423"; + MASSEUR_NON_MEDICAL_INCLUDING_FOOT_REFLEXOLOGIST: "51491"; + SLIMMING_CONSULTANT: "51492"; + OTHER_WELLNESS_RELATED_WORKERS_NEC: "51499"; + HOUSEKEEPER_HOTELS_AND_OTHER_ESTABLISHMENTS: "51501"; + HOUSE_STEWARD: "51502"; + HOUSEKEEPING_MATRON: "51503"; + OTHER_HOUSEKEEPERS_AND_RELATED_WORKERS_EG_PERSONAL_BUTLER: "51509"; + POSTAL_COURIER_SERVICE_SUPERVISOR: "51601"; + POSTMAN: "51602"; + PROCESS_SERVER: "51603"; + DESPATCH_WORKER: "51604"; + OTHER_MAIL_DISTRIBUTION_WORKERS_EG_MAIL_SORTER: "51609"; + GAMING_SUPERVISOR: "51701"; + BOOKMAKER_CROUPIER_CASINO_DEALER_AND_RELATED_GAMING_WORKER: "51702"; + ASTROLOGER_FORTUNE_TELLER_AND_RELATED_WORKER: "51910"; + UNDERTAKER: "51931"; + EMBALMER: "51932"; + PET_GROOMER: "51941"; + KEEPER_TRAINER_IN_ZOOLOGICAL_BIRD_AND_AQUATIC_PARKS: "51942"; + KEEPER_TRAINER_IN_CROCODILE_FARM: "51943"; + HORSE_TRAINER: "51944"; + DOG_TRAINER: "51945"; + OTHER_ANIMAL_BIRD_KEEPERS_AND_ANIMAL_CARE_WORKERS: "51949"; + DRIVING_INSTRUCTOR_TESTER: "51950"; + SOCIAL_ESCORT: "51991"; + OTHER_PERSONAL_SERVICE_WORKERS_NEC: "51999"; + HAWKER_STALL_HOLDER_EXCLUDING_PREPARED_FOOD_OR_DRINKS: "52110"; + HAWKER_STALL_HOLDER_PREPARED_FOOD_OR_DRINKS: "52120"; + NEWSVENDOR: "52130"; + OTHER_STALL_SALES_WORKERS: "52190"; + SALES_SUPERVISOR: "52201"; + SHOP_SALES_ASSISTANT: "52202"; + CAGE_COUNT_SUPERVISOR: "52301"; + CASHIER_GENERAL: "52302"; + OFFICE_CASHIER: "52303"; + OTHER_CASHIERS_TICKET_AND_RELATED_CLERKS: "52309"; + FASHION_MODEL: "52411"; + OTHER_MODELS_EG_ARTISTS_MODEL: "52419"; + SALES_DEMONSTRATOR: "52421"; + SALESPERSON_DOOR_TO_DOOR: "52422"; + TELEMARKETER: "52440"; + PETROL_STATION_ATTENDANT: "52491"; + FOOD_SERVICE_COUNTER_ATTENDANT: "52492"; + SALES_WORKER_NEC_EG_SHIP_CHANDLER: "52499"; + BABYSITTER_HOUSEHOLD: "53111"; + CONFINEMENT_NANNY: "53112"; + CHILD__AFTER_SCHOOL_CARE_CENTRE_WORKER: "53113"; + CHILD_YOUTH_RESIDENTIAL_CARE_ASSISTANT: "53114"; + TEACHERS_AIDE: "53120"; + HEALTHCARE_ASSISTANT: "53201"; + OTHER_PERSONAL_CARE_WORKER_EG_OLD_FOLKS_HOME: "53209"; + FIRE_FIGHTING_AND_RESCUE_OFFICER: "54110"; + POLICE_OFFICER: "54121"; + NARCOTICS_OFFICER: "54122"; + AUXILIARY_POLICE_OFFICER: "54123"; + PRISON_OFFICER: "54130"; + PRIVATE_SECURITY_OFFICER: "54140"; + LIFEGUARD: "54150"; + PRIVATE_INVESTIGATOR: "54191"; + INDUSTRIAL_INVESTIGATOR: "54192"; + INSURANCE_INVESTIGATOR: "54193"; + PARK_RANGER: "54194"; + OTHER_PROTECTIVE_SERVICES_AND_RELATED_WORKERS_NEC: "54199"; + CINEMA_PROJECTIONIST: "59001"; + OTHER_SERVICE_WORKERS_NEC_EG_MICROPHONE_OPERATOR: "59009"; - "HYDROPONICS_FARM_WORKER": "61111"; - "MUSHROOM_FARM_WORKER": "61112"; - "OTHER_VEGETABLE_FARM_WORKERS": "61119"; - "FLOWER_ORCHID_FARM_WORKER": "61131"; - "NURSERY_WORKER": "61132"; - "OTHER_HORTICULTURAL_AND_NURSERY_FARM_WORKERS": "61139"; - "LIVESTOCK_DAIRY_FARM_WORKER": "61210"; - "POULTRY_FARM_WORKER_GENERAL": "61221"; - "POULTRY_HATCHERY_WORKER": "61222"; - "POULTRY_INSEMINATOR": "61223"; - "OTHER_POULTRY_FARM_WORKERS_EG_POULTRY_VACCINATOR": "61229"; - "AGRICULTURAL_WORKER_NEC": "61900"; - "FISH_PRAWN_FARM_WORKER": "62211"; - "AQUARIUM_FISH_FARM_WORKER": "62212"; - "CROCODILE_FARM_WORKER": "62213"; - "OTHER_AQUATIC_LIFE_CULTIVATION_WORKERS_EG_OYSTER_FARM_WORKER": "62219"; - "COASTAL_WATERS_DEEP_SEA_FISHERY_WORKER": "62220"; + HYDROPONICS_FARM_WORKER: "61111"; + MUSHROOM_FARM_WORKER: "61112"; + OTHER_VEGETABLE_FARM_WORKERS: "61119"; + FLOWER_ORCHID_FARM_WORKER: "61131"; + NURSERY_WORKER: "61132"; + OTHER_HORTICULTURAL_AND_NURSERY_FARM_WORKERS: "61139"; + LIVESTOCK_DAIRY_FARM_WORKER: "61210"; + POULTRY_FARM_WORKER_GENERAL: "61221"; + POULTRY_HATCHERY_WORKER: "61222"; + POULTRY_INSEMINATOR: "61223"; + OTHER_POULTRY_FARM_WORKERS_EG_POULTRY_VACCINATOR: "61229"; + AGRICULTURAL_WORKER_NEC: "61900"; + FISH_PRAWN_FARM_WORKER: "62211"; + AQUARIUM_FISH_FARM_WORKER: "62212"; + CROCODILE_FARM_WORKER: "62213"; + OTHER_AQUATIC_LIFE_CULTIVATION_WORKERS_EG_OYSTER_FARM_WORKER: "62219"; + COASTAL_WATERS_DEEP_SEA_FISHERY_WORKER: "62220"; - "SUPERVISOR_GENERAL_FOREMAN_BUILDING_AND_RELATED_TRADES": "71000"; - "BRICKLAYER_BLOCKLAYER": "71120"; - "STONE_CUTTER_CARVER": "71131"; - "STONEMASON": "71132"; - "REINFORCED_CONCRETER_GENERAL": "71141"; - "CONCRETE_FORM_WORKER": "71142"; - "CEMENT_FINISHER_SCREEDER": "71143"; - "CEMENTER_PETROLEUM_AND_GAS_WELLS": "71144"; - "OTHER_CONCRETE_PLACERS_CONCRETE_FINISHERS_AND_RELATED_WORKERS": "71149"; - "CARPENTER": "71151"; - "JOINER": "71152"; - "SCAFFOLDER": "71191"; - "DEMOLITION_WORKER": "71192"; - "CLADDING_CURTAIN_WALL_ERECTOR": "71193"; - "OTHER_BUILDING_FRAME_AND_RELATED_TRADES_WORKERS_NEC_EG_STEEPLEJACK": "71199"; - "ROOFER": "71210"; - "FLOOR_WALL_TILER": "71220"; - "PLASTERER": "71230"; - "BUILDING_INSULATOR": "71241"; - "BOILER_PIPE_INSULATOR": "71242"; - "REFRIGERATION_AIR_CONDITIONING_EQUIPMENT_INSULATOR": "71243"; - "REFRACTORY_WORKER": "71244"; - "OTHER_INSULATION_WORKERS": "71249"; - "GLAZIER": "71250"; - "PLUMBER": "71261"; - "PIPE_FITTER": "71262"; - "PIPE_DRAIN_LAYER": "71263"; - "AIR_CONDITIONING__REFRIGERATION_EQUIPMENT_MECHANICS": "71271"; - "AIR_CONDITIONING_REFRIGERATION_PLANT_INSTALLER": "71272"; - "BUILDING_FINISHER_AND_RELATED_TRADES_WORKER_NEC": "71290"; - "BUILDING_PAINTER": "71311"; - "WALL_CEILING_PAPERHANGER": "71312"; - "STRUCTURAL_STEEL_SHIP_PAINTER": "71321"; - "MOTOR_VEHICLE_SPRAY_PAINTER": "71322"; - "SIGN_PAINTER": "71323"; - "SPRAY_PAINTER_EXCEPT_SHIPS_MOTOR_VEHICLES_AND_SIGNS": "71324"; - "OTHER_PAINTERS_AND_RELATED_WORKERS": "71329"; - "BUILDING_MAINTENANCE_WORKER": "71331"; - "BUILDING_STRUCTURE_CLEANER_AND_RELATED_WORKER": "71332"; - "SUPERVISOR_GENERAL_FOREMAN_METAL_MACHINERY_AND_RELATED_TRADES": "72000"; - "METAL_MOULDER": "72111"; - "COREMAKER": "72112"; - "WELDER": "72121"; - "FLAME_CUTTER": "72122"; - "SHEET_METAL_WORKER_GENERAL": "72131"; - "BOILERMAKER": "72132"; - "PANEL_BEATER": "72133"; - "OTHER_SHEET_METAL_WORKERS": "72139"; - "STRUCTURAL_STEEL_WORKER_WORKSHOP_FABRICATOR": "72141"; - "REINFORCING_IRON_WORKER_STEEL_REINFORCEMENT_WORKER": "72142"; - "STRUCTURAL_STEEL_ERECTOR": "72143"; - "METAL_SHIPWRIGHT": "72144"; - "SHIP_PLATER": "72145"; - "MOULD_LOFTER": "72146"; - "OTHER_STRUCTURAL_METAL_PREPARERS_AND_ERECTORS": "72149"; - "HOISTING_EQUIPMENT_RIGGER_GENERAL": "72151"; - "ROPE_AND_CABLE_SPLICER_GENERAL": "72152"; - "HOISTING_EQUIPMENT_RIGGER_CONSTRUCTION": "72153"; - "SHIP_RIGGER": "72154"; - "AIRCRAFT_RIGGER": "72155"; - "OIL_AND_GAS_WELL_DRILLING_RIGGER": "72156"; - "OTHER_RIGGERS_AND_CABLE_SPLICERS": "72159"; - "BLACKSMITH_GENERAL": "72211"; - "FORGING_PRESS_OPERATOR": "72212"; - "OTHER_BLACKSMITHS_HAMMERSMITHS_AND_FORGING_PRESS_WORKERS": "72219"; - "TOOL_AND_DIE_MAKER": "72221"; - "JIG_AND_GAUGE_MAKER": "72222"; - "METAL_PATTERN_MAKER": "72223"; - "LOCKSMITH": "72224"; - "OTHER_TOOLMAKERS_AND_RELATED_WORKERS": "72229"; - "BUFFING_POLISHING_MACHINE_OPERATOR": "72241"; - "TOOL_GRINDER_MACHINE_TOOLS": "72242"; - "OTHER_METAL_POLISHERS_GRINDERS_AND_TOOL_SHARPENERS": "72249"; - "MOTOR_VEHICLE_MECHANIC": "72311"; - "MOTOR_VEHICLE_BODY_BUILDER": "72312"; - "AIRCRAFT_ENGINE_MECHANIC": "72321"; - "AIRCRAFT_ENGINE_FITTER": "72322"; - "MACHINERY_MECHANIC_GENERAL": "72331"; - "MACHINERY_FITTER_GENERAL": "72332"; - "INDUSTRIAL_OFFICE_MACHINERY_MECHANIC": "72333"; - "MARINE_ENGINE_FITTER": "72334"; - "MACHINERY_ERECTOR_INSTALLER": "72335"; - "OTHER_MACHINERY_MECHANICS_AND_REPAIRERS_EG_AGRICULTURAL_MACHINERY_MECHANIC_BICYCLE_REPAIRER": "72339"; - "SUPERVISOR_GENERAL_FOREMAN_PRECISION_HANDICRAFT_PRINTING_AND_RELATED_TRADES": "73000"; - "WATCH_AND_CLOCK_ASSEMBLER": "73111"; - "WATCH_AND_CLOCK_REPAIRER": "73112"; - "OPTICAL_INSTRUMENT_MAKER_REPAIRER": "73113"; - "OTHER_PRECISION_INSTRUMENT_MAKERS_AND_REPAIRERS": "73119"; - "MUSICAL_INSTRUMENT_MAKER_REPAIRER_TUNER": "73120"; - "JEWELLERY_WORKER_GENERAL": "73131"; - "GEM_SETTER_CUTTER_AND_POLISHER": "73132"; - "GOLDSMITH_SILVERSMITH": "73133"; - "JEWELLERY_ENGRAVER": "73134"; - "OTHER_JEWELLERY_AND_PRECIOUS_METAL_WORKERS": "73139"; - "POTTERY_WORKER": "73141"; - "BRICK_AND_TILE_MOULDER": "73142"; - "OTHER_POTTERS_AND_RELATED_WORKERS": "73149"; - "GLASS_BLOWER": "73151"; - "GLASS_LENS_MOULDER": "73152"; - "OPTICAL_GLASS_CUTTER": "73153"; - "LENS_GRINDING_MACHINE_OPERATOR": "73154"; - "LENS_POLISHING_MACHINE_OPERATOR": "73155"; - "OTHER_GLASS_MAKERS_CUTTERS_GRINDERS_AND_FINISHERS": "73159"; - "GLASS_ENGRAVER_ETCHER": "73161"; - "GLASS_AND_CERAMIC_PAINTER_DECORATOR": "73162"; - "OTHER_ENGRAVERS_AND_RELATED_DECORATIVE_PAINTERS": "73169"; - "COMPOSITOR_TYPESETTER": "73211"; - "STEREOTYPER": "73212"; - "ELECTROTYPER": "73213"; - "PHOTO_ENGRAVER": "73214"; - "PHOTOGRAVURE_CAMERAMAN": "73215"; - "PHOTOGRAVURE_RETOUCHER": "73216"; - "PHOTOGRAVURE_ETCHER": "73217"; - "OTHER_PRE_PRESS_TRADES_WORKERS": "73219"; - "SILK_SCREEN_BLOCK_TEXTILE_PRINTER": "73221"; - "OTHER_PRINTERS": "73229"; - "SUPERVISOR_GENERAL_FOREMAN_ELECTRICAL_AND_ELECTRONIC_TRADES": "74000"; - "ELECTRICIAN": "74110"; - "ELECTRICAL_FITTER_GENERAL": "74121"; - "ELECTRICAL_LIFT_ESCALATOR_AND_RELATED_EQUIPMENT_FITTER": "74122"; - "ELECTRICAL_HOUSEHOLD_APPLIANCE_REPAIRER": "74123"; - "OTHER_ELECTRICAL_MECHANICS_AND_FITTERS": "74129"; - "ELECTRICAL_LINE_INSTALLER": "74131"; - "ELECTRIC_CABLE_JOINTER": "74132"; - "OTHER_ELECTRICAL_LINE_INSTALLERS_AND_REPAIRERS": "74139"; - "ELECTRONICS_FITTER_GENERAL": "74211"; - "CONSUMER_AUDIO_AND_VIDEO_EQUIPMENT_MECHANIC": "74212"; - "OTHER_ELECTRONICS_FITTERS": "74219"; - "RADIO_TELEVISION_AND_RADAR_BROADCASTING_TRANSMITTING_EQUIPMENT_FITTER": "74221"; - "COMPUTER_AND_RELATED_ELECTRONIC_EQUIPMENT_MECHANIC": "74222"; - "TELECOMMUNICATIONS_LINEMAN": "74223"; - "TELECOMMUNICATIONS_INSTALLER_SERVICER": "74224"; - "SUPERVISOR_GENERAL_FOREMAN_FOOD_PROCESSING_WOODWORKING_GARMENT_LEATHER_AND_RELATED_TRADES": "75000"; - "SLAUGHTERER": "75111"; - "OTHER_MEAT_AND_FISH_PREPARERS": "75119"; - "BAKER_GENERAL": "75121"; - "BREAD_BAKER": "75122"; - "PASTRY_AND_CONFECTIONERY_MAKER": "75123"; - "COFFEE_AND_TEA_TASTER": "75151"; - "OTHER_FOOD_AND_BEVERAGE_TASTERS_AND_GRADERS": "75159"; - "FOOD_PROCESSING_AND_RELATED_TRADES_WORKER_NEC_EG_FRUIT_PICKLER": "75190"; - "KILN_DRIER": "75211"; - "WOOD_TREATING_WORKER": "75212"; - "OTHER_WOOD_TREATERS": "75219"; - "CABINET_AND_FURNITURE_MAKER": "75221"; - "WOOD_FURNITURE_FINISHER": "75222"; - "PICTURE_FRAME_MAKER": "75223"; - "OTHER_CABINET_MAKERS_AND_WOOD_RELATED_TRADES_WORKERS": "75229"; - "RATTAN_FURNITURE_MAKER": "75291"; - "OTHER_FURNITURE_MAKERS_AND_RELATED_TRADES_WORKERS_NEC": "75299"; - "TAILOR_DRESSMAKER": "75310"; - "GARMENT_CUTTER": "75321"; - "GARMENT_PATTERN_MAKER": "75322"; - "GARMENT_MARKER": "75323"; - "OTHER_GARMENT_AND_RELATED_PATTERN_MAKERS_AND_CUTTERS": "75329"; - "FURNITURE_UPHOLSTERER": "75341"; - "VEHICLE_UPHOLSTERER": "75342"; - "MATTRESS_MAKER": "75343"; - "OTHER_UPHOLSTERERS_AND_RELATED_WORKERS": "75349"; - "SHOEMAKER": "75361"; - "ORTHOPAEDIC_FOOTWEAR_MAKER": "75362"; - "COBBLER": "75363"; - "LEATHER_GOODS_MAKER_ASSEMBLER": "75364"; - "OTHER_SHOEMAKERS_AND_RELATED_WORKERS": "75369"; - "GARMENT_AND_RELATED_TRADES_WORKER_NEC_EG_FELLMONGER_TENT_SEWER_UMBRELLA_MAKER": "75390"; - "FUMIGATORS_PEST_AND_WEED_CONTROLLERS": "75401"; - "UNDERWATER_DIVER": "75402"; - "OTHER_CRAFT_AND_RELATED_WORKERS_NEC": "75409"; + SUPERVISOR_GENERAL_FOREMAN_BUILDING_AND_RELATED_TRADES: "71000"; + BRICKLAYER_BLOCKLAYER: "71120"; + STONE_CUTTER_CARVER: "71131"; + STONEMASON: "71132"; + REINFORCED_CONCRETER_GENERAL: "71141"; + CONCRETE_FORM_WORKER: "71142"; + CEMENT_FINISHER_SCREEDER: "71143"; + CEMENTER_PETROLEUM_AND_GAS_WELLS: "71144"; + OTHER_CONCRETE_PLACERS_CONCRETE_FINISHERS_AND_RELATED_WORKERS: "71149"; + CARPENTER: "71151"; + JOINER: "71152"; + SCAFFOLDER: "71191"; + DEMOLITION_WORKER: "71192"; + CLADDING_CURTAIN_WALL_ERECTOR: "71193"; + OTHER_BUILDING_FRAME_AND_RELATED_TRADES_WORKERS_NEC_EG_STEEPLEJACK: "71199"; + ROOFER: "71210"; + FLOOR_WALL_TILER: "71220"; + PLASTERER: "71230"; + BUILDING_INSULATOR: "71241"; + BOILER_PIPE_INSULATOR: "71242"; + REFRIGERATION_AIR_CONDITIONING_EQUIPMENT_INSULATOR: "71243"; + REFRACTORY_WORKER: "71244"; + OTHER_INSULATION_WORKERS: "71249"; + GLAZIER: "71250"; + PLUMBER: "71261"; + PIPE_FITTER: "71262"; + PIPE_DRAIN_LAYER: "71263"; + AIR_CONDITIONING__REFRIGERATION_EQUIPMENT_MECHANICS: "71271"; + AIR_CONDITIONING_REFRIGERATION_PLANT_INSTALLER: "71272"; + BUILDING_FINISHER_AND_RELATED_TRADES_WORKER_NEC: "71290"; + BUILDING_PAINTER: "71311"; + WALL_CEILING_PAPERHANGER: "71312"; + STRUCTURAL_STEEL_SHIP_PAINTER: "71321"; + MOTOR_VEHICLE_SPRAY_PAINTER: "71322"; + SIGN_PAINTER: "71323"; + SPRAY_PAINTER_EXCEPT_SHIPS_MOTOR_VEHICLES_AND_SIGNS: "71324"; + OTHER_PAINTERS_AND_RELATED_WORKERS: "71329"; + BUILDING_MAINTENANCE_WORKER: "71331"; + BUILDING_STRUCTURE_CLEANER_AND_RELATED_WORKER: "71332"; + SUPERVISOR_GENERAL_FOREMAN_METAL_MACHINERY_AND_RELATED_TRADES: "72000"; + METAL_MOULDER: "72111"; + COREMAKER: "72112"; + WELDER: "72121"; + FLAME_CUTTER: "72122"; + SHEET_METAL_WORKER_GENERAL: "72131"; + BOILERMAKER: "72132"; + PANEL_BEATER: "72133"; + OTHER_SHEET_METAL_WORKERS: "72139"; + STRUCTURAL_STEEL_WORKER_WORKSHOP_FABRICATOR: "72141"; + REINFORCING_IRON_WORKER_STEEL_REINFORCEMENT_WORKER: "72142"; + STRUCTURAL_STEEL_ERECTOR: "72143"; + METAL_SHIPWRIGHT: "72144"; + SHIP_PLATER: "72145"; + MOULD_LOFTER: "72146"; + OTHER_STRUCTURAL_METAL_PREPARERS_AND_ERECTORS: "72149"; + HOISTING_EQUIPMENT_RIGGER_GENERAL: "72151"; + ROPE_AND_CABLE_SPLICER_GENERAL: "72152"; + HOISTING_EQUIPMENT_RIGGER_CONSTRUCTION: "72153"; + SHIP_RIGGER: "72154"; + AIRCRAFT_RIGGER: "72155"; + OIL_AND_GAS_WELL_DRILLING_RIGGER: "72156"; + OTHER_RIGGERS_AND_CABLE_SPLICERS: "72159"; + BLACKSMITH_GENERAL: "72211"; + FORGING_PRESS_OPERATOR: "72212"; + OTHER_BLACKSMITHS_HAMMERSMITHS_AND_FORGING_PRESS_WORKERS: "72219"; + TOOL_AND_DIE_MAKER: "72221"; + JIG_AND_GAUGE_MAKER: "72222"; + METAL_PATTERN_MAKER: "72223"; + LOCKSMITH: "72224"; + OTHER_TOOLMAKERS_AND_RELATED_WORKERS: "72229"; + BUFFING_POLISHING_MACHINE_OPERATOR: "72241"; + TOOL_GRINDER_MACHINE_TOOLS: "72242"; + OTHER_METAL_POLISHERS_GRINDERS_AND_TOOL_SHARPENERS: "72249"; + MOTOR_VEHICLE_MECHANIC: "72311"; + MOTOR_VEHICLE_BODY_BUILDER: "72312"; + AIRCRAFT_ENGINE_MECHANIC: "72321"; + AIRCRAFT_ENGINE_FITTER: "72322"; + MACHINERY_MECHANIC_GENERAL: "72331"; + MACHINERY_FITTER_GENERAL: "72332"; + INDUSTRIAL_OFFICE_MACHINERY_MECHANIC: "72333"; + MARINE_ENGINE_FITTER: "72334"; + MACHINERY_ERECTOR_INSTALLER: "72335"; + OTHER_MACHINERY_MECHANICS_AND_REPAIRERS_EG_AGRICULTURAL_MACHINERY_MECHANIC_BICYCLE_REPAIRER: "72339"; + SUPERVISOR_GENERAL_FOREMAN_PRECISION_HANDICRAFT_PRINTING_AND_RELATED_TRADES: "73000"; + WATCH_AND_CLOCK_ASSEMBLER: "73111"; + WATCH_AND_CLOCK_REPAIRER: "73112"; + OPTICAL_INSTRUMENT_MAKER_REPAIRER: "73113"; + OTHER_PRECISION_INSTRUMENT_MAKERS_AND_REPAIRERS: "73119"; + MUSICAL_INSTRUMENT_MAKER_REPAIRER_TUNER: "73120"; + JEWELLERY_WORKER_GENERAL: "73131"; + GEM_SETTER_CUTTER_AND_POLISHER: "73132"; + GOLDSMITH_SILVERSMITH: "73133"; + JEWELLERY_ENGRAVER: "73134"; + OTHER_JEWELLERY_AND_PRECIOUS_METAL_WORKERS: "73139"; + POTTERY_WORKER: "73141"; + BRICK_AND_TILE_MOULDER: "73142"; + OTHER_POTTERS_AND_RELATED_WORKERS: "73149"; + GLASS_BLOWER: "73151"; + GLASS_LENS_MOULDER: "73152"; + OPTICAL_GLASS_CUTTER: "73153"; + LENS_GRINDING_MACHINE_OPERATOR: "73154"; + LENS_POLISHING_MACHINE_OPERATOR: "73155"; + OTHER_GLASS_MAKERS_CUTTERS_GRINDERS_AND_FINISHERS: "73159"; + GLASS_ENGRAVER_ETCHER: "73161"; + GLASS_AND_CERAMIC_PAINTER_DECORATOR: "73162"; + OTHER_ENGRAVERS_AND_RELATED_DECORATIVE_PAINTERS: "73169"; + COMPOSITOR_TYPESETTER: "73211"; + STEREOTYPER: "73212"; + ELECTROTYPER: "73213"; + PHOTO_ENGRAVER: "73214"; + PHOTOGRAVURE_CAMERAMAN: "73215"; + PHOTOGRAVURE_RETOUCHER: "73216"; + PHOTOGRAVURE_ETCHER: "73217"; + OTHER_PRE_PRESS_TRADES_WORKERS: "73219"; + SILK_SCREEN_BLOCK_TEXTILE_PRINTER: "73221"; + OTHER_PRINTERS: "73229"; + SUPERVISOR_GENERAL_FOREMAN_ELECTRICAL_AND_ELECTRONIC_TRADES: "74000"; + ELECTRICIAN: "74110"; + ELECTRICAL_FITTER_GENERAL: "74121"; + ELECTRICAL_LIFT_ESCALATOR_AND_RELATED_EQUIPMENT_FITTER: "74122"; + ELECTRICAL_HOUSEHOLD_APPLIANCE_REPAIRER: "74123"; + OTHER_ELECTRICAL_MECHANICS_AND_FITTERS: "74129"; + ELECTRICAL_LINE_INSTALLER: "74131"; + ELECTRIC_CABLE_JOINTER: "74132"; + OTHER_ELECTRICAL_LINE_INSTALLERS_AND_REPAIRERS: "74139"; + ELECTRONICS_FITTER_GENERAL: "74211"; + CONSUMER_AUDIO_AND_VIDEO_EQUIPMENT_MECHANIC: "74212"; + OTHER_ELECTRONICS_FITTERS: "74219"; + RADIO_TELEVISION_AND_RADAR_BROADCASTING_TRANSMITTING_EQUIPMENT_FITTER: "74221"; + COMPUTER_AND_RELATED_ELECTRONIC_EQUIPMENT_MECHANIC: "74222"; + TELECOMMUNICATIONS_LINEMAN: "74223"; + TELECOMMUNICATIONS_INSTALLER_SERVICER: "74224"; + SUPERVISOR_GENERAL_FOREMAN_FOOD_PROCESSING_WOODWORKING_GARMENT_LEATHER_AND_RELATED_TRADES: "75000"; + SLAUGHTERER: "75111"; + OTHER_MEAT_AND_FISH_PREPARERS: "75119"; + BAKER_GENERAL: "75121"; + BREAD_BAKER: "75122"; + PASTRY_AND_CONFECTIONERY_MAKER: "75123"; + COFFEE_AND_TEA_TASTER: "75151"; + OTHER_FOOD_AND_BEVERAGE_TASTERS_AND_GRADERS: "75159"; + FOOD_PROCESSING_AND_RELATED_TRADES_WORKER_NEC_EG_FRUIT_PICKLER: "75190"; + KILN_DRIER: "75211"; + WOOD_TREATING_WORKER: "75212"; + OTHER_WOOD_TREATERS: "75219"; + CABINET_AND_FURNITURE_MAKER: "75221"; + WOOD_FURNITURE_FINISHER: "75222"; + PICTURE_FRAME_MAKER: "75223"; + OTHER_CABINET_MAKERS_AND_WOOD_RELATED_TRADES_WORKERS: "75229"; + RATTAN_FURNITURE_MAKER: "75291"; + OTHER_FURNITURE_MAKERS_AND_RELATED_TRADES_WORKERS_NEC: "75299"; + TAILOR_DRESSMAKER: "75310"; + GARMENT_CUTTER: "75321"; + GARMENT_PATTERN_MAKER: "75322"; + GARMENT_MARKER: "75323"; + OTHER_GARMENT_AND_RELATED_PATTERN_MAKERS_AND_CUTTERS: "75329"; + FURNITURE_UPHOLSTERER: "75341"; + VEHICLE_UPHOLSTERER: "75342"; + MATTRESS_MAKER: "75343"; + OTHER_UPHOLSTERERS_AND_RELATED_WORKERS: "75349"; + SHOEMAKER: "75361"; + ORTHOPAEDIC_FOOTWEAR_MAKER: "75362"; + COBBLER: "75363"; + LEATHER_GOODS_MAKER_ASSEMBLER: "75364"; + OTHER_SHOEMAKERS_AND_RELATED_WORKERS: "75369"; + GARMENT_AND_RELATED_TRADES_WORKER_NEC_EG_FELLMONGER_TENT_SEWER_UMBRELLA_MAKER: "75390"; + FUMIGATORS_PEST_AND_WEED_CONTROLLERS: "75401"; + UNDERWATER_DIVER: "75402"; + OTHER_CRAFT_AND_RELATED_WORKERS_NEC: "75409"; - "STATIONARY_PLANT_AND_MACHINE_SUPERVISOR_GENERAL_FOREMAN": "81000"; - "WELL_DRILLER_PETROLEUM_AND_GAS_WELLS": "81131"; - "WELL_DRILLER_BORER_EXCEPT_OIL_AND_GAS_WELLS": "81132"; - "DEEP_BORING_MACHINE_OPERATOR": "81133"; - "OTHER_WELL_DRILLERS_AND_BORERS_AND_OTHER_MINING_RELATED_WORKERS": "81139"; - "PRECAST_CONCRETE_PRODUCT_MAKING_MACHINE_OPERATOR": "81141"; - "ASBESTOS_CEMENT_PRODUCT_MAKING_MACHINE_OPERATOR": "81142"; - "TERRAZZO_TILE_MAKING_MACHINE_OPERATOR": "81143"; - "CONCRETE_MIXING_PLANT_OPERATOR_INCLUDING_CONCRETE_MIXER_OPERATOR": "81144"; - "CONCRETE_PUMP_OPERATOR": "81145"; - "OTHER_MINERAL_PRODUCTS_AND_PROCESSING_MACHINE_OPERATORS": "81149"; - "ORE_AND_METAL_FURNACE_OPERATOR_INCLUDING_FURNACEMAN": "81211"; - "CENTRIFUGAL_CASTING_MACHINE_OPERATOR": "81212"; - "DIE_CASTING_MACHINE_OPERATOR": "81213"; - "CONTINUOUS_ROD_CASTING_MACHINE_OPERATOR_NON_FERROUS_METAL": "81214"; - "METAL_ROLLING_MILL_WORKER": "81215"; - "OTHER_METAL_MELTERS_CASTERS_AND_ROLLING_MILL_OPERATORS": "81219"; - "METAL_HEAT_TREATING_PLANT_OPERATOR": "81220"; - "WIRE_DRAWER": "81231"; - "SEAMLESS_PIPE_AND_TUBE_DRAWER": "81232"; - "EXTRUDER_OPERATOR_METAL": "81233"; - "OTHER_METAL_DRAWERS_AND_EXTRUDERS": "81239"; - "ELECTRO_PLATER": "81241"; - "HOT_DIP_PLATER": "81242"; - "WIRE_COATING_MACHINE_OPERATOR": "81243"; - "GALVANISER": "81244"; - "METAL_SPRAYER": "81245"; - "ANODISER": "81246"; - "SANDBLASTER_SHOTBLASTER_METAL": "81247"; - "METAL_CLEANER": "81248"; - "OTHER_METAL_FINISHING_PLATING_AND_COATING_MACHINE_OPERATORS": "81249"; - "METALWORKING_MACHINE_SETTER_OPERATOR_GENERAL": "81251"; - "LATHE_SETTER_OPERATOR": "81252"; - "MILLING_MACHINE_SETTER_OPERATOR": "81253"; - "PLANING_MACHINE_SETTER_OPERATOR": "81254"; - "BORING_DRILLING_MACHINE_SETTER_OPERATOR": "81255"; - "SHAPING_AND_HONING_MACHINE_SETTER_OPERATOR": "81256"; - "PRECISION_GRINDING_MACHINE_SETTER_OPERATOR": "81257"; - "NUMERICAL_CONTROL_MACHINE_SETTER_OPERATOR": "81258"; - "OTHER_MACHINE_TOOL_SETTER_OPERATORS": "81259"; - "CRUSHING_GRINDING_CHEMICAL_MIXING_EQUIPMENT_OPERATOR": "81311"; - "CHEMICAL_HEAT_TREATING_PLANT_OPERATOR": "81312"; - "CHEMICAL_FILTERING_AND_SEPARATING_EQUIPMENT_OPERATOR": "81313"; - "CHEMICAL_STILL_REACTOR_OPERATOR": "81314"; - "SYNTHETIC_FIBRE_MAKING_MACHINE_OPERATOR": "81315"; - "OTHER_CHEMICAL_PROCESSING_AND_CHEMICAL_PRODUCTS_PLANT_AND_MACHINE_OPERATORS": "81319"; - "PHOTOGRAPHIC_PRODUCTS_MACHINE_OPERATOR": "81320"; - "PHARMACEUTICAL_PRODUCTS_MACHINE_OPERATOR": "81331"; - "SOAP_MAKING_MACHINE_OPERATOR": "81332"; - "OTHER_TOILETRY_PRODUCTS_MACHINE_OPERATORS": "81339"; - "CHEMICAL_PROCESSING_CHEMICAL_AND_PHOTOGRAPHIC_PRODUCTS_PLANT_AND_MACHINE_OPERATOR_NEC": "81390"; - "RUBBER_MILLMAN": "81411"; - "RUBBER_LAMINATING_MACHINE_OPERATOR": "81412"; - "OTHER_RUBBER_PRODUCTS_MACHINE_OPERATORS": "81419"; - "PLASTIC_PRODUCTS_MACHINE_OPERATOR": "81420"; - "CARTON_PAPER_BOX_MAKING_MACHINE_OPERATOR": "81431"; - "PAPER_PRODUCT_MAKING_MACHINE_OPERATOR": "81432"; - "OTHER_PAPER_AND_PAPERBOARD_PRODUCTS_MACHINE_OPERATORS": "81439"; - "SPINNER_THREAD_AND_YARN": "81511"; - "WINDER_THREAD_AND_YARN": "81512"; - "WEAVING_MACHINE_OPERATOR": "81521"; - "KNITTING_MACHINE_OPERATOR": "81522"; - "SEWING_MACHINE_OPERATOR": "81531"; - "MACHINE_EMBROIDERER": "81532"; - "TEXTILE_BLEACHING_MACHINE_OPERATOR": "81541"; - "DYEING_MACHINE_OPERATOR": "81542"; - "TEXTILE_WASHING_SHRINKING_MACHINE_OPERATOR": "81543"; - "OTHER_BLEACHING_DYEING_AND_FABRIC_CLEANING_MACHINE_OPERATORS": "81549"; - "LAUNDRY_AND_DRY_CLEANING_WORKER_MACHINE_NON_HOUSEHOLD": "81591"; - "OTHER_TEXTILE_FUR_AND_LEATHER_PRODUCTS_MACHINE_OPERATORS_NEC_EG_SHOEMAKING_AND_RELATED_MACHINE_OPERATORS": "81599"; - "SAUSAGE_MAKING_MACHINE_OPERATOR": "81611"; - "OTHER_MEAT_AND_FISH_PROCESSING_MACHINE_OPERATORS": "81619"; - "DAIRY_PRODUCT_PROCESSING_MACHINE_OPERATOR_GENERAL": "81621"; - "DAIRY_PRODUCT_PASTEURISING_MACHINE_OPERATOR": "81622"; - "BUTTER_MAKING_MACHINE_OPERATOR": "81623"; - "ICE_CREAM_MAKING_MACHINE_OPERATOR": "81624"; - "CHOCOLATE_MAKING_MACHINE_OPERATOR": "81625"; - "CONFECTIONERY_MAKING_MACHINE_OPERATOR": "81626"; - "OTHER_DAIRY_AND_CONFECTIONERY_PRODUCTS_MACHINE_OPERATORS": "81629"; - "GRAIN_SPICE_MILLING_MACHINE_OPERATOR": "81630"; - "BISCUIT_MAKING_MACHINE_OPERATOR": "81641"; - "MACARONI_NOODLE_VERMICELLI_MAKING_MACHINE_OPERATOR": "81642"; - "OTHER_BAKED_AND_CEREAL_PRODUCTS_MACHINE_OPERATORS": "81649"; - "FRUIT_PRESS_OPERATOR": "81651"; - "OIL_PRESSMAN_EDIBLE_OILS": "81652"; - "REFINING_MACHINE_OPERATOR_OILS_AND_FATS": "81653"; - "HYDROGENATION_OPERATOR_OILS_AND_FATS": "81654"; - "SAUCE_MAKING_MACHINE_OPERATOR": "81655"; - "OTHER_FRUIT_VEGETABLE_AND_NUT_PROCESSING_MACHINE_OPERATORS": "81659"; - "SUGAR_PROCESSING_AND_REFINING_MACHINE_OPERATOR": "81660"; - "GERMINATION_WORKER_MALTING": "81671"; - "KILNMAN_MALTING": "81672"; - "BREWER": "81673"; - "FERMENTING_ROOM_MAN": "81674"; - "PASTEURISER_ATTENDANT_MALT_LIQUOR": "81675"; - "SYRUP_MAKING_MACHINE_OPERATOR": "81676"; - "COFFEE_TEA_BLENDING_MACHINE_OPERATOR": "81677"; - "COFFEE_COCOA_BEAN_ROASTING_AND_GRINDING_MACHINE_OPERATOR": "81678"; - "OTHER_BREWERS_AND_WINE_AND_OTHER_BEVERAGE_MACHINE_OPERATORS": "81679"; - "CIGARETTE_MAKING_MACHINE_OPERATOR": "81681"; - "OTHER_TOBACCO_PRODUCTS_MACHINE_OPERATORS": "81689"; - "BEAN_CURD_MAKING_MACHINE_OPERATOR": "81691"; - "ICE_MAKING_MACHINE_OPERATOR": "81692"; - "FEED_MIXING_MACHINE_OPERATOR": "81693"; - "FISH_FEED_MAKING_MACHINE_OPERATOR": "81694"; - "OTHER_FOOD_AND_RELATED_PRODUCTS_MACHINE_OPERATORS_NEC": "81699"; - "PAPER_PULP_PLANT_OPERATOR": "81711"; - "PAPERMAKING_MACHINE_OPERATOR": "81712"; - "OTHER_PULP_AND_PAPERMAKING_PLANT_OPERATORS": "81719"; - "SAWYER": "81721"; - "VENEER_CUTTER": "81722"; - "PLYWOOD_CORE_LAYER": "81723"; - "PLYWOOD_PRESS_OPERATOR": "81724"; - "WOOD_GRADER": "81725"; - "OTHER_WOOD_PROCESSING_PLANT_OPERATORS": "81729"; - "WOODWORKING_MACHINE_SETTER_OPERATOR": "81731"; - "PRECISION_WOOD_SAWYER": "81732"; - "OTHER_WOOD_PRODUCTS_MACHINE_OPERATORS": "81739"; - "GLASS_CERAMICS_KILN_MACHINE_OPERATOR": "81811"; - "FIBREGLASS_MAKER": "81812"; - "OTHER_GLASS_AND_CERAMICS_PLANT_OPERATORS": "81819"; - "BOILER_FIREMAN": "81821"; - "SHIPS_FIREMAN": "81822"; - "SHIPS_OILER_GREASER": "81823"; - "OTHER_STEAM_TURBINE_BOILER_AND_ENGINE_OPERATORS": "81829"; - "PACKING_BOTTLING_LABELLING_MACHINE_OPERATOR": "81830"; - "PRINTING_MACHINE_OPERATOR": "81841"; - "BOOKBINDING_MACHINE_OPERATOR": "81842"; - "BOOK_EMBOSSING_MACHINE_OPERATOR": "81843"; - "OTHER_PRINTING_BINDING_AND_RELATED_MACHINE_OPERATORS": "81849"; - "STATIONARY_ENGINE_OPERATOR_GENERAL": "81851"; - "COMPRESSOR_OPERATOR": "81852"; - "PUMPING_STATION_OPERATOR": "81853"; - "WATER_TREATMENT_MACHINE_OPERATOR_WATERWORKS": "81854"; - "REFRIGERATION_SYSTEM_OPERATOR": "81855"; - "OTHER_WATER_TREATMENT_AND_RELATED_MACHINE_OPERATORS": "81859"; - "POWER_GENERATING_PLANT_OPERATOR": "81860"; - "PETROLEUM_AND_NATURAL_GAS_REFINING_PLANT_OPERATOR": "81871"; - "CYLINDER_FILLER_TESTER_COMPRESSED_AND_LIQUEFIED_GASES": "81872"; - "AUTOMATED_ASSEMBLY_LINE_INDUSTRIAL_ROBOT_OPERATOR": "81880"; - "STATIONARY_PLANT_AND_MACHINE_OPERATOR_NEC": "81890"; - "SUPERVISOR_GENERAL_FOREMAN_OF_ASSEMBLERS_AND_QUALITY_CHECKERS": "82000"; - "ELECTRICAL_EQUIPMENT_COMPONENT_ASSEMBLER": "82121"; - "ELECTRONIC_EQUIPMENT_COMPONENT_ASSEMBLER": "82122"; - "BATTERY_ASSEMBLER": "82123"; - "ELECTRICAL_ELECTRONIC_PRODUCTS_QUALITY_CHECKER_AND_TESTER": "82131"; - "MECHANICAL_PRODUCTS_QUALITY_CHECKER_AND_TESTER": "82132"; - "OTHER_QUALITY_CHECKERS_AND_TESTERS": "82139"; - "TOY_ASSEMBLER": "82191"; - "OTHER_ASSEMBLERS_NEC_EG_PLASTIC_PRODUCTS_ASSEMBLER_RUBBER_PRODUCTS_ASSEMBLER": "82199"; - "MOBILE_MACHINERY_SUPERVISOR_AND_GENERAL_FOREMAN": "83000"; - "MRT_TRAIN_OPERATOR": "83110"; - "RAILWAY_BRAKEMAN_SIGNALMAN_SHUNTER": "83121"; - "OTHER_RAILWAY_BRAKERS_AND_RELATED_WORKERS": "83129"; - "MOTORCYCLE_DELIVERY_MAN": "83210"; - "TAXI_DRIVER": "83221"; - "CHAUFFEUR": "83222"; - "VAN_DRIVER": "83223"; - "AMBULANCE_DRIVER": "83291"; - "OTHER_CAR_AND_LIGHT_GOODS_VEHICLE_DRIVERS_NEC": "83299"; - "BUS_DRIVER": "83311"; - "TRAM_DRIVER": "83312"; - "LORRY_DRIVER": "83321"; - "TRAILER_TRUCK_DRIVER": "83322"; - "FIRE_ENGINE_DRIVER": "83323"; - "AIRPORT_MOBILE_EQUIPMENT_DRIVER": "83324"; - "OTHER_HEAVY_TRUCK_AND_LORRY_DRIVERS": "83329"; - "EXCAVATING_TRENCH_DIGGING_MACHINE_OPERATOR": "83421"; - "BULLDOZER_OPERATOR": "83422"; - "DREDGE_OPERATOR": "83423"; - "PILE_DRIVER_DRILLING_MACHINE_OPERATOR": "83424"; - "ROAD_MAKING_MACHINE_OPERATOR": "83425"; - "TUNNELLING_MACHINE_OPERATOR_INCLUDING_PIPE_JACKING_MACHINE_OPERATOR": "83426"; - "OTHER_EARTH_MOVING_AND_RELATED_MACHINERY_OPERATORS": "83429"; - "CRANE_HOIST_OPERATOR_GENERAL": "83431"; - "CRANE_OPERATOR_PORT": "83432"; - "OTHER_CRANE_HOIST_AND_RELATED_EQUIPMENT_OPERATORS": "83439"; - "FORK_LIFT_TRUCK_OPERATOR": "83441"; - "OTHER_LIFTING_TRUCK_OPERATORS": "83449"; - "MOBILE_MACHINERY_OPERATOR_NEC_EG_MOBILE_FARM_PLANT_OPERATOR": "83490"; - "HELMSMAN_STEERSMAN": "83501"; - "DECKHAND_INCLUDING_LIGHTERMAN": "83502"; - "OTHER_SHIPS_DECK_CREW_AND_RELATED_WORKERS": "83509"; + STATIONARY_PLANT_AND_MACHINE_SUPERVISOR_GENERAL_FOREMAN: "81000"; + WELL_DRILLER_PETROLEUM_AND_GAS_WELLS: "81131"; + WELL_DRILLER_BORER_EXCEPT_OIL_AND_GAS_WELLS: "81132"; + DEEP_BORING_MACHINE_OPERATOR: "81133"; + OTHER_WELL_DRILLERS_AND_BORERS_AND_OTHER_MINING_RELATED_WORKERS: "81139"; + PRECAST_CONCRETE_PRODUCT_MAKING_MACHINE_OPERATOR: "81141"; + ASBESTOS_CEMENT_PRODUCT_MAKING_MACHINE_OPERATOR: "81142"; + TERRAZZO_TILE_MAKING_MACHINE_OPERATOR: "81143"; + CONCRETE_MIXING_PLANT_OPERATOR_INCLUDING_CONCRETE_MIXER_OPERATOR: "81144"; + CONCRETE_PUMP_OPERATOR: "81145"; + OTHER_MINERAL_PRODUCTS_AND_PROCESSING_MACHINE_OPERATORS: "81149"; + ORE_AND_METAL_FURNACE_OPERATOR_INCLUDING_FURNACEMAN: "81211"; + CENTRIFUGAL_CASTING_MACHINE_OPERATOR: "81212"; + DIE_CASTING_MACHINE_OPERATOR: "81213"; + CONTINUOUS_ROD_CASTING_MACHINE_OPERATOR_NON_FERROUS_METAL: "81214"; + METAL_ROLLING_MILL_WORKER: "81215"; + OTHER_METAL_MELTERS_CASTERS_AND_ROLLING_MILL_OPERATORS: "81219"; + METAL_HEAT_TREATING_PLANT_OPERATOR: "81220"; + WIRE_DRAWER: "81231"; + SEAMLESS_PIPE_AND_TUBE_DRAWER: "81232"; + EXTRUDER_OPERATOR_METAL: "81233"; + OTHER_METAL_DRAWERS_AND_EXTRUDERS: "81239"; + ELECTRO_PLATER: "81241"; + HOT_DIP_PLATER: "81242"; + WIRE_COATING_MACHINE_OPERATOR: "81243"; + GALVANISER: "81244"; + METAL_SPRAYER: "81245"; + ANODISER: "81246"; + SANDBLASTER_SHOTBLASTER_METAL: "81247"; + METAL_CLEANER: "81248"; + OTHER_METAL_FINISHING_PLATING_AND_COATING_MACHINE_OPERATORS: "81249"; + METALWORKING_MACHINE_SETTER_OPERATOR_GENERAL: "81251"; + LATHE_SETTER_OPERATOR: "81252"; + MILLING_MACHINE_SETTER_OPERATOR: "81253"; + PLANING_MACHINE_SETTER_OPERATOR: "81254"; + BORING_DRILLING_MACHINE_SETTER_OPERATOR: "81255"; + SHAPING_AND_HONING_MACHINE_SETTER_OPERATOR: "81256"; + PRECISION_GRINDING_MACHINE_SETTER_OPERATOR: "81257"; + NUMERICAL_CONTROL_MACHINE_SETTER_OPERATOR: "81258"; + OTHER_MACHINE_TOOL_SETTER_OPERATORS: "81259"; + CRUSHING_GRINDING_CHEMICAL_MIXING_EQUIPMENT_OPERATOR: "81311"; + CHEMICAL_HEAT_TREATING_PLANT_OPERATOR: "81312"; + CHEMICAL_FILTERING_AND_SEPARATING_EQUIPMENT_OPERATOR: "81313"; + CHEMICAL_STILL_REACTOR_OPERATOR: "81314"; + SYNTHETIC_FIBRE_MAKING_MACHINE_OPERATOR: "81315"; + OTHER_CHEMICAL_PROCESSING_AND_CHEMICAL_PRODUCTS_PLANT_AND_MACHINE_OPERATORS: "81319"; + PHOTOGRAPHIC_PRODUCTS_MACHINE_OPERATOR: "81320"; + PHARMACEUTICAL_PRODUCTS_MACHINE_OPERATOR: "81331"; + SOAP_MAKING_MACHINE_OPERATOR: "81332"; + OTHER_TOILETRY_PRODUCTS_MACHINE_OPERATORS: "81339"; + CHEMICAL_PROCESSING_CHEMICAL_AND_PHOTOGRAPHIC_PRODUCTS_PLANT_AND_MACHINE_OPERATOR_NEC: "81390"; + RUBBER_MILLMAN: "81411"; + RUBBER_LAMINATING_MACHINE_OPERATOR: "81412"; + OTHER_RUBBER_PRODUCTS_MACHINE_OPERATORS: "81419"; + PLASTIC_PRODUCTS_MACHINE_OPERATOR: "81420"; + CARTON_PAPER_BOX_MAKING_MACHINE_OPERATOR: "81431"; + PAPER_PRODUCT_MAKING_MACHINE_OPERATOR: "81432"; + OTHER_PAPER_AND_PAPERBOARD_PRODUCTS_MACHINE_OPERATORS: "81439"; + SPINNER_THREAD_AND_YARN: "81511"; + WINDER_THREAD_AND_YARN: "81512"; + WEAVING_MACHINE_OPERATOR: "81521"; + KNITTING_MACHINE_OPERATOR: "81522"; + SEWING_MACHINE_OPERATOR: "81531"; + MACHINE_EMBROIDERER: "81532"; + TEXTILE_BLEACHING_MACHINE_OPERATOR: "81541"; + DYEING_MACHINE_OPERATOR: "81542"; + TEXTILE_WASHING_SHRINKING_MACHINE_OPERATOR: "81543"; + OTHER_BLEACHING_DYEING_AND_FABRIC_CLEANING_MACHINE_OPERATORS: "81549"; + LAUNDRY_AND_DRY_CLEANING_WORKER_MACHINE_NON_HOUSEHOLD: "81591"; + OTHER_TEXTILE_FUR_AND_LEATHER_PRODUCTS_MACHINE_OPERATORS_NEC_EG_SHOEMAKING_AND_RELATED_MACHINE_OPERATORS: "81599"; + SAUSAGE_MAKING_MACHINE_OPERATOR: "81611"; + OTHER_MEAT_AND_FISH_PROCESSING_MACHINE_OPERATORS: "81619"; + DAIRY_PRODUCT_PROCESSING_MACHINE_OPERATOR_GENERAL: "81621"; + DAIRY_PRODUCT_PASTEURISING_MACHINE_OPERATOR: "81622"; + BUTTER_MAKING_MACHINE_OPERATOR: "81623"; + ICE_CREAM_MAKING_MACHINE_OPERATOR: "81624"; + CHOCOLATE_MAKING_MACHINE_OPERATOR: "81625"; + CONFECTIONERY_MAKING_MACHINE_OPERATOR: "81626"; + OTHER_DAIRY_AND_CONFECTIONERY_PRODUCTS_MACHINE_OPERATORS: "81629"; + GRAIN_SPICE_MILLING_MACHINE_OPERATOR: "81630"; + BISCUIT_MAKING_MACHINE_OPERATOR: "81641"; + MACARONI_NOODLE_VERMICELLI_MAKING_MACHINE_OPERATOR: "81642"; + OTHER_BAKED_AND_CEREAL_PRODUCTS_MACHINE_OPERATORS: "81649"; + FRUIT_PRESS_OPERATOR: "81651"; + OIL_PRESSMAN_EDIBLE_OILS: "81652"; + REFINING_MACHINE_OPERATOR_OILS_AND_FATS: "81653"; + HYDROGENATION_OPERATOR_OILS_AND_FATS: "81654"; + SAUCE_MAKING_MACHINE_OPERATOR: "81655"; + OTHER_FRUIT_VEGETABLE_AND_NUT_PROCESSING_MACHINE_OPERATORS: "81659"; + SUGAR_PROCESSING_AND_REFINING_MACHINE_OPERATOR: "81660"; + GERMINATION_WORKER_MALTING: "81671"; + KILNMAN_MALTING: "81672"; + BREWER: "81673"; + FERMENTING_ROOM_MAN: "81674"; + PASTEURISER_ATTENDANT_MALT_LIQUOR: "81675"; + SYRUP_MAKING_MACHINE_OPERATOR: "81676"; + COFFEE_TEA_BLENDING_MACHINE_OPERATOR: "81677"; + COFFEE_COCOA_BEAN_ROASTING_AND_GRINDING_MACHINE_OPERATOR: "81678"; + OTHER_BREWERS_AND_WINE_AND_OTHER_BEVERAGE_MACHINE_OPERATORS: "81679"; + CIGARETTE_MAKING_MACHINE_OPERATOR: "81681"; + OTHER_TOBACCO_PRODUCTS_MACHINE_OPERATORS: "81689"; + BEAN_CURD_MAKING_MACHINE_OPERATOR: "81691"; + ICE_MAKING_MACHINE_OPERATOR: "81692"; + FEED_MIXING_MACHINE_OPERATOR: "81693"; + FISH_FEED_MAKING_MACHINE_OPERATOR: "81694"; + OTHER_FOOD_AND_RELATED_PRODUCTS_MACHINE_OPERATORS_NEC: "81699"; + PAPER_PULP_PLANT_OPERATOR: "81711"; + PAPERMAKING_MACHINE_OPERATOR: "81712"; + OTHER_PULP_AND_PAPERMAKING_PLANT_OPERATORS: "81719"; + SAWYER: "81721"; + VENEER_CUTTER: "81722"; + PLYWOOD_CORE_LAYER: "81723"; + PLYWOOD_PRESS_OPERATOR: "81724"; + WOOD_GRADER: "81725"; + OTHER_WOOD_PROCESSING_PLANT_OPERATORS: "81729"; + WOODWORKING_MACHINE_SETTER_OPERATOR: "81731"; + PRECISION_WOOD_SAWYER: "81732"; + OTHER_WOOD_PRODUCTS_MACHINE_OPERATORS: "81739"; + GLASS_CERAMICS_KILN_MACHINE_OPERATOR: "81811"; + FIBREGLASS_MAKER: "81812"; + OTHER_GLASS_AND_CERAMICS_PLANT_OPERATORS: "81819"; + BOILER_FIREMAN: "81821"; + SHIPS_FIREMAN: "81822"; + SHIPS_OILER_GREASER: "81823"; + OTHER_STEAM_TURBINE_BOILER_AND_ENGINE_OPERATORS: "81829"; + PACKING_BOTTLING_LABELLING_MACHINE_OPERATOR: "81830"; + PRINTING_MACHINE_OPERATOR: "81841"; + BOOKBINDING_MACHINE_OPERATOR: "81842"; + BOOK_EMBOSSING_MACHINE_OPERATOR: "81843"; + OTHER_PRINTING_BINDING_AND_RELATED_MACHINE_OPERATORS: "81849"; + STATIONARY_ENGINE_OPERATOR_GENERAL: "81851"; + COMPRESSOR_OPERATOR: "81852"; + PUMPING_STATION_OPERATOR: "81853"; + WATER_TREATMENT_MACHINE_OPERATOR_WATERWORKS: "81854"; + REFRIGERATION_SYSTEM_OPERATOR: "81855"; + OTHER_WATER_TREATMENT_AND_RELATED_MACHINE_OPERATORS: "81859"; + POWER_GENERATING_PLANT_OPERATOR: "81860"; + PETROLEUM_AND_NATURAL_GAS_REFINING_PLANT_OPERATOR: "81871"; + CYLINDER_FILLER_TESTER_COMPRESSED_AND_LIQUEFIED_GASES: "81872"; + AUTOMATED_ASSEMBLY_LINE_INDUSTRIAL_ROBOT_OPERATOR: "81880"; + STATIONARY_PLANT_AND_MACHINE_OPERATOR_NEC: "81890"; + SUPERVISOR_GENERAL_FOREMAN_OF_ASSEMBLERS_AND_QUALITY_CHECKERS: "82000"; + ELECTRICAL_EQUIPMENT_COMPONENT_ASSEMBLER: "82121"; + ELECTRONIC_EQUIPMENT_COMPONENT_ASSEMBLER: "82122"; + BATTERY_ASSEMBLER: "82123"; + ELECTRICAL_ELECTRONIC_PRODUCTS_QUALITY_CHECKER_AND_TESTER: "82131"; + MECHANICAL_PRODUCTS_QUALITY_CHECKER_AND_TESTER: "82132"; + OTHER_QUALITY_CHECKERS_AND_TESTERS: "82139"; + TOY_ASSEMBLER: "82191"; + OTHER_ASSEMBLERS_NEC_EG_PLASTIC_PRODUCTS_ASSEMBLER_RUBBER_PRODUCTS_ASSEMBLER: "82199"; + MOBILE_MACHINERY_SUPERVISOR_AND_GENERAL_FOREMAN: "83000"; + MRT_TRAIN_OPERATOR: "83110"; + RAILWAY_BRAKEMAN_SIGNALMAN_SHUNTER: "83121"; + OTHER_RAILWAY_BRAKERS_AND_RELATED_WORKERS: "83129"; + MOTORCYCLE_DELIVERY_MAN: "83210"; + TAXI_DRIVER: "83221"; + CHAUFFEUR: "83222"; + VAN_DRIVER: "83223"; + AMBULANCE_DRIVER: "83291"; + OTHER_CAR_AND_LIGHT_GOODS_VEHICLE_DRIVERS_NEC: "83299"; + BUS_DRIVER: "83311"; + TRAM_DRIVER: "83312"; + LORRY_DRIVER: "83321"; + TRAILER_TRUCK_DRIVER: "83322"; + FIRE_ENGINE_DRIVER: "83323"; + AIRPORT_MOBILE_EQUIPMENT_DRIVER: "83324"; + OTHER_HEAVY_TRUCK_AND_LORRY_DRIVERS: "83329"; + EXCAVATING_TRENCH_DIGGING_MACHINE_OPERATOR: "83421"; + BULLDOZER_OPERATOR: "83422"; + DREDGE_OPERATOR: "83423"; + PILE_DRIVER_DRILLING_MACHINE_OPERATOR: "83424"; + ROAD_MAKING_MACHINE_OPERATOR: "83425"; + TUNNELLING_MACHINE_OPERATOR_INCLUDING_PIPE_JACKING_MACHINE_OPERATOR: "83426"; + OTHER_EARTH_MOVING_AND_RELATED_MACHINERY_OPERATORS: "83429"; + CRANE_HOIST_OPERATOR_GENERAL: "83431"; + CRANE_OPERATOR_PORT: "83432"; + OTHER_CRANE_HOIST_AND_RELATED_EQUIPMENT_OPERATORS: "83439"; + FORK_LIFT_TRUCK_OPERATOR: "83441"; + OTHER_LIFTING_TRUCK_OPERATORS: "83449"; + MOBILE_MACHINERY_OPERATOR_NEC_EG_MOBILE_FARM_PLANT_OPERATOR: "83490"; + HELMSMAN_STEERSMAN: "83501"; + DECKHAND_INCLUDING_LIGHTERMAN: "83502"; + OTHER_SHIPS_DECK_CREW_AND_RELATED_WORKERS: "83509"; - "CLEANING_SUPERVISOR": "91000"; - "ROOM_STEWARD_CHAMBERMAID": "91121"; - "HOTEL_CLEANER": "91122"; - "OTHER_CLEANERS_AND_HELPERS_IN_HOTELS_AND_RELATED_ESTABLISHMENTS": "91129"; - "OFFICE_CLEANER": "91131"; - "CLEANER_INDUSTRIAL_ESTABLISHMENT": "91132"; - "CLEANER_IN_OFFICES_AND_OTHER_ESTABLISHMENTS_NEC": "91139"; - "HAND_LAUNDERER_PRESSER_NON_HOUSEHOLD": "91210"; - "MOTOR_VEHICLE_CLEANER_POLISHER": "91220"; - "WINDOW_CLEANER": "91230"; - "SHIP_SHIP_TANK_CLEANER": "91291"; - "AIRCRAFT_CLEANER": "91292"; - "RAILWAY_CARRIAGE_CLEANER_INCLUDE_MRT_LRT_AND_MONORAIL": "91293"; - "OTHER_CLEANING_WORKERS_NEC": "91299"; - "DOMESTIC_HELPER_GENERAL": "91301"; - "LAUNDERER_HOUSEHOLD": "91302"; - "OTHER_DOMESTIC_HELPERS_AND_CLEANERS": "91309"; - "GARDEN_LABOURER": "92141"; - "GRASS_CUTTER": "92142"; - "TREE_CUTTER": "92143"; - "OTHER_PARK_AND_GARDEN_MAINTENANCE_WORKERS_INCLUDING_LANDSCAPE_WORKER": "92149"; - "AGRICULTURAL_AND_FISHERY_LABOURER_AND_RELATED_WORKER_NEC_EG_FARM_LABOURER": "92190"; - "CIVIL_ENGINEERING_BUILDING_CONSTRUCTION_LABOURER": "93100"; - "HAND_PACKER": "93201"; - "MANUFACTURING_LABOURER_AND_RELATED_WORKER_NEC_EG_RUBBER_SHEETS_CLIPPER_AND_SORTER": "93209"; - "HAND_PEDAL_VEHICLE_DRIVER": "93310"; - "STEVEDORE": "93331"; - "RAILWAY_ROAD_VEHICLE_LOADER": "93332"; - "AIRCRAFT_LOADER": "93333"; - "GODOWN_LABOURER": "93334"; - "LORRY_ATTENDANT": "93335"; - "MOVER": "93336"; - "OTHER_MATERIAL_AND_FREIGHT_HANDLING_WORKERS": "93339"; - "KITCHEN_ASSISTANT": "94101"; - "FOOD_DRINK_STALL_ASSISTANT": "94102"; - "FAST_FOOD_PREPARER": "94103"; - "DISH_WASHER_PLATE_COLLECTOR": "94104"; - "GARBAGE_DISPOSAL_WORKER": "96111"; - "REFUSE_SORTER": "96112"; - "OTHER_GARBAGE_AND_RECYCLING_COLLECTORS": "96119"; - "SWEEPER_AND_RELATED_WORKER": "96130"; - "BELL_CAPTAIN": "96211"; - "BELLBOY_HOTEL_PORTER": "96212"; - "PORTER_EXCEPT_HOTEL": "96213"; - "OFFICE_LIBRARY_ATTENDANT": "96251"; - "LABORATORY_ATTENDANT": "96252"; - "HOSPITAL_CLINIC_ATTENDANT": "96253"; - "CAR_PARK_ATTENDANT": "96254"; - "OTHER_ATTENDANTS_EG_SWIMMING_POOL_ATTENDANT": "96259"; - "BUILDING_CARETAKER_WATCHMAN": "96261"; - "DOORMAN": "96262"; - "OTHER_WATCHMEN_AND_RELATED_WORKERS_EG_LIGHTHOUSE_KEEPER": "96269"; - "LEAFLET_AND_NEWSPAPER_DISTRIBUTOR_DELIVERER": "96291"; - "METER_READER_VENDING_MACHINE_COLLECTOR": "96292"; - "ODD_JOB_PERSON": "96293"; - "OTHER_ELEMENTARY_WORKERS_NEC": "96299"; + CLEANING_SUPERVISOR: "91000"; + ROOM_STEWARD_CHAMBERMAID: "91121"; + HOTEL_CLEANER: "91122"; + OTHER_CLEANERS_AND_HELPERS_IN_HOTELS_AND_RELATED_ESTABLISHMENTS: "91129"; + OFFICE_CLEANER: "91131"; + CLEANER_INDUSTRIAL_ESTABLISHMENT: "91132"; + CLEANER_IN_OFFICES_AND_OTHER_ESTABLISHMENTS_NEC: "91139"; + HAND_LAUNDERER_PRESSER_NON_HOUSEHOLD: "91210"; + MOTOR_VEHICLE_CLEANER_POLISHER: "91220"; + WINDOW_CLEANER: "91230"; + SHIP_SHIP_TANK_CLEANER: "91291"; + AIRCRAFT_CLEANER: "91292"; + RAILWAY_CARRIAGE_CLEANER_INCLUDE_MRT_LRT_AND_MONORAIL: "91293"; + OTHER_CLEANING_WORKERS_NEC: "91299"; + DOMESTIC_HELPER_GENERAL: "91301"; + LAUNDERER_HOUSEHOLD: "91302"; + OTHER_DOMESTIC_HELPERS_AND_CLEANERS: "91309"; + GARDEN_LABOURER: "92141"; + GRASS_CUTTER: "92142"; + TREE_CUTTER: "92143"; + OTHER_PARK_AND_GARDEN_MAINTENANCE_WORKERS_INCLUDING_LANDSCAPE_WORKER: "92149"; + AGRICULTURAL_AND_FISHERY_LABOURER_AND_RELATED_WORKER_NEC_EG_FARM_LABOURER: "92190"; + CIVIL_ENGINEERING_BUILDING_CONSTRUCTION_LABOURER: "93100"; + HAND_PACKER: "93201"; + MANUFACTURING_LABOURER_AND_RELATED_WORKER_NEC_EG_RUBBER_SHEETS_CLIPPER_AND_SORTER: "93209"; + HAND_PEDAL_VEHICLE_DRIVER: "93310"; + STEVEDORE: "93331"; + RAILWAY_ROAD_VEHICLE_LOADER: "93332"; + AIRCRAFT_LOADER: "93333"; + GODOWN_LABOURER: "93334"; + LORRY_ATTENDANT: "93335"; + MOVER: "93336"; + OTHER_MATERIAL_AND_FREIGHT_HANDLING_WORKERS: "93339"; + KITCHEN_ASSISTANT: "94101"; + FOOD_DRINK_STALL_ASSISTANT: "94102"; + FAST_FOOD_PREPARER: "94103"; + DISH_WASHER_PLATE_COLLECTOR: "94104"; + GARBAGE_DISPOSAL_WORKER: "96111"; + REFUSE_SORTER: "96112"; + OTHER_GARBAGE_AND_RECYCLING_COLLECTORS: "96119"; + SWEEPER_AND_RELATED_WORKER: "96130"; + BELL_CAPTAIN: "96211"; + BELLBOY_HOTEL_PORTER: "96212"; + PORTER_EXCEPT_HOTEL: "96213"; + OFFICE_LIBRARY_ATTENDANT: "96251"; + LABORATORY_ATTENDANT: "96252"; + HOSPITAL_CLINIC_ATTENDANT: "96253"; + CAR_PARK_ATTENDANT: "96254"; + OTHER_ATTENDANTS_EG_SWIMMING_POOL_ATTENDANT: "96259"; + BUILDING_CARETAKER_WATCHMAN: "96261"; + DOORMAN: "96262"; + OTHER_WATCHMEN_AND_RELATED_WORKERS_EG_LIGHTHOUSE_KEEPER: "96269"; + LEAFLET_AND_NEWSPAPER_DISTRIBUTOR_DELIVERER: "96291"; + METER_READER_VENDING_MACHINE_COLLECTOR: "96292"; + ODD_JOB_PERSON: "96293"; + OTHER_ELEMENTARY_WORKERS_NEC: "96299"; } const codeToDesc: Code2Desc = { @@ -2435,7 +2435,8 @@ export namespace occupation { "22126": "PAEDIATRICIAN", "22127": "RESPIRATORY_PHYSICIAN", "22128": "PSYCHIATRIST", - "22129": "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_MEDICAL_EG_ENDOCRINOLOGIST_GERIATRICIAN_HAEMATOLOGIST_INFECTIOUS_DISEASES_PHYSICIAN_NEUROLOGIST_NUCLEAR_MEDICINE_PHYSICIAN_REHABILITATION_PHYSICIAN_RENAL_PHYSICIAN_RHEUMATOLOGIST", + "22129": + "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_MEDICAL_EG_ENDOCRINOLOGIST_GERIATRICIAN_HAEMATOLOGIST_INFECTIOUS_DISEASES_PHYSICIAN_NEUROLOGIST_NUCLEAR_MEDICINE_PHYSICIAN_REHABILITATION_PHYSICIAN_RENAL_PHYSICIAN_RHEUMATOLOGIST", "22131": "GENERAL_SURGEON", "22132": "CARDIOTHORACIC_SURGEON", "22133": "HAND_SURGEON", @@ -2453,7 +2454,8 @@ export namespace occupation { "22146": "PATHOLOGIST", "22147": "PUBLIC_HEALTH_PHYSICIAN", "22148": "OTORHINOLARYNGOLOGIST_EAR_NOSE_THROAT_ENT_SURGEON", - "22149": "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_OTHER_SPECIALISATIONS_EG_OCCUPATIONAL_PHYSICIAN_RADIATION_ONCOLOGIST", + "22149": + "OTHER_SPECIALIST_MEDICAL_PRACTITIONERS_OTHER_SPECIALISATIONS_EG_OCCUPATIONAL_PHYSICIAN_RADIATION_ONCOLOGIST", "22301": "TRADITIONAL_CHINESE_MEDICINE_PHYSICIAN", "22302": "TRADITIONAL_CHINESE_MEDICINE_ACUPUNCTURIST", "22500": "VETERINARIAN", @@ -2759,7 +2761,8 @@ export namespace occupation { "34222": "MARTIAL_ARTS_INSTRUCTOR", "34223": "PHYSICAL_FITNESS_INSTRUCTOR_INCLUDING_YOGA_INSTRUCTOR_AND_AEROBICS_INSTRUCTOR", "34224": "SPORTS_OFFICIAL", - "34229": "OTHER_RELATED_INSTRUCTORS_AND_ASSOCIATE_PROFESSIONALS_EG_ADVENTURE_TRAINING_INSTRUCTOR_AND_SCUBA_DIVING_INSTRUCTOR", + "34229": + "OTHER_RELATED_INSTRUCTORS_AND_ASSOCIATE_PROFESSIONALS_EG_ADVENTURE_TRAINING_INSTRUCTOR_AND_SCUBA_DIVING_INSTRUCTOR", "34310": "PHOTOGRAPHER", "34321": "INTERIOR_DESIGNER", "34322": "LANDSCAPE_DESIGNER", @@ -3221,7 +3224,8 @@ export namespace occupation { "81543": "TEXTILE_WASHING_SHRINKING_MACHINE_OPERATOR", "81549": "OTHER_BLEACHING_DYEING_AND_FABRIC_CLEANING_MACHINE_OPERATORS", "81591": "LAUNDRY_AND_DRY_CLEANING_WORKER_MACHINE_NON_HOUSEHOLD", - "81599": "OTHER_TEXTILE_FUR_AND_LEATHER_PRODUCTS_MACHINE_OPERATORS_NEC_EG_SHOEMAKING_AND_RELATED_MACHINE_OPERATORS", + "81599": + "OTHER_TEXTILE_FUR_AND_LEATHER_PRODUCTS_MACHINE_OPERATORS_NEC_EG_SHOEMAKING_AND_RELATED_MACHINE_OPERATORS", "81611": "SAUSAGE_MAKING_MACHINE_OPERATOR", "81619": "OTHER_MEAT_AND_FISH_PROCESSING_MACHINE_OPERATORS", "81621": "DAIRY_PRODUCT_PROCESSING_MACHINE_OPERATOR_GENERAL", @@ -3399,773 +3403,773 @@ export namespace occupation { export namespace countryofmarriage { interface Code2Desc { - "AB": "ARUBA"; - "AD": "ANDORRA"; - "AE": "UNITED_ARAB_EMIRATES"; - "AF": "AFGHANISTAN"; - "AG": "ANTIGUA"; - "AI": "ANGUILLA"; - "AL": "ALBANIA"; - "AM": "ARMENIA"; - "AN": "NETHERLANDS_ANTILILLES"; - "AO": "ANGOLA"; - "AR": "ARGENTINA"; - "AS": "AMERICAN_SAMOA"; - "AT": "AUSTRIA"; - "AU": "AUSTRALIA"; - "AZ": "AZERBAIJAN"; - "BA": "BOSNIA_HERZEGOVINA"; - "BB": "BARBADOS"; - "BD": "BANGLADESH"; - "BE": "BELGIUM"; - "BF": "BURKINA_FASO"; - "BG": "BULGARIA"; - "BH": "BAHRAIN"; - "BI": "BURUNDI"; - "BJ": "BENIN"; - "BL": "BELARUS"; - "BM": "BERMUDA"; - "BN": "BRUNEI"; - "BO": "BOLIVIA"; - "BQ": "BRITISH_ANTARCTIC_TERRITORY"; - "BR": "BRAZIL"; - "BS": "BAHAMAS"; - "BT": "BHUTAN"; - "BU": "MYANMAR"; - "BW": "BOTSWANA"; - "BZ": "BELIZE"; - "CA": "CANADA"; - "CB": "CROATIA"; - "CC": "COCOS_KEELING_ISLAND"; - "CD": "CHANNEL_ISLANDS"; - "CF": "CENTRAL_AFRICAN_REPUBLIC"; - "CG": "CONGO"; - "CH": "SWITZERLAND"; - "CI": "IVORY_COAST"; - "CK": "COOK_ISLANDS"; - "CL": "CHILE"; - "CM": "CAMEROON"; - "CN": "CHINA"; - "CO": "COLOMBIA"; - "CR": "COSTA_RICA"; - "CT": "CANTON_AND_ENDERBURY_ISLANDS"; - "CU": "CUBA"; - "CV": "CAPE_VERDE"; - "CX": "CHRISTMAS_ISLAND"; - "CY": "CYPRUS"; - "CZ": "CZECH_REPUBLIC"; - "DG": "GERMANY"; - "DJ": "DJIBOUTI"; - "DK": "DENMARK"; - "DM": "DOMINICA"; - "DO": "DOMINICAN_REPUBLIC"; - "DZ": "ALGERIA"; - "EC": "ECUADOR"; - "EG": "EGYPT"; - "EH": "WESTERN_SAHARA"; - "EN": "ESTONIA"; - "ER": "ERITREA"; - "ES": "SPAIN"; - "ET": "ETHIOPIA"; - "FI": "FINLAND"; - "FJ": "FIJI"; - "FK": "FALKLAND_ISLANDS"; - "FO": "FAEROE_ISLANDS"; - "FQ": "FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES"; - "FR": "FRANCE"; - "GA": "GABON"; - "GB": "UNITED_KINGDOM"; - "GD": "GRENADA"; - "GF": "FRENCH_GUIANA"; - "GH": "GHANA"; - "GI": "GIBRALTAR"; - "GK": "GUERNSEY"; - "GL": "GREENLAND"; - "GM": "GAMBIA"; - "GN": "GUINEA"; - "GO": "GEORGIA"; - "GP": "GUADELOUPE"; - "GQ": "EQUATORIAL_GUINEA"; - "GR": "GREECE"; - "GT": "GUATEMALA"; - "GU": "GUAM"; - "GW": "GUINEA_BISSAU"; - "GY": "GUYANA"; - "GZ": "GAZA"; - "HK": "HONG_KONG"; - "HM": "HEARD_AND_MCDONALD_ISLAND"; - "HN": "HONDURAS"; - "HS": "HONG_KONG_SAR"; - "HT": "HAITI"; - "HU": "HUNGARY"; - "HV": "UPPER_VOLTA"; - "ID": "INDONESIA"; - "IE": "IRELAND"; - "IL": "ISRAEL"; - "IN": "INDIA"; - "IO": "BRITISH_INDIAN_OCEAN_TERRITORY"; - "IQ": "IRAQ"; - "IR": "IRAN"; - "IS": "ICELAND"; - "IT": "ITALY"; - "JM": "JAMAICA"; - "JO": "JORDAN"; - "JP": "JAPAN"; - "JT": "JOHNSTON_ISLAND"; - "KA": "CAMBODIA"; - "KE": "KENYA"; - "KG": "KIRGHIZIA"; - "KI": "KIRIBATI"; - "KM": "COMOROS"; - "KN": "ST_KITTS_NEVIS"; - "KP": "KOREA_NORTH"; - "KR": "KOREA_SOUTH"; - "KS": "KYRGYZSTAN"; - "KV": "KOSOVO"; - "KW": "KUWAIT"; - "KY": "CAYMAN_ISLANDS"; - "KZ": "KAZAKHSTAN"; - "LA": "LAOS"; - "LB": "LEBANON"; - "LC": "ST_LUCIA"; - "LH": "LITHUANIA"; - "LI": "LIECHTENSTEIN"; - "LK": "SRI_LANKA"; - "LR": "LIBERIA"; - "LS": "LESOTHO"; - "LU": "LUXEMBOURG"; - "LV": "LATVIA"; - "LY": "LIBYA"; - "MA": "MOROCCO"; - "MB": "MACEDONIA"; - "MC": "MONACO"; - "MD": "MOLDOVA"; - "ME": "MAYOTTE"; - "MF": "MACAU_SAR"; - "MG": "MADAGASCAR"; - "MH": "MARSHALL_ISLANDS"; - "MI": "MIDWAY_ISLANDS"; - "MJ": "MONTENEGRO"; - "ML": "MALI"; - "MM": "ISLE_OF_MAN"; - "MN": "MONGOLIA"; - "MO": "MACAO"; - "MQ": "MARTINIQUE"; - "MR": "MAURITANIA"; - "MS": "MONTSERRAT"; - "MT": "MALTA"; - "MU": "MAURITIUS"; - "MV": "MALDIVES"; - "MW": "MALAWI"; - "MX": "MEXICO"; - "MY": "MALAYSIA"; - "MZ": "MOZAMBIQUE"; - "NA": "NAMIBIA"; - "NC": "NEW_CALEDONIA"; - "NE": "NIGER"; - "NF": "NORFOLK_ISLAND"; - "NG": "NIGERIA"; - "NI": "NICARAGUA"; - "NL": "NETHERLANDS"; - "NO": "NORWAY"; - "NP": "NEPAL"; - "NR": "NAURU"; - "NU": "NIUE_ISLAND"; - "NZ": "NEW_ZEALAND"; - "OM": "OMAN"; - "PA": "PANAMA"; - "PB": "PALESTINE"; - "PC": "PACIFIC_ISLAND_TRUST_TERRITORY"; - "PE": "PERU"; - "PF": "FRENCH_POLYNESIA"; - "PG": "PAPUA_NEW_GUINEA"; - "PH": "PHILIPPINES"; - "PK": "PAKISTAN"; - "PL": "POLAND"; - "PM": "ST_PIERRE_AND_MIQUELON"; - "PN": "PITCAIRN_ISLAND"; - "PR": "PUERTO_RICO"; - "PT": "PORTUGAL"; - "PW": "PALAU"; - "PY": "PARAGUAY"; - "PZ": "PANAMA_CANAL_ZONE"; - "QA": "QATAR"; - "RE": "REUNION"; - "RF": "RUSSIA"; - "RO": "ROMANIA"; - "RS": "SERBIA"; - "RW": "RWANDA"; - "SA": "SAUDI_ARABIA"; - "SB": "SOLOMON_ISLANDS"; - "SC": "SEYCHELLES"; - "SD": "SUDAN"; - "SE": "SWEDEN"; - "SF": "SERBIA_MONTENEGRO"; - "SG": "SINGAPORE"; - "SH": "ST_HELENA"; - "SI": "SLOVENIA"; - "SK": "SLOVAK_REPUBLIC"; - "SL": "SIERRA_LEONE"; - "SM": "SAN_MARINO"; - "SN": "SENEGAL"; - "SO": "SOMALIA"; - "SR": "SURINAME"; - "ST": "SAO_TOME_AND_PRINCIPE"; - "SV": "EL_SALVADOR"; - "SY": "SYRIA"; - "SZ": "SWAZILAND"; - "TC": "TURKS_AND_CAICOS_ISLANDS"; - "TD": "CHAD"; - "TE": "TIMOR"; - "TG": "TOGO"; - "TH": "THAILAND"; - "TI": "TAJIKISTAN"; - "TK": "TOKELAU_ISLANDS"; - "TM": "TURKMENISTAN"; - "TN": "TUNISIA"; - "TO": "TONGA"; - "TP": "EAST_TIMOR"; - "TR": "TURKEY"; - "TT": "TRINIDAD_AND_TOBAGO"; - "TV": "TUVALU"; - "TW": "TAIWAN"; - "TZ": "TANZANIA"; - "UG": "UGANDA"; - "UN": "UNKNOWN"; - "UR": "UKRAINE"; - "US": "UNITED_STATES"; - "UY": "URUGUAY"; - "UZ": "UZBEKISTAN"; - "VA": "VATICAN_CITY_STATE"; - "VC": "ST_VINCENT"; - "VE": "VENEZUELA"; - "VG": "BRITISH_VIRGIN_ISLANDS"; - "VI": "US_VIRGIN_ISLANDS"; - "VN": "VIETNAM"; - "VU": "VANUATU"; - "WF": "WALLIS_AND_FUTUNA"; - "WK": "WAKE_ISLAND"; - "WM": "SAMOA"; - "XX": "OTHERS"; - "YM": "YEMEN"; - "YU": "YUGOSLAVIA"; - "ZA": "SOUTH_AFRICA"; - "ZM": "ZAMBIA"; - "ZR": "ZAIRE"; - "ZW": "ZIMBABWE"; + AB: "ARUBA"; + AD: "ANDORRA"; + AE: "UNITED_ARAB_EMIRATES"; + AF: "AFGHANISTAN"; + AG: "ANTIGUA"; + AI: "ANGUILLA"; + AL: "ALBANIA"; + AM: "ARMENIA"; + AN: "NETHERLANDS_ANTILILLES"; + AO: "ANGOLA"; + AR: "ARGENTINA"; + AS: "AMERICAN_SAMOA"; + AT: "AUSTRIA"; + AU: "AUSTRALIA"; + AZ: "AZERBAIJAN"; + BA: "BOSNIA_HERZEGOVINA"; + BB: "BARBADOS"; + BD: "BANGLADESH"; + BE: "BELGIUM"; + BF: "BURKINA_FASO"; + BG: "BULGARIA"; + BH: "BAHRAIN"; + BI: "BURUNDI"; + BJ: "BENIN"; + BL: "BELARUS"; + BM: "BERMUDA"; + BN: "BRUNEI"; + BO: "BOLIVIA"; + BQ: "BRITISH_ANTARCTIC_TERRITORY"; + BR: "BRAZIL"; + BS: "BAHAMAS"; + BT: "BHUTAN"; + BU: "MYANMAR"; + BW: "BOTSWANA"; + BZ: "BELIZE"; + CA: "CANADA"; + CB: "CROATIA"; + CC: "COCOS_KEELING_ISLAND"; + CD: "CHANNEL_ISLANDS"; + CF: "CENTRAL_AFRICAN_REPUBLIC"; + CG: "CONGO"; + CH: "SWITZERLAND"; + CI: "IVORY_COAST"; + CK: "COOK_ISLANDS"; + CL: "CHILE"; + CM: "CAMEROON"; + CN: "CHINA"; + CO: "COLOMBIA"; + CR: "COSTA_RICA"; + CT: "CANTON_AND_ENDERBURY_ISLANDS"; + CU: "CUBA"; + CV: "CAPE_VERDE"; + CX: "CHRISTMAS_ISLAND"; + CY: "CYPRUS"; + CZ: "CZECH_REPUBLIC"; + DG: "GERMANY"; + DJ: "DJIBOUTI"; + DK: "DENMARK"; + DM: "DOMINICA"; + DO: "DOMINICAN_REPUBLIC"; + DZ: "ALGERIA"; + EC: "ECUADOR"; + EG: "EGYPT"; + EH: "WESTERN_SAHARA"; + EN: "ESTONIA"; + ER: "ERITREA"; + ES: "SPAIN"; + ET: "ETHIOPIA"; + FI: "FINLAND"; + FJ: "FIJI"; + FK: "FALKLAND_ISLANDS"; + FO: "FAEROE_ISLANDS"; + FQ: "FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES"; + FR: "FRANCE"; + GA: "GABON"; + GB: "UNITED_KINGDOM"; + GD: "GRENADA"; + GF: "FRENCH_GUIANA"; + GH: "GHANA"; + GI: "GIBRALTAR"; + GK: "GUERNSEY"; + GL: "GREENLAND"; + GM: "GAMBIA"; + GN: "GUINEA"; + GO: "GEORGIA"; + GP: "GUADELOUPE"; + GQ: "EQUATORIAL_GUINEA"; + GR: "GREECE"; + GT: "GUATEMALA"; + GU: "GUAM"; + GW: "GUINEA_BISSAU"; + GY: "GUYANA"; + GZ: "GAZA"; + HK: "HONG_KONG"; + HM: "HEARD_AND_MCDONALD_ISLAND"; + HN: "HONDURAS"; + HS: "HONG_KONG_SAR"; + HT: "HAITI"; + HU: "HUNGARY"; + HV: "UPPER_VOLTA"; + ID: "INDONESIA"; + IE: "IRELAND"; + IL: "ISRAEL"; + IN: "INDIA"; + IO: "BRITISH_INDIAN_OCEAN_TERRITORY"; + IQ: "IRAQ"; + IR: "IRAN"; + IS: "ICELAND"; + IT: "ITALY"; + JM: "JAMAICA"; + JO: "JORDAN"; + JP: "JAPAN"; + JT: "JOHNSTON_ISLAND"; + KA: "CAMBODIA"; + KE: "KENYA"; + KG: "KIRGHIZIA"; + KI: "KIRIBATI"; + KM: "COMOROS"; + KN: "ST_KITTS_NEVIS"; + KP: "KOREA_NORTH"; + KR: "KOREA_SOUTH"; + KS: "KYRGYZSTAN"; + KV: "KOSOVO"; + KW: "KUWAIT"; + KY: "CAYMAN_ISLANDS"; + KZ: "KAZAKHSTAN"; + LA: "LAOS"; + LB: "LEBANON"; + LC: "ST_LUCIA"; + LH: "LITHUANIA"; + LI: "LIECHTENSTEIN"; + LK: "SRI_LANKA"; + LR: "LIBERIA"; + LS: "LESOTHO"; + LU: "LUXEMBOURG"; + LV: "LATVIA"; + LY: "LIBYA"; + MA: "MOROCCO"; + MB: "MACEDONIA"; + MC: "MONACO"; + MD: "MOLDOVA"; + ME: "MAYOTTE"; + MF: "MACAU_SAR"; + MG: "MADAGASCAR"; + MH: "MARSHALL_ISLANDS"; + MI: "MIDWAY_ISLANDS"; + MJ: "MONTENEGRO"; + ML: "MALI"; + MM: "ISLE_OF_MAN"; + MN: "MONGOLIA"; + MO: "MACAO"; + MQ: "MARTINIQUE"; + MR: "MAURITANIA"; + MS: "MONTSERRAT"; + MT: "MALTA"; + MU: "MAURITIUS"; + MV: "MALDIVES"; + MW: "MALAWI"; + MX: "MEXICO"; + MY: "MALAYSIA"; + MZ: "MOZAMBIQUE"; + NA: "NAMIBIA"; + NC: "NEW_CALEDONIA"; + NE: "NIGER"; + NF: "NORFOLK_ISLAND"; + NG: "NIGERIA"; + NI: "NICARAGUA"; + NL: "NETHERLANDS"; + NO: "NORWAY"; + NP: "NEPAL"; + NR: "NAURU"; + NU: "NIUE_ISLAND"; + NZ: "NEW_ZEALAND"; + OM: "OMAN"; + PA: "PANAMA"; + PB: "PALESTINE"; + PC: "PACIFIC_ISLAND_TRUST_TERRITORY"; + PE: "PERU"; + PF: "FRENCH_POLYNESIA"; + PG: "PAPUA_NEW_GUINEA"; + PH: "PHILIPPINES"; + PK: "PAKISTAN"; + PL: "POLAND"; + PM: "ST_PIERRE_AND_MIQUELON"; + PN: "PITCAIRN_ISLAND"; + PR: "PUERTO_RICO"; + PT: "PORTUGAL"; + PW: "PALAU"; + PY: "PARAGUAY"; + PZ: "PANAMA_CANAL_ZONE"; + QA: "QATAR"; + RE: "REUNION"; + RF: "RUSSIA"; + RO: "ROMANIA"; + RS: "SERBIA"; + RW: "RWANDA"; + SA: "SAUDI_ARABIA"; + SB: "SOLOMON_ISLANDS"; + SC: "SEYCHELLES"; + SD: "SUDAN"; + SE: "SWEDEN"; + SF: "SERBIA_MONTENEGRO"; + SG: "SINGAPORE"; + SH: "ST_HELENA"; + SI: "SLOVENIA"; + SK: "SLOVAK_REPUBLIC"; + SL: "SIERRA_LEONE"; + SM: "SAN_MARINO"; + SN: "SENEGAL"; + SO: "SOMALIA"; + SR: "SURINAME"; + ST: "SAO_TOME_AND_PRINCIPE"; + SV: "EL_SALVADOR"; + SY: "SYRIA"; + SZ: "SWAZILAND"; + TC: "TURKS_AND_CAICOS_ISLANDS"; + TD: "CHAD"; + TE: "TIMOR"; + TG: "TOGO"; + TH: "THAILAND"; + TI: "TAJIKISTAN"; + TK: "TOKELAU_ISLANDS"; + TM: "TURKMENISTAN"; + TN: "TUNISIA"; + TO: "TONGA"; + TP: "EAST_TIMOR"; + TR: "TURKEY"; + TT: "TRINIDAD_AND_TOBAGO"; + TV: "TUVALU"; + TW: "TAIWAN"; + TZ: "TANZANIA"; + UG: "UGANDA"; + UN: "UNKNOWN"; + UR: "UKRAINE"; + US: "UNITED_STATES"; + UY: "URUGUAY"; + UZ: "UZBEKISTAN"; + VA: "VATICAN_CITY_STATE"; + VC: "ST_VINCENT"; + VE: "VENEZUELA"; + VG: "BRITISH_VIRGIN_ISLANDS"; + VI: "US_VIRGIN_ISLANDS"; + VN: "VIETNAM"; + VU: "VANUATU"; + WF: "WALLIS_AND_FUTUNA"; + WK: "WAKE_ISLAND"; + WM: "SAMOA"; + XX: "OTHERS"; + YM: "YEMEN"; + YU: "YUGOSLAVIA"; + ZA: "SOUTH_AFRICA"; + ZM: "ZAMBIA"; + ZR: "ZAIRE"; + ZW: "ZIMBABWE"; } interface Desc2Code { - "ARUBA": "AB"; - "ANDORRA": "AD"; - "UNITED_ARAB_EMIRATES": "AE"; - "AFGHANISTAN": "AF"; - "ANTIGUA": "AG"; - "ANGUILLA": "AI"; - "ALBANIA": "AL"; - "ARMENIA": "AM"; - "NETHERLANDS_ANTILILLES": "AN"; - "ANGOLA": "AO"; - "ARGENTINA": "AR"; - "AMERICAN_SAMOA": "AS"; - "AUSTRIA": "AT"; - "AUSTRALIA": "AU"; - "AZERBAIJAN": "AZ"; - "BOSNIA_HERZEGOVINA": "BA"; - "BARBADOS": "BB"; - "BANGLADESH": "BD"; - "BELGIUM": "BE"; - "BURKINA_FASO": "BF"; - "BULGARIA": "BG"; - "BAHRAIN": "BH"; - "BURUNDI": "BI"; - "BENIN": "BJ"; - "BELARUS": "BL"; - "BERMUDA": "BM"; - "BRUNEI": "BN"; - "BOLIVIA": "BO"; - "BRITISH_ANTARCTIC_TERRITORY": "BQ"; - "BRAZIL": "BR"; - "BAHAMAS": "BS"; - "BHUTAN": "BT"; - "MYANMAR": "BU"; - "BOTSWANA": "BW"; - "BELIZE": "BZ"; - "CANADA": "CA"; - "CROATIA": "CB"; - "COCOS_KEELING_ISLAND": "CC"; - "CHANNEL_ISLANDS": "CD"; - "CENTRAL_AFRICAN_REPUBLIC": "CF"; - "CONGO": "CG"; - "SWITZERLAND": "CH"; - "IVORY_COAST": "CI"; - "COOK_ISLANDS": "CK"; - "CHILE": "CL"; - "CAMEROON": "CM"; - "CHINA": "CN"; - "COLOMBIA": "CO"; - "COSTA_RICA": "CR"; - "CANTON_AND_ENDERBURY_ISLANDS": "CT"; - "CUBA": "CU"; - "CAPE_VERDE": "CV"; - "CHRISTMAS_ISLAND": "CX"; - "CYPRUS": "CY"; - "CZECH_REPUBLIC": "CZ"; - "GERMANY": "DG"; - "DJIBOUTI": "DJ"; - "DENMARK": "DK"; - "DOMINICA": "DM"; - "DOMINICAN_REPUBLIC": "DO"; - "ALGERIA": "DZ"; - "ECUADOR": "EC"; - "EGYPT": "EG"; - "WESTERN_SAHARA": "EH"; - "ESTONIA": "EN"; - "ERITREA": "ER"; - "SPAIN": "ES"; - "ETHIOPIA": "ET"; - "FINLAND": "FI"; - "FIJI": "FJ"; - "FALKLAND_ISLANDS": "FK"; - "FAEROE_ISLANDS": "FO"; - "FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES": "FQ"; - "FRANCE": "FR"; - "GABON": "GA"; - "UNITED_KINGDOM": "GB"; - "GRENADA": "GD"; - "FRENCH_GUIANA": "GF"; - "GHANA": "GH"; - "GIBRALTAR": "GI"; - "GUERNSEY": "GK"; - "GREENLAND": "GL"; - "GAMBIA": "GM"; - "GUINEA": "GN"; - "GEORGIA": "GO"; - "GUADELOUPE": "GP"; - "EQUATORIAL_GUINEA": "GQ"; - "GREECE": "GR"; - "GUATEMALA": "GT"; - "GUAM": "GU"; - "GUINEA_BISSAU": "GW"; - "GUYANA": "GY"; - "GAZA": "GZ"; - "HONG_KONG": "HK"; - "HEARD_AND_MCDONALD_ISLAND": "HM"; - "HONDURAS": "HN"; - "HONG_KONG_SAR": "HS"; - "HAITI": "HT"; - "HUNGARY": "HU"; - "UPPER_VOLTA": "HV"; - "INDONESIA": "ID"; - "IRELAND": "IE"; - "ISRAEL": "IL"; - "INDIA": "IN"; - "BRITISH_INDIAN_OCEAN_TERRITORY": "IO"; - "IRAQ": "IQ"; - "IRAN": "IR"; - "ICELAND": "IS"; - "ITALY": "IT"; - "JAMAICA": "JM"; - "JORDAN": "JO"; - "JAPAN": "JP"; - "JOHNSTON_ISLAND": "JT"; - "CAMBODIA": "KA"; - "KENYA": "KE"; - "KIRGHIZIA": "KG"; - "KIRIBATI": "KI"; - "COMOROS": "KM"; - "ST_KITTS_NEVIS": "KN"; - "KOREA_NORTH": "KP"; - "KOREA_SOUTH": "KR"; - "KYRGYZSTAN": "KS"; - "KOSOVO": "KV"; - "KUWAIT": "KW"; - "CAYMAN_ISLANDS": "KY"; - "KAZAKHSTAN": "KZ"; - "LAOS": "LA"; - "LEBANON": "LB"; - "ST_LUCIA": "LC"; - "LITHUANIA": "LH"; - "LIECHTENSTEIN": "LI"; - "SRI_LANKA": "LK"; - "LIBERIA": "LR"; - "LESOTHO": "LS"; - "LUXEMBOURG": "LU"; - "LATVIA": "LV"; - "LIBYA": "LY"; - "MOROCCO": "MA"; - "MACEDONIA": "MB"; - "MONACO": "MC"; - "MOLDOVA": "MD"; - "MAYOTTE": "ME"; - "MACAU_SAR": "MF"; - "MADAGASCAR": "MG"; - "MARSHALL_ISLANDS": "MH"; - "MIDWAY_ISLANDS": "MI"; - "MONTENEGRO": "MJ"; - "MALI": "ML"; - "ISLE_OF_MAN": "MM"; - "MONGOLIA": "MN"; - "MACAO": "MO"; - "MARTINIQUE": "MQ"; - "MAURITANIA": "MR"; - "MONTSERRAT": "MS"; - "MALTA": "MT"; - "MAURITIUS": "MU"; - "MALDIVES": "MV"; - "MALAWI": "MW"; - "MEXICO": "MX"; - "MALAYSIA": "MY"; - "MOZAMBIQUE": "MZ"; - "NAMIBIA": "NA"; - "NEW_CALEDONIA": "NC"; - "NIGER": "NE"; - "NORFOLK_ISLAND": "NF"; - "NIGERIA": "NG"; - "NICARAGUA": "NI"; - "NETHERLANDS": "NL"; - "NORWAY": "NO"; - "NEPAL": "NP"; - "NAURU": "NR"; - "NIUE_ISLAND": "NU"; - "NEW_ZEALAND": "NZ"; - "OMAN": "OM"; - "PANAMA": "PA"; - "PALESTINE": "PB"; - "PACIFIC_ISLAND_TRUST_TERRITORY": "PC"; - "PERU": "PE"; - "FRENCH_POLYNESIA": "PF"; - "PAPUA_NEW_GUINEA": "PG"; - "PHILIPPINES": "PH"; - "PAKISTAN": "PK"; - "POLAND": "PL"; - "ST_PIERRE_AND_MIQUELON": "PM"; - "PITCAIRN_ISLAND": "PN"; - "PUERTO_RICO": "PR"; - "PORTUGAL": "PT"; - "PALAU": "PW"; - "PARAGUAY": "PY"; - "PANAMA_CANAL_ZONE": "PZ"; - "QATAR": "QA"; - "REUNION": "RE"; - "RUSSIA": "RF"; - "ROMANIA": "RO"; - "SERBIA": "RS"; - "RWANDA": "RW"; - "SAUDI_ARABIA": "SA"; - "SOLOMON_ISLANDS": "SB"; - "SEYCHELLES": "SC"; - "SUDAN": "SD"; - "SWEDEN": "SE"; - "SERBIA_MONTENEGRO": "SF"; - "SINGAPORE": "SG"; - "ST_HELENA": "SH"; - "SLOVENIA": "SI"; - "SLOVAK_REPUBLIC": "SK"; - "SIERRA_LEONE": "SL"; - "SAN_MARINO": "SM"; - "SENEGAL": "SN"; - "SOMALIA": "SO"; - "SURINAME": "SR"; - "SAO_TOME_AND_PRINCIPE": "ST"; - "EL_SALVADOR": "SV"; - "SYRIA": "SY"; - "SWAZILAND": "SZ"; - "TURKS_AND_CAICOS_ISLANDS": "TC"; - "CHAD": "TD"; - "TIMOR": "TE"; - "TOGO": "TG"; - "THAILAND": "TH"; - "TAJIKISTAN": "TI"; - "TOKELAU_ISLANDS": "TK"; - "TURKMENISTAN": "TM"; - "TUNISIA": "TN"; - "TONGA": "TO"; - "EAST_TIMOR": "TP"; - "TURKEY": "TR"; - "TRINIDAD_AND_TOBAGO": "TT"; - "TUVALU": "TV"; - "TAIWAN": "TW"; - "TANZANIA": "TZ"; - "UGANDA": "UG"; - "UNKNOWN": "UN"; - "UKRAINE": "UR"; - "UNITED_STATES": "US"; - "URUGUAY": "UY"; - "UZBEKISTAN": "UZ"; - "VATICAN_CITY_STATE": "VA"; - "ST_VINCENT": "VC"; - "VENEZUELA": "VE"; - "BRITISH_VIRGIN_ISLANDS": "VG"; - "US_VIRGIN_ISLANDS": "VI"; - "VIETNAM": "VN"; - "VANUATU": "VU"; - "WALLIS_AND_FUTUNA": "WF"; - "WAKE_ISLAND": "WK"; - "SAMOA": "WM"; - "OTHERS": "XX"; - "YEMEN": "YM"; - "YUGOSLAVIA": "YU"; - "SOUTH_AFRICA": "ZA"; - "ZAMBIA": "ZM"; - "ZAIRE": "ZR"; - "ZIMBABWE": "ZW"; + ARUBA: "AB"; + ANDORRA: "AD"; + UNITED_ARAB_EMIRATES: "AE"; + AFGHANISTAN: "AF"; + ANTIGUA: "AG"; + ANGUILLA: "AI"; + ALBANIA: "AL"; + ARMENIA: "AM"; + NETHERLANDS_ANTILILLES: "AN"; + ANGOLA: "AO"; + ARGENTINA: "AR"; + AMERICAN_SAMOA: "AS"; + AUSTRIA: "AT"; + AUSTRALIA: "AU"; + AZERBAIJAN: "AZ"; + BOSNIA_HERZEGOVINA: "BA"; + BARBADOS: "BB"; + BANGLADESH: "BD"; + BELGIUM: "BE"; + BURKINA_FASO: "BF"; + BULGARIA: "BG"; + BAHRAIN: "BH"; + BURUNDI: "BI"; + BENIN: "BJ"; + BELARUS: "BL"; + BERMUDA: "BM"; + BRUNEI: "BN"; + BOLIVIA: "BO"; + BRITISH_ANTARCTIC_TERRITORY: "BQ"; + BRAZIL: "BR"; + BAHAMAS: "BS"; + BHUTAN: "BT"; + MYANMAR: "BU"; + BOTSWANA: "BW"; + BELIZE: "BZ"; + CANADA: "CA"; + CROATIA: "CB"; + COCOS_KEELING_ISLAND: "CC"; + CHANNEL_ISLANDS: "CD"; + CENTRAL_AFRICAN_REPUBLIC: "CF"; + CONGO: "CG"; + SWITZERLAND: "CH"; + IVORY_COAST: "CI"; + COOK_ISLANDS: "CK"; + CHILE: "CL"; + CAMEROON: "CM"; + CHINA: "CN"; + COLOMBIA: "CO"; + COSTA_RICA: "CR"; + CANTON_AND_ENDERBURY_ISLANDS: "CT"; + CUBA: "CU"; + CAPE_VERDE: "CV"; + CHRISTMAS_ISLAND: "CX"; + CYPRUS: "CY"; + CZECH_REPUBLIC: "CZ"; + GERMANY: "DG"; + DJIBOUTI: "DJ"; + DENMARK: "DK"; + DOMINICA: "DM"; + DOMINICAN_REPUBLIC: "DO"; + ALGERIA: "DZ"; + ECUADOR: "EC"; + EGYPT: "EG"; + WESTERN_SAHARA: "EH"; + ESTONIA: "EN"; + ERITREA: "ER"; + SPAIN: "ES"; + ETHIOPIA: "ET"; + FINLAND: "FI"; + FIJI: "FJ"; + FALKLAND_ISLANDS: "FK"; + FAEROE_ISLANDS: "FO"; + FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES: "FQ"; + FRANCE: "FR"; + GABON: "GA"; + UNITED_KINGDOM: "GB"; + GRENADA: "GD"; + FRENCH_GUIANA: "GF"; + GHANA: "GH"; + GIBRALTAR: "GI"; + GUERNSEY: "GK"; + GREENLAND: "GL"; + GAMBIA: "GM"; + GUINEA: "GN"; + GEORGIA: "GO"; + GUADELOUPE: "GP"; + EQUATORIAL_GUINEA: "GQ"; + GREECE: "GR"; + GUATEMALA: "GT"; + GUAM: "GU"; + GUINEA_BISSAU: "GW"; + GUYANA: "GY"; + GAZA: "GZ"; + HONG_KONG: "HK"; + HEARD_AND_MCDONALD_ISLAND: "HM"; + HONDURAS: "HN"; + HONG_KONG_SAR: "HS"; + HAITI: "HT"; + HUNGARY: "HU"; + UPPER_VOLTA: "HV"; + INDONESIA: "ID"; + IRELAND: "IE"; + ISRAEL: "IL"; + INDIA: "IN"; + BRITISH_INDIAN_OCEAN_TERRITORY: "IO"; + IRAQ: "IQ"; + IRAN: "IR"; + ICELAND: "IS"; + ITALY: "IT"; + JAMAICA: "JM"; + JORDAN: "JO"; + JAPAN: "JP"; + JOHNSTON_ISLAND: "JT"; + CAMBODIA: "KA"; + KENYA: "KE"; + KIRGHIZIA: "KG"; + KIRIBATI: "KI"; + COMOROS: "KM"; + ST_KITTS_NEVIS: "KN"; + KOREA_NORTH: "KP"; + KOREA_SOUTH: "KR"; + KYRGYZSTAN: "KS"; + KOSOVO: "KV"; + KUWAIT: "KW"; + CAYMAN_ISLANDS: "KY"; + KAZAKHSTAN: "KZ"; + LAOS: "LA"; + LEBANON: "LB"; + ST_LUCIA: "LC"; + LITHUANIA: "LH"; + LIECHTENSTEIN: "LI"; + SRI_LANKA: "LK"; + LIBERIA: "LR"; + LESOTHO: "LS"; + LUXEMBOURG: "LU"; + LATVIA: "LV"; + LIBYA: "LY"; + MOROCCO: "MA"; + MACEDONIA: "MB"; + MONACO: "MC"; + MOLDOVA: "MD"; + MAYOTTE: "ME"; + MACAU_SAR: "MF"; + MADAGASCAR: "MG"; + MARSHALL_ISLANDS: "MH"; + MIDWAY_ISLANDS: "MI"; + MONTENEGRO: "MJ"; + MALI: "ML"; + ISLE_OF_MAN: "MM"; + MONGOLIA: "MN"; + MACAO: "MO"; + MARTINIQUE: "MQ"; + MAURITANIA: "MR"; + MONTSERRAT: "MS"; + MALTA: "MT"; + MAURITIUS: "MU"; + MALDIVES: "MV"; + MALAWI: "MW"; + MEXICO: "MX"; + MALAYSIA: "MY"; + MOZAMBIQUE: "MZ"; + NAMIBIA: "NA"; + NEW_CALEDONIA: "NC"; + NIGER: "NE"; + NORFOLK_ISLAND: "NF"; + NIGERIA: "NG"; + NICARAGUA: "NI"; + NETHERLANDS: "NL"; + NORWAY: "NO"; + NEPAL: "NP"; + NAURU: "NR"; + NIUE_ISLAND: "NU"; + NEW_ZEALAND: "NZ"; + OMAN: "OM"; + PANAMA: "PA"; + PALESTINE: "PB"; + PACIFIC_ISLAND_TRUST_TERRITORY: "PC"; + PERU: "PE"; + FRENCH_POLYNESIA: "PF"; + PAPUA_NEW_GUINEA: "PG"; + PHILIPPINES: "PH"; + PAKISTAN: "PK"; + POLAND: "PL"; + ST_PIERRE_AND_MIQUELON: "PM"; + PITCAIRN_ISLAND: "PN"; + PUERTO_RICO: "PR"; + PORTUGAL: "PT"; + PALAU: "PW"; + PARAGUAY: "PY"; + PANAMA_CANAL_ZONE: "PZ"; + QATAR: "QA"; + REUNION: "RE"; + RUSSIA: "RF"; + ROMANIA: "RO"; + SERBIA: "RS"; + RWANDA: "RW"; + SAUDI_ARABIA: "SA"; + SOLOMON_ISLANDS: "SB"; + SEYCHELLES: "SC"; + SUDAN: "SD"; + SWEDEN: "SE"; + SERBIA_MONTENEGRO: "SF"; + SINGAPORE: "SG"; + ST_HELENA: "SH"; + SLOVENIA: "SI"; + SLOVAK_REPUBLIC: "SK"; + SIERRA_LEONE: "SL"; + SAN_MARINO: "SM"; + SENEGAL: "SN"; + SOMALIA: "SO"; + SURINAME: "SR"; + SAO_TOME_AND_PRINCIPE: "ST"; + EL_SALVADOR: "SV"; + SYRIA: "SY"; + SWAZILAND: "SZ"; + TURKS_AND_CAICOS_ISLANDS: "TC"; + CHAD: "TD"; + TIMOR: "TE"; + TOGO: "TG"; + THAILAND: "TH"; + TAJIKISTAN: "TI"; + TOKELAU_ISLANDS: "TK"; + TURKMENISTAN: "TM"; + TUNISIA: "TN"; + TONGA: "TO"; + EAST_TIMOR: "TP"; + TURKEY: "TR"; + TRINIDAD_AND_TOBAGO: "TT"; + TUVALU: "TV"; + TAIWAN: "TW"; + TANZANIA: "TZ"; + UGANDA: "UG"; + UNKNOWN: "UN"; + UKRAINE: "UR"; + UNITED_STATES: "US"; + URUGUAY: "UY"; + UZBEKISTAN: "UZ"; + VATICAN_CITY_STATE: "VA"; + ST_VINCENT: "VC"; + VENEZUELA: "VE"; + BRITISH_VIRGIN_ISLANDS: "VG"; + US_VIRGIN_ISLANDS: "VI"; + VIETNAM: "VN"; + VANUATU: "VU"; + WALLIS_AND_FUTUNA: "WF"; + WAKE_ISLAND: "WK"; + SAMOA: "WM"; + OTHERS: "XX"; + YEMEN: "YM"; + YUGOSLAVIA: "YU"; + SOUTH_AFRICA: "ZA"; + ZAMBIA: "ZM"; + ZAIRE: "ZR"; + ZIMBABWE: "ZW"; } const codeToDesc: Code2Desc = { - "AB": "ARUBA", - "AD": "ANDORRA", - "AE": "UNITED_ARAB_EMIRATES", - "AF": "AFGHANISTAN", - "AG": "ANTIGUA", - "AI": "ANGUILLA", - "AL": "ALBANIA", - "AM": "ARMENIA", - "AN": "NETHERLANDS_ANTILILLES", - "AO": "ANGOLA", - "AR": "ARGENTINA", - "AS": "AMERICAN_SAMOA", - "AT": "AUSTRIA", - "AU": "AUSTRALIA", - "AZ": "AZERBAIJAN", - "BA": "BOSNIA_HERZEGOVINA", - "BB": "BARBADOS", - "BD": "BANGLADESH", - "BE": "BELGIUM", - "BF": "BURKINA_FASO", - "BG": "BULGARIA", - "BH": "BAHRAIN", - "BI": "BURUNDI", - "BJ": "BENIN", - "BL": "BELARUS", - "BM": "BERMUDA", - "BN": "BRUNEI", - "BO": "BOLIVIA", - "BQ": "BRITISH_ANTARCTIC_TERRITORY", - "BR": "BRAZIL", - "BS": "BAHAMAS", - "BT": "BHUTAN", - "BU": "MYANMAR", - "BW": "BOTSWANA", - "BZ": "BELIZE", - "CA": "CANADA", - "CB": "CROATIA", - "CC": "COCOS_KEELING_ISLAND", - "CD": "CHANNEL_ISLANDS", - "CF": "CENTRAL_AFRICAN_REPUBLIC", - "CG": "CONGO", - "CH": "SWITZERLAND", - "CI": "IVORY_COAST", - "CK": "COOK_ISLANDS", - "CL": "CHILE", - "CM": "CAMEROON", - "CN": "CHINA", - "CO": "COLOMBIA", - "CR": "COSTA_RICA", - "CT": "CANTON_AND_ENDERBURY_ISLANDS", - "CU": "CUBA", - "CV": "CAPE_VERDE", - "CX": "CHRISTMAS_ISLAND", - "CY": "CYPRUS", - "CZ": "CZECH_REPUBLIC", - "DG": "GERMANY", - "DJ": "DJIBOUTI", - "DK": "DENMARK", - "DM": "DOMINICA", - "DO": "DOMINICAN_REPUBLIC", - "DZ": "ALGERIA", - "EC": "ECUADOR", - "EG": "EGYPT", - "EH": "WESTERN_SAHARA", - "EN": "ESTONIA", - "ER": "ERITREA", - "ES": "SPAIN", - "ET": "ETHIOPIA", - "FI": "FINLAND", - "FJ": "FIJI", - "FK": "FALKLAND_ISLANDS", - "FO": "FAEROE_ISLANDS", - "FQ": "FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES", - "FR": "FRANCE", - "GA": "GABON", - "GB": "UNITED_KINGDOM", - "GD": "GRENADA", - "GF": "FRENCH_GUIANA", - "GH": "GHANA", - "GI": "GIBRALTAR", - "GK": "GUERNSEY", - "GL": "GREENLAND", - "GM": "GAMBIA", - "GN": "GUINEA", - "GO": "GEORGIA", - "GP": "GUADELOUPE", - "GQ": "EQUATORIAL_GUINEA", - "GR": "GREECE", - "GT": "GUATEMALA", - "GU": "GUAM", - "GW": "GUINEA_BISSAU", - "GY": "GUYANA", - "GZ": "GAZA", - "HK": "HONG_KONG", - "HM": "HEARD_AND_MCDONALD_ISLAND", - "HN": "HONDURAS", - "HS": "HONG_KONG_SAR", - "HT": "HAITI", - "HU": "HUNGARY", - "HV": "UPPER_VOLTA", - "ID": "INDONESIA", - "IE": "IRELAND", - "IL": "ISRAEL", - "IN": "INDIA", - "IO": "BRITISH_INDIAN_OCEAN_TERRITORY", - "IQ": "IRAQ", - "IR": "IRAN", - "IS": "ICELAND", - "IT": "ITALY", - "JM": "JAMAICA", - "JO": "JORDAN", - "JP": "JAPAN", - "JT": "JOHNSTON_ISLAND", - "KA": "CAMBODIA", - "KE": "KENYA", - "KG": "KIRGHIZIA", - "KI": "KIRIBATI", - "KM": "COMOROS", - "KN": "ST_KITTS_NEVIS", - "KP": "KOREA_NORTH", - "KR": "KOREA_SOUTH", - "KS": "KYRGYZSTAN", - "KV": "KOSOVO", - "KW": "KUWAIT", - "KY": "CAYMAN_ISLANDS", - "KZ": "KAZAKHSTAN", - "LA": "LAOS", - "LB": "LEBANON", - "LC": "ST_LUCIA", - "LH": "LITHUANIA", - "LI": "LIECHTENSTEIN", - "LK": "SRI_LANKA", - "LR": "LIBERIA", - "LS": "LESOTHO", - "LU": "LUXEMBOURG", - "LV": "LATVIA", - "LY": "LIBYA", - "MA": "MOROCCO", - "MB": "MACEDONIA", - "MC": "MONACO", - "MD": "MOLDOVA", - "ME": "MAYOTTE", - "MF": "MACAU_SAR", - "MG": "MADAGASCAR", - "MH": "MARSHALL_ISLANDS", - "MI": "MIDWAY_ISLANDS", - "MJ": "MONTENEGRO", - "ML": "MALI", - "MM": "ISLE_OF_MAN", - "MN": "MONGOLIA", - "MO": "MACAO", - "MQ": "MARTINIQUE", - "MR": "MAURITANIA", - "MS": "MONTSERRAT", - "MT": "MALTA", - "MU": "MAURITIUS", - "MV": "MALDIVES", - "MW": "MALAWI", - "MX": "MEXICO", - "MY": "MALAYSIA", - "MZ": "MOZAMBIQUE", - "NA": "NAMIBIA", - "NC": "NEW_CALEDONIA", - "NE": "NIGER", - "NF": "NORFOLK_ISLAND", - "NG": "NIGERIA", - "NI": "NICARAGUA", - "NL": "NETHERLANDS", - "NO": "NORWAY", - "NP": "NEPAL", - "NR": "NAURU", - "NU": "NIUE_ISLAND", - "NZ": "NEW_ZEALAND", - "OM": "OMAN", - "PA": "PANAMA", - "PB": "PALESTINE", - "PC": "PACIFIC_ISLAND_TRUST_TERRITORY", - "PE": "PERU", - "PF": "FRENCH_POLYNESIA", - "PG": "PAPUA_NEW_GUINEA", - "PH": "PHILIPPINES", - "PK": "PAKISTAN", - "PL": "POLAND", - "PM": "ST_PIERRE_AND_MIQUELON", - "PN": "PITCAIRN_ISLAND", - "PR": "PUERTO_RICO", - "PT": "PORTUGAL", - "PW": "PALAU", - "PY": "PARAGUAY", - "PZ": "PANAMA_CANAL_ZONE", - "QA": "QATAR", - "RE": "REUNION", - "RF": "RUSSIA", - "RO": "ROMANIA", - "RS": "SERBIA", - "RW": "RWANDA", - "SA": "SAUDI_ARABIA", - "SB": "SOLOMON_ISLANDS", - "SC": "SEYCHELLES", - "SD": "SUDAN", - "SE": "SWEDEN", - "SF": "SERBIA_MONTENEGRO", - "SG": "SINGAPORE", - "SH": "ST_HELENA", - "SI": "SLOVENIA", - "SK": "SLOVAK_REPUBLIC", - "SL": "SIERRA_LEONE", - "SM": "SAN_MARINO", - "SN": "SENEGAL", - "SO": "SOMALIA", - "SR": "SURINAME", - "ST": "SAO_TOME_AND_PRINCIPE", - "SV": "EL_SALVADOR", - "SY": "SYRIA", - "SZ": "SWAZILAND", - "TC": "TURKS_AND_CAICOS_ISLANDS", - "TD": "CHAD", - "TE": "TIMOR", - "TG": "TOGO", - "TH": "THAILAND", - "TI": "TAJIKISTAN", - "TK": "TOKELAU_ISLANDS", - "TM": "TURKMENISTAN", - "TN": "TUNISIA", - "TO": "TONGA", - "TP": "EAST_TIMOR", - "TR": "TURKEY", - "TT": "TRINIDAD_AND_TOBAGO", - "TV": "TUVALU", - "TW": "TAIWAN", - "TZ": "TANZANIA", - "UG": "UGANDA", - "UN": "UNKNOWN", - "UR": "UKRAINE", - "US": "UNITED_STATES", - "UY": "URUGUAY", - "UZ": "UZBEKISTAN", - "VA": "VATICAN_CITY_STATE", - "VC": "ST_VINCENT", - "VE": "VENEZUELA", - "VG": "BRITISH_VIRGIN_ISLANDS", - "VI": "US_VIRGIN_ISLANDS", - "VN": "VIETNAM", - "VU": "VANUATU", - "WF": "WALLIS_AND_FUTUNA", - "WK": "WAKE_ISLAND", - "WM": "SAMOA", - "XX": "OTHERS", - "YM": "YEMEN", - "YU": "YUGOSLAVIA", - "ZA": "SOUTH_AFRICA", - "ZM": "ZAMBIA", - "ZR": "ZAIRE", - "ZW": "ZIMBABWE", + AB: "ARUBA", + AD: "ANDORRA", + AE: "UNITED_ARAB_EMIRATES", + AF: "AFGHANISTAN", + AG: "ANTIGUA", + AI: "ANGUILLA", + AL: "ALBANIA", + AM: "ARMENIA", + AN: "NETHERLANDS_ANTILILLES", + AO: "ANGOLA", + AR: "ARGENTINA", + AS: "AMERICAN_SAMOA", + AT: "AUSTRIA", + AU: "AUSTRALIA", + AZ: "AZERBAIJAN", + BA: "BOSNIA_HERZEGOVINA", + BB: "BARBADOS", + BD: "BANGLADESH", + BE: "BELGIUM", + BF: "BURKINA_FASO", + BG: "BULGARIA", + BH: "BAHRAIN", + BI: "BURUNDI", + BJ: "BENIN", + BL: "BELARUS", + BM: "BERMUDA", + BN: "BRUNEI", + BO: "BOLIVIA", + BQ: "BRITISH_ANTARCTIC_TERRITORY", + BR: "BRAZIL", + BS: "BAHAMAS", + BT: "BHUTAN", + BU: "MYANMAR", + BW: "BOTSWANA", + BZ: "BELIZE", + CA: "CANADA", + CB: "CROATIA", + CC: "COCOS_KEELING_ISLAND", + CD: "CHANNEL_ISLANDS", + CF: "CENTRAL_AFRICAN_REPUBLIC", + CG: "CONGO", + CH: "SWITZERLAND", + CI: "IVORY_COAST", + CK: "COOK_ISLANDS", + CL: "CHILE", + CM: "CAMEROON", + CN: "CHINA", + CO: "COLOMBIA", + CR: "COSTA_RICA", + CT: "CANTON_AND_ENDERBURY_ISLANDS", + CU: "CUBA", + CV: "CAPE_VERDE", + CX: "CHRISTMAS_ISLAND", + CY: "CYPRUS", + CZ: "CZECH_REPUBLIC", + DG: "GERMANY", + DJ: "DJIBOUTI", + DK: "DENMARK", + DM: "DOMINICA", + DO: "DOMINICAN_REPUBLIC", + DZ: "ALGERIA", + EC: "ECUADOR", + EG: "EGYPT", + EH: "WESTERN_SAHARA", + EN: "ESTONIA", + ER: "ERITREA", + ES: "SPAIN", + ET: "ETHIOPIA", + FI: "FINLAND", + FJ: "FIJI", + FK: "FALKLAND_ISLANDS", + FO: "FAEROE_ISLANDS", + FQ: "FRENCH_SOUTHERN_AND_ANTARCTIC_TERRITORIES", + FR: "FRANCE", + GA: "GABON", + GB: "UNITED_KINGDOM", + GD: "GRENADA", + GF: "FRENCH_GUIANA", + GH: "GHANA", + GI: "GIBRALTAR", + GK: "GUERNSEY", + GL: "GREENLAND", + GM: "GAMBIA", + GN: "GUINEA", + GO: "GEORGIA", + GP: "GUADELOUPE", + GQ: "EQUATORIAL_GUINEA", + GR: "GREECE", + GT: "GUATEMALA", + GU: "GUAM", + GW: "GUINEA_BISSAU", + GY: "GUYANA", + GZ: "GAZA", + HK: "HONG_KONG", + HM: "HEARD_AND_MCDONALD_ISLAND", + HN: "HONDURAS", + HS: "HONG_KONG_SAR", + HT: "HAITI", + HU: "HUNGARY", + HV: "UPPER_VOLTA", + ID: "INDONESIA", + IE: "IRELAND", + IL: "ISRAEL", + IN: "INDIA", + IO: "BRITISH_INDIAN_OCEAN_TERRITORY", + IQ: "IRAQ", + IR: "IRAN", + IS: "ICELAND", + IT: "ITALY", + JM: "JAMAICA", + JO: "JORDAN", + JP: "JAPAN", + JT: "JOHNSTON_ISLAND", + KA: "CAMBODIA", + KE: "KENYA", + KG: "KIRGHIZIA", + KI: "KIRIBATI", + KM: "COMOROS", + KN: "ST_KITTS_NEVIS", + KP: "KOREA_NORTH", + KR: "KOREA_SOUTH", + KS: "KYRGYZSTAN", + KV: "KOSOVO", + KW: "KUWAIT", + KY: "CAYMAN_ISLANDS", + KZ: "KAZAKHSTAN", + LA: "LAOS", + LB: "LEBANON", + LC: "ST_LUCIA", + LH: "LITHUANIA", + LI: "LIECHTENSTEIN", + LK: "SRI_LANKA", + LR: "LIBERIA", + LS: "LESOTHO", + LU: "LUXEMBOURG", + LV: "LATVIA", + LY: "LIBYA", + MA: "MOROCCO", + MB: "MACEDONIA", + MC: "MONACO", + MD: "MOLDOVA", + ME: "MAYOTTE", + MF: "MACAU_SAR", + MG: "MADAGASCAR", + MH: "MARSHALL_ISLANDS", + MI: "MIDWAY_ISLANDS", + MJ: "MONTENEGRO", + ML: "MALI", + MM: "ISLE_OF_MAN", + MN: "MONGOLIA", + MO: "MACAO", + MQ: "MARTINIQUE", + MR: "MAURITANIA", + MS: "MONTSERRAT", + MT: "MALTA", + MU: "MAURITIUS", + MV: "MALDIVES", + MW: "MALAWI", + MX: "MEXICO", + MY: "MALAYSIA", + MZ: "MOZAMBIQUE", + NA: "NAMIBIA", + NC: "NEW_CALEDONIA", + NE: "NIGER", + NF: "NORFOLK_ISLAND", + NG: "NIGERIA", + NI: "NICARAGUA", + NL: "NETHERLANDS", + NO: "NORWAY", + NP: "NEPAL", + NR: "NAURU", + NU: "NIUE_ISLAND", + NZ: "NEW_ZEALAND", + OM: "OMAN", + PA: "PANAMA", + PB: "PALESTINE", + PC: "PACIFIC_ISLAND_TRUST_TERRITORY", + PE: "PERU", + PF: "FRENCH_POLYNESIA", + PG: "PAPUA_NEW_GUINEA", + PH: "PHILIPPINES", + PK: "PAKISTAN", + PL: "POLAND", + PM: "ST_PIERRE_AND_MIQUELON", + PN: "PITCAIRN_ISLAND", + PR: "PUERTO_RICO", + PT: "PORTUGAL", + PW: "PALAU", + PY: "PARAGUAY", + PZ: "PANAMA_CANAL_ZONE", + QA: "QATAR", + RE: "REUNION", + RF: "RUSSIA", + RO: "ROMANIA", + RS: "SERBIA", + RW: "RWANDA", + SA: "SAUDI_ARABIA", + SB: "SOLOMON_ISLANDS", + SC: "SEYCHELLES", + SD: "SUDAN", + SE: "SWEDEN", + SF: "SERBIA_MONTENEGRO", + SG: "SINGAPORE", + SH: "ST_HELENA", + SI: "SLOVENIA", + SK: "SLOVAK_REPUBLIC", + SL: "SIERRA_LEONE", + SM: "SAN_MARINO", + SN: "SENEGAL", + SO: "SOMALIA", + SR: "SURINAME", + ST: "SAO_TOME_AND_PRINCIPE", + SV: "EL_SALVADOR", + SY: "SYRIA", + SZ: "SWAZILAND", + TC: "TURKS_AND_CAICOS_ISLANDS", + TD: "CHAD", + TE: "TIMOR", + TG: "TOGO", + TH: "THAILAND", + TI: "TAJIKISTAN", + TK: "TOKELAU_ISLANDS", + TM: "TURKMENISTAN", + TN: "TUNISIA", + TO: "TONGA", + TP: "EAST_TIMOR", + TR: "TURKEY", + TT: "TRINIDAD_AND_TOBAGO", + TV: "TUVALU", + TW: "TAIWAN", + TZ: "TANZANIA", + UG: "UGANDA", + UN: "UNKNOWN", + UR: "UKRAINE", + US: "UNITED_STATES", + UY: "URUGUAY", + UZ: "UZBEKISTAN", + VA: "VATICAN_CITY_STATE", + VC: "ST_VINCENT", + VE: "VENEZUELA", + VG: "BRITISH_VIRGIN_ISLANDS", + VI: "US_VIRGIN_ISLANDS", + VN: "VIETNAM", + VU: "VANUATU", + WF: "WALLIS_AND_FUTUNA", + WK: "WAKE_ISLAND", + WM: "SAMOA", + XX: "OTHERS", + YM: "YEMEN", + YU: "YUGOSLAVIA", + ZA: "SOUTH_AFRICA", + ZM: "ZAMBIA", + ZR: "ZAIRE", + ZW: "ZIMBABWE", }; export const map = generateTwoWayMap(codeToDesc); @@ -4173,20 +4177,20 @@ export namespace countryofmarriage { export namespace sex { interface Code2Desc { - "F": "Female"; - "M": "Male"; - "U": "Unknown"; + F: "Female"; + M: "Male"; + U: "Unknown"; } interface Desc2Code { - "Female": "F"; - "Male": "M"; - "Unknown": "U"; + Female: "F"; + Male: "M"; + Unknown: "U"; } const codeToDesc: Code2Desc = { - "F": "Female", - "M": "Male", - "U": "Unknown", + F: "Female", + M: "Male", + U: "Unknown", }; export const map = generateTwoWayMap(codeToDesc); @@ -4194,84 +4198,82 @@ export namespace sex { export namespace comstatus { interface Code2Desc { - "Y": "Eligible"; - "N": "Not Eligible"; + Y: "Eligible"; + N: "Not Eligible"; } interface Desc2Code { - "Eligible": "Y"; + Eligible: "Y"; "Not Eligible": "N"; } const codeToDesc: Code2Desc = { - "Y": "Eligible", - "N": "Not Eligible", + Y: "Eligible", + N: "Not Eligible", }; export const map = generateTwoWayMap(codeToDesc); } export namespace lifestatus { - interface Code2Desc { - "A": "ALIVE"; - "D": "DECEASED"; + A: "ALIVE"; + D: "DECEASED"; } interface Desc2Code { - "ALIVE": "A"; - "DECEASED": "D"; + ALIVE: "A"; + DECEASED: "D"; } const codeToDesc: Code2Desc = { - "A": "ALIVE", - "D": "DECEASED", + A: "ALIVE", + D: "DECEASED", }; export const map = generateTwoWayMap(codeToDesc); - } export namespace validity { interface Code2Desc { - "V": "Valid"; - "E": "Expired"; - "I": "Invalid"; - "N": "Not Holding PDL"; + V: "Valid"; + E: "Expired"; + I: "Invalid"; + N: "Not Holding PDL"; } interface Desc2Code { - "Valid": "V"; - "Expired": "E"; - "Invalid": "I"; + Valid: "V"; + Expired: "E"; + Invalid: "I"; "Not Holding PDL": "N"; } const codeToDesc: Code2Desc = { - "V": "Valid", - "E": "Expired", - "I": "Invalid", - "N": "Not Holding PDL", + V: "Valid", + E: "Expired", + I: "Invalid", + N: "Not Holding PDL", }; export const map = generateTwoWayMap(codeToDesc); } export namespace qdlValidity { interface Code2Desc { - "V": "Valid"; - "E": "Expired"; - "I": "Invalid"; - "N": "Not Holding QDL"; + V: "Valid"; + E: "Expired"; + I: "Invalid"; + N: "Not Holding QDL"; } interface Desc2Code { - "Valid": "V"; - "Expired": "E"; - "Invalid": "I"; + Valid: "V"; + Expired: "E"; + Invalid: "I"; "Not Holding QDL": "N"; } const codeToDesc: Code2Desc = { - "V": "Valid", - "E": "Expired", - "I": "Invalid", - "N": "Not Holding QDL", + V: "Valid", + E: "Expired", + I: "Invalid", + N: "Not Holding QDL", }; export const map = generateTwoWayMap(codeToDesc); } @@ -4310,26 +4312,26 @@ export namespace hdbtype { export namespace residentialstatus { interface Code2Desc { - "A": "Alien"; - "C": "Citizen"; - "P": "PR"; - "U": "Unknown"; - "N": "NOT APPLICABLE"; + A: "Alien"; + C: "Citizen"; + P: "PR"; + U: "Unknown"; + N: "NOT APPLICABLE"; } interface Desc2Code { - "Alien": "A"; - "Citizen": "C"; - "PR": "P"; - "Unknown": "U"; + Alien: "A"; + Citizen: "C"; + PR: "P"; + Unknown: "U"; "NOT APPLICABLE": "N"; } const codeToDesc: Code2Desc = { - "A": "Alien", - "C": "Citizen", - "P": "PR", - "U": "Unknown", - "N": "NOT APPLICABLE", + A: "Alien", + C: "Citizen", + P: "PR", + U: "Unknown", + N: "NOT APPLICABLE", }; export const map = generateTwoWayMap(codeToDesc); } @@ -4348,9 +4350,9 @@ export namespace housingtype { "DETACHED HOUSE": "121"; "SEMI-DETACHED HOUSE": "122"; "TERRACE HOUSE": "123"; - "CONDOMINIUM": "131"; + CONDOMINIUM: "131"; "EXECUTIVE CONDOMINIUM": "132"; - "APARTMENT": "139"; + APARTMENT: "139"; } const codeToDesc: Code2Desc = { "121": "DETACHED HOUSE", @@ -4373,10 +4375,10 @@ export namespace marital { } interface Desc2Code { - "SINGLE": "1"; - "MARRIED": "2"; - "WIDOWED": "3"; - "DIVORCED": "5"; + SINGLE: "1"; + MARRIED: "2"; + WIDOWED: "3"; + DIVORCED: "5"; } const codeToDesc: Code2Desc = { "1": "SINGLE", @@ -4399,14 +4401,14 @@ export namespace edulevel { "7": "BACHELOR'S OR EQUIVALENT"; "8": "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)"; "9": "MASTER'S AND DOCTORATE OR EQUIVALENT"; - "N": "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; + N: "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; } interface Desc2Code { "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY": "0"; - "PRIMARY": "1"; + PRIMARY: "1"; "LOWER SECONDARY": "2"; - "SECONDARY": "3"; + SECONDARY: "3"; "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION": "4"; "POLYTECHNIC DIPLOMA": "5"; "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA": "6"; @@ -4426,42 +4428,42 @@ export namespace edulevel { "7": "BACHELOR'S OR EQUIVALENT", "8": "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)", "9": "MASTER'S AND DOCTORATE OR EQUIVALENT", - "N": "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)", + N: "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)", }; export const map = generateTwoWayMap(codeToDesc); } export namespace passtype { interface Code2Desc { - "RPass": "Work Permit"; - "SPass": "S Pass"; - "P1Pass": "Employment Pass"; - "P2Pass": "Employment Pass"; - "QPass": "Employment Pass"; - "PEP": "Personalised Employment Pass"; - "WHP": "Work Holiday Pass"; - "TEP": "Training Employment Pass"; - "Entre": "EntrePass"; - "DP": "Dependent Pass"; - "LTVP": "Long Term Visit Pass"; - "LOC": "Letter of Consent"; - "MWP": "Miscellaneous Work Pass"; + RPass: "Work Permit"; + SPass: "S Pass"; + P1Pass: "Employment Pass"; + P2Pass: "Employment Pass"; + QPass: "Employment Pass"; + PEP: "Personalised Employment Pass"; + WHP: "Work Holiday Pass"; + TEP: "Training Employment Pass"; + Entre: "EntrePass"; + DP: "Dependent Pass"; + LTVP: "Long Term Visit Pass"; + LOC: "Letter of Consent"; + MWP: "Miscellaneous Work Pass"; } const codeToDesc: Code2Desc = { - "RPass": "Work Permit", - "SPass": "S Pass", - "P1Pass": "Employment Pass", - "P2Pass": "Employment Pass", - "QPass": "Employment Pass", - "PEP": "Personalised Employment Pass", - "WHP": "Work Holiday Pass", - "TEP": "Training Employment Pass", - "Entre": "EntrePass", - "DP": "Dependent Pass", - "LTVP": "Long Term Visit Pass", - "LOC": "Letter of Consent", - "MWP": "Miscellaneous Work Pass", + RPass: "Work Permit", + SPass: "S Pass", + P1Pass: "Employment Pass", + P2Pass: "Employment Pass", + QPass: "Employment Pass", + PEP: "Personalised Employment Pass", + WHP: "Work Holiday Pass", + TEP: "Training Employment Pass", + Entre: "EntrePass", + DP: "Dependent Pass", + LTVP: "Long Term Visit Pass", + LOC: "Letter of Consent", + MWP: "Miscellaneous Work Pass", }; export const map = { codeToDesc }; } @@ -4473,7 +4475,7 @@ export namespace status { } interface Desc2Code { - "LIVE": "1"; + LIVE: "1"; "DE-REGISTERED": "2"; } const codeToDesc: Code2Desc = { @@ -4486,9 +4488,12 @@ export namespace status { /** * Generates codeToDesc, which is a key: value map and descToCode, which is an inverse of codeToDesc * Assumes value is a string/number and can be used as a inverse key + * * @param codeToDesc */ -function generateTwoWayMap(codeToDesc: Code2DescMap): { codeToDesc: Code2DescMap; descToCode: Desc2CodeMap } { +function generateTwoWayMap( + codeToDesc: Code2DescMap, +): { codeToDesc: Code2DescMap; descToCode: Desc2CodeMap } { return { codeToDesc, descToCode: invert(codeToDesc) as unknown as Desc2CodeMap, diff --git a/src/myinfo/domain/myinfo-domain.ts b/src/myinfo/domain/myinfo-domain.ts index c034cae1..c4384000 100644 --- a/src/myinfo/domain/myinfo-domain.ts +++ b/src/myinfo/domain/myinfo-domain.ts @@ -1,21610 +1,21808 @@ -// tslint:disable +/* eslint-disable */ // ============================================================================= // This file was generated with `npm run generate-myinfo-typings` on 2023-05-10 // Any modifications to this file may be overwritten when the script runs again // Check README.md for more information // ============================================================================= export declare namespace MyInfoComponents { - export namespace Schemas { - /** - * Academic Qualifications - * Academic Qualifications achieved - */ - export interface Academicqualifications { - /** - * Transcript of qualification - */ - transcripts?: { - /** - * Qualification's Name - */ - name?: { - /** - * example: - * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL - */ - value?: string; - }; - /** - * Year this qualification was attained - * - * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - yearattained?: { - /** - * example: - * 2018 - */ - value?: string; // date - }; - results?: { - /** - * Subject taken - */ - subject?: { - /** - * example: - * English Language - */ - value?: string; - }; - /** - * Level of subject taken - */ - level?: { - /** - * example: - * Ordinary - */ - value?: string; - }; - /** - * Grade attained - */ - grade?: { - /** - * example: - * A - */ - value?: string; - }; - /** - * Optional Sub Subject taken - */ - subsubject?: { - /** - * example: - * SPECIAL PAPER - */ - value?: string; - }; - /** - * Optional grade attained for subSubject - */ - subgrade?: { - /** - * example: - * One - */ - value?: string; - }; - }[]; - /** - * Explanatory Notes - */ - explanatorynotes?: { - value?: string; - }; - }[]; - /** - * Electronic Certificates Uploaded - */ - certificates?: { - /** - * File name of the electronic certificate - */ - name?: { - /** - * example: - * nus.opencert - */ - value?: string; - }; - /** - * File content of the electronic certificate, Base64 encoded - */ - content?: { - value?: string; - }; - /** - * Open Certificate Information - * - * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is - * at https://opencerts.io/ - */ - opencertificate?: { - /** - * The OpenCert serial number. - */ - id?: { - /** - * example: - * 100000000343840 - */ - value?: string; - }; - /** - * Indicate whether this open certificate is primary certificate - */ - primary?: { - /** - * example: - * true - */ - value?: boolean; - }; - }; - /** - * Indicate whether this file is open certificate - */ - opencertificateindicator?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - } - /** - * Address details (Singapore Format) - */ - export interface AddressSG { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - } - /** - * Address details (Non-Singapore Format) - */ - export interface AddressUnformatted { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Unregistered Foreign address line 1 - */ - line1?: { - /** - * example: - * 4578 SMITHFIELD AVENUE - */ - value?: string; - }; - /** - * Unregistered Foreign address line 2 - */ - line2?: { - /** - * example: - * HARTFORD CT 06120 - */ - value?: string; - }; - } - /** - * Alias - * Alias name of the Person. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* - */ - export interface Aliasname { - /** - * value of the field. - * example: - * TRICIA TAN XIAO HUI - */ - value?: string; - } - /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - export type Billadd = /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * BirthCountry - * Country/Place of Birth of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Birthcountry { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE - */ - desc?: string; - } - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Childrenbirthrecords { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Birth certificate number of child. - */ - birthcertno?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * D - */ - code?: "A" | "D"; - /** - * example: - * DECEASED - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * Time of Birth of child. - * - * Format: HHMM - */ - tob?: { - /** - * example: - * 0901 - */ - value?: string; - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Indicates whether the child is a Singapore Citizen at the time of birth. - * - * * Y - Yes - * * N - No - * * < BLANK > - Not applicable - */ - sgcitizenatbirthind?: { - /** - * example: - * Y - */ - value?: "Y" | "N" | ""; - }; - } - /** - * CountryOfMarriage - * Country/Place of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - */ - export interface Countryofmarriage { - /** - * - * example: - * SG - */ - code?: string; - /** - * - * example: - * SINGAPORE - */ - desc?: string; - } - /** - * CPFBalances - * CPF Balances of Person in SGD. - * - * 'ra' will not appear in the results if user does not have a Retirement Account. - */ - export interface Cpfbalances { - /** - * Amount Balance in CPF-MA - */ - ma?: { - /** - * example: - * 11470.71 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-OA - */ - oa?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-SA - */ - sa?: { - /** - * example: - * 21967.09 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-RA - */ - ra?: { - /** - * example: - * 0.01 - */ - value?: number; // double - }; - } - /** - * CPFContributions - * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. - * Maximum past 15 months' of contributions. - * - */ - export interface Cpfcontributions { - /** - * example: - * [ - * { - * "date": { - * "value": "2016-12-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-08-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm - */ - date?: { - /** - * example: - * 2017-03-01 - */ - value?: string; // date - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-02 - */ - value?: string; - }; - /** - * Amount of contribution in SGD - */ - amount?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - }[]; - } - /** - * CPF Dependant Protection Scheme - * CPF Dependant Protection Scheme - */ - export interface Cpfdependantprotectionscheme { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - insurercode?: { - /** - * Insurer Code - * example: - * 9GEL - */ - value?: string; - }; - sumassuredamount?: { - /** - * Sum assured. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 70000 - */ - value?: number; - }; - } - /** - * CPFEmployers - * Employers who paid CPF Contributions. Maximum up to past 14 months. - * - */ - export interface Cpfemployers { - /** - * example: - * [ - * { - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-03 - */ - value?: string; // date - }; - }[]; - } - /** - * CPF Home Protection Scheme - * CPF Home Protection Scheme - */ - export interface Cpfhomeprotectionscheme { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - premium?: { - /** - * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 100.01 - */ - value?: number; - }; - shareofcover?: { - /** - * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true - * example: - * 20 - */ - value?: number; - }; - } - /** - * CPFHousingWithdrawal - * CPF Housing Withdrawal of Person. Amounts in SGD. - */ - export interface Cpfhousingwithdrawal { - /** - * Withdrawal details for properties - */ - withdrawaldetails?: { - /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - address?: /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /* Address details (Singapore Format) */ AddressSG | /* Address details (Non-Singapore Format) */ AddressUnformatted; - /** - * - */ - accruedinterestamt?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * - */ - monthlyinstalmentamt?: { - /** - * example: - * 1196.09 - */ - value?: number; // double - }; - /** - * - */ - principalwithdrawalamt?: { - /** - * example: - * 2897.01 - */ - value?: number; // double - }; - /** - * - */ - totalamountofcpfallowedforproperty?: { - /** - * example: - * 10000.01 - */ - value?: number; // double - }; - }[]; - } - /** - * CPFInvestmentScheme - * CPF Investment Scheme. - */ - export interface Cpfinvestmentscheme { - /** - * Quantity of Special Discounted Shares shares held - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sdsnetshareholdingqty?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * example: - * 1360 - */ - value?: number; - }; - /** - * CPF Investment Account Details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - account?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Agent Bank Code - */ - agentbankcode?: { - /** - * example: - * OCBC - */ - value?: string; - }; - /** - * Account Number - */ - invbankacctno?: { - /** - * example: - * 098-26644-4 - */ - value?: string; - }; - }; - /** - * Status of Self-Awareness Questionnaire Participation. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - saqparticipationstatus?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Possible values: - * - * * 'Y' – Participated - * * 'X' – Existing CPFIS participant - * * 'N' – Did not participate - * example: - * X - */ - code?: "Y" | "X" | "N"; - /** - * example: - * Participated - */ - desc?: string; - }; - } - /** - * CPFLife - * CPF Lifelong Income For the Elderly (CPF LIFE) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Cpflife { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Flag to indicate the CPF Life membership of the user - */ - cpflifecoverage?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * CPF Life plan chosen - */ - cpflifeplan?: { - /** - * example: - * Standard Plan - */ - value?: string; - }; - /** - * Monthly payout from CPF Life in SGD - */ - cpflifemonthlypayout?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Flag to indicate if user is currently receiving monthly payouts from CPF LIFE - */ - cpflifepaymentcommencement?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Date of latest CPF Life payment. Can be blank. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - cpflifepaymentdate?: { - /** - * example: - * 2019-09-02 - */ - value?: string; // date - }; - } - /** - * CPFMedishieldLife - * CPF MediShield Life - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Cpfmedishieldlife { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Present only if underlying 'hascovertag' is not empty (true or false) from CPF - */ - medishieldlifecoverage?: { - /** - * Status of cover of user. - */ - hascovertag?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Name of the current payer who pay for this policy for current policy renewal date. - * - * Present only if 'hascovertag' is true. - */ - payername?: { - value?: string; - }; - /** - * Net Premium Payable in SGD after subsidies, Additional Premium Support and Government Benefit (if applicable) for current policy year. - * - * Present only if 'hascovertag' is true. - * - */ - netpremiumpayable?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Renewal date for current policy year. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * - * Present only if 'hascovertag' is true. - * - */ - policyrenewaldate?: { - /** - * example: - * 2019-07-02 - */ - value?: string; // date - }; - }; - /** - * Present only if underlying 'hascovertag' is not empty (true or false) from CPF - */ - integratedshieldplancoverage?: { - /** - * Status of cover of user. - */ - hascovertag?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Name of the current payer who pay for this policy for current policy renewal date. - * - * Present only if 'hascovertag' is true. - */ - payername?: { - value?: string; - }; - /** - * Company code of private insurer. Refer to 'Code Listing (InsurerCode)' in https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx for list of possible values - * - * Present only if 'hascovertag' is true. - */ - insurercode?: { - value?: string; - }; - }; - /** - * Empty array will be returned if there is no data - */ - medishieldlifedependants?: { - /** - * Name of dependants whom the enquirer is paying for. - */ - dependantname?: { - value?: string; - }; - /** - * Net Premium Payable in SGD after subsidies, Additional Premium Support and Government Benefit (if applicable) for current policy year - */ - netpremiumpayable?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Renewal date for current policy year. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * - * Present only if 'hascovertag' is true. - * - */ - policyrenewaldate?: { - /** - * example: - * 2019-07-02 - */ - value?: string; // date - }; - }[]; - /** - * Empty array will be returned if there is no data - */ - integratedshieldplandependants?: { - /** - * Name of dependants whom the enquirer is paying for. - */ - dependantname?: { - value?: string; - }; - /** - * Company code of private insurer. Refer to 'Code Listing (InsurerCode)' in https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx for list of possible values - * - * Present only if 'hascovertag' is true. - */ - insurercode?: { - value?: string; - }; - }[]; - } - /** - * CPFMonthlyPayouts - * CPF Monthly Payouts (Non-LIFE) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Cpfmonthlypayouts { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Monthly payout amount in SGD - */ - monthlypayout?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Flag to indicate if user is currently receiving monthly payouts - */ - paymentcommencement?: { - /** - * example: - * true - */ - value?: boolean; - }; - } - /** - * CPFRSTUCurrentYearTaxRelief - * CPF Retirement Savings Topping-up Scheme - Current Year Tax Relief - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Cpfrstucurrentyeartaxrelief { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Total tax relief from self top-up in SGD - */ - totaltaxreliefself?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Remaining tax relief from self top-up in SGD - */ - remainingtaxreliefself?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Total tax relief from top-up by loved ones in SGD - */ - totaltaxrelieflovedones?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Remaining tax relief from top-up by loved ones in SGD - */ - remainingtaxrelieflovedones?: { - /** - * example: - * 1000 - */ - value?: number; - }; - } - /** - * CPFRSTUSelfTopupAmount - * CPF Retirement Savings Topping-up Scheme - Maximum amount you can top-up using cash and CPF - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Cpfrstuselftopupamount { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Maximum amount you can top up using cash - */ - selftopupusingcash?: { - /** - * example: - * 1000 - */ - value?: number; - }; - /** - * Maximum amount you can transfer using CPF - */ - selftopupusingcpf?: { - /** - * example: - * 1000 - */ - value?: number; - }; - } - /** - * CPFTransactions - * CPF Transaction History of Person in SGD. - * Maximum past 15 months' of transactions. - * - */ - export interface Cpftransactions { - history?: { - /** - * Type of transaction - */ - txntype?: { - /** - * example: - * CON - */ - code?: string; - /** - * example: - * Contributions/Government Cash Grant/Government Top-up - */ - desc?: string; - }; - /** - * Account Number. May be present if txntype code is 'TRF'. - */ - accountno?: { - value?: string; - }; - /** - * Month of transaction. Format: YYYY-MM - * - * Present if txntype code is 'CON'/'RFD'/'ADJ' - */ - month?: { - /** - * example: - * 2017-02 - */ - value?: string; - }; - /** - * Date of Transaction. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm - */ - date?: { - /** - * example: - * 2017-03-01 - */ - value?: string; // date - }; - /** - * Footer reference - */ - referenceno?: { - value?: string; - }; - /** - * Transaction Amount to Ordinary Account in SGD - */ - oatxnamt?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - /** - * Transaction Amount to Special Account in SGD - */ - satxnamt?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - /** - * Transaction Amount to Medisave Account in SGD - */ - matxnamt?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - /** - * Transaction Amount to Retirement Account in SGD. Only present if user has Retirement Account - */ - ratxnamt?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - }[]; - /** - * example: - * [ - * { - * "message": { - * "value": "REF A: EMPLOYER XXXX" - * } - * }, - * { - * "message": { - * "value": "B: EMPLOYER YYYY" - * } - * } - * ] - */ - footers?: { - message?: { - /** - * example: - * REF A: EMPLOYER XXXX - */ - value?: string; - }; - }[]; - } - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface DataFieldProperties { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - } - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface DataitemAddressSg { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - } - /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface DataitemAddressUnformatted { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Unregistered Foreign address line 1 - */ - line1?: { - /** - * example: - * 4578 SMITHFIELD AVENUE - */ - value?: string; - }; - /** - * Unregistered Foreign address line 2 - */ - line2?: { - /** - * example: - * HARTFORD CT 06120 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - } - /** - * Dialect - * Dialect of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Dialect { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SWISS GERMAN - */ - desc?: string; - } - /** - * DivorceDate - * Last Divorce Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - */ - export interface Divorcedate { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * - */ - value?: string; // date - } - /** - * DOB - * Date of Birth of Person. - */ - export interface Dob { - /** - * Value of data field. - * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): - * - full-date - * - date-fullyear "-" date-month - * - date-fullyear - * example: - * 1958-05-17 - */ - value?: string; // date - } - /** - * Driving Licence details of Person. - * - */ - export interface Drivinglicence { - /** - * Status of Certificate of Merit. Possible values: - * - * * Y - ELIGIBLE - * * N - NOT ELIGIBLE - */ - comstatus?: { - /** - * example: - * Y - */ - code?: "Y" | "N"; - /** - * - * example: - * ELIGIBLE - */ - desc?: "ELIGIBLE" | "NOT ELIGIBLE"; - }; - /** - * Total Demerit Points - */ - totaldemeritpoints?: { - /** - * example: - * 0 - */ - value?: number; - }; - /** - * - */ - suspension?: { - /** - * Suspension Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Suspension End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - disqualification?: { - /** - * Disqualification Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Disqualification End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - revocation?: { - /** - * Revocation Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Revocation End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * Provisional Driving Licence (PDL) - */ - pdl?: { - /** - * Validity of PDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * PDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * PDL Classes - * example: - * [ - * { - * "class": { - * "value": "2A" - * } - * }, - * { - * "class": { - * "value": "3A" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - }[]; - }; - /** - * Qualified Driving Licence (QDL) - */ - qdl?: { - /** - * Validity of QDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * QDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) - * example: - * [ - * { - * "class": { - * "value": "2A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * }, - * { - * "class": { - * "value": "3A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - issuedate?: { - value?: string; // date - }; - }[]; - }; - /** - * Serial Number of the Photo Card - */ - photocardserialno?: { - /** - * example: - * 115616 - */ - value?: string; - }; - } - /** - * EduLevel - * Highest Education Level of Person. - * - * * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY - * * '1' - PRIMARY - * * '2' - LOWER SECONDARY - * * '3' - SECONDARY - * * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION - * * '5' - POLYTECHNIC DIPLOMA - * * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA - * * '7' - BACHELOR'S OR EQUIVALENT - * * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) - * * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT - * * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) - */ - export interface Edulevel { - /** - * - * example: - * 7 - */ - code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; - /** - * example: - * BACHELOR'S OR EQUIVALENT - */ - desc?: "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" | "PRIMARY" | "LOWER SECONDARY" | "SECONDARY" | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" | "POLYTECHNIC DIPLOMA" | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" | "BACHELOR'S OR EQUIVALENT" | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" | "MASTER'S AND DOCTORATE OR EQUIVALENT" | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; - } - /** - * Email - * Email Address of Person. - */ - export interface Email { - /** - * Value of data field. - * example: - * test@gmail.com - */ - value?: string; - } - /** - * Employment - * Name of Employer. - */ - export interface Employment { - /** - * example: - * ALPHA - */ - value?: string; - } - /** - * EmploymentSector - * Employment Sector of a FIN holder. - * - * **Note:** Only applies to a foreigner with a valid work pass. - * - * Some examples of possible values are: - * * MANUFACTURING - * * CONSTRUCTION - * * RECLAMATION - * * SERVICE - * * GRI-TECHNOLOGY - * * LANDSCAPING - * * INCINERATOR PLANT - * * MARINE SHIPYARD - * * PROCESS - * * HARBOURCRAFT - * * DOMESTIC - */ - export interface Employmentsector { - /** - * example: - * MANUFACTURING - */ - value?: string; - } - /** - * GradYear - * Year of Graduation of Person. Format: YYYY - */ - export interface Gradyear { - /** - * example: - * 2006 - */ - value?: string; // [0-9]{4} - } - /** - * GSTVoucher - * GST Voucher details - */ - export interface Gstvoucher { - /** - * Indicator if user is excluded - */ - exclusion?: { - /** - * example: - * false - */ - value?: boolean; - }; - /** - * Indicator if user needs to signup - */ - signup?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount given for medisave account - */ - gstmedisave?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for ordinary account - */ - gstregular?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for special account - */ - gstspecial?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - } - /** - * HDBOwnership - * HDB Ownership details - * - * **TODO: is this tied to the registered address or the person (UINFIN) or both?** - * - */ - export interface HDBOwnership { - /** - * Number of Owners. Note that this does not include executors, administrators or trustees. - */ - noofowners?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Address details (Singapore Format) - */ - address?: { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - }; - /** - * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - leasecommencementdate?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Term of lease (in years) for the property computed from the lease commencement date. - */ - termoflease?: { - /** - * example: - * 99 - */ - value?: number; - }; - /** - * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dateofpurchase?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. - * - * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. - * - * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - dateofownershiptransfer?: { - /** - * example: - * 2018-06-13 - */ - value?: string; // date - }; - /** - * The amount of housing loan granted to owner(s) by HDB in SGD. - */ - loangranted?: { - /** - * example: - * 310000.01 - */ - value?: number; // double - }; - /** - * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. - */ - originalloanrepayment?: { - /** - * example: - * 25 - */ - value?: number; - }; - /** - * The remaining term of repayment for the loan in the format `years` + `months`. - */ - balanceloanrepayment?: { - years?: { - /** - * example: - * 2 - */ - value?: number; - }; - months?: { - /** - * example: - * 6 - */ - value?: number; - }; - }; - /** - * The amount of outstanding HDB loan owed by owner(s) in SGD. - */ - outstandingloanbalance?: { - /** - * example: - * 50000.01 - */ - value?: number; // double - }; - /** - * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. - */ - monthlyloaninstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. - */ - outstandinginstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The purchase price of the HDB flat in SGD. - */ - purchaseprice?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - } - /** - * HanYuPinYinAlias - * Han Yu Pin Yin Alias name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* - */ - export interface Hanyupinyinaliasname { - /** - * example: - * TRICIA CHEN XIAO HUI - */ - value?: string; - } - /** - * HanYuPinYin - * Han Yu Pin Yin name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* - */ - export interface Hanyupinyinname { - /** - * example: - * CHEN XIAO HUI - */ - value?: string; - } - /** - * HDBOwnership - * HDB Ownership details - * - * **TODO: is this tied to the registered address or the person (UINFIN) or both?** - * - */ - export interface Hdbownership { - /** - * Number of Owners. Note that this does not include executors, administrators or trustees. - */ - noofowners?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Address details (Singapore Format) - */ - address?: { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - }; - /** - * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - leasecommencementdate?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Term of lease (in years) for the property computed from the lease commencement date. - */ - termoflease?: { - /** - * example: - * 99 - */ - value?: number; - }; - /** - * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dateofpurchase?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. - * - * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. - * - * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - dateofownershiptransfer?: { - /** - * example: - * 2018-06-13 - */ - value?: string; // date - }; - /** - * The amount of housing loan granted to owner(s) by HDB in SGD. - */ - loangranted?: { - /** - * example: - * 310000.01 - */ - value?: number; // double - }; - /** - * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. - */ - originalloanrepayment?: { - /** - * example: - * 25 - */ - value?: number; - }; - /** - * The remaining term of repayment for the loan in the format `years` + `months`. - */ - balanceloanrepayment?: { - years?: { - /** - * example: - * 2 - */ - value?: number; - }; - months?: { - /** - * example: - * 6 - */ - value?: number; - }; - }; - /** - * The amount of outstanding HDB loan owed by owner(s) in SGD. - */ - outstandingloanbalance?: { - /** - * example: - * 50000.01 - */ - value?: number; // double - }; - /** - * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. - */ - monthlyloaninstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. - */ - outstandinginstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The purchase price of the HDB flat in SGD. - */ - purchaseprice?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - } - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - export interface Hdbtype { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - } - /** - * HomeNo - * Home Contact Number of Person. - */ - export interface Homeno { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - } - /** - * HouseholdIncome - * Household Income of Person in SGD. - */ - export interface Householdincome { - /** - * upper bound of the range of household income bracket - */ - high?: { - /** - * example: - * 5999 - */ - value?: number; - }; - /** - * lower bound of the range of household income bracket - */ - low?: { - /** - * example: - * 5000 - */ - value?: number; - }; - } - /** - * HousingType - * Housing Type of Person (non-HDB only). - * - * **Note 1:** If `hdbtype` is available, this value will be null. - * - * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * Refer to `hdbtype` for detailed HDB type. - * - * * '121' - DETACHED HOUSE - * * '122' - SEMI-DETACHED HOUSE - * * '123' - TERRACE HOUSE - * * '131' - CONDOMINIUM - * * '132' - EXECUTIVE CONDOMINIUM - * * '139' - APARTMENT - */ - export interface Housingtype { - /** - * - * example: - * 123 - */ - code?: "121" | "122" | "123" | "131" | "132" | "139"; - /** - * - * example: - * TERRACE HOUSE - */ - desc?: "DETACHED HOUSE" | "SEMI-DETACHED HOUSE" | "TERRACE HOUSE" | "CONDOMINIUM" | "EXECUTIVE CONDOMINIUM" | "APARTMENT"; - } - /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - export type Mailadd = /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * Marital - * Marital Status of Person. - * - * * '1' - SINGLE - * * '2' - MARRIED - * * '3' - WIDOWED - * * '5' - DIVORCED - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - */ - export interface Marital { - /** - * - * example: - * 2 - */ - code?: "1" | "2" | "3" | "5"; - /** - * - * example: - * MARRIED - */ - desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; - } - /** - * MarriageCertNo - * Certificate number of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - */ - export interface Marriagecertno { - /** - * Value of data field. - * example: - * 123456789012345 - */ - value?: string; - } - /** - * MarriageDate - * Latest Marriage Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - */ - export interface Marriagedate { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2007-01-01 - */ - value?: string; // date - } - /** - * MarriedName - * Married name of the Person. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - */ - export interface Marriedname { - /** - * value of the field, should be displayed as it is. - * example: - * - */ - value?: string; - } - /** - * MerdekaGen - * Merdekagen details - */ - export interface Merdekagen { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - quantum?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Suggested user friendly display - */ - message?: { - /** - * example: - * 2 - */ - code?: string; - /** - * example: - * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. - */ - desc?: string; - }; - } - /** - * MobileNo - * Mobile Number of Person. - */ - export interface Mobileno { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - } - export interface NOA { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * value of data field - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - /** - * Assessable Income from employment - */ - employment?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * Assessable Income from trade - */ - trade?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from rent - */ - rent?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from interest - */ - interest?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) - */ - taxclearance?: { - /** - * example: - * N - */ - value?: "Y" | "N"; - }; - /** - * Type of 'Notice of Assessment' (NOA) - */ - category?: { - /** - * example: - * ORIGINAL - */ - value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; - }; - } - export interface NOABasic { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * The second latest annual assessable income available from IRAS within the past 3 years. - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - } - /** - * Name - * Full Name of the Person. - */ - export interface Name { - /** - * value of the field, should be displayed as it is. - * example: - * TAN XIAO HUI - */ - value?: string; - } - /** - * Nationality - * Nationality/Citizenship of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Nationality { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - } - /** - * History of Notice Of Assessment - * Detailed breakdown of latest 2 Notice of Assessments within the past three years. - */ - export interface Noahistory { - noas?: NOA[]; - } - /** - * History of Notice Of Assessment (Basic) - * Summary of latest 2 Notice of Assessments within the past three years. - */ - export interface NoahistoryBasic { - noas?: NOABasic[]; - } - /** - * Occupation - * Occupation of Person. - */ - export interface Occupation { - /** - * Free text. - * - * For SC/PR holders, blank will be returned. - * example: - * - */ - value?: string; - } - /** - * OwnerPrivate - * Ownership of Private Property Status of Person (based on IRAS information). - * - * * true - * * false - * * null (data not available) - */ - export interface Ownerprivate { - /** - * Value of data field. - * example: - * false - */ - value?: boolean; - } - /** - * Partial UINFIN - * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. - */ - export interface Partialuinfin { - /** - * Value of the field, should be displayed as it is. - * example: - * *****111D - */ - value?: string; - } - /** - * PassExpiryDate - * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. - */ - export interface Passexpirydate { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2022-12-31 - */ - value?: string; // date - } - /** - * PassportExpiryDate - * Passport Expiry Date of Person. - */ - export interface Passportexpirydate { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2020-01-01 - */ - value?: string; // date - } - /** - * PassportNumber - * Passport Number of Person. - */ - export interface Passportnumber { - /** - * Value of data field. - * example: - * E35463874W - */ - value?: string; - } - /** - * PassStatus - * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * * Live - * * Approved - * - */ - export interface Passstatus { - /** - * Value of data field. - * example: - * Live - */ - value?: "Live" | "Approved"; - } - /** - * PassType - * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Passtype { - /** - * Value of data field. - * example: - * RPass - */ - code?: string; - /** - * example: - * Work Permit - */ - desc?: string; - } - /** - * Person instance's details (Basic Profile) - */ - export interface Person { - /** - * Partial UINFIN - * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - partialuinfin?: { - /** - * Value of the field, should be displayed as it is. - * example: - * *****111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * UINFIN - * Singapore issued identification number of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - uinfin?: { - /** - * value of the field, should be displayed as it is. - * example: - * S1111111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Name - * Full Name of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - name?: { - /** - * value of the field, should be displayed as it is. - * example: - * TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYin - * Han Yu Pin Yin name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinname?: { - /** - * example: - * CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Alias - * Alias name of the Person. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - aliasname?: { - /** - * value of the field. - * example: - * TRICIA TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYinAlias - * Han Yu Pin Yin Alias name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinaliasname?: { - /** - * example: - * TRICIA CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriedName - * Married name of the Person. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriedname?: { - /** - * value of the field, should be displayed as it is. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Sex - * Sex of Person. - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Race - * Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SecondaryRace - * Secondary Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - secondaryrace?: { - /** - * - * example: - * EU - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * EURASIAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Dialect - * Dialect of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dialect?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SWISS GERMAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Nationality - * Nationality/Citizenship of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - nationality?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DOB - * Date of Birth of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dob?: { - /** - * Value of data field. - * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): - * - full-date - * - date-fullyear "-" date-month - * - date-fullyear - * example: - * 1958-05-17 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * BirthCountry - * Country/Place of Birth of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - birthcountry?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ResidentialStatus - * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. - * - * - * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. - * In such cases, the `code` and `desc` properties will be blank or empty string (""). - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - * * < BLANK > (for FIN holders only) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} - /** - * example: - * CITIZEN - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportNumber - * Passport Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportnumber?: { - /** - * Value of data field. - * example: - * E35463874W - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportExpiryDate - * Passport Expiry Date of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2020-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - regadd?: /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - mailadd?: /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - billadd?: /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * HousingType - * Housing Type of Person (non-HDB only). - * - * **Note 1:** If `hdbtype` is available, this value will be null. - * - * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * Refer to `hdbtype` for detailed HDB type. - * - * * '121' - DETACHED HOUSE - * * '122' - SEMI-DETACHED HOUSE - * * '123' - TERRACE HOUSE - * * '131' - CONDOMINIUM - * * '132' - EXECUTIVE CONDOMINIUM - * * '139' - APARTMENT - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - housingtype?: { - /** - * - * example: - * 123 - */ - code?: "121" | "122" | "123" | "131" | "132" | "139"; - /** - * - * example: - * TERRACE HOUSE - */ - desc?: "DETACHED HOUSE" | "SEMI-DETACHED HOUSE" | "TERRACE HOUSE" | "CONDOMINIUM" | "EXECUTIVE CONDOMINIUM" | "APARTMENT"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBOwnership - * HDB Ownership details - * - */ - hdbownership?: { - /** - * Number of Owners. Note that this does not include executors, administrators or trustees. - */ - noofowners?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Address details (Singapore Format) - */ - address?: { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - }; - /** - * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - leasecommencementdate?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Term of lease (in years) for the property computed from the lease commencement date. - */ - termoflease?: { - /** - * example: - * 99 - */ - value?: number; - }; - /** - * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dateofpurchase?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. - * - * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. - * - * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - dateofownershiptransfer?: { - /** - * example: - * 2018-06-13 - */ - value?: string; // date - }; - /** - * The amount of housing loan granted to owner(s) by HDB in SGD. - */ - loangranted?: { - /** - * example: - * 310000.01 - */ - value?: number; // double - }; - /** - * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. - */ - originalloanrepayment?: { - /** - * example: - * 25 - */ - value?: number; - }; - /** - * The remaining term of repayment for the loan in the format `years` + `months`. - */ - balanceloanrepayment?: { - years?: { - /** - * example: - * 2 - */ - value?: number; - }; - months?: { - /** - * example: - * 6 - */ - value?: number; - }; - }; - /** - * The amount of outstanding HDB loan owed by owner(s) in SGD. - */ - outstandingloanbalance?: { - /** - * example: - * 50000.01 - */ - value?: number; // double - }; - /** - * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. - */ - monthlyloaninstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. - */ - outstandinginstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The purchase price of the HDB flat in SGD. - */ - purchaseprice?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }[]; - /** - * OwnerPrivate - * Ownership of Private Property Status of Person (based on IRAS information). - * - * * true - * * false - * * null (data not available) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - ownerprivate?: { - /** - * Value of data field. - * example: - * false - */ - value?: boolean; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Email - * Email Address of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - email?: { - /** - * Value of data field. - * example: - * test@gmail.com - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HomeNo - * Home Contact Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - homeno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MobileNo - * Mobile Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - mobileno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Marital - * Marital Status of Person. - * - * * '1' - SINGLE - * * '2' - MARRIED - * * '3' - WIDOWED - * * '5' - DIVORCED - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marital?: { - /** - * - * example: - * 2 - */ - code?: "1" | "2" | "3" | "5"; - /** - * - * example: - * MARRIED - */ - desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageCertNo - * Certificate number of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagecertno?: { - /** - * Value of data field. - * example: - * 123456789012345 - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CountryOfMarriage - * Country/Place of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - countryofmarriage?: { - /** - * - * example: - * SG - */ - code?: string; - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageDate - * Latest Marriage Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2007-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DivorceDate - * Last Divorce Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - divorcedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ChildrenBirthRecords - * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). - * - * This includes adoption of locally registered child. - * - * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. - * - * For child above 21, only the child’s Birth Cert Number will be shown. - */ - childrenbirthrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Birth certificate number of child. - */ - birthcertno?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * D - */ - code?: "A" | "D"; - /** - * example: - * DECEASED - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * Time of Birth of child. - * - * Format: HHMM - */ - tob?: { - /** - * example: - * 0901 - */ - value?: string; - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Indicates whether the child is a Singapore Citizen at the time of birth. - * - * * Y - Yes - * * N - No - * * < BLANK > - Not applicable - */ - sgcitizenatbirthind?: { - /** - * example: - * Y - */ - value?: "Y" | "N" | ""; - }; - }[]; - /** - * SponsoredChildrenRecords - * Details of children sponsored to be SC/PR/LTVP - * - * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. - * - * For child above 21, only the child's last known NRIC/FIN will be shown. - */ - sponsoredchildrenrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * NRIC/FIN of child - */ - nric?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * BirthCountry - * Country/Place of Birth of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - birthcountry?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * A - */ - code?: "A" | "D"; - /** - * example: - * ALIVE - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * ResidentialStatus - * Residential Status of child. Possible values: - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} - /** - * example: - * Citizen - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; - }; - /** - * Nationality/Citizenship of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - nationality?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - }; - /** - * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - scprgrantdate?: { - /** - * example: - * 2015-06-13 - */ - value?: string; // date - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - }[]; - /** - * EduLevel - * Highest Education Level of Person. - * - * * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY - * * '1' - PRIMARY - * * '2' - LOWER SECONDARY - * * '3' - SECONDARY - * * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION - * * '5' - POLYTECHNIC DIPLOMA - * * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA - * * '7' - BACHELOR'S OR EQUIVALENT - * * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) - * * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT - * * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - edulevel?: { - /** - * - * example: - * 7 - */ - code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; - /** - * example: - * BACHELOR'S OR EQUIVALENT - */ - desc?: "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" | "PRIMARY" | "LOWER SECONDARY" | "SECONDARY" | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" | "POLYTECHNIC DIPLOMA" | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" | "BACHELOR'S OR EQUIVALENT" | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" | "MASTER'S AND DOCTORATE OR EQUIVALENT" | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GradYear - * Year of Graduation of Person. Format: YYYY - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gradyear?: { - /** - * example: - * 2006 - */ - value?: string; // [0-9]{4} - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SchoolName - * Name of School of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - schoolname?: { - /** - * Code value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * T07GS3011J - */ - code?: string; - /** - * Name of school represented by 'code' - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * SIGLAP SECONDARY SCHOOL - */ - desc?: string; - /** - * Free text value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Occupation - * Occupation of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - occupation?: { - /** - * Free text. - * - * For SC/PR holders, blank will be returned. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Employment - * Name of Employer. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employment?: { - /** - * example: - * ALPHA - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassType - * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passtype?: { - /** - * Value of data field. - * example: - * RPass - */ - code?: string; - /** - * example: - * Work Permit - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassStatus - * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * * Live - * * Approved - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passstatus?: { - /** - * Value of data field. - * example: - * Live - */ - value?: "Live" | "Approved"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassExpiryDate - * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2022-12-31 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * EmploymentSector - * Employment Sector of a FIN holder. - * - * **Note:** Only applies to a foreigner with a valid work pass. - * - * Some examples of possible values are: - * * MANUFACTURING - * * CONSTRUCTION - * * RECLAMATION - * * SERVICE - * * GRI-TECHNOLOGY - * * LANDSCAPING - * * INCINERATOR PLANT - * * MARINE SHIPYARD - * * PROCESS - * * HARBOURCRAFT - * * DOMESTIC - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employmentsector?: { - /** - * example: - * MANUFACTURING - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HouseholdIncome - * Household Income of Person in SGD. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - householdincome?: { - /** - * upper bound of the range of household income bracket - */ - high?: { - /** - * example: - * 5999 - */ - value?: number; - }; - /** - * lower bound of the range of household income bracket - */ - low?: { - /** - * example: - * 5000 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - vehicles?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Vehicle Registration Number displayed on the vehicle number plates - */ - vehicleno?: { - /** - * example: - * SDF1235A - */ - value?: string; - }; - /** - * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' - */ - type?: { - /** - * example: - * PASSENGER MOTOR CAR - */ - value?: string; - }; - /** - * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. - */ - iulabelno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' - */ - make?: { - /** - * example: - * TOYOTA - */ - value?: string; - }; - /** - * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' - */ - model?: { - /** - * example: - * COROLLA ALTIS - */ - value?: string; - }; - /** - * Vehicle Chassis Number - */ - chassisno?: { - /** - * example: - * ZC11S1735800 - */ - value?: string; - }; - /** - * Vehicle Engine Number - */ - engineno?: { - /** - * example: - * M13A1837453 - */ - value?: string; - }; - /** - * Vehicle Motor Number - */ - motorno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Manufacturing year - */ - yearofmanufacture?: { - /** - * example: - * 2010 - */ - value?: string; - }; - /** - * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - firstregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - originalregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Vehicle Certificate of Entitlement (COE) bid category - */ - coecategory?: { - /** - * example: - * A - CAR UP TO 1600CC & 97KW (130BHP) - */ - value?: string; - }; - /** - * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - coeexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - roadtaxexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. - */ - quotapremium?: { - /** - * example: - * 14000.01 - */ - value?: number; // double - }; - /** - * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). - */ - openmarketvalue?: { - /** - * example: - * 25000.01 - */ - value?: number; // double - }; - /** - * CO2 emission rate - */ - co2emission?: { - /** - * example: - * 146.01 - */ - value?: number; // double - }; - /** - * Status of the Vehicle. - * - * * 1 - LIVE - * * 2 - DE-REGISTERED - */ - status?: { - /** - * example: - * 1 - */ - code?: "1" | "2"; - /** - * example: - * LIVE - */ - desc?: "LIVE" | "DE-REGISTERED"; - }; - /** - * Vehicle Primary Colour (e.g. BLACK) - */ - primarycolour?: { - /** - * example: - * BLACK - */ - value?: string; - }; - /** - * Vehicle Primary Colour (e.g. WHITE) - */ - secondarycolour?: { - /** - * example: - * WHITE - */ - value?: string; - }; - /** - * Vehicle Attachment 1 (e.g. DISABLED) - */ - attachment1?: { - /** - * example: - * DISABLED - */ - value?: string; - }; - /** - * Vehicle Attachment 2 (e.g. WITH SUN ROOF) - */ - attachment2?: { - /** - * example: - * WITH SUN ROOF - */ - value?: string; - }; - /** - * Vehicle Attachment 3 (e.g. SIDE CURTAIN) - */ - attachment3?: { - /** - * example: - * SIDE CURTAIN - */ - value?: string; - }; - /** - * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) - */ - scheme?: { - /** - * example: - * REVISED OFF-PEAK CAR - */ - value?: string; - }; - /** - * Total Hydro Carbon (THC) emission rate - */ - thcemission?: { - /** - * example: - * 1.011001 - */ - value?: number; // double - }; - /** - * Carbon Monoxide emission rate - */ - coemission?: { - /** - * example: - * 1.100001 - */ - value?: number; // double - }; - /** - * Nitrogen Oxide (NOx) emission rate. - */ - noxemission?: { - /** - * example: - * 0.011001 - */ - value?: number; // double - }; - /** - * Particulates (PM - Atmospheric Particulate Matter) emission rate. - */ - pmemission?: { - /** - * example: - * 0.007 - */ - value?: number; // double - }; - /** - * Engine Capacity in cubic centimeter (cc) - */ - enginecapacity?: { - /** - * example: - * 1600 - */ - value?: number; - }; - /** - * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. - */ - powerrate?: { - /** - * example: - * 1.41 - */ - value?: number; // double - }; - /** - * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - effectiveownership?: { - /** - * example: - * 2010-08-31T20:12:12+08:00 - */ - value?: string; // date-time - }; - /** - * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG - */ - propellant?: { - /** - * example: - * Compressed Natural Gas - */ - value?: string; - }; - /** - * Maximum Unladen Weight in kilograms (kg) - */ - maximumunladenweight?: { - /** - * example: - * 1500 - */ - value?: number; - }; - /** - * Maximum Laden Weight in kilograms (kg) - */ - maximumladenweight?: { - /** - * example: - * 1795 - */ - value?: number; - }; - /** - * Minimum PARF Benefit in Singapore dollars (SGD). - */ - minimumparfbenefit?: { - /** - * example: - * 8770.01 - */ - value?: number; // double - }; - /** - * Number of Transfer - */ - nooftransfers?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Vehicle Parking Certificate. Applicable for Heavy Vehicles. - */ - vpc?: { - /** - * example: - * 1234567890 - */ - value?: string; - }; - }[]; - /** - * Driving Licence details of Person. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - drivinglicence?: { - /** - * Status of Certificate of Merit. Possible values: - * - * * Y - ELIGIBLE - * * N - NOT ELIGIBLE - */ - comstatus?: { - /** - * example: - * Y - */ - code?: "Y" | "N"; - /** - * - * example: - * ELIGIBLE - */ - desc?: "ELIGIBLE" | "NOT ELIGIBLE"; - }; - /** - * Total Demerit Points - */ - totaldemeritpoints?: { - /** - * example: - * 0 - */ - value?: number; - }; - /** - * - */ - suspension?: { - /** - * Suspension Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Suspension End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - disqualification?: { - /** - * Disqualification Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Disqualification End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - revocation?: { - /** - * Revocation Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Revocation End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * Provisional Driving Licence (PDL) - */ - pdl?: { - /** - * Validity of PDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * PDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * PDL Classes - * example: - * [ - * { - * "class": { - * "value": "2A" - * } - * }, - * { - * "class": { - * "value": "3A" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - }[]; - }; - /** - * Qualified Driving Licence (QDL) - */ - qdl?: { - /** - * Validity of QDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * QDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) - * example: - * [ - * { - * "class": { - * "value": "2A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * }, - * { - * "class": { - * "value": "3A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - issuedate?: { - value?: string; // date - }; - }[]; - }; - /** - * Serial Number of the Photo Card - */ - photocardserialno?: { - /** - * example: - * 115616 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Academic Qualifications - * Academic Qualifications achieved - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - academicqualifications?: { - /** - * Transcript of qualification - */ - transcripts?: { - /** - * Qualification's Name - */ - name?: { - /** - * example: - * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL - */ - value?: string; - }; - /** - * Year this qualification was attained - * - * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - yearattained?: { - /** - * example: - * 2018 - */ - value?: string; // date - }; - results?: { - /** - * Subject taken - */ - subject?: { - /** - * example: - * English Language - */ - value?: string; - }; - /** - * Level of subject taken - */ - level?: { - /** - * example: - * Ordinary - */ - value?: string; - }; - /** - * Grade attained - */ - grade?: { - /** - * example: - * A - */ - value?: string; - }; - /** - * Optional Sub Subject taken - */ - subsubject?: { - /** - * example: - * SPECIAL PAPER - */ - value?: string; - }; - /** - * Optional grade attained for subSubject - */ - subgrade?: { - /** - * example: - * One - */ - value?: string; - }; - }[]; - /** - * Explanatory Notes - */ - explanatorynotes?: { - value?: string; - }; - }[]; - /** - * Electronic Certificates Uploaded - */ - certificates?: { - /** - * File name of the electronic certificate - */ - name?: { - /** - * example: - * nus.opencert - */ - value?: string; - }; - /** - * File content of the electronic certificate, Base64 encoded - */ - content?: { - value?: string; - }; - /** - * Open Certificate Information - * - * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is - * at https://opencerts.io/ - */ - opencertificate?: { - /** - * The OpenCert serial number. - */ - id?: { - /** - * example: - * 100000000343840 - */ - value?: string; - }; - /** - * Indicate whether this open certificate is primary certificate - */ - primary?: { - /** - * example: - * true - */ - value?: boolean; - }; - }; - /** - * Indicate whether this file is open certificate - */ - opencertificateindicator?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - pioneergen?: { - eligibility: { - value: boolean; - }; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - quantum: { - value: string; - }; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C" | "C" | "C"; - /** - * Message code - * - * * '1' - PG Eligibility Tag: N - * * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N - * * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y - * * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N - * * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y - * * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y - * * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - message: { - code: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "1" | "2" | "3" | "4" | "5" | "6" | "7"; - desc: "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits." | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits."; - }; - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MerdekaGen - * Merdekagen details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - merdekagen?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - quantum?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Suggested user friendly display - */ - message?: { - /** - * example: - * 2 - */ - code?: string; - /** - * example: - * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. - */ - desc?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SilverSupport - * Silver Support Scheme details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - silversupport?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - amount?: { - /** - * example: - * 300 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GSTVoucher - * GST Voucher details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gstvoucher?: { - /** - * Indicator if user is excluded - */ - exclusion?: { - /** - * example: - * false - */ - value?: boolean; - }; - /** - * Indicator if user needs to signup - */ - signup?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount given for medisave account - */ - gstmedisave?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for ordinary account - */ - gstregular?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for special account - */ - gstspecial?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Summary of latest Notice of Assessment within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - "noa-basic"?: { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * The second latest annual assessable income available from IRAS within the past 3 years. - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Detailed breakdown of latest Notice of Assessment within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - noa?: { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * value of data field - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - /** - * Assessable Income from employment - */ - employment?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * Assessable Income from trade - */ - trade?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from rent - */ - rent?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from interest - */ - interest?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) - */ - taxclearance?: { - /** - * example: - * N - */ - value?: "Y" | "N"; - }; - /** - * Type of 'Notice of Assessment' (NOA) - */ - category?: { - /** - * example: - * ORIGINAL - */ - value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * History of Notice Of Assessment (Basic) - * Summary of latest 2 Notice of Assessments within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - "noahistory-basic"?: { - noas?: NOABasic[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * History of Notice Of Assessment - * Detailed breakdown of latest 2 Notice of Assessments within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - noahistory?: { - noas?: NOA[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFContributions - * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. - * Maximum past 15 months' of contributions. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfcontributions?: { - /** - * example: - * [ - * { - * "date": { - * "value": "2016-12-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-08-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm - */ - date?: { - /** - * example: - * 2017-03-01 - */ - value?: string; // date - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-02 - */ - value?: string; - }; - /** - * Amount of contribution in SGD - */ - amount?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFEmployers - * Employers who paid CPF Contributions. Maximum up to past 14 months. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfemployers?: { - /** - * example: - * [ - * { - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-03 - */ - value?: string; // date - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFBalances - * CPF Balances of Person in SGD. - * - * 'ra' will not appear in the results if user does not have a Retirement Account. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfbalances?: { - /** - * Amount Balance in CPF-MA - */ - ma?: { - /** - * example: - * 11470.71 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-OA - */ - oa?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-SA - */ - sa?: { - /** - * example: - * 21967.09 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-RA - */ - ra?: { - /** - * example: - * 0.01 - */ - value?: number; // double - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFHousingWithdrawal - * CPF Housing Withdrawal of Person. Amounts in SGD. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfhousingwithdrawal?: { - /** - * Withdrawal details for properties - */ - withdrawaldetails?: { - /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - address?: /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /* Address details (Singapore Format) */ AddressSG | /* Address details (Non-Singapore Format) */ AddressUnformatted; - /** - * - */ - accruedinterestamt?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * - */ - monthlyinstalmentamt?: { - /** - * example: - * 1196.09 - */ - value?: number; // double - }; - /** - * - */ - principalwithdrawalamt?: { - /** - * example: - * 2897.01 - */ - value?: number; // double - }; - /** - * - */ - totalamountofcpfallowedforproperty?: { - /** - * example: - * 10000.01 - */ - value?: number; // double - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPF Home Protection Scheme - * CPF Home Protection Scheme - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfhomeprotectionscheme?: { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - premium?: { - /** - * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 100.01 - */ - value?: number; - }; - shareofcover?: { - /** - * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true - * example: - * 20 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPF Dependant Protection Scheme - * CPF Dependant Protection Scheme - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfdependantprotectionscheme?: { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - insurercode?: { - /** - * Insurer Code - * example: - * 9GEL - */ - value?: string; - }; - sumassuredamount?: { - /** - * Sum assured. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 70000 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFInvestmentScheme - * CPF Investment Scheme. - */ - cpfinvestmentscheme?: { - /** - * Quantity of Special Discounted Shares shares held - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sdsnetshareholdingqty?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * example: - * 1360 - */ - value?: number; - }; - /** - * CPF Investment Account Details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - account?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Agent Bank Code - */ - agentbankcode?: { - /** - * example: - * OCBC - */ - value?: string; - }; - /** - * Account Number - */ - invbankacctno?: { - /** - * example: - * 098-26644-4 - */ - value?: string; - }; - }; - /** - * Status of Self-Awareness Questionnaire Participation. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - saqparticipationstatus?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Possible values: - * - * * 'Y' – Participated - * * 'X' – Existing CPFIS participant - * * 'N' – Did not participate - * example: - * X - */ - code?: "Y" | "X" | "N"; - /** - * example: - * Participated - */ - desc?: string; - }; - }; - } - /** - * Person instance's details (Basic Profile) - */ - export interface PersonBasic { - /** - * Partial UINFIN - * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - partialuinfin?: { - /** - * Value of the field, should be displayed as it is. - * example: - * *****111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * UINFIN - * Singapore issued identification number of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - uinfin?: { - /** - * value of the field, should be displayed as it is. - * example: - * S1111111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Name - * Full Name of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - name?: { - /** - * value of the field, should be displayed as it is. - * example: - * TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYin - * Han Yu Pin Yin name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinname?: { - /** - * example: - * CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Alias - * Alias name of the Person. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - aliasname?: { - /** - * value of the field. - * example: - * TRICIA TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYinAlias - * Han Yu Pin Yin Alias name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinaliasname?: { - /** - * example: - * TRICIA CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriedName - * Married name of the Person. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriedname?: { - /** - * value of the field, should be displayed as it is. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Sex - * Sex of Person. - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Race - * Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SecondaryRace - * Secondary Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - secondaryrace?: { - /** - * - * example: - * EU - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * EURASIAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Dialect - * Dialect of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dialect?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SWISS GERMAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Nationality - * Nationality/Citizenship of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - nationality?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DOB - * Date of Birth of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dob?: { - /** - * Value of data field. - * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): - * - full-date - * - date-fullyear "-" date-month - * - date-fullyear - * example: - * 1958-05-17 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * BirthCountry - * Country/Place of Birth of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - birthcountry?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ResidentialStatus - * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. - * - * - * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. - * In such cases, the `code` and `desc` properties will be blank or empty string (""). - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - * * < BLANK > (for FIN holders only) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} - /** - * example: - * CITIZEN - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportNumber - * Passport Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportnumber?: { - /** - * Value of data field. - * example: - * E35463874W - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportExpiryDate - * Passport Expiry Date of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2020-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - regadd?: /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - mailadd?: /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - billadd?: /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * HousingType - * Housing Type of Person (non-HDB only). - * - * **Note 1:** If `hdbtype` is available, this value will be null. - * - * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * Refer to `hdbtype` for detailed HDB type. - * - * * '121' - DETACHED HOUSE - * * '122' - SEMI-DETACHED HOUSE - * * '123' - TERRACE HOUSE - * * '131' - CONDOMINIUM - * * '132' - EXECUTIVE CONDOMINIUM - * * '139' - APARTMENT - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - housingtype?: { - /** - * - * example: - * 123 - */ - code?: "121" | "122" | "123" | "131" | "132" | "139"; - /** - * - * example: - * TERRACE HOUSE - */ - desc?: "DETACHED HOUSE" | "SEMI-DETACHED HOUSE" | "TERRACE HOUSE" | "CONDOMINIUM" | "EXECUTIVE CONDOMINIUM" | "APARTMENT"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBOwnership - * HDB Ownership details - * - */ - hdbownership?: { - /** - * Number of Owners. Note that this does not include executors, administrators or trustees. - */ - noofowners?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Address details (Singapore Format) - */ - address?: { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - }; - /** - * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - leasecommencementdate?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Term of lease (in years) for the property computed from the lease commencement date. - */ - termoflease?: { - /** - * example: - * 99 - */ - value?: number; - }; - /** - * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dateofpurchase?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. - * - * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. - * - * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - dateofownershiptransfer?: { - /** - * example: - * 2018-06-13 - */ - value?: string; // date - }; - /** - * The amount of housing loan granted to owner(s) by HDB in SGD. - */ - loangranted?: { - /** - * example: - * 310000.01 - */ - value?: number; // double - }; - /** - * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. - */ - originalloanrepayment?: { - /** - * example: - * 25 - */ - value?: number; - }; - /** - * The remaining term of repayment for the loan in the format `years` + `months`. - */ - balanceloanrepayment?: { - years?: { - /** - * example: - * 2 - */ - value?: number; - }; - months?: { - /** - * example: - * 6 - */ - value?: number; - }; - }; - /** - * The amount of outstanding HDB loan owed by owner(s) in SGD. - */ - outstandingloanbalance?: { - /** - * example: - * 50000.01 - */ - value?: number; // double - }; - /** - * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. - */ - monthlyloaninstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. - */ - outstandinginstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The purchase price of the HDB flat in SGD. - */ - purchaseprice?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }[]; - /** - * OwnerPrivate - * Ownership of Private Property Status of Person (based on IRAS information). - * - * * true - * * false - * * null (data not available) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - ownerprivate?: { - /** - * Value of data field. - * example: - * false - */ - value?: boolean; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Email - * Email Address of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - email?: { - /** - * Value of data field. - * example: - * test@gmail.com - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HomeNo - * Home Contact Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - homeno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MobileNo - * Mobile Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - mobileno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Marital - * Marital Status of Person. - * - * * '1' - SINGLE - * * '2' - MARRIED - * * '3' - WIDOWED - * * '5' - DIVORCED - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marital?: { - /** - * - * example: - * 2 - */ - code?: "1" | "2" | "3" | "5"; - /** - * - * example: - * MARRIED - */ - desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageCertNo - * Certificate number of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagecertno?: { - /** - * Value of data field. - * example: - * 123456789012345 - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CountryOfMarriage - * Country/Place of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - countryofmarriage?: { - /** - * - * example: - * SG - */ - code?: string; - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageDate - * Latest Marriage Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2007-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DivorceDate - * Last Divorce Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - divorcedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ChildrenBirthRecords - * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). - * - * This includes adoption of locally registered child. - * - * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. - * - * For child above 21, only the child’s Birth Cert Number will be shown. - */ - childrenbirthrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Birth certificate number of child. - */ - birthcertno?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * D - */ - code?: "A" | "D"; - /** - * example: - * DECEASED - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * Time of Birth of child. - * - * Format: HHMM - */ - tob?: { - /** - * example: - * 0901 - */ - value?: string; - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Indicates whether the child is a Singapore Citizen at the time of birth. - * - * * Y - Yes - * * N - No - * * < BLANK > - Not applicable - */ - sgcitizenatbirthind?: { - /** - * example: - * Y - */ - value?: "Y" | "N" | ""; - }; - }[]; - /** - * SponsoredChildrenRecords - * Details of children sponsored to be SC/PR/LTVP - * - * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. - * - * For child above 21, only the child's last known NRIC/FIN will be shown. - */ - sponsoredchildrenrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * NRIC/FIN of child - */ - nric?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * BirthCountry - * Country/Place of Birth of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - birthcountry?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * A - */ - code?: "A" | "D"; - /** - * example: - * ALIVE - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * ResidentialStatus - * Residential Status of child. Possible values: - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} - /** - * example: - * Citizen - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; - }; - /** - * Nationality/Citizenship of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - nationality?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - }; - /** - * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - scprgrantdate?: { - /** - * example: - * 2015-06-13 - */ - value?: string; // date - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - }[]; - /** - * EduLevel - * Highest Education Level of Person. - * - * * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY - * * '1' - PRIMARY - * * '2' - LOWER SECONDARY - * * '3' - SECONDARY - * * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION - * * '5' - POLYTECHNIC DIPLOMA - * * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA - * * '7' - BACHELOR'S OR EQUIVALENT - * * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) - * * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT - * * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - edulevel?: { - /** - * - * example: - * 7 - */ - code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; - /** - * example: - * BACHELOR'S OR EQUIVALENT - */ - desc?: "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" | "PRIMARY" | "LOWER SECONDARY" | "SECONDARY" | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" | "POLYTECHNIC DIPLOMA" | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" | "BACHELOR'S OR EQUIVALENT" | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" | "MASTER'S AND DOCTORATE OR EQUIVALENT" | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GradYear - * Year of Graduation of Person. Format: YYYY - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gradyear?: { - /** - * example: - * 2006 - */ - value?: string; // [0-9]{4} - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SchoolName - * Name of School of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - schoolname?: { - /** - * Code value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * T07GS3011J - */ - code?: string; - /** - * Name of school represented by 'code' - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * SIGLAP SECONDARY SCHOOL - */ - desc?: string; - /** - * Free text value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Occupation - * Occupation of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - occupation?: { - /** - * Free text. - * - * For SC/PR holders, blank will be returned. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Employment - * Name of Employer. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employment?: { - /** - * example: - * ALPHA - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassType - * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passtype?: { - /** - * Value of data field. - * example: - * RPass - */ - code?: string; - /** - * example: - * Work Permit - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassStatus - * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * * Live - * * Approved - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passstatus?: { - /** - * Value of data field. - * example: - * Live - */ - value?: "Live" | "Approved"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassExpiryDate - * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2022-12-31 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * EmploymentSector - * Employment Sector of a FIN holder. - * - * **Note:** Only applies to a foreigner with a valid work pass. - * - * Some examples of possible values are: - * * MANUFACTURING - * * CONSTRUCTION - * * RECLAMATION - * * SERVICE - * * GRI-TECHNOLOGY - * * LANDSCAPING - * * INCINERATOR PLANT - * * MARINE SHIPYARD - * * PROCESS - * * HARBOURCRAFT - * * DOMESTIC - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employmentsector?: { - /** - * example: - * MANUFACTURING - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HouseholdIncome - * Household Income of Person in SGD. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - householdincome?: { - /** - * upper bound of the range of household income bracket - */ - high?: { - /** - * example: - * 5999 - */ - value?: number; - }; - /** - * lower bound of the range of household income bracket - */ - low?: { - /** - * example: - * 5000 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - vehicles?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Vehicle Registration Number displayed on the vehicle number plates - */ - vehicleno?: { - /** - * example: - * SDF1235A - */ - value?: string; - }; - /** - * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' - */ - type?: { - /** - * example: - * PASSENGER MOTOR CAR - */ - value?: string; - }; - /** - * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. - */ - iulabelno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' - */ - make?: { - /** - * example: - * TOYOTA - */ - value?: string; - }; - /** - * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' - */ - model?: { - /** - * example: - * COROLLA ALTIS - */ - value?: string; - }; - /** - * Vehicle Chassis Number - */ - chassisno?: { - /** - * example: - * ZC11S1735800 - */ - value?: string; - }; - /** - * Vehicle Engine Number - */ - engineno?: { - /** - * example: - * M13A1837453 - */ - value?: string; - }; - /** - * Vehicle Motor Number - */ - motorno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Manufacturing year - */ - yearofmanufacture?: { - /** - * example: - * 2010 - */ - value?: string; - }; - /** - * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - firstregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - originalregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Vehicle Certificate of Entitlement (COE) bid category - */ - coecategory?: { - /** - * example: - * A - CAR UP TO 1600CC & 97KW (130BHP) - */ - value?: string; - }; - /** - * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - coeexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - roadtaxexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. - */ - quotapremium?: { - /** - * example: - * 14000.01 - */ - value?: number; // double - }; - /** - * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). - */ - openmarketvalue?: { - /** - * example: - * 25000.01 - */ - value?: number; // double - }; - /** - * CO2 emission rate - */ - co2emission?: { - /** - * example: - * 146.01 - */ - value?: number; // double - }; - /** - * Status of the Vehicle. - * - * * 1 - LIVE - * * 2 - DE-REGISTERED - */ - status?: { - /** - * example: - * 1 - */ - code?: "1" | "2"; - /** - * example: - * LIVE - */ - desc?: "LIVE" | "DE-REGISTERED"; - }; - /** - * Vehicle Primary Colour (e.g. BLACK) - */ - primarycolour?: { - /** - * example: - * BLACK - */ - value?: string; - }; - /** - * Vehicle Primary Colour (e.g. WHITE) - */ - secondarycolour?: { - /** - * example: - * WHITE - */ - value?: string; - }; - /** - * Vehicle Attachment 1 (e.g. DISABLED) - */ - attachment1?: { - /** - * example: - * DISABLED - */ - value?: string; - }; - /** - * Vehicle Attachment 2 (e.g. WITH SUN ROOF) - */ - attachment2?: { - /** - * example: - * WITH SUN ROOF - */ - value?: string; - }; - /** - * Vehicle Attachment 3 (e.g. SIDE CURTAIN) - */ - attachment3?: { - /** - * example: - * SIDE CURTAIN - */ - value?: string; - }; - /** - * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) - */ - scheme?: { - /** - * example: - * REVISED OFF-PEAK CAR - */ - value?: string; - }; - /** - * Total Hydro Carbon (THC) emission rate - */ - thcemission?: { - /** - * example: - * 1.011001 - */ - value?: number; // double - }; - /** - * Carbon Monoxide emission rate - */ - coemission?: { - /** - * example: - * 1.100001 - */ - value?: number; // double - }; - /** - * Nitrogen Oxide (NOx) emission rate. - */ - noxemission?: { - /** - * example: - * 0.011001 - */ - value?: number; // double - }; - /** - * Particulates (PM - Atmospheric Particulate Matter) emission rate. - */ - pmemission?: { - /** - * example: - * 0.007 - */ - value?: number; // double - }; - /** - * Engine Capacity in cubic centimeter (cc) - */ - enginecapacity?: { - /** - * example: - * 1600 - */ - value?: number; - }; - /** - * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. - */ - powerrate?: { - /** - * example: - * 1.41 - */ - value?: number; // double - }; - /** - * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - effectiveownership?: { - /** - * example: - * 2010-08-31T20:12:12+08:00 - */ - value?: string; // date-time - }; - /** - * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG - */ - propellant?: { - /** - * example: - * Compressed Natural Gas - */ - value?: string; - }; - /** - * Maximum Unladen Weight in kilograms (kg) - */ - maximumunladenweight?: { - /** - * example: - * 1500 - */ - value?: number; - }; - /** - * Maximum Laden Weight in kilograms (kg) - */ - maximumladenweight?: { - /** - * example: - * 1795 - */ - value?: number; - }; - /** - * Minimum PARF Benefit in Singapore dollars (SGD). - */ - minimumparfbenefit?: { - /** - * example: - * 8770.01 - */ - value?: number; // double - }; - /** - * Number of Transfer - */ - nooftransfers?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Vehicle Parking Certificate. Applicable for Heavy Vehicles. - */ - vpc?: { - /** - * example: - * 1234567890 - */ - value?: string; - }; - }[]; - /** - * Driving Licence details of Person. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - drivinglicence?: { - /** - * Status of Certificate of Merit. Possible values: - * - * * Y - ELIGIBLE - * * N - NOT ELIGIBLE - */ - comstatus?: { - /** - * example: - * Y - */ - code?: "Y" | "N"; - /** - * - * example: - * ELIGIBLE - */ - desc?: "ELIGIBLE" | "NOT ELIGIBLE"; - }; - /** - * Total Demerit Points - */ - totaldemeritpoints?: { - /** - * example: - * 0 - */ - value?: number; - }; - /** - * - */ - suspension?: { - /** - * Suspension Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Suspension End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - disqualification?: { - /** - * Disqualification Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Disqualification End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - revocation?: { - /** - * Revocation Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Revocation End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * Provisional Driving Licence (PDL) - */ - pdl?: { - /** - * Validity of PDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * PDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * PDL Classes - * example: - * [ - * { - * "class": { - * "value": "2A" - * } - * }, - * { - * "class": { - * "value": "3A" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - }[]; - }; - /** - * Qualified Driving Licence (QDL) - */ - qdl?: { - /** - * Validity of QDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * QDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) - * example: - * [ - * { - * "class": { - * "value": "2A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * }, - * { - * "class": { - * "value": "3A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - issuedate?: { - value?: string; // date - }; - }[]; - }; - /** - * Serial Number of the Photo Card - */ - photocardserialno?: { - /** - * example: - * 115616 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Academic Qualifications - * Academic Qualifications achieved - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - academicqualifications?: { - /** - * Transcript of qualification - */ - transcripts?: { - /** - * Qualification's Name - */ - name?: { - /** - * example: - * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL - */ - value?: string; - }; - /** - * Year this qualification was attained - * - * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - yearattained?: { - /** - * example: - * 2018 - */ - value?: string; // date - }; - results?: { - /** - * Subject taken - */ - subject?: { - /** - * example: - * English Language - */ - value?: string; - }; - /** - * Level of subject taken - */ - level?: { - /** - * example: - * Ordinary - */ - value?: string; - }; - /** - * Grade attained - */ - grade?: { - /** - * example: - * A - */ - value?: string; - }; - /** - * Optional Sub Subject taken - */ - subsubject?: { - /** - * example: - * SPECIAL PAPER - */ - value?: string; - }; - /** - * Optional grade attained for subSubject - */ - subgrade?: { - /** - * example: - * One - */ - value?: string; - }; - }[]; - /** - * Explanatory Notes - */ - explanatorynotes?: { - value?: string; - }; - }[]; - /** - * Electronic Certificates Uploaded - */ - certificates?: { - /** - * File name of the electronic certificate - */ - name?: { - /** - * example: - * nus.opencert - */ - value?: string; - }; - /** - * File content of the electronic certificate, Base64 encoded - */ - content?: { - value?: string; - }; - /** - * Open Certificate Information - * - * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is - * at https://opencerts.io/ - */ - opencertificate?: { - /** - * The OpenCert serial number. - */ - id?: { - /** - * example: - * 100000000343840 - */ - value?: string; - }; - /** - * Indicate whether this open certificate is primary certificate - */ - primary?: { - /** - * example: - * true - */ - value?: boolean; - }; - }; - /** - * Indicate whether this file is open certificate - */ - opencertificateindicator?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - pioneergen?: { - eligibility: { - value: boolean; - }; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - quantum: { - value: string; - }; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C" | "C" | "C"; - /** - * Message code - * - * * '1' - PG Eligibility Tag: N - * * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N - * * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y - * * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N - * * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y - * * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y - * * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - message: { - code: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "1" | "2" | "3" | "4" | "5" | "6" | "7"; - desc: "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits." | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits."; - }; - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MerdekaGen - * Merdekagen details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - merdekagen?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - quantum?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Suggested user friendly display - */ - message?: { - /** - * example: - * 2 - */ - code?: string; - /** - * example: - * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. - */ - desc?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SilverSupport - * Silver Support Scheme details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - silversupport?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - amount?: { - /** - * example: - * 300 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GSTVoucher - * GST Voucher details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gstvoucher?: { - /** - * Indicator if user is excluded - */ - exclusion?: { - /** - * example: - * false - */ - value?: boolean; - }; - /** - * Indicator if user needs to signup - */ - signup?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount given for medisave account - */ - gstmedisave?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for ordinary account - */ - gstregular?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for special account - */ - gstspecial?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - } - /** - * Person instance's details - */ - export interface PersonCommon { - /** - * Partial UINFIN - * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - partialuinfin?: { - /** - * Value of the field, should be displayed as it is. - * example: - * *****111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * UINFIN - * Singapore issued identification number of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - uinfin?: { - /** - * value of the field, should be displayed as it is. - * example: - * S1111111D - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Name - * Full Name of the Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - name?: { - /** - * value of the field, should be displayed as it is. - * example: - * TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYin - * Han Yu Pin Yin name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinname?: { - /** - * example: - * CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Alias - * Alias name of the Person. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - aliasname?: { - /** - * value of the field. - * example: - * TRICIA TAN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HanYuPinYinAlias - * Han Yu Pin Yin Alias name of the Person. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hanyupinyinaliasname?: { - /** - * example: - * TRICIA CHEN XIAO HUI - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriedName - * Married name of the Person. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriedname?: { - /** - * value of the field, should be displayed as it is. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Sex - * Sex of Person. - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Race - * Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SecondaryRace - * Secondary Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - secondaryrace?: { - /** - * - * example: - * EU - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * EURASIAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Dialect - * Dialect of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dialect?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SWISS GERMAN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Nationality - * Nationality/Citizenship of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - nationality?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DOB - * Date of Birth of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - dob?: { - /** - * Value of data field. - * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): - * - full-date - * - date-fullyear "-" date-month - * - date-fullyear - * example: - * 1958-05-17 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * BirthCountry - * Country/Place of Birth of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - birthcountry?: { - /** - * - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ResidentialStatus - * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. - * - * - * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. - * In such cases, the `code` and `desc` properties will be blank or empty string (""). - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - * * < BLANK > (for FIN holders only) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} - /** - * example: - * CITIZEN - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportNumber - * Passport Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportnumber?: { - /** - * Value of data field. - * example: - * E35463874W - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassportExpiryDate - * Passport Expiry Date of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passportexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2020-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - regadd?: /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - mailadd?: /** - * MailAdd - * Mailing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - billadd?: /** - * BillAdd - * Billing Address of Person - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * HousingType - * Housing Type of Person (non-HDB only). - * - * **Note 1:** If `hdbtype` is available, this value will be null. - * - * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * Refer to `hdbtype` for detailed HDB type. - * - * * '121' - DETACHED HOUSE - * * '122' - SEMI-DETACHED HOUSE - * * '123' - TERRACE HOUSE - * * '131' - CONDOMINIUM - * * '132' - EXECUTIVE CONDOMINIUM - * * '139' - APARTMENT - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - housingtype?: { - /** - * - * example: - * 123 - */ - code?: "121" | "122" | "123" | "131" | "132" | "139"; - /** - * - * example: - * TERRACE HOUSE - */ - desc?: "DETACHED HOUSE" | "SEMI-DETACHED HOUSE" | "TERRACE HOUSE" | "CONDOMINIUM" | "EXECUTIVE CONDOMINIUM" | "APARTMENT"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HDBOwnership - * HDB Ownership details - * - */ - hdbownership?: { - /** - * Number of Owners. Note that this does not include executors, administrators or trustees. - */ - noofowners?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Address details (Singapore Format) - */ - address?: { - /** - * Type of Address (SG or UNFORMATTED for non SG) - */ - type?: "SG" | "UNFORMATTED"; - /** - * Block/House of Address - */ - block?: { - /** - * example: - * 548 - */ - value?: string; - }; - /** - * Building of Address - */ - building?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Floor of Address - */ - floor?: { - /** - * example: - * 09 - */ - value?: string; - }; - /** - * Unit of Address - */ - unit?: { - /** - * example: - * 128 - */ - value?: string; - }; - /** - * Street of Address - */ - street?: { - /** - * example: - * BEDOK NORTH AVENUE 1 - */ - value?: string; - }; - /** - * Postal Code of Address - */ - postal?: { - /** - * example: - * 460548 - */ - value?: string; - }; - /** - * Country/Place of Address. For AddressSG this will always be "SG". - */ - country?: { - code?: string; - desc?: string; - }; - }; - /** - * HDBType - * Flat Type of the HDB flat. - * - * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. - * - * **Note 2:** If `housingtype` is available, this value will be null. - * - * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. - * - * * '111' - 1-ROOM FLAT (HDB) - * * '112' - 2-ROOM FLAT (HDB) - * * '113' - 3-ROOM FLAT (HDB) - * * '114' - 4-ROOM FLAT (HDB) - * * '115' - 5-ROOM FLAT (HDB) - * * '116' - EXECUTIVE FLAT (HDB) - * * '118' - STUDIO APARTMENT (HDB) - */ - hdbtype?: { - /** - * - * example: - * 112 - */ - code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; - /** - * - * example: - * 2-ROOM FLAT (HDB) - */ - desc?: "1-ROOM FLAT (HDB)" | "2-ROOM FLAT (HDB)" | "3-ROOM FLAT (HDB)" | "4-ROOM FLAT (HDB)" | "5-ROOM FLAT (HDB)" | "EXECUTIVE FLAT (HDB)" | "STUDIO APARTMENT (HDB)"; - }; - /** - * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - leasecommencementdate?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Term of lease (in years) for the property computed from the lease commencement date. - */ - termoflease?: { - /** - * example: - * 99 - */ - value?: number; - }; - /** - * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dateofpurchase?: { - /** - * example: - * 2008-06-13 - */ - value?: string; // date - }; - /** - * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. - * - * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. - * - * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - dateofownershiptransfer?: { - /** - * example: - * 2018-06-13 - */ - value?: string; // date - }; - /** - * The amount of housing loan granted to owner(s) by HDB in SGD. - */ - loangranted?: { - /** - * example: - * 310000.01 - */ - value?: number; // double - }; - /** - * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. - */ - originalloanrepayment?: { - /** - * example: - * 25 - */ - value?: number; - }; - /** - * The remaining term of repayment for the loan in the format `years` + `months`. - */ - balanceloanrepayment?: { - years?: { - /** - * example: - * 2 - */ - value?: number; - }; - months?: { - /** - * example: - * 6 - */ - value?: number; - }; - }; - /** - * The amount of outstanding HDB loan owed by owner(s) in SGD. - */ - outstandingloanbalance?: { - /** - * example: - * 50000.01 - */ - value?: number; // double - }; - /** - * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. - */ - monthlyloaninstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. - */ - outstandinginstalment?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * The purchase price of the HDB flat in SGD. - */ - purchaseprice?: { - /** - * example: - * 1000.01 - */ - value?: number; // double - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }[]; - /** - * OwnerPrivate - * Ownership of Private Property Status of Person (based on IRAS information). - * - * * true - * * false - * * null (data not available) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - ownerprivate?: { - /** - * Value of data field. - * example: - * false - */ - value?: boolean; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Email - * Email Address of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - email?: { - /** - * Value of data field. - * example: - * test@gmail.com - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HomeNo - * Home Contact Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - homeno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MobileNo - * Mobile Number of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - mobileno?: { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Marital - * Marital Status of Person. - * - * * '1' - SINGLE - * * '2' - MARRIED - * * '3' - WIDOWED - * * '5' - DIVORCED - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marital?: { - /** - * - * example: - * 2 - */ - code?: "1" | "2" | "3" | "5"; - /** - * - * example: - * MARRIED - */ - desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageCertNo - * Certificate number of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagecertno?: { - /** - * Value of data field. - * example: - * 123456789012345 - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CountryOfMarriage - * Country/Place of the latest marriage. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - countryofmarriage?: { - /** - * - * example: - * SG - */ - code?: string; - /** - * - * example: - * SINGAPORE - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * MarriageDate - * Latest Marriage Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - marriagedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2007-01-01 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * DivorceDate - * Last Divorce Date of Person. - * - * - * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - divorcedate?: { - /** - * Value of data field. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * ChildrenBirthRecords - * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). - * - * This includes adoption of locally registered child. - * - * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. - * - * For child above 21, only the child’s Birth Cert Number will be shown. - */ - childrenbirthrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Birth certificate number of child. - */ - birthcertno?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - * - * *Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - * - * *Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - * - * *Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * D - */ - code?: "A" | "D"; - /** - * example: - * DECEASED - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * Time of Birth of child. - * - * Format: HHMM - */ - tob?: { - /** - * example: - * 0901 - */ - value?: string; - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Indicates whether the child is a Singapore Citizen at the time of birth. - * - * * Y - Yes - * * N - No - * * < BLANK > - Not applicable - */ - sgcitizenatbirthind?: { - /** - * example: - * Y - */ - value?: "Y" | "N" | ""; - }; - }[]; - /** - * SponsoredChildrenRecords - * Details of children sponsored to be SC/PR/LTVP - * - * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. - * - * For child above 21, only the child's last known NRIC/FIN will be shown. - */ - sponsoredchildrenrecords?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * NRIC/FIN of child - */ - nric?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * BirthCountry - * Country/Place of Birth of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - birthcountry?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * A - */ - code?: "A" | "D"; - /** - * example: - * ALIVE - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * ResidentialStatus - * Residential Status of child. Possible values: - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} - /** - * example: - * Citizen - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; - }; - /** - * Nationality/Citizenship of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - nationality?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - }; - /** - * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - scprgrantdate?: { - /** - * example: - * 2015-06-13 - */ - value?: string; // date - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - }[]; - /** - * EduLevel - * Highest Education Level of Person. - * - * * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY - * * '1' - PRIMARY - * * '2' - LOWER SECONDARY - * * '3' - SECONDARY - * * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION - * * '5' - POLYTECHNIC DIPLOMA - * * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA - * * '7' - BACHELOR'S OR EQUIVALENT - * * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) - * * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT - * * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - edulevel?: { - /** - * - * example: - * 7 - */ - code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; - /** - * example: - * BACHELOR'S OR EQUIVALENT - */ - desc?: "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" | "PRIMARY" | "LOWER SECONDARY" | "SECONDARY" | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" | "POLYTECHNIC DIPLOMA" | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" | "BACHELOR'S OR EQUIVALENT" | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" | "MASTER'S AND DOCTORATE OR EQUIVALENT" | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GradYear - * Year of Graduation of Person. Format: YYYY - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gradyear?: { - /** - * example: - * 2006 - */ - value?: string; // [0-9]{4} - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SchoolName - * Name of School of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - schoolname?: { - /** - * Code value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * T07GS3011J - */ - code?: string; - /** - * Name of school represented by 'code' - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * SIGLAP SECONDARY SCHOOL - */ - desc?: string; - /** - * Free text value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Occupation - * Occupation of Person. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - occupation?: { - /** - * Free text. - * - * For SC/PR holders, blank will be returned. - * example: - * - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Employment - * Name of Employer. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employment?: { - /** - * example: - * ALPHA - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassType - * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passtype?: { - /** - * Value of data field. - * example: - * RPass - */ - code?: string; - /** - * example: - * Work Permit - */ - desc?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassStatus - * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. - * * Live - * * Approved - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passstatus?: { - /** - * Value of data field. - * example: - * Live - */ - value?: "Live" | "Approved"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * PassExpiryDate - * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - passexpirydate?: { - /** - * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2022-12-31 - */ - value?: string; // date - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * EmploymentSector - * Employment Sector of a FIN holder. - * - * **Note:** Only applies to a foreigner with a valid work pass. - * - * Some examples of possible values are: - * * MANUFACTURING - * * CONSTRUCTION - * * RECLAMATION - * * SERVICE - * * GRI-TECHNOLOGY - * * LANDSCAPING - * * INCINERATOR PLANT - * * MARINE SHIPYARD - * * PROCESS - * * HARBOURCRAFT - * * DOMESTIC - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - employmentsector?: { - /** - * example: - * MANUFACTURING - */ - value?: string; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * HouseholdIncome - * Household Income of Person in SGD. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - householdincome?: { - /** - * upper bound of the range of household income bracket - */ - high?: { - /** - * example: - * 5999 - */ - value?: number; - }; - /** - * lower bound of the range of household income bracket - */ - low?: { - /** - * example: - * 5000 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - vehicles?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Vehicle Registration Number displayed on the vehicle number plates - */ - vehicleno?: { - /** - * example: - * SDF1235A - */ - value?: string; - }; - /** - * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' - */ - type?: { - /** - * example: - * PASSENGER MOTOR CAR - */ - value?: string; - }; - /** - * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. - */ - iulabelno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' - */ - make?: { - /** - * example: - * TOYOTA - */ - value?: string; - }; - /** - * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' - */ - model?: { - /** - * example: - * COROLLA ALTIS - */ - value?: string; - }; - /** - * Vehicle Chassis Number - */ - chassisno?: { - /** - * example: - * ZC11S1735800 - */ - value?: string; - }; - /** - * Vehicle Engine Number - */ - engineno?: { - /** - * example: - * M13A1837453 - */ - value?: string; - }; - /** - * Vehicle Motor Number - */ - motorno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Manufacturing year - */ - yearofmanufacture?: { - /** - * example: - * 2010 - */ - value?: string; - }; - /** - * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - firstregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - originalregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Vehicle Certificate of Entitlement (COE) bid category - */ - coecategory?: { - /** - * example: - * A - CAR UP TO 1600CC & 97KW (130BHP) - */ - value?: string; - }; - /** - * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - coeexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - roadtaxexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. - */ - quotapremium?: { - /** - * example: - * 14000.01 - */ - value?: number; // double - }; - /** - * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). - */ - openmarketvalue?: { - /** - * example: - * 25000.01 - */ - value?: number; // double - }; - /** - * CO2 emission rate - */ - co2emission?: { - /** - * example: - * 146.01 - */ - value?: number; // double - }; - /** - * Status of the Vehicle. - * - * * 1 - LIVE - * * 2 - DE-REGISTERED - */ - status?: { - /** - * example: - * 1 - */ - code?: "1" | "2"; - /** - * example: - * LIVE - */ - desc?: "LIVE" | "DE-REGISTERED"; - }; - /** - * Vehicle Primary Colour (e.g. BLACK) - */ - primarycolour?: { - /** - * example: - * BLACK - */ - value?: string; - }; - /** - * Vehicle Primary Colour (e.g. WHITE) - */ - secondarycolour?: { - /** - * example: - * WHITE - */ - value?: string; - }; - /** - * Vehicle Attachment 1 (e.g. DISABLED) - */ - attachment1?: { - /** - * example: - * DISABLED - */ - value?: string; - }; - /** - * Vehicle Attachment 2 (e.g. WITH SUN ROOF) - */ - attachment2?: { - /** - * example: - * WITH SUN ROOF - */ - value?: string; - }; - /** - * Vehicle Attachment 3 (e.g. SIDE CURTAIN) - */ - attachment3?: { - /** - * example: - * SIDE CURTAIN - */ - value?: string; - }; - /** - * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) - */ - scheme?: { - /** - * example: - * REVISED OFF-PEAK CAR - */ - value?: string; - }; - /** - * Total Hydro Carbon (THC) emission rate - */ - thcemission?: { - /** - * example: - * 1.011001 - */ - value?: number; // double - }; - /** - * Carbon Monoxide emission rate - */ - coemission?: { - /** - * example: - * 1.100001 - */ - value?: number; // double - }; - /** - * Nitrogen Oxide (NOx) emission rate. - */ - noxemission?: { - /** - * example: - * 0.011001 - */ - value?: number; // double - }; - /** - * Particulates (PM - Atmospheric Particulate Matter) emission rate. - */ - pmemission?: { - /** - * example: - * 0.007 - */ - value?: number; // double - }; - /** - * Engine Capacity in cubic centimeter (cc) - */ - enginecapacity?: { - /** - * example: - * 1600 - */ - value?: number; - }; - /** - * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. - */ - powerrate?: { - /** - * example: - * 1.41 - */ - value?: number; // double - }; - /** - * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - effectiveownership?: { - /** - * example: - * 2010-08-31T20:12:12+08:00 - */ - value?: string; // date-time - }; - /** - * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG - */ - propellant?: { - /** - * example: - * Compressed Natural Gas - */ - value?: string; - }; - /** - * Maximum Unladen Weight in kilograms (kg) - */ - maximumunladenweight?: { - /** - * example: - * 1500 - */ - value?: number; - }; - /** - * Maximum Laden Weight in kilograms (kg) - */ - maximumladenweight?: { - /** - * example: - * 1795 - */ - value?: number; - }; - /** - * Minimum PARF Benefit in Singapore dollars (SGD). - */ - minimumparfbenefit?: { - /** - * example: - * 8770.01 - */ - value?: number; // double - }; - /** - * Number of Transfer - */ - nooftransfers?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Vehicle Parking Certificate. Applicable for Heavy Vehicles. - */ - vpc?: { - /** - * example: - * 1234567890 - */ - value?: string; - }; - }[]; - /** - * Driving Licence details of Person. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - drivinglicence?: { - /** - * Status of Certificate of Merit. Possible values: - * - * * Y - ELIGIBLE - * * N - NOT ELIGIBLE - */ - comstatus?: { - /** - * example: - * Y - */ - code?: "Y" | "N"; - /** - * - * example: - * ELIGIBLE - */ - desc?: "ELIGIBLE" | "NOT ELIGIBLE"; - }; - /** - * Total Demerit Points - */ - totaldemeritpoints?: { - /** - * example: - * 0 - */ - value?: number; - }; - /** - * - */ - suspension?: { - /** - * Suspension Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Suspension End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - disqualification?: { - /** - * Disqualification Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Disqualification End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * - */ - revocation?: { - /** - * Revocation Start Date - */ - startdate?: { - /** - * example: - * - */ - value?: string; // date - }; - /** - * Revocation End Date - */ - enddate?: { - /** - * example: - * - */ - value?: string; // date - }; - }; - /** - * Provisional Driving Licence (PDL) - */ - pdl?: { - /** - * Validity of PDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * PDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * PDL Classes - * example: - * [ - * { - * "class": { - * "value": "2A" - * } - * }, - * { - * "class": { - * "value": "3A" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - }[]; - }; - /** - * Qualified Driving Licence (QDL) - */ - qdl?: { - /** - * Validity of QDL. Possible values: - * - * * V - VALID - * * E - EXPIRED - * * I - INVALID - * * N - NOT HOLDING - */ - validity?: { - /** - * example: - * V - */ - code?: "V" | "E" | "I" | "N"; - /** - * - * example: - * VALID - */ - desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; - }; - /** - * QDL Expiry Date - */ - expirydate?: { - /** - * example: - * 2020-06-15 - */ - value?: string; // date - }; - /** - * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) - * example: - * [ - * { - * "class": { - * "value": "2A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * }, - * { - * "class": { - * "value": "3A" - * }, - * "issuedate": { - * "value": "2018-06-06" - * } - * } - * ] - */ - classes?: { - class?: { - value?: string; - }; - issuedate?: { - value?: string; // date - }; - }[]; - }; - /** - * Serial Number of the Photo Card - */ - photocardserialno?: { - /** - * example: - * 115616 - */ - value?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Academic Qualifications - * Academic Qualifications achieved - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - academicqualifications?: { - /** - * Transcript of qualification - */ - transcripts?: { - /** - * Qualification's Name - */ - name?: { - /** - * example: - * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL - */ - value?: string; - }; - /** - * Year this qualification was attained - * - * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - yearattained?: { - /** - * example: - * 2018 - */ - value?: string; // date - }; - results?: { - /** - * Subject taken - */ - subject?: { - /** - * example: - * English Language - */ - value?: string; - }; - /** - * Level of subject taken - */ - level?: { - /** - * example: - * Ordinary - */ - value?: string; - }; - /** - * Grade attained - */ - grade?: { - /** - * example: - * A - */ - value?: string; - }; - /** - * Optional Sub Subject taken - */ - subsubject?: { - /** - * example: - * SPECIAL PAPER - */ - value?: string; - }; - /** - * Optional grade attained for subSubject - */ - subgrade?: { - /** - * example: - * One - */ - value?: string; - }; - }[]; - /** - * Explanatory Notes - */ - explanatorynotes?: { - value?: string; - }; - }[]; - /** - * Electronic Certificates Uploaded - */ - certificates?: { - /** - * File name of the electronic certificate - */ - name?: { - /** - * example: - * nus.opencert - */ - value?: string; - }; - /** - * File content of the electronic certificate, Base64 encoded - */ - content?: { - value?: string; - }; - /** - * Open Certificate Information - * - * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is - * at https://opencerts.io/ - */ - opencertificate?: { - /** - * The OpenCert serial number. - */ - id?: { - /** - * example: - * 100000000343840 - */ - value?: string; - }; - /** - * Indicate whether this open certificate is primary certificate - */ - primary?: { - /** - * example: - * true - */ - value?: boolean; - }; - }; - /** - * Indicate whether this file is open certificate - */ - opencertificateindicator?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - pioneergen?: { - eligibility: { - value: boolean; - }; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - lastupdated: string; // date - quantum: { - value: string; - }; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Message code - * - * * '1' - PG Eligibility Tag: N - * * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N - * * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y - * * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N - * * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y - * * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y - * * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - message: { - code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; - desc: "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits."; - }; - }; - } - /** - * Person instance's details - */ - export interface PersonCommunity { - /** - * MerdekaGen - * Merdekagen details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - merdekagen?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - quantum?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Suggested user friendly display - */ - message?: { - /** - * example: - * 2 - */ - code?: string; - /** - * example: - * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. - */ - desc?: string; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - pioneergen?: { - eligibility: { - value: boolean; - }; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - quantum: { - value: string; - }; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C" | "C"; - /** - * Message code - * - * * '1' - PG Eligibility Tag: N - * * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N - * * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y - * * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N - * * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y - * * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y - * * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - message: { - code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; - desc: "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits."; - }; - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * SilverSupport - * Silver Support Scheme details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - silversupport?: { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - amount?: { - /** - * example: - * 300 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * GSTVoucher - * GST Voucher details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - gstvoucher?: { - /** - * Indicator if user is excluded - */ - exclusion?: { - /** - * example: - * false - */ - value?: boolean; - }; - /** - * Indicator if user needs to signup - */ - signup?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount given for medisave account - */ - gstmedisave?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for ordinary account - */ - gstregular?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Amount given for special account - */ - gstspecial?: { - /** - * example: - * 100 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - } - /** - * Person instance's details - */ - export interface PersonFinancial { - /** - * Summary of latest Notice of Assessment within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - "noa-basic"?: { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * The second latest annual assessable income available from IRAS within the past 3 years. - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * Detailed breakdown of latest Notice of Assessment within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - noa?: { - /** - * Assessable Income - */ - amount?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * value of data field - */ - yearofassessment?: { - /** - * example: - * 2018 - */ - value?: string; // [0-9]{4} - }; - /** - * Assessable Income from employment - */ - employment?: { - /** - * example: - * 100000.01 - */ - value?: number; // double - }; - /** - * Assessable Income from trade - */ - trade?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from rent - */ - rent?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Assessable Income from interest - */ - interest?: { - /** - * example: - * 0 - */ - value?: number; // double - }; - /** - * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) - */ - taxclearance?: { - /** - * example: - * N - */ - value?: "Y" | "N"; - }; - /** - * Type of 'Notice of Assessment' (NOA) - */ - category?: { - /** - * example: - * ORIGINAL - */ - value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * History of Notice Of Assessment (Basic) - * Summary of latest 2 Notice of Assessments within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - "noahistory-basic"?: { - noas?: NOABasic[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * History of Notice Of Assessment - * Detailed breakdown of latest 2 Notice of Assessments within the past three years. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - noahistory?: { - noas?: NOA[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFContributions - * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. - * Maximum past 15 months' of contributions. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfcontributions?: { - /** - * example: - * [ - * { - * "date": { - * "value": "2016-12-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2016-12-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-01-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-02-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-03-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-04-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-05-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-06-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-12" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-07-21" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-01" - * }, - * "amount": { - * "value": 500 - * }, - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "date": { - * "value": "2017-08-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-08-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-09-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-10-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-11-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2017-12-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-01" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-12" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "date": { - * "value": "2018-01-21" - * }, - * "amount": { - * "value": 750 - * }, - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm - */ - date?: { - /** - * example: - * 2017-03-01 - */ - value?: string; // date - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-02 - */ - value?: string; - }; - /** - * Amount of contribution in SGD - */ - amount?: { - /** - * example: - * 500 - */ - value?: number; // double - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFEmployers - * Employers who paid CPF Contributions. Maximum up to past 14 months. - * - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfemployers?: { - /** - * example: - * [ - * { - * "month": { - * "value": "2016-11" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2016-12" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-01" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-02" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-03" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-04" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-05" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-06" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-07" - * }, - * "employer": { - * "value": "Crystal Horse Invest Pte Ltd" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-08" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-09" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-10" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-11" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2017-12" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * }, - * { - * "month": { - * "value": "2018-01" - * }, - * "employer": { - * "value": "Delta Marine Consultants PL" - * } - * } - * ] - */ - history?: { - /** - * Employer who paid the Contribution. - */ - employer?: { - /** - * example: - * Crystal Horse Invest Pte Ltd - */ - value?: string; - }; - /** - * Month for which CPF Contribution was paid. Format: YYYY-MM - */ - month?: { - /** - * example: - * 2017-03 - */ - value?: string; // date - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFBalances - * CPF Balances of Person in SGD. - * - * 'ra' will not appear in the results if user does not have a Retirement Account. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfbalances?: { - /** - * Amount Balance in CPF-MA - */ - ma?: { - /** - * example: - * 11470.71 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-OA - */ - oa?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-SA - */ - sa?: { - /** - * example: - * 21967.09 - */ - value?: number; // double - }; - /** - * Amount Balance in CPF-RA - */ - ra?: { - /** - * example: - * 0.01 - */ - value?: number; // double - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFHousingWithdrawal - * CPF Housing Withdrawal of Person. Amounts in SGD. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfhousingwithdrawal?: { - /** - * Withdrawal details for properties - */ - withdrawaldetails?: { - /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - address?: /** - * Registered Address of Property which withdrawal is made. - * - * **Note:** - * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - */ - /* Address details (Singapore Format) */ AddressSG | /* Address details (Non-Singapore Format) */ AddressUnformatted; - /** - * - */ - accruedinterestamt?: { - /** - * example: - * 1581.48 - */ - value?: number; // double - }; - /** - * - */ - monthlyinstalmentamt?: { - /** - * example: - * 1196.09 - */ - value?: number; // double - }; - /** - * - */ - principalwithdrawalamt?: { - /** - * example: - * 2897.01 - */ - value?: number; // double - }; - /** - * - */ - totalamountofcpfallowedforproperty?: { - /** - * example: - * 10000.01 - */ - value?: number; // double - }; - }[]; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPF Home Protection Scheme - * CPF Home Protection Scheme - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfhomeprotectionscheme?: { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - premium?: { - /** - * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 100.01 - */ - value?: number; - }; - shareofcover?: { - /** - * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true - * example: - * 20 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPF Dependant Protection Scheme - * CPF Dependant Protection Scheme - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - cpfdependantprotectionscheme?: { - coverage?: { - /** - * Indicator - * example: - * true - */ - value?: boolean; - }; - insurercode?: { - /** - * Insurer Code - * example: - * 9GEL - */ - value?: string; - }; - sumassuredamount?: { - /** - * Sum assured. OPTIONAL attribute, present only if 'coverage' is true - * example: - * 70000 - */ - value?: number; - }; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - }; - /** - * CPFInvestmentScheme - * CPF Investment Scheme. - */ - cpfinvestmentscheme?: { - /** - * Quantity of Special Discounted Shares shares held - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - sdsnetshareholdingqty?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * example: - * 1360 - */ - value?: number; - }; - /** - * CPF Investment Account Details - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - account?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Agent Bank Code - */ - agentbankcode?: { - /** - * example: - * OCBC - */ - value?: string; - }; - /** - * Account Number - */ - invbankacctno?: { - /** - * example: - * 098-26644-4 - */ - value?: string; - }; - }; - /** - * Status of Self-Awareness Questionnaire Participation. - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - saqparticipationstatus?: { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Possible values: - * - * * 'Y' – Participated - * * 'X' – Existing CPFIS participant - * * 'N' – Did not participate - * example: - * X - */ - code?: "Y" | "X" | "N"; - /** - * example: - * Participated - */ - desc?: string; - }; - }; - } - export interface PhoneNumLocal { - /** - * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. - */ - prefix?: { - /** - * example: - * + - */ - value?: string; - }; - /** - * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. - */ - areacode?: { - /** - * example: - * 65 - */ - value?: string; - }; - /** - * Phone Number. - */ - nbr?: { - /** - * example: - * 66132665 - */ - value?: string; - }; - } - export interface Pioneergen { - eligibility: { - value: boolean; - }; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - lastupdated: string; // date - quantum: { - value: string; - }; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Message code - * - * * '1' - PG Eligibility Tag: N - * * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N - * * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y - * * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N - * * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y - * * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y - * * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - message: { - code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; - desc: "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." | "Please call 1800-2222-888 to start receiving your PG benefits."; - }; - } - /** - * Race - * Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Race { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - } - /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - export type Regadd = /** - * RegAdd - * Registered Address of Person (including FIN holders) - * - * **Note:** - * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') - * - check the `type` discriminator property to differentiate between the two address formats - * - may be unavailable for some FIN holders - */ - /** - * Address details (Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressSg | /** - * Address details (Non-Singapore Format) - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - DataitemAddressUnformatted; - /** - * ResidentialStatus - * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. - * - * - * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. - * In such cases, the `code` and `desc` properties will be blank or empty string (""). - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - * * < BLANK > (for FIN holders only) - */ - export interface Residentialstatus { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} - /** - * example: - * CITIZEN - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; - } - /** - * SchoolName - * Name of School of Person. - */ - export interface Schoolname { - /** - * Code value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * T07GS3011J - */ - code?: string; - /** - * Name of school represented by 'code' - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * SIGLAP SECONDARY SCHOOL - */ - desc?: string; - /** - * Free text value of school name. - * - * **Note:** Code+desc and value are mutually exclusive. - * example: - * - */ - value?: string; - } - /** - * SecondaryRace - * Secondary Race of Person. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - export interface Secondaryrace { - /** - * - * example: - * EU - */ - code?: string; // [a-zA-Z]{2} - /** - * - * example: - * EURASIAN - */ - desc?: string; - } - /** - * Sex - * Sex of Person. - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - export interface Sex { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - } - /** - * SilverSupport - * Silver Support Scheme details - */ - export interface Silversupport { - /** - * Eligibility - */ - eligibility?: { - /** - * example: - * true - */ - value?: boolean; - }; - /** - * Amount eligible for - */ - amount?: { - /** - * example: - * 300 - */ - value?: number; - }; - /** - * Year given - */ - year?: { - /** - * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - * example: - * 2019 - */ - value?: string; // date - }; - } - /** - * example: - * { - * "classification": "C", - * "source": "1", - * "lastupdated": "2019-03-26" - * } - */ - export interface Sponsoredchildrenrecords { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * NRIC/FIN of child - */ - nric?: { - /** - * example: - * S5562882C - */ - value?: string; - }; - /** - * Full Name of child - */ - name?: { - /** - * example: - * Jo Tan Pei Ni - */ - value?: string; - }; - /** - * Han Yu Pin Yin name of child. - */ - hanyupinyinname?: { - /** - * example: - * Cheng Pei Ni - */ - value?: string; - }; - /** - * Alias name of child. - */ - aliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Han Yu Pin Yin Alias name of child. - */ - hanyupinyinaliasname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Married name of child. - */ - marriedname?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Sex of child. Possible values: - * - * * 'F' - FEMALE - * * 'M' - MALE - * * 'U' - UNKNOWN - */ - sex?: { - /** - * example: - * F - */ - code?: "F" | "M" | "U"; - /** - * example: - * FEMALE - */ - desc?: "FEMALE" | "MALE" | "UNKNOWN"; - }; - /** - * Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - race?: { - /** - * example: - * CN - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * CHINESE - */ - desc?: string; - }; - /** - * Secondary Race of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - secondaryrace?: { - /** - * example: - * - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * - */ - desc?: string; - }; - /** - * Dialect of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - dialect?: { - /** - * example: - * HK - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * HOKKIEN - */ - desc?: string; - }; - /** - * Date of Birth of child. - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - dob?: { - /** - * example: - * 2011-09-10 - */ - value?: string; // date - }; - /** - * BirthCountry - * Country/Place of Birth of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - birthcountry?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE - */ - desc?: string; - }; - /** - * Life Status of child. Possible values: - * - * * A - ALIVE - * * D - DECEASED - */ - lifestatus?: { - /** - * example: - * A - */ - code?: "A" | "D"; - /** - * example: - * ALIVE - */ - desc?: "ALIVE" | "DECEASED"; - }; - /** - * ResidentialStatus - * Residential Status of child. Possible values: - * - * * A - ALIEN - * * C - CITIZEN - * * P - PR - * * U - UNKNOWN - * * N - NOT APPLICABLE - */ - residentialstatus?: { - /** - * example: - * C - */ - code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} - /** - * example: - * Citizen - */ - desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; - }; - /** - * Nationality/Citizenship of child. - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - nationality?: { - /** - * example: - * SG - */ - code?: string; // [a-zA-Z]{2} - /** - * example: - * SINGAPORE CITIZEN - */ - desc?: string; - }; - /** - * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass - * - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 - */ - scprgrantdate?: { - /** - * example: - * 2015-06-13 - */ - value?: string; // date - }; - vaccinationrequirements?: { - /** - * Vaccination Requirement - * - * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. - */ - requirement?: { - /** - * example: - * 1M3D - */ - code?: string; - /** - * example: - * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL - */ - desc?: string; - }; - fulfilled?: { - /** - * example: - * true - */ - value?: boolean; - }; - }[]; - } - /** - * UINFIN - * Singapore issued identification number of the Person. - */ - export interface Uinfin { - /** - * value of the field, should be displayed as it is. - * example: - * S1111111D - */ - value?: string; - } - export type Vehicles = { - /** - * Data classification of data field. Default 'C' - Confidential. - */ - classification: "C"; - /** - * Source of data. - * - * * '1' - Government-verified - * * '2' - User provided - * * '3' - Field is Not Applicable to Person - * * '4' - Verified by SingPass - * - * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). - */ - source: "1" | "2" | "3" | "4"; - /** - * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. - */ - lastupdated: string; // date - /** - * Optional flag to indicate if data is unavailable from data source. - * - * **NOTE:** - * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. - * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). - * - If data is available from the data source, this property will not be present. - * - */ - unavailable?: boolean; - /** - * Vehicle Registration Number displayed on the vehicle number plates - */ - vehicleno?: { - /** - * example: - * SDF1235A - */ - value?: string; - }; - /** - * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' - */ - type?: { - /** - * example: - * PASSENGER MOTOR CAR - */ - value?: string; - }; - /** - * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. - */ - iulabelno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' - */ - make?: { - /** - * example: - * TOYOTA - */ - value?: string; - }; - /** - * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' - */ - model?: { - /** - * example: - * COROLLA ALTIS - */ - value?: string; - }; - /** - * Vehicle Chassis Number - */ - chassisno?: { - /** - * example: - * ZC11S1735800 - */ - value?: string; - }; - /** - * Vehicle Engine Number - */ - engineno?: { - /** - * example: - * M13A1837453 - */ - value?: string; - }; - /** - * Vehicle Motor Number - */ - motorno?: { - /** - * example: - * - */ - value?: string; - }; - /** - * Manufacturing year - */ - yearofmanufacture?: { - /** - * example: - * 2010 - */ - value?: string; - }; - /** - * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - firstregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - originalregistrationdate?: { - /** - * example: - * 2010-06-06 - */ - value?: string; // date - }; - /** - * Vehicle Certificate of Entitlement (COE) bid category - */ - coecategory?: { - /** - * example: - * A - CAR UP TO 1600CC & 97KW (130BHP) - */ - value?: string; - }; - /** - * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - coeexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - roadtaxexpirydate?: { - /** - * example: - * 2020-06-05 - */ - value?: string; // date - }; - /** - * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. - */ - quotapremium?: { - /** - * example: - * 14000.01 - */ - value?: number; // double - }; - /** - * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). - */ - openmarketvalue?: { - /** - * example: - * 25000.01 - */ - value?: number; // double - }; - /** - * CO2 emission rate - */ - co2emission?: { - /** - * example: - * 146.01 - */ - value?: number; // double - }; - /** - * Status of the Vehicle. - * - * * 1 - LIVE - * * 2 - DE-REGISTERED - */ - status?: { - /** - * example: - * 1 - */ - code?: "1" | "2"; - /** - * example: - * LIVE - */ - desc?: "LIVE" | "DE-REGISTERED"; - }; - /** - * Vehicle Primary Colour (e.g. BLACK) - */ - primarycolour?: { - /** - * example: - * BLACK - */ - value?: string; - }; - /** - * Vehicle Primary Colour (e.g. WHITE) - */ - secondarycolour?: { - /** - * example: - * WHITE - */ - value?: string; - }; - /** - * Vehicle Attachment 1 (e.g. DISABLED) - */ - attachment1?: { - /** - * example: - * DISABLED - */ - value?: string; - }; - /** - * Vehicle Attachment 2 (e.g. WITH SUN ROOF) - */ - attachment2?: { - /** - * example: - * WITH SUN ROOF - */ - value?: string; - }; - /** - * Vehicle Attachment 3 (e.g. SIDE CURTAIN) - */ - attachment3?: { - /** - * example: - * SIDE CURTAIN - */ - value?: string; - }; - /** - * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) - */ - scheme?: { - /** - * example: - * REVISED OFF-PEAK CAR - */ - value?: string; - }; - /** - * Total Hydro Carbon (THC) emission rate - */ - thcemission?: { - /** - * example: - * 1.011001 - */ - value?: number; // double - }; - /** - * Carbon Monoxide emission rate - */ - coemission?: { - /** - * example: - * 1.100001 - */ - value?: number; // double - }; - /** - * Nitrogen Oxide (NOx) emission rate. - */ - noxemission?: { - /** - * example: - * 0.011001 - */ - value?: number; // double - }; - /** - * Particulates (PM - Atmospheric Particulate Matter) emission rate. - */ - pmemission?: { - /** - * example: - * 0.007 - */ - value?: number; // double - }; - /** - * Engine Capacity in cubic centimeter (cc) - */ - enginecapacity?: { - /** - * example: - * 1600 - */ - value?: number; - }; - /** - * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. - */ - powerrate?: { - /** - * example: - * 1.41 - */ - value?: number; // double - }; - /** - * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' - */ - effectiveownership?: { - /** - * example: - * 2010-08-31T20:12:12+08:00 - */ - value?: string; // date-time - }; - /** - * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG - */ - propellant?: { - /** - * example: - * Compressed Natural Gas - */ - value?: string; - }; - /** - * Maximum Unladen Weight in kilograms (kg) - */ - maximumunladenweight?: { - /** - * example: - * 1500 - */ - value?: number; - }; - /** - * Maximum Laden Weight in kilograms (kg) - */ - maximumladenweight?: { - /** - * example: - * 1795 - */ - value?: number; - }; - /** - * Minimum PARF Benefit in Singapore dollars (SGD). - */ - minimumparfbenefit?: { - /** - * example: - * 8770.01 - */ - value?: number; // double - }; - /** - * Number of Transfer - */ - nooftransfers?: { - /** - * example: - * 2 - */ - value?: number; - }; - /** - * Vehicle Parking Certificate. Applicable for Heavy Vehicles. - */ - vpc?: { - /** - * example: - * 1234567890 - */ - value?: string; - }; - }[]; - } + export namespace Schemas { + /** + * Academic Qualifications + * Academic Qualifications achieved + */ + export interface Academicqualifications { + /** + * Transcript of qualification + */ + transcripts?: { + /** + * Qualification's Name + */ + name?: { + /** + * example: + * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL + */ + value?: string; + }; + /** + * Year this qualification was attained + * + * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + yearattained?: { + /** + * example: + * 2018 + */ + value?: string; // date + }; + results?: { + /** + * Subject taken + */ + subject?: { + /** + * example: + * English Language + */ + value?: string; + }; + /** + * Level of subject taken + */ + level?: { + /** + * example: + * Ordinary + */ + value?: string; + }; + /** + * Grade attained + */ + grade?: { + /** + * example: + * A + */ + value?: string; + }; + /** + * Optional Sub Subject taken + */ + subsubject?: { + /** + * example: + * SPECIAL PAPER + */ + value?: string; + }; + /** + * Optional grade attained for subSubject + */ + subgrade?: { + /** + * example: + * One + */ + value?: string; + }; + }[]; + /** + * Explanatory Notes + */ + explanatorynotes?: { + value?: string; + }; + }[]; + /** + * Electronic Certificates Uploaded + */ + certificates?: { + /** + * File name of the electronic certificate + */ + name?: { + /** + * example: + * nus.opencert + */ + value?: string; + }; + /** + * File content of the electronic certificate, Base64 encoded + */ + content?: { + value?: string; + }; + /** + * Open Certificate Information + * + * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is + * at https://opencerts.io/ + */ + opencertificate?: { + /** + * The OpenCert serial number. + */ + id?: { + /** + * example: + * 100000000343840 + */ + value?: string; + }; + /** + * Indicate whether this open certificate is primary certificate + */ + primary?: { + /** + * example: + * true + */ + value?: boolean; + }; + }; + /** + * Indicate whether this file is open certificate + */ + opencertificateindicator?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + } + /** + * Address details (Singapore Format) + */ + export interface AddressSG { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + } + /** + * Address details (Non-Singapore Format) + */ + export interface AddressUnformatted { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Unregistered Foreign address line 1 + */ + line1?: { + /** + * example: + * 4578 SMITHFIELD AVENUE + */ + value?: string; + }; + /** + * Unregistered Foreign address line 2 + */ + line2?: { + /** + * example: + * HARTFORD CT 06120 + */ + value?: string; + }; + } + /** + * Alias + * Alias name of the Person. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* + */ + export interface Aliasname { + /** + * value of the field. + * example: + * TRICIA TAN XIAO HUI + */ + value?: string; + } + /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + export type Billadd = + /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * BirthCountry + * Country/Place of Birth of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Birthcountry { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE + */ + desc?: string; + } + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Childrenbirthrecords { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Birth certificate number of child. + */ + birthcertno?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * D + */ + code?: "A" | "D"; + /** + * example: + * DECEASED + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * Time of Birth of child. + * + * Format: HHMM + */ + tob?: { + /** + * example: + * 0901 + */ + value?: string; + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Indicates whether the child is a Singapore Citizen at the time of birth. + * + * Y - Yes + * N - No + * < BLANK > - Not applicable + */ + sgcitizenatbirthind?: { + /** + * example: + * Y + */ + value?: "Y" | "N" | ""; + }; + } + /** + * CountryOfMarriage + * Country/Place of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + */ + export interface Countryofmarriage { + /** + * + * example: + * SG + */ + code?: string; + /** + * + * example: + * SINGAPORE + */ + desc?: string; + } + /** + * CPFBalances + * CPF Balances of Person in SGD. + * + * 'ra' will not appear in the results if user does not have a Retirement Account. + */ + export interface Cpfbalances { + /** + * Amount Balance in CPF-MA + */ + ma?: { + /** + * example: + * 11470.71 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-OA + */ + oa?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-SA + */ + sa?: { + /** + * example: + * 21967.09 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-RA + */ + ra?: { + /** + * example: + * 0.01 + */ + value?: number; // double + }; + } + /** + * CPFContributions + * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. + * Maximum past 15 months' of contributions. + * + */ + export interface Cpfcontributions { + /** + * example: + * [ + * { + * "date": { + * "value": "2016-12-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-08-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm + */ + date?: { + /** + * example: + * 2017-03-01 + */ + value?: string; // date + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-02 + */ + value?: string; + }; + /** + * Amount of contribution in SGD + */ + amount?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + }[]; + } + /** + * CPF Dependant Protection Scheme + * CPF Dependant Protection Scheme + */ + export interface Cpfdependantprotectionscheme { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + insurercode?: { + /** + * Insurer Code + * example: + * 9GEL + */ + value?: string; + }; + sumassuredamount?: { + /** + * Sum assured. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 70000 + */ + value?: number; + }; + } + /** + * CPFEmployers + * Employers who paid CPF Contributions. Maximum up to past 14 months. + * + */ + export interface Cpfemployers { + /** + * example: + * [ + * { + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-03 + */ + value?: string; // date + }; + }[]; + } + /** + * CPF Home Protection Scheme + * CPF Home Protection Scheme + */ + export interface Cpfhomeprotectionscheme { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + premium?: { + /** + * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 100.01 + */ + value?: number; + }; + shareofcover?: { + /** + * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true + * example: + * 20 + */ + value?: number; + }; + } + /** + * CPFHousingWithdrawal + * CPF Housing Withdrawal of Person. Amounts in SGD. + */ + export interface Cpfhousingwithdrawal { + /** + * Withdrawal details for properties + */ + withdrawaldetails?: { + /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + address?: /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /* Address details (Singapore Format) */ | AddressSG + | /* Address details (Non-Singapore Format) */ AddressUnformatted; + /** + * + */ + accruedinterestamt?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * + */ + monthlyinstalmentamt?: { + /** + * example: + * 1196.09 + */ + value?: number; // double + }; + /** + * + */ + principalwithdrawalamt?: { + /** + * example: + * 2897.01 + */ + value?: number; // double + }; + /** + * + */ + totalamountofcpfallowedforproperty?: { + /** + * example: + * 10000.01 + */ + value?: number; // double + }; + }[]; + } + /** + * CPFInvestmentScheme + * CPF Investment Scheme. + */ + export interface Cpfinvestmentscheme { + /** + * Quantity of Special Discounted Shares shares held + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sdsnetshareholdingqty?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * example: + * 1360 + */ + value?: number; + }; + /** + * CPF Investment Account Details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + account?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Agent Bank Code + */ + agentbankcode?: { + /** + * example: + * OCBC + */ + value?: string; + }; + /** + * Account Number + */ + invbankacctno?: { + /** + * example: + * 098-26644-4 + */ + value?: string; + }; + }; + /** + * Status of Self-Awareness Questionnaire Participation. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + saqparticipationstatus?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Possible values: + * + * 'Y' – Participated + * 'X' – Existing CPFIS participant + * 'N' – Did not participate + * example: + * X + */ + code?: "Y" | "X" | "N"; + /** + * example: + * Participated + */ + desc?: string; + }; + } + /** + * CPFLife + * CPF Lifelong Income For the Elderly (CPF LIFE) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Cpflife { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Flag to indicate the CPF Life membership of the user + */ + cpflifecoverage?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * CPF Life plan chosen + */ + cpflifeplan?: { + /** + * example: + * Standard Plan + */ + value?: string; + }; + /** + * Monthly payout from CPF Life in SGD + */ + cpflifemonthlypayout?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Flag to indicate if user is currently receiving monthly payouts from CPF LIFE + */ + cpflifepaymentcommencement?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Date of latest CPF Life payment. Can be blank. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + cpflifepaymentdate?: { + /** + * example: + * 2019-09-02 + */ + value?: string; // date + }; + } + /** + * CPFMedishieldLife + * CPF MediShield Life + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Cpfmedishieldlife { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Present only if underlying 'hascovertag' is not empty (true or false) from CPF + */ + medishieldlifecoverage?: { + /** + * Status of cover of user. + */ + hascovertag?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Name of the current payer who pay for this policy for current policy renewal date. + * + * Present only if 'hascovertag' is true. + */ + payername?: { + value?: string; + }; + /** + * Net Premium Payable in SGD after subsidies, Additional Premium Support and Government Benefit (if applicable) for current policy year. + * + * Present only if 'hascovertag' is true. + * + */ + netpremiumpayable?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Renewal date for current policy year. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * + * Present only if 'hascovertag' is true. + * + */ + policyrenewaldate?: { + /** + * example: + * 2019-07-02 + */ + value?: string; // date + }; + }; + /** + * Present only if underlying 'hascovertag' is not empty (true or false) from CPF + */ + integratedshieldplancoverage?: { + /** + * Status of cover of user. + */ + hascovertag?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Name of the current payer who pay for this policy for current policy renewal date. + * + * Present only if 'hascovertag' is true. + */ + payername?: { + value?: string; + }; + /** + * Company code of private insurer. Refer to 'Code Listing (InsurerCode)' in https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx for list of possible values + * + * Present only if 'hascovertag' is true. + */ + insurercode?: { + value?: string; + }; + }; + /** + * Empty array will be returned if there is no data + */ + medishieldlifedependants?: { + /** + * Name of dependants whom the enquirer is paying for. + */ + dependantname?: { + value?: string; + }; + /** + * Net Premium Payable in SGD after subsidies, Additional Premium Support and Government Benefit (if applicable) for current policy year + */ + netpremiumpayable?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Renewal date for current policy year. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * + * Present only if 'hascovertag' is true. + * + */ + policyrenewaldate?: { + /** + * example: + * 2019-07-02 + */ + value?: string; // date + }; + }[]; + /** + * Empty array will be returned if there is no data + */ + integratedshieldplandependants?: { + /** + * Name of dependants whom the enquirer is paying for. + */ + dependantname?: { + value?: string; + }; + /** + * Company code of private insurer. Refer to 'Code Listing (InsurerCode)' in https://public.cloud.myinfo.gov.sg/dpp/frontend/assets/api-lib/myinfo/downloads/myinfo-api-code-tables.xlsx for list of possible values + * + * Present only if 'hascovertag' is true. + */ + insurercode?: { + value?: string; + }; + }[]; + } + /** + * CPFMonthlyPayouts + * CPF Monthly Payouts (Non-LIFE) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Cpfmonthlypayouts { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Monthly payout amount in SGD + */ + monthlypayout?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Flag to indicate if user is currently receiving monthly payouts + */ + paymentcommencement?: { + /** + * example: + * true + */ + value?: boolean; + }; + } + /** + * CPFRSTUCurrentYearTaxRelief + * CPF Retirement Savings Topping-up Scheme - Current Year Tax Relief + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Cpfrstucurrentyeartaxrelief { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Total tax relief from self top-up in SGD + */ + totaltaxreliefself?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Remaining tax relief from self top-up in SGD + */ + remainingtaxreliefself?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Total tax relief from top-up by loved ones in SGD + */ + totaltaxrelieflovedones?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Remaining tax relief from top-up by loved ones in SGD + */ + remainingtaxrelieflovedones?: { + /** + * example: + * 1000 + */ + value?: number; + }; + } + /** + * CPFRSTUSelfTopupAmount + * CPF Retirement Savings Topping-up Scheme - Maximum amount you can top-up using cash and CPF + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Cpfrstuselftopupamount { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Maximum amount you can top up using cash + */ + selftopupusingcash?: { + /** + * example: + * 1000 + */ + value?: number; + }; + /** + * Maximum amount you can transfer using CPF + */ + selftopupusingcpf?: { + /** + * example: + * 1000 + */ + value?: number; + }; + } + /** + * CPFTransactions + * CPF Transaction History of Person in SGD. + * Maximum past 15 months' of transactions. + * + */ + export interface Cpftransactions { + history?: { + /** + * Type of transaction + */ + txntype?: { + /** + * example: + * CON + */ + code?: string; + /** + * example: + * Contributions/Government Cash Grant/Government Top-up + */ + desc?: string; + }; + /** + * Account Number. May be present if txntype code is 'TRF'. + */ + accountno?: { + value?: string; + }; + /** + * Month of transaction. Format: YYYY-MM + * + * Present if txntype code is 'CON'/'RFD'/'ADJ' + */ + month?: { + /** + * example: + * 2017-02 + */ + value?: string; + }; + /** + * Date of Transaction. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm + */ + date?: { + /** + * example: + * 2017-03-01 + */ + value?: string; // date + }; + /** + * Footer reference + */ + referenceno?: { + value?: string; + }; + /** + * Transaction Amount to Ordinary Account in SGD + */ + oatxnamt?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + /** + * Transaction Amount to Special Account in SGD + */ + satxnamt?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + /** + * Transaction Amount to Medisave Account in SGD + */ + matxnamt?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + /** + * Transaction Amount to Retirement Account in SGD. Only present if user has Retirement Account + */ + ratxnamt?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + }[]; + /** + * example: + * [ + * { + * "message": { + * "value": "REF A: EMPLOYER XXXX" + * } + * }, + * { + * "message": { + * "value": "B: EMPLOYER YYYY" + * } + * } + * ] + */ + footers?: { + message?: { + /** + * example: + * REF A: EMPLOYER XXXX + */ + value?: string; + }; + }[]; + } + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface DataFieldProperties { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + } + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface DataitemAddressSg { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + } + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface DataitemAddressUnformatted { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Unregistered Foreign address line 1 + */ + line1?: { + /** + * example: + * 4578 SMITHFIELD AVENUE + */ + value?: string; + }; + /** + * Unregistered Foreign address line 2 + */ + line2?: { + /** + * example: + * HARTFORD CT 06120 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + } + /** + * Dialect + * Dialect of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Dialect { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SWISS GERMAN + */ + desc?: string; + } + /** + * DivorceDate + * Last Divorce Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + */ + export interface Divorcedate { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * + */ + value?: string; // date + } + /** + * DOB + * Date of Birth of Person. + */ + export interface Dob { + /** + * Value of data field. + * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): + * - full-date + * - date-fullyear "-" date-month + * - date-fullyear + * example: + * 1958-05-17 + */ + value?: string; // date + } + /** + * Driving Licence details of Person. + * + */ + export interface Drivinglicence { + /** + * Status of Certificate of Merit. Possible values: + * + * Y - ELIGIBLE + * N - NOT ELIGIBLE + */ + comstatus?: { + /** + * example: + * Y + */ + code?: "Y" | "N"; + /** + * + * example: + * ELIGIBLE + */ + desc?: "ELIGIBLE" | "NOT ELIGIBLE"; + }; + /** + * Total Demerit Points + */ + totaldemeritpoints?: { + /** + * example: + * 0 + */ + value?: number; + }; + /** + * + */ + suspension?: { + /** + * Suspension Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Suspension End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + disqualification?: { + /** + * Disqualification Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Disqualification End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + revocation?: { + /** + * Revocation Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Revocation End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * Provisional Driving Licence (PDL) + */ + pdl?: { + /** + * Validity of PDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * PDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * PDL Classes + * example: + * [ + * { + * "class": { + * "value": "2A" + * } + * }, + * { + * "class": { + * "value": "3A" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + }[]; + }; + /** + * Qualified Driving Licence (QDL) + */ + qdl?: { + /** + * Validity of QDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * QDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) + * example: + * [ + * { + * "class": { + * "value": "2A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * }, + * { + * "class": { + * "value": "3A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + issuedate?: { + value?: string; // date + }; + }[]; + }; + /** + * Serial Number of the Photo Card + */ + photocardserialno?: { + /** + * example: + * 115616 + */ + value?: string; + }; + } + /** + * EduLevel + * Highest Education Level of Person. + * + * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY + * '1' - PRIMARY + * '2' - LOWER SECONDARY + * '3' - SECONDARY + * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION + * '5' - POLYTECHNIC DIPLOMA + * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA + * '7' - BACHELOR'S OR EQUIVALENT + * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) + * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT + * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) + */ + export interface Edulevel { + /** + * + * example: + * 7 + */ + code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; + /** + * example: + * BACHELOR'S OR EQUIVALENT + */ + desc?: + | "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" + | "PRIMARY" + | "LOWER SECONDARY" + | "SECONDARY" + | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" + | "POLYTECHNIC DIPLOMA" + | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" + | "BACHELOR'S OR EQUIVALENT" + | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" + | "MASTER'S AND DOCTORATE OR EQUIVALENT" + | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; + } + /** + * Email + * Email Address of Person. + */ + export interface Email { + /** + * Value of data field. + * example: + * test@gmail.com + */ + value?: string; + } + /** + * Employment + * Name of Employer. + */ + export interface Employment { + /** + * example: + * ALPHA + */ + value?: string; + } + /** + * EmploymentSector + * Employment Sector of a FIN holder. + * + * **Note:** Only applies to a foreigner with a valid work pass. + * + * Some examples of possible values are: + * MANUFACTURING + * CONSTRUCTION + * RECLAMATION + * SERVICE + * GRI-TECHNOLOGY + * LANDSCAPING + * INCINERATOR PLANT + * MARINE SHIPYARD + * PROCESS + * HARBOURCRAFT + * DOMESTIC + */ + export interface Employmentsector { + /** + * example: + * MANUFACTURING + */ + value?: string; + } + /** + * GradYear + * Year of Graduation of Person. Format: YYYY + */ + export interface Gradyear { + /** + * example: + * 2006 + */ + value?: string; // [0-9]{4} + } + /** + * GSTVoucher + * GST Voucher details + */ + export interface Gstvoucher { + /** + * Indicator if user is excluded + */ + exclusion?: { + /** + * example: + * false + */ + value?: boolean; + }; + /** + * Indicator if user needs to signup + */ + signup?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount given for medisave account + */ + gstmedisave?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for ordinary account + */ + gstregular?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for special account + */ + gstspecial?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + } + /** + * HDBOwnership + * HDB Ownership details + * + * **TODO: is this tied to the registered address or the person (UINFIN) or both?** + * + */ + export interface HDBOwnership { + /** + * Number of Owners. Note that this does not include executors, administrators or trustees. + */ + noofowners?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Address details (Singapore Format) + */ + address?: { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + }; + /** + * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + leasecommencementdate?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Term of lease (in years) for the property computed from the lease commencement date. + */ + termoflease?: { + /** + * example: + * 99 + */ + value?: number; + }; + /** + * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dateofpurchase?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. + * + * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. + * + * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + dateofownershiptransfer?: { + /** + * example: + * 2018-06-13 + */ + value?: string; // date + }; + /** + * The amount of housing loan granted to owner(s) by HDB in SGD. + */ + loangranted?: { + /** + * example: + * 310000.01 + */ + value?: number; // double + }; + /** + * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. + */ + originalloanrepayment?: { + /** + * example: + * 25 + */ + value?: number; + }; + /** + * The remaining term of repayment for the loan in the format `years` + `months`. + */ + balanceloanrepayment?: { + years?: { + /** + * example: + * 2 + */ + value?: number; + }; + months?: { + /** + * example: + * 6 + */ + value?: number; + }; + }; + /** + * The amount of outstanding HDB loan owed by owner(s) in SGD. + */ + outstandingloanbalance?: { + /** + * example: + * 50000.01 + */ + value?: number; // double + }; + /** + * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. + */ + monthlyloaninstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. + */ + outstandinginstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The purchase price of the HDB flat in SGD. + */ + purchaseprice?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + } + /** + * HanYuPinYinAlias + * Han Yu Pin Yin Alias name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* + */ + export interface Hanyupinyinaliasname { + /** + * example: + * TRICIA CHEN XIAO HUI + */ + value?: string; + } + /** + * HanYuPinYin + * Han Yu Pin Yin name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* + */ + export interface Hanyupinyinname { + /** + * example: + * CHEN XIAO HUI + */ + value?: string; + } + /** + * HDBOwnership + * HDB Ownership details + * + * **TODO: is this tied to the registered address or the person (UINFIN) or both?** + * + */ + export interface Hdbownership { + /** + * Number of Owners. Note that this does not include executors, administrators or trustees. + */ + noofowners?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Address details (Singapore Format) + */ + address?: { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + }; + /** + * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + leasecommencementdate?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Term of lease (in years) for the property computed from the lease commencement date. + */ + termoflease?: { + /** + * example: + * 99 + */ + value?: number; + }; + /** + * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dateofpurchase?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. + * + * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. + * + * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + dateofownershiptransfer?: { + /** + * example: + * 2018-06-13 + */ + value?: string; // date + }; + /** + * The amount of housing loan granted to owner(s) by HDB in SGD. + */ + loangranted?: { + /** + * example: + * 310000.01 + */ + value?: number; // double + }; + /** + * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. + */ + originalloanrepayment?: { + /** + * example: + * 25 + */ + value?: number; + }; + /** + * The remaining term of repayment for the loan in the format `years` + `months`. + */ + balanceloanrepayment?: { + years?: { + /** + * example: + * 2 + */ + value?: number; + }; + months?: { + /** + * example: + * 6 + */ + value?: number; + }; + }; + /** + * The amount of outstanding HDB loan owed by owner(s) in SGD. + */ + outstandingloanbalance?: { + /** + * example: + * 50000.01 + */ + value?: number; // double + }; + /** + * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. + */ + monthlyloaninstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. + */ + outstandinginstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The purchase price of the HDB flat in SGD. + */ + purchaseprice?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + } + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + export interface Hdbtype { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + } + /** + * HomeNo + * Home Contact Number of Person. + */ + export interface Homeno { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + } + /** + * HouseholdIncome + * Household Income of Person in SGD. + */ + export interface Householdincome { + /** + * upper bound of the range of household income bracket + */ + high?: { + /** + * example: + * 5999 + */ + value?: number; + }; + /** + * lower bound of the range of household income bracket + */ + low?: { + /** + * example: + * 5000 + */ + value?: number; + }; + } + /** + * HousingType + * Housing Type of Person (non-HDB only). + * + * **Note 1:** If `hdbtype` is available, this value will be null. + * + * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * Refer to `hdbtype` for detailed HDB type. + * + * '121' - DETACHED HOUSE + * '122' - SEMI-DETACHED HOUSE + * '123' - TERRACE HOUSE + * '131' - CONDOMINIUM + * '132' - EXECUTIVE CONDOMINIUM + * '139' - APARTMENT + */ + export interface Housingtype { + /** + * + * example: + * 123 + */ + code?: "121" | "122" | "123" | "131" | "132" | "139"; + /** + * + * example: + * TERRACE HOUSE + */ + desc?: + | "DETACHED HOUSE" + | "SEMI-DETACHED HOUSE" + | "TERRACE HOUSE" + | "CONDOMINIUM" + | "EXECUTIVE CONDOMINIUM" + | "APARTMENT"; + } + /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + export type Mailadd = + /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * Marital + * Marital Status of Person. + * + * '1' - SINGLE + * '2' - MARRIED + * '3' - WIDOWED + * '5' - DIVORCED + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + */ + export interface Marital { + /** + * + * example: + * 2 + */ + code?: "1" | "2" | "3" | "5"; + /** + * + * example: + * MARRIED + */ + desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; + } + /** + * MarriageCertNo + * Certificate number of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + */ + export interface Marriagecertno { + /** + * Value of data field. + * example: + * 123456789012345 + */ + value?: string; + } + /** + * MarriageDate + * Latest Marriage Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + */ + export interface Marriagedate { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2007-01-01 + */ + value?: string; // date + } + /** + * MarriedName + * Married name of the Person. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + */ + export interface Marriedname { + /** + * value of the field, should be displayed as it is. + * example: + * + */ + value?: string; + } + /** + * MerdekaGen + * Merdekagen details + */ + export interface Merdekagen { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + quantum?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Suggested user friendly display + */ + message?: { + /** + * example: + * 2 + */ + code?: string; + /** + * example: + * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. + */ + desc?: string; + }; + } + /** + * MobileNo + * Mobile Number of Person. + */ + export interface Mobileno { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + } + export interface NOA { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * value of data field + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + /** + * Assessable Income from employment + */ + employment?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * Assessable Income from trade + */ + trade?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from rent + */ + rent?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from interest + */ + interest?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) + */ + taxclearance?: { + /** + * example: + * N + */ + value?: "Y" | "N"; + }; + /** + * Type of 'Notice of Assessment' (NOA) + */ + category?: { + /** + * example: + * ORIGINAL + */ + value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; + }; + } + export interface NOABasic { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * The second latest annual assessable income available from IRAS within the past 3 years. + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + } + /** + * Name + * Full Name of the Person. + */ + export interface Name { + /** + * value of the field, should be displayed as it is. + * example: + * TAN XIAO HUI + */ + value?: string; + } + /** + * Nationality + * Nationality/Citizenship of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Nationality { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + } + /** + * History of Notice Of Assessment + * Detailed breakdown of latest 2 Notice of Assessments within the past three years. + */ + export interface Noahistory { + noas?: NOA[]; + } + /** + * History of Notice Of Assessment (Basic) + * Summary of latest 2 Notice of Assessments within the past three years. + */ + export interface NoahistoryBasic { + noas?: NOABasic[]; + } + /** + * Occupation + * Occupation of Person. + */ + export interface Occupation { + /** + * Free text. + * + * For SC/PR holders, blank will be returned. + * example: + * + */ + value?: string; + } + /** + * OwnerPrivate + * Ownership of Private Property Status of Person (based on IRAS information). + * + * true + * false + * null (data not available) + */ + export interface Ownerprivate { + /** + * Value of data field. + * example: + * false + */ + value?: boolean; + } + /** + * Partial UINFIN + * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. + */ + export interface Partialuinfin { + /** + * Value of the field, should be displayed as it is. + * example: + * *****111D + */ + value?: string; + } + /** + * PassExpiryDate + * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. + */ + export interface Passexpirydate { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2022-12-31 + */ + value?: string; // date + } + /** + * PassportExpiryDate + * Passport Expiry Date of Person. + */ + export interface Passportexpirydate { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2020-01-01 + */ + value?: string; // date + } + /** + * PassportNumber + * Passport Number of Person. + */ + export interface Passportnumber { + /** + * Value of data field. + * example: + * E35463874W + */ + value?: string; + } + /** + * PassStatus + * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * Live + * Approved + * + */ + export interface Passstatus { + /** + * Value of data field. + * example: + * Live + */ + value?: "Live" | "Approved"; + } + /** + * PassType + * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Passtype { + /** + * Value of data field. + * example: + * RPass + */ + code?: string; + /** + * example: + * Work Permit + */ + desc?: string; + } + /** + * Person instance's details (Basic Profile) + */ + export interface Person { + /** + * Partial UINFIN + * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + partialuinfin?: { + /** + * Value of the field, should be displayed as it is. + * example: + * *****111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * UINFIN + * Singapore issued identification number of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + uinfin?: { + /** + * value of the field, should be displayed as it is. + * example: + * S1111111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Name + * Full Name of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + name?: { + /** + * value of the field, should be displayed as it is. + * example: + * TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYin + * Han Yu Pin Yin name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinname?: { + /** + * example: + * CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Alias + * Alias name of the Person. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + aliasname?: { + /** + * value of the field. + * example: + * TRICIA TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYinAlias + * Han Yu Pin Yin Alias name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinaliasname?: { + /** + * example: + * TRICIA CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriedName + * Married name of the Person. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriedname?: { + /** + * value of the field, should be displayed as it is. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Sex + * Sex of Person. + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Race + * Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SecondaryRace + * Secondary Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + secondaryrace?: { + /** + * + * example: + * EU + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * EURASIAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Dialect + * Dialect of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dialect?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SWISS GERMAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Nationality + * Nationality/Citizenship of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + nationality?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DOB + * Date of Birth of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dob?: { + /** + * Value of data field. + * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): + * - full-date + * - date-fullyear "-" date-month + * - date-fullyear + * example: + * 1958-05-17 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * BirthCountry + * Country/Place of Birth of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + birthcountry?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ResidentialStatus + * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. + * + * + * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. + * In such cases, the `code` and `desc` properties will be blank or empty string (""). + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + * < BLANK > (for FIN holders only) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} + /** + * example: + * CITIZEN + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportNumber + * Passport Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportnumber?: { + /** + * Value of data field. + * example: + * E35463874W + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportExpiryDate + * Passport Expiry Date of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2020-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + regadd?: /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + mailadd?: /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + billadd?: /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * HousingType + * Housing Type of Person (non-HDB only). + * + * **Note 1:** If `hdbtype` is available, this value will be null. + * + * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * Refer to `hdbtype` for detailed HDB type. + * + * '121' - DETACHED HOUSE + * '122' - SEMI-DETACHED HOUSE + * '123' - TERRACE HOUSE + * '131' - CONDOMINIUM + * '132' - EXECUTIVE CONDOMINIUM + * '139' - APARTMENT + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + housingtype?: { + /** + * + * example: + * 123 + */ + code?: "121" | "122" | "123" | "131" | "132" | "139"; + /** + * + * example: + * TERRACE HOUSE + */ + desc?: + | "DETACHED HOUSE" + | "SEMI-DETACHED HOUSE" + | "TERRACE HOUSE" + | "CONDOMINIUM" + | "EXECUTIVE CONDOMINIUM" + | "APARTMENT"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBOwnership + * HDB Ownership details + * + */ + hdbownership?: { + /** + * Number of Owners. Note that this does not include executors, administrators or trustees. + */ + noofowners?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Address details (Singapore Format) + */ + address?: { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + }; + /** + * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + leasecommencementdate?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Term of lease (in years) for the property computed from the lease commencement date. + */ + termoflease?: { + /** + * example: + * 99 + */ + value?: number; + }; + /** + * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dateofpurchase?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. + * + * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. + * + * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + dateofownershiptransfer?: { + /** + * example: + * 2018-06-13 + */ + value?: string; // date + }; + /** + * The amount of housing loan granted to owner(s) by HDB in SGD. + */ + loangranted?: { + /** + * example: + * 310000.01 + */ + value?: number; // double + }; + /** + * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. + */ + originalloanrepayment?: { + /** + * example: + * 25 + */ + value?: number; + }; + /** + * The remaining term of repayment for the loan in the format `years` + `months`. + */ + balanceloanrepayment?: { + years?: { + /** + * example: + * 2 + */ + value?: number; + }; + months?: { + /** + * example: + * 6 + */ + value?: number; + }; + }; + /** + * The amount of outstanding HDB loan owed by owner(s) in SGD. + */ + outstandingloanbalance?: { + /** + * example: + * 50000.01 + */ + value?: number; // double + }; + /** + * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. + */ + monthlyloaninstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. + */ + outstandinginstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The purchase price of the HDB flat in SGD. + */ + purchaseprice?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }[]; + /** + * OwnerPrivate + * Ownership of Private Property Status of Person (based on IRAS information). + * + * true + * false + * null (data not available) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + ownerprivate?: { + /** + * Value of data field. + * example: + * false + */ + value?: boolean; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Email + * Email Address of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + email?: { + /** + * Value of data field. + * example: + * test@gmail.com + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HomeNo + * Home Contact Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + homeno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MobileNo + * Mobile Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + mobileno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Marital + * Marital Status of Person. + * + * '1' - SINGLE + * '2' - MARRIED + * '3' - WIDOWED + * '5' - DIVORCED + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marital?: { + /** + * + * example: + * 2 + */ + code?: "1" | "2" | "3" | "5"; + /** + * + * example: + * MARRIED + */ + desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageCertNo + * Certificate number of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagecertno?: { + /** + * Value of data field. + * example: + * 123456789012345 + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CountryOfMarriage + * Country/Place of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + countryofmarriage?: { + /** + * + * example: + * SG + */ + code?: string; + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageDate + * Latest Marriage Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2007-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DivorceDate + * Last Divorce Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + divorcedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ChildrenBirthRecords + * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). + * + * This includes adoption of locally registered child. + * + * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. + * + * For child above 21, only the child’s Birth Cert Number will be shown. + */ + childrenbirthrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Birth certificate number of child. + */ + birthcertno?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * D + */ + code?: "A" | "D"; + /** + * example: + * DECEASED + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * Time of Birth of child. + * + * Format: HHMM + */ + tob?: { + /** + * example: + * 0901 + */ + value?: string; + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Indicates whether the child is a Singapore Citizen at the time of birth. + * + * Y - Yes + * N - No + * < BLANK > - Not applicable + */ + sgcitizenatbirthind?: { + /** + * example: + * Y + */ + value?: "Y" | "N" | ""; + }; + }[]; + /** + * SponsoredChildrenRecords + * Details of children sponsored to be SC/PR/LTVP + * + * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. + * + * For child above 21, only the child's last known NRIC/FIN will be shown. + */ + sponsoredchildrenrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * NRIC/FIN of child + */ + nric?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * BirthCountry + * Country/Place of Birth of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + birthcountry?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * A + */ + code?: "A" | "D"; + /** + * example: + * ALIVE + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * ResidentialStatus + * Residential Status of child. Possible values: + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} + /** + * example: + * Citizen + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; + }; + /** + * Nationality/Citizenship of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + nationality?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + }; + /** + * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + scprgrantdate?: { + /** + * example: + * 2015-06-13 + */ + value?: string; // date + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + }[]; + /** + * EduLevel + * Highest Education Level of Person. + * + * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY + * '1' - PRIMARY + * '2' - LOWER SECONDARY + * '3' - SECONDARY + * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION + * '5' - POLYTECHNIC DIPLOMA + * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA + * '7' - BACHELOR'S OR EQUIVALENT + * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) + * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT + * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + edulevel?: { + /** + * + * example: + * 7 + */ + code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; + /** + * example: + * BACHELOR'S OR EQUIVALENT + */ + desc?: + | "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" + | "PRIMARY" + | "LOWER SECONDARY" + | "SECONDARY" + | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" + | "POLYTECHNIC DIPLOMA" + | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" + | "BACHELOR'S OR EQUIVALENT" + | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" + | "MASTER'S AND DOCTORATE OR EQUIVALENT" + | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GradYear + * Year of Graduation of Person. Format: YYYY + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gradyear?: { + /** + * example: + * 2006 + */ + value?: string; // [0-9]{4} + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SchoolName + * Name of School of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + schoolname?: { + /** + * Code value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * T07GS3011J + */ + code?: string; + /** + * Name of school represented by 'code' + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * SIGLAP SECONDARY SCHOOL + */ + desc?: string; + /** + * Free text value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Occupation + * Occupation of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + occupation?: { + /** + * Free text. + * + * For SC/PR holders, blank will be returned. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Employment + * Name of Employer. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employment?: { + /** + * example: + * ALPHA + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassType + * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passtype?: { + /** + * Value of data field. + * example: + * RPass + */ + code?: string; + /** + * example: + * Work Permit + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassStatus + * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * Live + * Approved + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passstatus?: { + /** + * Value of data field. + * example: + * Live + */ + value?: "Live" | "Approved"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassExpiryDate + * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2022-12-31 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * EmploymentSector + * Employment Sector of a FIN holder. + * + * **Note:** Only applies to a foreigner with a valid work pass. + * + * Some examples of possible values are: + * MANUFACTURING + * CONSTRUCTION + * RECLAMATION + * SERVICE + * GRI-TECHNOLOGY + * LANDSCAPING + * INCINERATOR PLANT + * MARINE SHIPYARD + * PROCESS + * HARBOURCRAFT + * DOMESTIC + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employmentsector?: { + /** + * example: + * MANUFACTURING + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HouseholdIncome + * Household Income of Person in SGD. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + householdincome?: { + /** + * upper bound of the range of household income bracket + */ + high?: { + /** + * example: + * 5999 + */ + value?: number; + }; + /** + * lower bound of the range of household income bracket + */ + low?: { + /** + * example: + * 5000 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + vehicles?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Vehicle Registration Number displayed on the vehicle number plates + */ + vehicleno?: { + /** + * example: + * SDF1235A + */ + value?: string; + }; + /** + * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' + */ + type?: { + /** + * example: + * PASSENGER MOTOR CAR + */ + value?: string; + }; + /** + * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. + */ + iulabelno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' + */ + make?: { + /** + * example: + * TOYOTA + */ + value?: string; + }; + /** + * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' + */ + model?: { + /** + * example: + * COROLLA ALTIS + */ + value?: string; + }; + /** + * Vehicle Chassis Number + */ + chassisno?: { + /** + * example: + * ZC11S1735800 + */ + value?: string; + }; + /** + * Vehicle Engine Number + */ + engineno?: { + /** + * example: + * M13A1837453 + */ + value?: string; + }; + /** + * Vehicle Motor Number + */ + motorno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Manufacturing year + */ + yearofmanufacture?: { + /** + * example: + * 2010 + */ + value?: string; + }; + /** + * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + firstregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + originalregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Vehicle Certificate of Entitlement (COE) bid category + */ + coecategory?: { + /** + * example: + * A - CAR UP TO 1600CC & 97KW (130BHP) + */ + value?: string; + }; + /** + * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + coeexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + roadtaxexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. + */ + quotapremium?: { + /** + * example: + * 14000.01 + */ + value?: number; // double + }; + /** + * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). + */ + openmarketvalue?: { + /** + * example: + * 25000.01 + */ + value?: number; // double + }; + /** + * CO2 emission rate + */ + co2emission?: { + /** + * example: + * 146.01 + */ + value?: number; // double + }; + /** + * Status of the Vehicle. + * + * 1 - LIVE + * 2 - DE-REGISTERED + */ + status?: { + /** + * example: + * 1 + */ + code?: "1" | "2"; + /** + * example: + * LIVE + */ + desc?: "LIVE" | "DE-REGISTERED"; + }; + /** + * Vehicle Primary Colour (e.g. BLACK) + */ + primarycolour?: { + /** + * example: + * BLACK + */ + value?: string; + }; + /** + * Vehicle Primary Colour (e.g. WHITE) + */ + secondarycolour?: { + /** + * example: + * WHITE + */ + value?: string; + }; + /** + * Vehicle Attachment 1 (e.g. DISABLED) + */ + attachment1?: { + /** + * example: + * DISABLED + */ + value?: string; + }; + /** + * Vehicle Attachment 2 (e.g. WITH SUN ROOF) + */ + attachment2?: { + /** + * example: + * WITH SUN ROOF + */ + value?: string; + }; + /** + * Vehicle Attachment 3 (e.g. SIDE CURTAIN) + */ + attachment3?: { + /** + * example: + * SIDE CURTAIN + */ + value?: string; + }; + /** + * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) + */ + scheme?: { + /** + * example: + * REVISED OFF-PEAK CAR + */ + value?: string; + }; + /** + * Total Hydro Carbon (THC) emission rate + */ + thcemission?: { + /** + * example: + * 1.011001 + */ + value?: number; // double + }; + /** + * Carbon Monoxide emission rate + */ + coemission?: { + /** + * example: + * 1.100001 + */ + value?: number; // double + }; + /** + * Nitrogen Oxide (NOx) emission rate. + */ + noxemission?: { + /** + * example: + * 0.011001 + */ + value?: number; // double + }; + /** + * Particulates (PM - Atmospheric Particulate Matter) emission rate. + */ + pmemission?: { + /** + * example: + * 0.007 + */ + value?: number; // double + }; + /** + * Engine Capacity in cubic centimeter (cc) + */ + enginecapacity?: { + /** + * example: + * 1600 + */ + value?: number; + }; + /** + * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. + */ + powerrate?: { + /** + * example: + * 1.41 + */ + value?: number; // double + }; + /** + * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + effectiveownership?: { + /** + * example: + * 2010-08-31T20:12:12+08:00 + */ + value?: string; // date-time + }; + /** + * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG + */ + propellant?: { + /** + * example: + * Compressed Natural Gas + */ + value?: string; + }; + /** + * Maximum Unladen Weight in kilograms (kg) + */ + maximumunladenweight?: { + /** + * example: + * 1500 + */ + value?: number; + }; + /** + * Maximum Laden Weight in kilograms (kg) + */ + maximumladenweight?: { + /** + * example: + * 1795 + */ + value?: number; + }; + /** + * Minimum PARF Benefit in Singapore dollars (SGD). + */ + minimumparfbenefit?: { + /** + * example: + * 8770.01 + */ + value?: number; // double + }; + /** + * Number of Transfer + */ + nooftransfers?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Vehicle Parking Certificate. Applicable for Heavy Vehicles. + */ + vpc?: { + /** + * example: + * 1234567890 + */ + value?: string; + }; + }[]; + /** + * Driving Licence details of Person. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + drivinglicence?: { + /** + * Status of Certificate of Merit. Possible values: + * + * Y - ELIGIBLE + * N - NOT ELIGIBLE + */ + comstatus?: { + /** + * example: + * Y + */ + code?: "Y" | "N"; + /** + * + * example: + * ELIGIBLE + */ + desc?: "ELIGIBLE" | "NOT ELIGIBLE"; + }; + /** + * Total Demerit Points + */ + totaldemeritpoints?: { + /** + * example: + * 0 + */ + value?: number; + }; + /** + * + */ + suspension?: { + /** + * Suspension Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Suspension End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + disqualification?: { + /** + * Disqualification Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Disqualification End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + revocation?: { + /** + * Revocation Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Revocation End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * Provisional Driving Licence (PDL) + */ + pdl?: { + /** + * Validity of PDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * PDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * PDL Classes + * example: + * [ + * { + * "class": { + * "value": "2A" + * } + * }, + * { + * "class": { + * "value": "3A" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + }[]; + }; + /** + * Qualified Driving Licence (QDL) + */ + qdl?: { + /** + * Validity of QDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * QDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) + * example: + * [ + * { + * "class": { + * "value": "2A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * }, + * { + * "class": { + * "value": "3A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + issuedate?: { + value?: string; // date + }; + }[]; + }; + /** + * Serial Number of the Photo Card + */ + photocardserialno?: { + /** + * example: + * 115616 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Academic Qualifications + * Academic Qualifications achieved + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + academicqualifications?: { + /** + * Transcript of qualification + */ + transcripts?: { + /** + * Qualification's Name + */ + name?: { + /** + * example: + * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL + */ + value?: string; + }; + /** + * Year this qualification was attained + * + * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + yearattained?: { + /** + * example: + * 2018 + */ + value?: string; // date + }; + results?: { + /** + * Subject taken + */ + subject?: { + /** + * example: + * English Language + */ + value?: string; + }; + /** + * Level of subject taken + */ + level?: { + /** + * example: + * Ordinary + */ + value?: string; + }; + /** + * Grade attained + */ + grade?: { + /** + * example: + * A + */ + value?: string; + }; + /** + * Optional Sub Subject taken + */ + subsubject?: { + /** + * example: + * SPECIAL PAPER + */ + value?: string; + }; + /** + * Optional grade attained for subSubject + */ + subgrade?: { + /** + * example: + * One + */ + value?: string; + }; + }[]; + /** + * Explanatory Notes + */ + explanatorynotes?: { + value?: string; + }; + }[]; + /** + * Electronic Certificates Uploaded + */ + certificates?: { + /** + * File name of the electronic certificate + */ + name?: { + /** + * example: + * nus.opencert + */ + value?: string; + }; + /** + * File content of the electronic certificate, Base64 encoded + */ + content?: { + value?: string; + }; + /** + * Open Certificate Information + * + * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is + * at https://opencerts.io/ + */ + opencertificate?: { + /** + * The OpenCert serial number. + */ + id?: { + /** + * example: + * 100000000343840 + */ + value?: string; + }; + /** + * Indicate whether this open certificate is primary certificate + */ + primary?: { + /** + * example: + * true + */ + value?: boolean; + }; + }; + /** + * Indicate whether this file is open certificate + */ + opencertificateindicator?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + pioneergen?: { + eligibility: { + value: boolean; + }; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + quantum: { + value: string; + }; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C" | "C" | "C"; + /** + * Message code + * + * '1' - PG Eligibility Tag: N + * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N + * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y + * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N + * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y + * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y + * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + message: { + code: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "1" | "2" | "3" | "4" | "5" | "6" | "7"; + desc: + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits." + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits."; + }; + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MerdekaGen + * Merdekagen details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + merdekagen?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + quantum?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Suggested user friendly display + */ + message?: { + /** + * example: + * 2 + */ + code?: string; + /** + * example: + * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. + */ + desc?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SilverSupport + * Silver Support Scheme details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + silversupport?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + amount?: { + /** + * example: + * 300 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GSTVoucher + * GST Voucher details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gstvoucher?: { + /** + * Indicator if user is excluded + */ + exclusion?: { + /** + * example: + * false + */ + value?: boolean; + }; + /** + * Indicator if user needs to signup + */ + signup?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount given for medisave account + */ + gstmedisave?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for ordinary account + */ + gstregular?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for special account + */ + gstspecial?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Summary of latest Notice of Assessment within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + "noa-basic"?: { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * The second latest annual assessable income available from IRAS within the past 3 years. + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Detailed breakdown of latest Notice of Assessment within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + noa?: { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * value of data field + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + /** + * Assessable Income from employment + */ + employment?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * Assessable Income from trade + */ + trade?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from rent + */ + rent?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from interest + */ + interest?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) + */ + taxclearance?: { + /** + * example: + * N + */ + value?: "Y" | "N"; + }; + /** + * Type of 'Notice of Assessment' (NOA) + */ + category?: { + /** + * example: + * ORIGINAL + */ + value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * History of Notice Of Assessment (Basic) + * Summary of latest 2 Notice of Assessments within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + "noahistory-basic"?: { + noas?: NOABasic[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * History of Notice Of Assessment + * Detailed breakdown of latest 2 Notice of Assessments within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + noahistory?: { + noas?: NOA[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFContributions + * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. + * Maximum past 15 months' of contributions. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfcontributions?: { + /** + * example: + * [ + * { + * "date": { + * "value": "2016-12-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-08-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm + */ + date?: { + /** + * example: + * 2017-03-01 + */ + value?: string; // date + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-02 + */ + value?: string; + }; + /** + * Amount of contribution in SGD + */ + amount?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFEmployers + * Employers who paid CPF Contributions. Maximum up to past 14 months. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfemployers?: { + /** + * example: + * [ + * { + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-03 + */ + value?: string; // date + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFBalances + * CPF Balances of Person in SGD. + * + * 'ra' will not appear in the results if user does not have a Retirement Account. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfbalances?: { + /** + * Amount Balance in CPF-MA + */ + ma?: { + /** + * example: + * 11470.71 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-OA + */ + oa?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-SA + */ + sa?: { + /** + * example: + * 21967.09 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-RA + */ + ra?: { + /** + * example: + * 0.01 + */ + value?: number; // double + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFHousingWithdrawal + * CPF Housing Withdrawal of Person. Amounts in SGD. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfhousingwithdrawal?: { + /** + * Withdrawal details for properties + */ + withdrawaldetails?: { + /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + address?: /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /* Address details (Singapore Format) */ | AddressSG + | /* Address details (Non-Singapore Format) */ AddressUnformatted; + /** + * + */ + accruedinterestamt?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * + */ + monthlyinstalmentamt?: { + /** + * example: + * 1196.09 + */ + value?: number; // double + }; + /** + * + */ + principalwithdrawalamt?: { + /** + * example: + * 2897.01 + */ + value?: number; // double + }; + /** + * + */ + totalamountofcpfallowedforproperty?: { + /** + * example: + * 10000.01 + */ + value?: number; // double + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPF Home Protection Scheme + * CPF Home Protection Scheme + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfhomeprotectionscheme?: { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + premium?: { + /** + * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 100.01 + */ + value?: number; + }; + shareofcover?: { + /** + * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true + * example: + * 20 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPF Dependant Protection Scheme + * CPF Dependant Protection Scheme + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfdependantprotectionscheme?: { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + insurercode?: { + /** + * Insurer Code + * example: + * 9GEL + */ + value?: string; + }; + sumassuredamount?: { + /** + * Sum assured. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 70000 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFInvestmentScheme + * CPF Investment Scheme. + */ + cpfinvestmentscheme?: { + /** + * Quantity of Special Discounted Shares shares held + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sdsnetshareholdingqty?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * example: + * 1360 + */ + value?: number; + }; + /** + * CPF Investment Account Details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + account?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Agent Bank Code + */ + agentbankcode?: { + /** + * example: + * OCBC + */ + value?: string; + }; + /** + * Account Number + */ + invbankacctno?: { + /** + * example: + * 098-26644-4 + */ + value?: string; + }; + }; + /** + * Status of Self-Awareness Questionnaire Participation. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + saqparticipationstatus?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Possible values: + * + * 'Y' – Participated + * 'X' – Existing CPFIS participant + * 'N' – Did not participate + * example: + * X + */ + code?: "Y" | "X" | "N"; + /** + * example: + * Participated + */ + desc?: string; + }; + }; + } + /** + * Person instance's details (Basic Profile) + */ + export interface PersonBasic { + /** + * Partial UINFIN + * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + partialuinfin?: { + /** + * Value of the field, should be displayed as it is. + * example: + * *****111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * UINFIN + * Singapore issued identification number of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + uinfin?: { + /** + * value of the field, should be displayed as it is. + * example: + * S1111111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Name + * Full Name of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + name?: { + /** + * value of the field, should be displayed as it is. + * example: + * TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYin + * Han Yu Pin Yin name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinname?: { + /** + * example: + * CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Alias + * Alias name of the Person. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + aliasname?: { + /** + * value of the field. + * example: + * TRICIA TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYinAlias + * Han Yu Pin Yin Alias name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinaliasname?: { + /** + * example: + * TRICIA CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriedName + * Married name of the Person. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriedname?: { + /** + * value of the field, should be displayed as it is. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Sex + * Sex of Person. + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Race + * Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SecondaryRace + * Secondary Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + secondaryrace?: { + /** + * + * example: + * EU + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * EURASIAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Dialect + * Dialect of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dialect?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SWISS GERMAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Nationality + * Nationality/Citizenship of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + nationality?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DOB + * Date of Birth of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dob?: { + /** + * Value of data field. + * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): + * - full-date + * - date-fullyear "-" date-month + * - date-fullyear + * example: + * 1958-05-17 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * BirthCountry + * Country/Place of Birth of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + birthcountry?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ResidentialStatus + * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. + * + * + * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. + * In such cases, the `code` and `desc` properties will be blank or empty string (""). + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + * < BLANK > (for FIN holders only) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} + /** + * example: + * CITIZEN + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportNumber + * Passport Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportnumber?: { + /** + * Value of data field. + * example: + * E35463874W + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportExpiryDate + * Passport Expiry Date of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2020-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + regadd?: /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + mailadd?: /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + billadd?: /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * HousingType + * Housing Type of Person (non-HDB only). + * + * **Note 1:** If `hdbtype` is available, this value will be null. + * + * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * Refer to `hdbtype` for detailed HDB type. + * + * '121' - DETACHED HOUSE + * '122' - SEMI-DETACHED HOUSE + * '123' - TERRACE HOUSE + * '131' - CONDOMINIUM + * '132' - EXECUTIVE CONDOMINIUM + * '139' - APARTMENT + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + housingtype?: { + /** + * + * example: + * 123 + */ + code?: "121" | "122" | "123" | "131" | "132" | "139"; + /** + * + * example: + * TERRACE HOUSE + */ + desc?: + | "DETACHED HOUSE" + | "SEMI-DETACHED HOUSE" + | "TERRACE HOUSE" + | "CONDOMINIUM" + | "EXECUTIVE CONDOMINIUM" + | "APARTMENT"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBOwnership + * HDB Ownership details + * + */ + hdbownership?: { + /** + * Number of Owners. Note that this does not include executors, administrators or trustees. + */ + noofowners?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Address details (Singapore Format) + */ + address?: { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + }; + /** + * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + leasecommencementdate?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Term of lease (in years) for the property computed from the lease commencement date. + */ + termoflease?: { + /** + * example: + * 99 + */ + value?: number; + }; + /** + * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dateofpurchase?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. + * + * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. + * + * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + dateofownershiptransfer?: { + /** + * example: + * 2018-06-13 + */ + value?: string; // date + }; + /** + * The amount of housing loan granted to owner(s) by HDB in SGD. + */ + loangranted?: { + /** + * example: + * 310000.01 + */ + value?: number; // double + }; + /** + * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. + */ + originalloanrepayment?: { + /** + * example: + * 25 + */ + value?: number; + }; + /** + * The remaining term of repayment for the loan in the format `years` + `months`. + */ + balanceloanrepayment?: { + years?: { + /** + * example: + * 2 + */ + value?: number; + }; + months?: { + /** + * example: + * 6 + */ + value?: number; + }; + }; + /** + * The amount of outstanding HDB loan owed by owner(s) in SGD. + */ + outstandingloanbalance?: { + /** + * example: + * 50000.01 + */ + value?: number; // double + }; + /** + * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. + */ + monthlyloaninstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. + */ + outstandinginstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The purchase price of the HDB flat in SGD. + */ + purchaseprice?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }[]; + /** + * OwnerPrivate + * Ownership of Private Property Status of Person (based on IRAS information). + * + * true + * false + * null (data not available) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + ownerprivate?: { + /** + * Value of data field. + * example: + * false + */ + value?: boolean; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Email + * Email Address of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + email?: { + /** + * Value of data field. + * example: + * test@gmail.com + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HomeNo + * Home Contact Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + homeno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MobileNo + * Mobile Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + mobileno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Marital + * Marital Status of Person. + * + * '1' - SINGLE + * '2' - MARRIED + * '3' - WIDOWED + * '5' - DIVORCED + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marital?: { + /** + * + * example: + * 2 + */ + code?: "1" | "2" | "3" | "5"; + /** + * + * example: + * MARRIED + */ + desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageCertNo + * Certificate number of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagecertno?: { + /** + * Value of data field. + * example: + * 123456789012345 + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CountryOfMarriage + * Country/Place of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + countryofmarriage?: { + /** + * + * example: + * SG + */ + code?: string; + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageDate + * Latest Marriage Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2007-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DivorceDate + * Last Divorce Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + divorcedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ChildrenBirthRecords + * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). + * + * This includes adoption of locally registered child. + * + * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. + * + * For child above 21, only the child’s Birth Cert Number will be shown. + */ + childrenbirthrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Birth certificate number of child. + */ + birthcertno?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * D + */ + code?: "A" | "D"; + /** + * example: + * DECEASED + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * Time of Birth of child. + * + * Format: HHMM + */ + tob?: { + /** + * example: + * 0901 + */ + value?: string; + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Indicates whether the child is a Singapore Citizen at the time of birth. + * + * Y - Yes + * N - No + * < BLANK > - Not applicable + */ + sgcitizenatbirthind?: { + /** + * example: + * Y + */ + value?: "Y" | "N" | ""; + }; + }[]; + /** + * SponsoredChildrenRecords + * Details of children sponsored to be SC/PR/LTVP + * + * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. + * + * For child above 21, only the child's last known NRIC/FIN will be shown. + */ + sponsoredchildrenrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * NRIC/FIN of child + */ + nric?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * BirthCountry + * Country/Place of Birth of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + birthcountry?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * A + */ + code?: "A" | "D"; + /** + * example: + * ALIVE + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * ResidentialStatus + * Residential Status of child. Possible values: + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} + /** + * example: + * Citizen + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; + }; + /** + * Nationality/Citizenship of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + nationality?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + }; + /** + * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + scprgrantdate?: { + /** + * example: + * 2015-06-13 + */ + value?: string; // date + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + }[]; + /** + * EduLevel + * Highest Education Level of Person. + * + * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY + * '1' - PRIMARY + * '2' - LOWER SECONDARY + * '3' - SECONDARY + * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION + * '5' - POLYTECHNIC DIPLOMA + * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA + * '7' - BACHELOR'S OR EQUIVALENT + * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) + * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT + * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + edulevel?: { + /** + * + * example: + * 7 + */ + code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; + /** + * example: + * BACHELOR'S OR EQUIVALENT + */ + desc?: + | "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" + | "PRIMARY" + | "LOWER SECONDARY" + | "SECONDARY" + | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" + | "POLYTECHNIC DIPLOMA" + | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" + | "BACHELOR'S OR EQUIVALENT" + | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" + | "MASTER'S AND DOCTORATE OR EQUIVALENT" + | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GradYear + * Year of Graduation of Person. Format: YYYY + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gradyear?: { + /** + * example: + * 2006 + */ + value?: string; // [0-9]{4} + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SchoolName + * Name of School of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + schoolname?: { + /** + * Code value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * T07GS3011J + */ + code?: string; + /** + * Name of school represented by 'code' + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * SIGLAP SECONDARY SCHOOL + */ + desc?: string; + /** + * Free text value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Occupation + * Occupation of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + occupation?: { + /** + * Free text. + * + * For SC/PR holders, blank will be returned. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Employment + * Name of Employer. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employment?: { + /** + * example: + * ALPHA + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassType + * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passtype?: { + /** + * Value of data field. + * example: + * RPass + */ + code?: string; + /** + * example: + * Work Permit + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassStatus + * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * Live + * Approved + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passstatus?: { + /** + * Value of data field. + * example: + * Live + */ + value?: "Live" | "Approved"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassExpiryDate + * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2022-12-31 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * EmploymentSector + * Employment Sector of a FIN holder. + * + * **Note:** Only applies to a foreigner with a valid work pass. + * + * Some examples of possible values are: + * MANUFACTURING + * CONSTRUCTION + * RECLAMATION + * SERVICE + * GRI-TECHNOLOGY + * LANDSCAPING + * INCINERATOR PLANT + * MARINE SHIPYARD + * PROCESS + * HARBOURCRAFT + * DOMESTIC + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employmentsector?: { + /** + * example: + * MANUFACTURING + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HouseholdIncome + * Household Income of Person in SGD. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + householdincome?: { + /** + * upper bound of the range of household income bracket + */ + high?: { + /** + * example: + * 5999 + */ + value?: number; + }; + /** + * lower bound of the range of household income bracket + */ + low?: { + /** + * example: + * 5000 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + vehicles?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Vehicle Registration Number displayed on the vehicle number plates + */ + vehicleno?: { + /** + * example: + * SDF1235A + */ + value?: string; + }; + /** + * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' + */ + type?: { + /** + * example: + * PASSENGER MOTOR CAR + */ + value?: string; + }; + /** + * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. + */ + iulabelno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' + */ + make?: { + /** + * example: + * TOYOTA + */ + value?: string; + }; + /** + * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' + */ + model?: { + /** + * example: + * COROLLA ALTIS + */ + value?: string; + }; + /** + * Vehicle Chassis Number + */ + chassisno?: { + /** + * example: + * ZC11S1735800 + */ + value?: string; + }; + /** + * Vehicle Engine Number + */ + engineno?: { + /** + * example: + * M13A1837453 + */ + value?: string; + }; + /** + * Vehicle Motor Number + */ + motorno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Manufacturing year + */ + yearofmanufacture?: { + /** + * example: + * 2010 + */ + value?: string; + }; + /** + * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + firstregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + originalregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Vehicle Certificate of Entitlement (COE) bid category + */ + coecategory?: { + /** + * example: + * A - CAR UP TO 1600CC & 97KW (130BHP) + */ + value?: string; + }; + /** + * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + coeexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + roadtaxexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. + */ + quotapremium?: { + /** + * example: + * 14000.01 + */ + value?: number; // double + }; + /** + * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). + */ + openmarketvalue?: { + /** + * example: + * 25000.01 + */ + value?: number; // double + }; + /** + * CO2 emission rate + */ + co2emission?: { + /** + * example: + * 146.01 + */ + value?: number; // double + }; + /** + * Status of the Vehicle. + * + * 1 - LIVE + * 2 - DE-REGISTERED + */ + status?: { + /** + * example: + * 1 + */ + code?: "1" | "2"; + /** + * example: + * LIVE + */ + desc?: "LIVE" | "DE-REGISTERED"; + }; + /** + * Vehicle Primary Colour (e.g. BLACK) + */ + primarycolour?: { + /** + * example: + * BLACK + */ + value?: string; + }; + /** + * Vehicle Primary Colour (e.g. WHITE) + */ + secondarycolour?: { + /** + * example: + * WHITE + */ + value?: string; + }; + /** + * Vehicle Attachment 1 (e.g. DISABLED) + */ + attachment1?: { + /** + * example: + * DISABLED + */ + value?: string; + }; + /** + * Vehicle Attachment 2 (e.g. WITH SUN ROOF) + */ + attachment2?: { + /** + * example: + * WITH SUN ROOF + */ + value?: string; + }; + /** + * Vehicle Attachment 3 (e.g. SIDE CURTAIN) + */ + attachment3?: { + /** + * example: + * SIDE CURTAIN + */ + value?: string; + }; + /** + * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) + */ + scheme?: { + /** + * example: + * REVISED OFF-PEAK CAR + */ + value?: string; + }; + /** + * Total Hydro Carbon (THC) emission rate + */ + thcemission?: { + /** + * example: + * 1.011001 + */ + value?: number; // double + }; + /** + * Carbon Monoxide emission rate + */ + coemission?: { + /** + * example: + * 1.100001 + */ + value?: number; // double + }; + /** + * Nitrogen Oxide (NOx) emission rate. + */ + noxemission?: { + /** + * example: + * 0.011001 + */ + value?: number; // double + }; + /** + * Particulates (PM - Atmospheric Particulate Matter) emission rate. + */ + pmemission?: { + /** + * example: + * 0.007 + */ + value?: number; // double + }; + /** + * Engine Capacity in cubic centimeter (cc) + */ + enginecapacity?: { + /** + * example: + * 1600 + */ + value?: number; + }; + /** + * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. + */ + powerrate?: { + /** + * example: + * 1.41 + */ + value?: number; // double + }; + /** + * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + effectiveownership?: { + /** + * example: + * 2010-08-31T20:12:12+08:00 + */ + value?: string; // date-time + }; + /** + * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG + */ + propellant?: { + /** + * example: + * Compressed Natural Gas + */ + value?: string; + }; + /** + * Maximum Unladen Weight in kilograms (kg) + */ + maximumunladenweight?: { + /** + * example: + * 1500 + */ + value?: number; + }; + /** + * Maximum Laden Weight in kilograms (kg) + */ + maximumladenweight?: { + /** + * example: + * 1795 + */ + value?: number; + }; + /** + * Minimum PARF Benefit in Singapore dollars (SGD). + */ + minimumparfbenefit?: { + /** + * example: + * 8770.01 + */ + value?: number; // double + }; + /** + * Number of Transfer + */ + nooftransfers?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Vehicle Parking Certificate. Applicable for Heavy Vehicles. + */ + vpc?: { + /** + * example: + * 1234567890 + */ + value?: string; + }; + }[]; + /** + * Driving Licence details of Person. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + drivinglicence?: { + /** + * Status of Certificate of Merit. Possible values: + * + * Y - ELIGIBLE + * N - NOT ELIGIBLE + */ + comstatus?: { + /** + * example: + * Y + */ + code?: "Y" | "N"; + /** + * + * example: + * ELIGIBLE + */ + desc?: "ELIGIBLE" | "NOT ELIGIBLE"; + }; + /** + * Total Demerit Points + */ + totaldemeritpoints?: { + /** + * example: + * 0 + */ + value?: number; + }; + /** + * + */ + suspension?: { + /** + * Suspension Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Suspension End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + disqualification?: { + /** + * Disqualification Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Disqualification End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + revocation?: { + /** + * Revocation Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Revocation End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * Provisional Driving Licence (PDL) + */ + pdl?: { + /** + * Validity of PDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * PDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * PDL Classes + * example: + * [ + * { + * "class": { + * "value": "2A" + * } + * }, + * { + * "class": { + * "value": "3A" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + }[]; + }; + /** + * Qualified Driving Licence (QDL) + */ + qdl?: { + /** + * Validity of QDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * QDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) + * example: + * [ + * { + * "class": { + * "value": "2A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * }, + * { + * "class": { + * "value": "3A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + issuedate?: { + value?: string; // date + }; + }[]; + }; + /** + * Serial Number of the Photo Card + */ + photocardserialno?: { + /** + * example: + * 115616 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Academic Qualifications + * Academic Qualifications achieved + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + academicqualifications?: { + /** + * Transcript of qualification + */ + transcripts?: { + /** + * Qualification's Name + */ + name?: { + /** + * example: + * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL + */ + value?: string; + }; + /** + * Year this qualification was attained + * + * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + yearattained?: { + /** + * example: + * 2018 + */ + value?: string; // date + }; + results?: { + /** + * Subject taken + */ + subject?: { + /** + * example: + * English Language + */ + value?: string; + }; + /** + * Level of subject taken + */ + level?: { + /** + * example: + * Ordinary + */ + value?: string; + }; + /** + * Grade attained + */ + grade?: { + /** + * example: + * A + */ + value?: string; + }; + /** + * Optional Sub Subject taken + */ + subsubject?: { + /** + * example: + * SPECIAL PAPER + */ + value?: string; + }; + /** + * Optional grade attained for subSubject + */ + subgrade?: { + /** + * example: + * One + */ + value?: string; + }; + }[]; + /** + * Explanatory Notes + */ + explanatorynotes?: { + value?: string; + }; + }[]; + /** + * Electronic Certificates Uploaded + */ + certificates?: { + /** + * File name of the electronic certificate + */ + name?: { + /** + * example: + * nus.opencert + */ + value?: string; + }; + /** + * File content of the electronic certificate, Base64 encoded + */ + content?: { + value?: string; + }; + /** + * Open Certificate Information + * + * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is + * at https://opencerts.io/ + */ + opencertificate?: { + /** + * The OpenCert serial number. + */ + id?: { + /** + * example: + * 100000000343840 + */ + value?: string; + }; + /** + * Indicate whether this open certificate is primary certificate + */ + primary?: { + /** + * example: + * true + */ + value?: boolean; + }; + }; + /** + * Indicate whether this file is open certificate + */ + opencertificateindicator?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + pioneergen?: { + eligibility: { + value: boolean; + }; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + quantum: { + value: string; + }; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C" | "C" | "C"; + /** + * Message code + * + * '1' - PG Eligibility Tag: N + * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N + * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y + * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N + * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y + * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y + * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + message: { + code: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "1" | "2" | "3" | "4" | "5" | "6" | "7"; + desc: + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits." + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits."; + }; + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MerdekaGen + * Merdekagen details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + merdekagen?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + quantum?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Suggested user friendly display + */ + message?: { + /** + * example: + * 2 + */ + code?: string; + /** + * example: + * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. + */ + desc?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SilverSupport + * Silver Support Scheme details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + silversupport?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + amount?: { + /** + * example: + * 300 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GSTVoucher + * GST Voucher details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gstvoucher?: { + /** + * Indicator if user is excluded + */ + exclusion?: { + /** + * example: + * false + */ + value?: boolean; + }; + /** + * Indicator if user needs to signup + */ + signup?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount given for medisave account + */ + gstmedisave?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for ordinary account + */ + gstregular?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for special account + */ + gstspecial?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + } + /** + * Person instance's details + */ + export interface PersonCommon { + /** + * Partial UINFIN + * Masked Singapore issued identification number of the Person. Only the last 3 digit and ending alphabet will be in clear. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + partialuinfin?: { + /** + * Value of the field, should be displayed as it is. + * example: + * *****111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * UINFIN + * Singapore issued identification number of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + uinfin?: { + /** + * value of the field, should be displayed as it is. + * example: + * S1111111D + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Name + * Full Name of the Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + name?: { + /** + * value of the field, should be displayed as it is. + * example: + * TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYin + * Han Yu Pin Yin name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. "(`hanyupinyinname`)"'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinname?: { + /** + * example: + * CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Alias + * Alias name of the Person. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. "@`aliasname`".'* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + aliasname?: { + /** + * value of the field. + * example: + * TRICIA TAN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HanYuPinYinAlias + * Han Yu Pin Yin Alias name of the Person. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. "@`hanyupinyinaliasname`".* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hanyupinyinaliasname?: { + /** + * example: + * TRICIA CHEN XIAO HUI + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriedName + * Married name of the Person. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriedname?: { + /** + * value of the field, should be displayed as it is. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Sex + * Sex of Person. + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Race + * Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SecondaryRace + * Secondary Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + secondaryrace?: { + /** + * + * example: + * EU + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * EURASIAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Dialect + * Dialect of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dialect?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SWISS GERMAN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Nationality + * Nationality/Citizenship of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + nationality?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DOB + * Date of Birth of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + dob?: { + /** + * Value of data field. + * Format can be one of the below (with reference to http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14): + * - full-date + * - date-fullyear "-" date-month + * - date-fullyear + * example: + * 1958-05-17 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * BirthCountry + * Country/Place of Birth of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + birthcountry?: { + /** + * + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ResidentialStatus + * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. + * + * + * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. + * In such cases, the `code` and `desc` properties will be blank or empty string (""). + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + * < BLANK > (for FIN holders only) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} + /** + * example: + * CITIZEN + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportNumber + * Passport Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportnumber?: { + /** + * Value of data field. + * example: + * E35463874W + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassportExpiryDate + * Passport Expiry Date of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passportexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2020-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + regadd?: /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + mailadd?: /** + * MailAdd + * Mailing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + billadd?: /** + * BillAdd + * Billing Address of Person + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * HousingType + * Housing Type of Person (non-HDB only). + * + * **Note 1:** If `hdbtype` is available, this value will be null. + * + * **Note 2:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * Refer to `hdbtype` for detailed HDB type. + * + * '121' - DETACHED HOUSE + * '122' - SEMI-DETACHED HOUSE + * '123' - TERRACE HOUSE + * '131' - CONDOMINIUM + * '132' - EXECUTIVE CONDOMINIUM + * '139' - APARTMENT + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + housingtype?: { + /** + * + * example: + * 123 + */ + code?: "121" | "122" | "123" | "131" | "132" | "139"; + /** + * + * example: + * TERRACE HOUSE + */ + desc?: + | "DETACHED HOUSE" + | "SEMI-DETACHED HOUSE" + | "TERRACE HOUSE" + | "CONDOMINIUM" + | "EXECUTIVE CONDOMINIUM" + | "APARTMENT"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HDBOwnership + * HDB Ownership details + * + */ + hdbownership?: { + /** + * Number of Owners. Note that this does not include executors, administrators or trustees. + */ + noofowners?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Address details (Singapore Format) + */ + address?: { + /** + * Type of Address (SG or UNFORMATTED for non SG) + */ + type?: "SG" | "UNFORMATTED"; + /** + * Block/House of Address + */ + block?: { + /** + * example: + * 548 + */ + value?: string; + }; + /** + * Building of Address + */ + building?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Floor of Address + */ + floor?: { + /** + * example: + * 09 + */ + value?: string; + }; + /** + * Unit of Address + */ + unit?: { + /** + * example: + * 128 + */ + value?: string; + }; + /** + * Street of Address + */ + street?: { + /** + * example: + * BEDOK NORTH AVENUE 1 + */ + value?: string; + }; + /** + * Postal Code of Address + */ + postal?: { + /** + * example: + * 460548 + */ + value?: string; + }; + /** + * Country/Place of Address. For AddressSG this will always be "SG". + */ + country?: { + code?: string; + desc?: string; + }; + }; + /** + * HDBType + * Flat Type of the HDB flat. + * + * **Note 1:** that this excludes Rental Flats, Pre-War SIT flat, PSA flat, HUDC flat, Executive Condominium and Shophouse. + * + * **Note 2:** If `housingtype` is available, this value will be null. + * + * **Note 3:** If `housingtype` & `hdbtype` are unavailable, make this field user editable. + * + * '111' - 1-ROOM FLAT (HDB) + * '112' - 2-ROOM FLAT (HDB) + * '113' - 3-ROOM FLAT (HDB) + * '114' - 4-ROOM FLAT (HDB) + * '115' - 5-ROOM FLAT (HDB) + * '116' - EXECUTIVE FLAT (HDB) + * '118' - STUDIO APARTMENT (HDB) + */ + hdbtype?: { + /** + * + * example: + * 112 + */ + code?: "111" | "112" | "113" | "114" | "115" | "116" | "118"; + /** + * + * example: + * 2-ROOM FLAT (HDB) + */ + desc?: + | "1-ROOM FLAT (HDB)" + | "2-ROOM FLAT (HDB)" + | "3-ROOM FLAT (HDB)" + | "4-ROOM FLAT (HDB)" + | "5-ROOM FLAT (HDB)" + | "EXECUTIVE FLAT (HDB)" + | "STUDIO APARTMENT (HDB)"; + }; + /** + * Date from which the lease period starts. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + leasecommencementdate?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Term of lease (in years) for the property computed from the lease commencement date. + */ + termoflease?: { + /** + * example: + * 99 + */ + value?: number; + }; + /** + * Effective date of flat purchase. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dateofpurchase?: { + /** + * example: + * 2008-06-13 + */ + value?: string; // date + }; + /** + * Effective date of partial transfer without monetary consideration (e.g. addition, deletion or substitution of a co-owner) for an HDB sold flat. + * + * For partial transfer of flat where at least one of the current owner remains in the household, the Date of Purchase remains unchanged while the date of transfer of ownership will be updated. + * + * For outright transfer where there is a total change of all owner(s), only the Date of Purchase will be updated. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + dateofownershiptransfer?: { + /** + * example: + * 2018-06-13 + */ + value?: string; // date + }; + /** + * The amount of housing loan granted to owner(s) by HDB in SGD. + */ + loangranted?: { + /** + * example: + * 310000.01 + */ + value?: number; // double + }; + /** + * The number of years of loan repaymnet opted by owner(s) at the time the loan is first granted to him/her. + */ + originalloanrepayment?: { + /** + * example: + * 25 + */ + value?: number; + }; + /** + * The remaining term of repayment for the loan in the format `years` + `months`. + */ + balanceloanrepayment?: { + years?: { + /** + * example: + * 2 + */ + value?: number; + }; + months?: { + /** + * example: + * 6 + */ + value?: number; + }; + }; + /** + * The amount of outstanding HDB loan owed by owner(s) in SGD. + */ + outstandingloanbalance?: { + /** + * example: + * 50000.01 + */ + value?: number; // double + }; + /** + * The amount of monthly instalment the owner(s) have to pay for his/her loan in SGD. + */ + monthlyloaninstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The amount of outstanding instalment the owner(s) have to pay for his/her loan in SGD. + */ + outstandinginstalment?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * The purchase price of the HDB flat in SGD. + */ + purchaseprice?: { + /** + * example: + * 1000.01 + */ + value?: number; // double + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }[]; + /** + * OwnerPrivate + * Ownership of Private Property Status of Person (based on IRAS information). + * + * true + * false + * null (data not available) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + ownerprivate?: { + /** + * Value of data field. + * example: + * false + */ + value?: boolean; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Email + * Email Address of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + email?: { + /** + * Value of data field. + * example: + * test@gmail.com + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HomeNo + * Home Contact Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + homeno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MobileNo + * Mobile Number of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + mobileno?: { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Marital + * Marital Status of Person. + * + * '1' - SINGLE + * '2' - MARRIED + * '3' - WIDOWED + * '5' - DIVORCED + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marital?: { + /** + * + * example: + * 2 + */ + code?: "1" | "2" | "3" | "5"; + /** + * + * example: + * MARRIED + */ + desc?: "SINGLE" | "MARRIED" | "WIDOWED" | "DIVORCED"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageCertNo + * Certificate number of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagecertno?: { + /** + * Value of data field. + * example: + * 123456789012345 + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CountryOfMarriage + * Country/Place of the latest marriage. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + countryofmarriage?: { + /** + * + * example: + * SG + */ + code?: string; + /** + * + * example: + * SINGAPORE + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * MarriageDate + * Latest Marriage Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + marriagedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2007-01-01 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * DivorceDate + * Last Divorce Date of Person. + * + * + * **Note:** This field must be made **editable** on your digital service form even though `source` is '1' (Government Verified). + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + divorcedate?: { + /** + * Value of data field. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * ChildrenBirthRecords + * This refers to only local registered birth records(based on ICA’s electronic Birth Certificate Records from 1985 onwards). + * + * This includes adoption of locally registered child. + * + * For child below 21, the child’s Birth Cert No, Name, Sex, Race, Dialect, Date of Birth and Time of Birth will be shown. + * + * For child above 21, only the child’s Birth Cert Number will be shown. + */ + childrenbirthrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Birth certificate number of child. + */ + birthcertno?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinname` (i.e. not empty), then `hanyupinyinname` should be displayed in a new line below `name`, and formatted with round brackets i.e. \"(`hanyupinyinname`)\".* + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + * + * Presentation Logic - If there is a value to `aliasname` (i.e. not empty), then `aliasname` should be displayed in a new line below `hanyupinyinname`, and prefixed with the ''@'' symbol i.e. \"@`aliasname`\".* + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + * + * Presentation Logic - If there is a value to `hanyupinyinaliasname` (i.e. not empty), then `hanyupinyinaliasname` should be displayed in a new line below `aliasname`, and prefixed with the ''@'' symbol i.e. \"@`hanyupinyinaliasname`\".* + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + * + * Presentation Logic - If there is a value to `marriedname` (i.e. not empty), then `marriedname` should be displayed in a new line below `hanyupinyinaliasname`.* + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * D + */ + code?: "A" | "D"; + /** + * example: + * DECEASED + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * Time of Birth of child. + * + * Format: HHMM + */ + tob?: { + /** + * example: + * 0901 + */ + value?: string; + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Indicates whether the child is a Singapore Citizen at the time of birth. + * + * Y - Yes + * N - No + * < BLANK > - Not applicable + */ + sgcitizenatbirthind?: { + /** + * example: + * Y + */ + value?: "Y" | "N" | ""; + }; + }[]; + /** + * SponsoredChildrenRecords + * Details of children sponsored to be SC/PR/LTVP + * + * For child below 21, the child's NRIC/FIN, Name, Sex, Race, Secondary Race, Dialect, Date of Birth, Country/Place of Birth, Residential Status and SC/PR/LTVP grant date will be shown. + * + * For child above 21, only the child's last known NRIC/FIN will be shown. + */ + sponsoredchildrenrecords?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * NRIC/FIN of child + */ + nric?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * BirthCountry + * Country/Place of Birth of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + birthcountry?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * A + */ + code?: "A" | "D"; + /** + * example: + * ALIVE + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * ResidentialStatus + * Residential Status of child. Possible values: + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} + /** + * example: + * Citizen + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; + }; + /** + * Nationality/Citizenship of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + nationality?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + }; + /** + * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + scprgrantdate?: { + /** + * example: + * 2015-06-13 + */ + value?: string; // date + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + }[]; + /** + * EduLevel + * Highest Education Level of Person. + * + * '0' - NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY + * '1' - PRIMARY + * '2' - LOWER SECONDARY + * '3' - SECONDARY + * '4' - POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION + * '5' - POLYTECHNIC DIPLOMA + * '6' - PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA + * '7' - BACHELOR'S OR EQUIVALENT + * '8' - POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE) + * '9' - MASTER'S AND DOCTORATE OR EQUIVALENT + * 'N' - MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + edulevel?: { + /** + * + * example: + * 7 + */ + code?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "N"; + /** + * example: + * BACHELOR'S OR EQUIVALENT + */ + desc?: + | "NO FORMAL QUALIFICATION / PRE-PRIMARY / LOWER PRIMARY" + | "PRIMARY" + | "LOWER SECONDARY" + | "SECONDARY" + | "POST-SECONDARY (NON-TERTIARY): GENERAL & VOCATION" + | "POLYTECHNIC DIPLOMA" + | "PROFESSIONAL QUALIFICATION AND OTHER DIPLOMA" + | "BACHELOR'S OR EQUIVALENT" + | "POSTGRADUATE DIPLOMA / CERTIFICATE (EXCLUDING MASTER'S AND DOCTORATE)" + | "MASTER'S AND DOCTORATE OR EQUIVALENT" + | "MODULAR CERTIFICATION (NON-AWARD COURSES / NON-FULL QUALIFICATIONS)"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GradYear + * Year of Graduation of Person. Format: YYYY + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gradyear?: { + /** + * example: + * 2006 + */ + value?: string; // [0-9]{4} + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SchoolName + * Name of School of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + schoolname?: { + /** + * Code value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * T07GS3011J + */ + code?: string; + /** + * Name of school represented by 'code' + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * SIGLAP SECONDARY SCHOOL + */ + desc?: string; + /** + * Free text value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Occupation + * Occupation of Person. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + occupation?: { + /** + * Free text. + * + * For SC/PR holders, blank will be returned. + * example: + * + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Employment + * Name of Employer. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employment?: { + /** + * example: + * ALPHA + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassType + * Pass type of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passtype?: { + /** + * Value of data field. + * example: + * RPass + */ + code?: string; + /** + * example: + * Work Permit + */ + desc?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassStatus + * Pass status of a FIN holder.
**Note:** Only applies to a foreigner with a valid pass. + * Live + * Approved + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passstatus?: { + /** + * Value of data field. + * example: + * Live + */ + value?: "Live" | "Approved"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * PassExpiryDate + * Pass expiry of a foreigner.
**Note:** Only applies to a foreigner with a valid pass. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + passexpirydate?: { + /** + * Value of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2022-12-31 + */ + value?: string; // date + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * EmploymentSector + * Employment Sector of a FIN holder. + * + * **Note:** Only applies to a foreigner with a valid work pass. + * + * Some examples of possible values are: + * MANUFACTURING + * CONSTRUCTION + * RECLAMATION + * SERVICE + * GRI-TECHNOLOGY + * LANDSCAPING + * INCINERATOR PLANT + * MARINE SHIPYARD + * PROCESS + * HARBOURCRAFT + * DOMESTIC + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + employmentsector?: { + /** + * example: + * MANUFACTURING + */ + value?: string; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * HouseholdIncome + * Household Income of Person in SGD. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + householdincome?: { + /** + * upper bound of the range of household income bracket + */ + high?: { + /** + * example: + * 5999 + */ + value?: number; + }; + /** + * lower bound of the range of household income bracket + */ + low?: { + /** + * example: + * 5000 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + vehicles?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Vehicle Registration Number displayed on the vehicle number plates + */ + vehicleno?: { + /** + * example: + * SDF1235A + */ + value?: string; + }; + /** + * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' + */ + type?: { + /** + * example: + * PASSENGER MOTOR CAR + */ + value?: string; + }; + /** + * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. + */ + iulabelno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' + */ + make?: { + /** + * example: + * TOYOTA + */ + value?: string; + }; + /** + * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' + */ + model?: { + /** + * example: + * COROLLA ALTIS + */ + value?: string; + }; + /** + * Vehicle Chassis Number + */ + chassisno?: { + /** + * example: + * ZC11S1735800 + */ + value?: string; + }; + /** + * Vehicle Engine Number + */ + engineno?: { + /** + * example: + * M13A1837453 + */ + value?: string; + }; + /** + * Vehicle Motor Number + */ + motorno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Manufacturing year + */ + yearofmanufacture?: { + /** + * example: + * 2010 + */ + value?: string; + }; + /** + * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + firstregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + originalregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Vehicle Certificate of Entitlement (COE) bid category + */ + coecategory?: { + /** + * example: + * A - CAR UP TO 1600CC & 97KW (130BHP) + */ + value?: string; + }; + /** + * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + coeexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + roadtaxexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. + */ + quotapremium?: { + /** + * example: + * 14000.01 + */ + value?: number; // double + }; + /** + * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). + */ + openmarketvalue?: { + /** + * example: + * 25000.01 + */ + value?: number; // double + }; + /** + * CO2 emission rate + */ + co2emission?: { + /** + * example: + * 146.01 + */ + value?: number; // double + }; + /** + * Status of the Vehicle. + * + * 1 - LIVE + * 2 - DE-REGISTERED + */ + status?: { + /** + * example: + * 1 + */ + code?: "1" | "2"; + /** + * example: + * LIVE + */ + desc?: "LIVE" | "DE-REGISTERED"; + }; + /** + * Vehicle Primary Colour (e.g. BLACK) + */ + primarycolour?: { + /** + * example: + * BLACK + */ + value?: string; + }; + /** + * Vehicle Primary Colour (e.g. WHITE) + */ + secondarycolour?: { + /** + * example: + * WHITE + */ + value?: string; + }; + /** + * Vehicle Attachment 1 (e.g. DISABLED) + */ + attachment1?: { + /** + * example: + * DISABLED + */ + value?: string; + }; + /** + * Vehicle Attachment 2 (e.g. WITH SUN ROOF) + */ + attachment2?: { + /** + * example: + * WITH SUN ROOF + */ + value?: string; + }; + /** + * Vehicle Attachment 3 (e.g. SIDE CURTAIN) + */ + attachment3?: { + /** + * example: + * SIDE CURTAIN + */ + value?: string; + }; + /** + * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) + */ + scheme?: { + /** + * example: + * REVISED OFF-PEAK CAR + */ + value?: string; + }; + /** + * Total Hydro Carbon (THC) emission rate + */ + thcemission?: { + /** + * example: + * 1.011001 + */ + value?: number; // double + }; + /** + * Carbon Monoxide emission rate + */ + coemission?: { + /** + * example: + * 1.100001 + */ + value?: number; // double + }; + /** + * Nitrogen Oxide (NOx) emission rate. + */ + noxemission?: { + /** + * example: + * 0.011001 + */ + value?: number; // double + }; + /** + * Particulates (PM - Atmospheric Particulate Matter) emission rate. + */ + pmemission?: { + /** + * example: + * 0.007 + */ + value?: number; // double + }; + /** + * Engine Capacity in cubic centimeter (cc) + */ + enginecapacity?: { + /** + * example: + * 1600 + */ + value?: number; + }; + /** + * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. + */ + powerrate?: { + /** + * example: + * 1.41 + */ + value?: number; // double + }; + /** + * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + effectiveownership?: { + /** + * example: + * 2010-08-31T20:12:12+08:00 + */ + value?: string; // date-time + }; + /** + * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG + */ + propellant?: { + /** + * example: + * Compressed Natural Gas + */ + value?: string; + }; + /** + * Maximum Unladen Weight in kilograms (kg) + */ + maximumunladenweight?: { + /** + * example: + * 1500 + */ + value?: number; + }; + /** + * Maximum Laden Weight in kilograms (kg) + */ + maximumladenweight?: { + /** + * example: + * 1795 + */ + value?: number; + }; + /** + * Minimum PARF Benefit in Singapore dollars (SGD). + */ + minimumparfbenefit?: { + /** + * example: + * 8770.01 + */ + value?: number; // double + }; + /** + * Number of Transfer + */ + nooftransfers?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Vehicle Parking Certificate. Applicable for Heavy Vehicles. + */ + vpc?: { + /** + * example: + * 1234567890 + */ + value?: string; + }; + }[]; + /** + * Driving Licence details of Person. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + drivinglicence?: { + /** + * Status of Certificate of Merit. Possible values: + * + * Y - ELIGIBLE + * N - NOT ELIGIBLE + */ + comstatus?: { + /** + * example: + * Y + */ + code?: "Y" | "N"; + /** + * + * example: + * ELIGIBLE + */ + desc?: "ELIGIBLE" | "NOT ELIGIBLE"; + }; + /** + * Total Demerit Points + */ + totaldemeritpoints?: { + /** + * example: + * 0 + */ + value?: number; + }; + /** + * + */ + suspension?: { + /** + * Suspension Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Suspension End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + disqualification?: { + /** + * Disqualification Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Disqualification End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * + */ + revocation?: { + /** + * Revocation Start Date + */ + startdate?: { + /** + * example: + * + */ + value?: string; // date + }; + /** + * Revocation End Date + */ + enddate?: { + /** + * example: + * + */ + value?: string; // date + }; + }; + /** + * Provisional Driving Licence (PDL) + */ + pdl?: { + /** + * Validity of PDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * PDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * PDL Classes + * example: + * [ + * { + * "class": { + * "value": "2A" + * } + * }, + * { + * "class": { + * "value": "3A" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + }[]; + }; + /** + * Qualified Driving Licence (QDL) + */ + qdl?: { + /** + * Validity of QDL. Possible values: + * + * V - VALID + * E - EXPIRED + * I - INVALID + * N - NOT HOLDING + */ + validity?: { + /** + * example: + * V + */ + code?: "V" | "E" | "I" | "N"; + /** + * + * example: + * VALID + */ + desc?: "VALID" | "EXPIRED" | "INVALID" | "NOT HOLDING"; + }; + /** + * QDL Expiry Date + */ + expirydate?: { + /** + * example: + * 2020-06-15 + */ + value?: string; // date + }; + /** + * QDL Classes. Includes Issue Date (e.g. 2B, 2018-01-01) + * example: + * [ + * { + * "class": { + * "value": "2A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * }, + * { + * "class": { + * "value": "3A" + * }, + * "issuedate": { + * "value": "2018-06-06" + * } + * } + * ] + */ + classes?: { + class?: { + value?: string; + }; + issuedate?: { + value?: string; // date + }; + }[]; + }; + /** + * Serial Number of the Photo Card + */ + photocardserialno?: { + /** + * example: + * 115616 + */ + value?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Academic Qualifications + * Academic Qualifications achieved + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + academicqualifications?: { + /** + * Transcript of qualification + */ + transcripts?: { + /** + * Qualification's Name + */ + name?: { + /** + * example: + * SINGAPORE-CAMBRIDGE GENERAL CERTIFICATE OF EDUCATION ORDINARY LEVEL + */ + value?: string; + }; + /** + * Year this qualification was attained + * + * See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + yearattained?: { + /** + * example: + * 2018 + */ + value?: string; // date + }; + results?: { + /** + * Subject taken + */ + subject?: { + /** + * example: + * English Language + */ + value?: string; + }; + /** + * Level of subject taken + */ + level?: { + /** + * example: + * Ordinary + */ + value?: string; + }; + /** + * Grade attained + */ + grade?: { + /** + * example: + * A + */ + value?: string; + }; + /** + * Optional Sub Subject taken + */ + subsubject?: { + /** + * example: + * SPECIAL PAPER + */ + value?: string; + }; + /** + * Optional grade attained for subSubject + */ + subgrade?: { + /** + * example: + * One + */ + value?: string; + }; + }[]; + /** + * Explanatory Notes + */ + explanatorynotes?: { + value?: string; + }; + }[]; + /** + * Electronic Certificates Uploaded + */ + certificates?: { + /** + * File name of the electronic certificate + */ + name?: { + /** + * example: + * nus.opencert + */ + value?: string; + }; + /** + * File content of the electronic certificate, Base64 encoded + */ + content?: { + value?: string; + }; + /** + * Open Certificate Information + * + * Note: The test environment for OpenCert is at https://dev.opencerts.io/ while production is + * at https://opencerts.io/ + */ + opencertificate?: { + /** + * The OpenCert serial number. + */ + id?: { + /** + * example: + * 100000000343840 + */ + value?: string; + }; + /** + * Indicate whether this open certificate is primary certificate + */ + primary?: { + /** + * example: + * true + */ + value?: boolean; + }; + }; + /** + * Indicate whether this file is open certificate + */ + opencertificateindicator?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + pioneergen?: { + eligibility: { + value: boolean; + }; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + lastupdated: string; // date + quantum: { + value: string; + }; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Message code + * + * '1' - PG Eligibility Tag: N + * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N + * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y + * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N + * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y + * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y + * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + message: { + code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; + desc: + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits."; + }; + }; + } + /** + * Person instance's details + */ + export interface PersonCommunity { + /** + * MerdekaGen + * Merdekagen details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + merdekagen?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + quantum?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Suggested user friendly display + */ + message?: { + /** + * example: + * 2 + */ + code?: string; + /** + * example: + * You are eligible for the Merdeka Generation Package. For further enquiries, please contact 1800-2222-888. + */ + desc?: string; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + pioneergen?: { + eligibility: { + value: boolean; + }; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + quantum: { + value: string; + }; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4" | "1" | "2" | "3" | "4"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C" | "C"; + /** + * Message code + * + * '1' - PG Eligibility Tag: N + * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N + * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y + * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N + * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y + * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y + * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + message: { + code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; + desc: + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits."; + }; + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * SilverSupport + * Silver Support Scheme details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + silversupport?: { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + amount?: { + /** + * example: + * 300 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * GSTVoucher + * GST Voucher details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + gstvoucher?: { + /** + * Indicator if user is excluded + */ + exclusion?: { + /** + * example: + * false + */ + value?: boolean; + }; + /** + * Indicator if user needs to signup + */ + signup?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount given for medisave account + */ + gstmedisave?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for ordinary account + */ + gstregular?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Amount given for special account + */ + gstspecial?: { + /** + * example: + * 100 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + } + /** + * Person instance's details + */ + export interface PersonFinancial { + /** + * Summary of latest Notice of Assessment within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + "noa-basic"?: { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * The second latest annual assessable income available from IRAS within the past 3 years. + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * Detailed breakdown of latest Notice of Assessment within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + noa?: { + /** + * Assessable Income + */ + amount?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * value of data field + */ + yearofassessment?: { + /** + * example: + * 2018 + */ + value?: string; // [0-9]{4} + }; + /** + * Assessable Income from employment + */ + employment?: { + /** + * example: + * 100000.01 + */ + value?: number; // double + }; + /** + * Assessable Income from trade + */ + trade?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from rent + */ + rent?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Assessable Income from interest + */ + interest?: { + /** + * example: + * 0 + */ + value?: number; // double + }; + /** + * Tax Clearance indicator. This means that tax clearance has been sought by the employer for this NOA assessment. For more information, please refer to [this](https://www.iras.gov.sg/irashome/Businesses/Employers/Tax-Clearance-for-Foreign-SPR-Employees/Getting-Tax-Clearance--A-Step-by-Step-Guide/) + */ + taxclearance?: { + /** + * example: + * N + */ + value?: "Y" | "N"; + }; + /** + * Type of 'Notice of Assessment' (NOA) + */ + category?: { + /** + * example: + * ORIGINAL + */ + value?: "ADDITIONAL" | "AMENDED" | "ORIGINAL" | "REPAYMENT"; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * History of Notice Of Assessment (Basic) + * Summary of latest 2 Notice of Assessments within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + "noahistory-basic"?: { + noas?: NOABasic[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * History of Notice Of Assessment + * Detailed breakdown of latest 2 Notice of Assessments within the past three years. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + noahistory?: { + noas?: NOA[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFContributions + * Employer CPF Contributions of Person in SGD. Does not include any non-employer contributions. + * Maximum past 15 months' of contributions. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfcontributions?: { + /** + * example: + * [ + * { + * "date": { + * "value": "2016-12-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2016-12-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-01-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-02-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-03-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-04-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-05-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-06-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-12" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-07-21" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-01" + * }, + * "amount": { + * "value": 500 + * }, + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "date": { + * "value": "2017-08-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-08-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-09-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-10-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-11-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2017-12-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-01" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-12" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "date": { + * "value": "2018-01-21" + * }, + * "amount": { + * "value": 750 + * }, + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Date of Contribution Paid. See "full-date" in http://xml2rfc.ietf.org/public/rfc/htm + */ + date?: { + /** + * example: + * 2017-03-01 + */ + value?: string; // date + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-02 + */ + value?: string; + }; + /** + * Amount of contribution in SGD + */ + amount?: { + /** + * example: + * 500 + */ + value?: number; // double + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFEmployers + * Employers who paid CPF Contributions. Maximum up to past 14 months. + * + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfemployers?: { + /** + * example: + * [ + * { + * "month": { + * "value": "2016-11" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2016-12" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-01" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-02" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-03" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-04" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-05" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-06" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-07" + * }, + * "employer": { + * "value": "Crystal Horse Invest Pte Ltd" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-08" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-09" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-10" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-11" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2017-12" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * }, + * { + * "month": { + * "value": "2018-01" + * }, + * "employer": { + * "value": "Delta Marine Consultants PL" + * } + * } + * ] + */ + history?: { + /** + * Employer who paid the Contribution. + */ + employer?: { + /** + * example: + * Crystal Horse Invest Pte Ltd + */ + value?: string; + }; + /** + * Month for which CPF Contribution was paid. Format: YYYY-MM + */ + month?: { + /** + * example: + * 2017-03 + */ + value?: string; // date + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFBalances + * CPF Balances of Person in SGD. + * + * 'ra' will not appear in the results if user does not have a Retirement Account. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfbalances?: { + /** + * Amount Balance in CPF-MA + */ + ma?: { + /** + * example: + * 11470.71 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-OA + */ + oa?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-SA + */ + sa?: { + /** + * example: + * 21967.09 + */ + value?: number; // double + }; + /** + * Amount Balance in CPF-RA + */ + ra?: { + /** + * example: + * 0.01 + */ + value?: number; // double + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFHousingWithdrawal + * CPF Housing Withdrawal of Person. Amounts in SGD. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfhousingwithdrawal?: { + /** + * Withdrawal details for properties + */ + withdrawaldetails?: { + /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + address?: /** + * Registered Address of Property which withdrawal is made. + * + * **Note:** + * - address can be either Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * + */ + /* Address details (Singapore Format) */ | AddressSG + | /* Address details (Non-Singapore Format) */ AddressUnformatted; + /** + * + */ + accruedinterestamt?: { + /** + * example: + * 1581.48 + */ + value?: number; // double + }; + /** + * + */ + monthlyinstalmentamt?: { + /** + * example: + * 1196.09 + */ + value?: number; // double + }; + /** + * + */ + principalwithdrawalamt?: { + /** + * example: + * 2897.01 + */ + value?: number; // double + }; + /** + * + */ + totalamountofcpfallowedforproperty?: { + /** + * example: + * 10000.01 + */ + value?: number; // double + }; + }[]; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPF Home Protection Scheme + * CPF Home Protection Scheme + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfhomeprotectionscheme?: { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + premium?: { + /** + * Coverage premium. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 100.01 + */ + value?: number; + }; + shareofcover?: { + /** + * Share of coverage (in percentage). OPTIONAL attribute, present only if 'coverage' is true + * example: + * 20 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPF Dependant Protection Scheme + * CPF Dependant Protection Scheme + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + cpfdependantprotectionscheme?: { + coverage?: { + /** + * Indicator + * example: + * true + */ + value?: boolean; + }; + insurercode?: { + /** + * Insurer Code + * example: + * 9GEL + */ + value?: string; + }; + sumassuredamount?: { + /** + * Sum assured. OPTIONAL attribute, present only if 'coverage' is true + * example: + * 70000 + */ + value?: number; + }; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + }; + /** + * CPFInvestmentScheme + * CPF Investment Scheme. + */ + cpfinvestmentscheme?: { + /** + * Quantity of Special Discounted Shares shares held + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + sdsnetshareholdingqty?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * example: + * 1360 + */ + value?: number; + }; + /** + * CPF Investment Account Details + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + account?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Agent Bank Code + */ + agentbankcode?: { + /** + * example: + * OCBC + */ + value?: string; + }; + /** + * Account Number + */ + invbankacctno?: { + /** + * example: + * 098-26644-4 + */ + value?: string; + }; + }; + /** + * Status of Self-Awareness Questionnaire Participation. + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + saqparticipationstatus?: { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Possible values: + * + * 'Y' – Participated + * 'X' – Existing CPFIS participant + * 'N' – Did not participate + * example: + * X + */ + code?: "Y" | "X" | "N"; + /** + * example: + * Participated + */ + desc?: string; + }; + }; + } + export interface PhoneNumLocal { + /** + * Prefix of Phone Number. Defaults to '+'. If phone number is blank, prefix will be returned as blank. + */ + prefix?: { + /** + * example: + * + + */ + value?: string; + }; + /** + * Area Code of Phone Number. Default to '65'. If phone number is blank, code will be returned as blank. + */ + areacode?: { + /** + * example: + * 65 + */ + value?: string; + }; + /** + * Phone Number. + */ + nbr?: { + /** + * example: + * 66132665 + */ + value?: string; + }; + } + export interface Pioneergen { + eligibility: { + value: boolean; + }; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + lastupdated: string; // date + quantum: { + value: string; + }; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Message code + * + * '1' - PG Eligibility Tag: N + * '2' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: N + * '3' - PG Eligibility Tag: Y, Sign-up Tag: Y, Invalid Address Tag: Y + * '4' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: N + * '5' - PG Eligibility Tag: Y, Sign-up Tag: N, Invalid Address Tag: Y + * '6' - PG Eligibility Tag: Y, Opt-Out Tag: Y + * '7' - PG Eligibility Tag: Y, Sign-up Tag: Y, NIL Status: Y + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + message: { + code: "1" | "2" | "3" | "4" | "5" | "6" | "7"; + desc: + | "We regret that you are not eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to receive your Pioneer Generation card." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits, such as your MediSave top-up." + | "You are eligible for the Pioneer Generation Package. Please contact 1800-2222-888 to start receiving your Pioneer Generation benefits." + | "We understand that you have opted out of receiving the benefits under the Pioneer Generation Package. For further enquiries, please contact 1800-2222-888." + | "Please call 1800-2222-888 to start receiving your PG benefits."; + }; + } + /** + * Race + * Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Race { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + } + /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + export type Regadd = + /** + * RegAdd + * Registered Address of Person (including FIN holders) + * + * **Note:** + * - address can be either a Singapore address (type: 'SG') or non Singapore address (type: 'UNFORMATTED') + * - check the `type` discriminator property to differentiate between the two address formats + * - may be unavailable for some FIN holders + */ + /** + * Address details (Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressSg + /** + * Address details (Non-Singapore Format) + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + | DataitemAddressUnformatted; + /** + * ResidentialStatus + * Residential Status of Person. Applicable to Singapore Citizens and Permanent Residents. + * + * + * **Note:** This data item is not applicable for FIN holders i.e. `source` will be '3'. + * In such cases, the `code` and `desc` properties will be blank or empty string (""). + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + * < BLANK > (for FIN holders only) + */ + export interface Residentialstatus { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N" | ""; // [a-zA-Z]{1} + /** + * example: + * CITIZEN + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE" | ""; + } + /** + * SchoolName + * Name of School of Person. + */ + export interface Schoolname { + /** + * Code value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * T07GS3011J + */ + code?: string; + /** + * Name of school represented by 'code' + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * SIGLAP SECONDARY SCHOOL + */ + desc?: string; + /** + * Free text value of school name. + * + * **Note:** Code+desc and value are mutually exclusive. + * example: + * + */ + value?: string; + } + /** + * SecondaryRace + * Secondary Race of Person. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + export interface Secondaryrace { + /** + * + * example: + * EU + */ + code?: string; // [a-zA-Z]{2} + /** + * + * example: + * EURASIAN + */ + desc?: string; + } + /** + * Sex + * Sex of Person. + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + export interface Sex { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + } + /** + * SilverSupport + * Silver Support Scheme details + */ + export interface Silversupport { + /** + * Eligibility + */ + eligibility?: { + /** + * example: + * true + */ + value?: boolean; + }; + /** + * Amount eligible for + */ + amount?: { + /** + * example: + * 300 + */ + value?: number; + }; + /** + * Year given + */ + year?: { + /** + * Value of data field. See "date-fullyear" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + * example: + * 2019 + */ + value?: string; // date + }; + } + /** + * example: + * { + * "classification": "C", + * "source": "1", + * "lastupdated": "2019-03-26" + * } + */ + export interface Sponsoredchildrenrecords { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * NRIC/FIN of child + */ + nric?: { + /** + * example: + * S5562882C + */ + value?: string; + }; + /** + * Full Name of child + */ + name?: { + /** + * example: + * Jo Tan Pei Ni + */ + value?: string; + }; + /** + * Han Yu Pin Yin name of child. + */ + hanyupinyinname?: { + /** + * example: + * Cheng Pei Ni + */ + value?: string; + }; + /** + * Alias name of child. + */ + aliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Han Yu Pin Yin Alias name of child. + */ + hanyupinyinaliasname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Married name of child. + */ + marriedname?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Sex of child. Possible values: + * + * 'F' - FEMALE + * 'M' - MALE + * 'U' - UNKNOWN + */ + sex?: { + /** + * example: + * F + */ + code?: "F" | "M" | "U"; + /** + * example: + * FEMALE + */ + desc?: "FEMALE" | "MALE" | "UNKNOWN"; + }; + /** + * Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + race?: { + /** + * example: + * CN + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * CHINESE + */ + desc?: string; + }; + /** + * Secondary Race of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + secondaryrace?: { + /** + * example: + * + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * + */ + desc?: string; + }; + /** + * Dialect of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + dialect?: { + /** + * example: + * HK + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * HOKKIEN + */ + desc?: string; + }; + /** + * Date of Birth of child. + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + dob?: { + /** + * example: + * 2011-09-10 + */ + value?: string; // date + }; + /** + * BirthCountry + * Country/Place of Birth of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + birthcountry?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE + */ + desc?: string; + }; + /** + * Life Status of child. Possible values: + * + * A - ALIVE + * D - DECEASED + */ + lifestatus?: { + /** + * example: + * A + */ + code?: "A" | "D"; + /** + * example: + * ALIVE + */ + desc?: "ALIVE" | "DECEASED"; + }; + /** + * ResidentialStatus + * Residential Status of child. Possible values: + * + * A - ALIEN + * C - CITIZEN + * P - PR + * U - UNKNOWN + * N - NOT APPLICABLE + */ + residentialstatus?: { + /** + * example: + * C + */ + code?: "A" | "C" | "P" | "U" | "N"; // [a-zA-Z]{1} + /** + * example: + * Citizen + */ + desc?: "ALIEN" | "CITIZEN" | "PR" | "UNKNOWN" | "NOT APPLICABLE"; + }; + /** + * Nationality/Citizenship of child. + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + nationality?: { + /** + * example: + * SG + */ + code?: string; // [a-zA-Z]{2} + /** + * example: + * SINGAPORE CITIZEN + */ + desc?: string; + }; + /** + * Date granted Singapore Citizenship, Permanent Resident or Long-term Visit Pass + * + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14 + */ + scprgrantdate?: { + /** + * example: + * 2015-06-13 + */ + value?: string; // date + }; + vaccinationrequirements?: { + /** + * Vaccination Requirement + * + * Refer to the [Code reference tables](#section/Support) in the Support section for list of possible values. + */ + requirement?: { + /** + * example: + * 1M3D + */ + code?: string; + /** + * example: + * MINIMUM VACCINATION REQUIREMENT FOR PRESCHOOL + */ + desc?: string; + }; + fulfilled?: { + /** + * example: + * true + */ + value?: boolean; + }; + }[]; + } + /** + * UINFIN + * Singapore issued identification number of the Person. + */ + export interface Uinfin { + /** + * value of the field, should be displayed as it is. + * example: + * S1111111D + */ + value?: string; + } + export type Vehicles = { + /** + * Data classification of data field. Default 'C' - Confidential. + */ + classification: "C"; + /** + * Source of data. + * + * '1' - Government-verified + * '2' - User provided + * '3' - Field is Not Applicable to Person + * '4' - Verified by SingPass + * + * **Note:** All Government-verified fields must be **non-editable** on your digital service form (some exceptions apply - see individual field descriptions). + */ + source: "1" | "2" | "3" | "4"; + /** + * Last updated date of data field. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14. Can be blank if the source agency does not have record for the user. + */ + lastupdated: string; // date + /** + * Optional flag to indicate if data is unavailable from data source. + * + * **NOTE:** + * - This optional property will be only present with value `true` if there is no data available from the data source; i.e. record not found. + * - When this flag is `true`, no other data attributes will be present (other than `classification`, `source`, and `lastupdated`). + * - If data is available from the data source, this property will not be present. + * + */ + unavailable?: boolean; + /** + * Vehicle Registration Number displayed on the vehicle number plates + */ + vehicleno?: { + /** + * example: + * SDF1235A + */ + value?: string; + }; + /** + * Type of Vehicles such as 'MOTOR CAR', 'STATION /WAGON/JEEP/LAND ROVER' + */ + type?: { + /** + * example: + * PASSENGER MOTOR CAR + */ + value?: string; + }; + /** + * In-Vehicle Unit (IU) number of the device fitted in Singapore-registered vehicles for Electronic Road Pricing (ERP) gantries and Electronic Parking System (EPS) car parks. + */ + iulabelno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Vehicle Make such as 'TOYOTA', 'HONDA', 'AUDI' + */ + make?: { + /** + * example: + * TOYOTA + */ + value?: string; + }; + /** + * Vehicle Model such as 'COROLLA ALTIS CLASSIC 1.6 CVT', 'HRV 1.5 DX CVT' + */ + model?: { + /** + * example: + * COROLLA ALTIS + */ + value?: string; + }; + /** + * Vehicle Chassis Number + */ + chassisno?: { + /** + * example: + * ZC11S1735800 + */ + value?: string; + }; + /** + * Vehicle Engine Number + */ + engineno?: { + /** + * example: + * M13A1837453 + */ + value?: string; + }; + /** + * Vehicle Motor Number + */ + motorno?: { + /** + * example: + * + */ + value?: string; + }; + /** + * Manufacturing year + */ + yearofmanufacture?: { + /** + * example: + * 2010 + */ + value?: string; + }; + /** + * Date when vehicle is registered with LTA. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + firstregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Date when vehicle is first registered in the country of origin. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + originalregistrationdate?: { + /** + * example: + * 2010-06-06 + */ + value?: string; // date + }; + /** + * Vehicle Certificate of Entitlement (COE) bid category + */ + coecategory?: { + /** + * example: + * A - CAR UP TO 1600CC & 97KW (130BHP) + */ + value?: string; + }; + /** + * Vehicle Certificate of Entitlement (COE) expiry date. See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + coeexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * See "full-date" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + roadtaxexpirydate?: { + /** + * example: + * 2020-06-05 + */ + value?: string; // date + }; + /** + * Actual Quota Premium (QP) amount payable for the COE upon registration, conversion or COE revalidation in Singapore dollars (SGD). For renewal of COE, the value will contain actual PQP paid. + */ + quotapremium?: { + /** + * example: + * 14000.01 + */ + value?: number; // double + }; + /** + * Open Market Value is the value of manufacturer invoice price, freight and insurance in Singapore dollars (SGD). + */ + openmarketvalue?: { + /** + * example: + * 25000.01 + */ + value?: number; // double + }; + /** + * CO2 emission rate + */ + co2emission?: { + /** + * example: + * 146.01 + */ + value?: number; // double + }; + /** + * Status of the Vehicle. + * + * 1 - LIVE + * 2 - DE-REGISTERED + */ + status?: { + /** + * example: + * 1 + */ + code?: "1" | "2"; + /** + * example: + * LIVE + */ + desc?: "LIVE" | "DE-REGISTERED"; + }; + /** + * Vehicle Primary Colour (e.g. BLACK) + */ + primarycolour?: { + /** + * example: + * BLACK + */ + value?: string; + }; + /** + * Vehicle Primary Colour (e.g. WHITE) + */ + secondarycolour?: { + /** + * example: + * WHITE + */ + value?: string; + }; + /** + * Vehicle Attachment 1 (e.g. DISABLED) + */ + attachment1?: { + /** + * example: + * DISABLED + */ + value?: string; + }; + /** + * Vehicle Attachment 2 (e.g. WITH SUN ROOF) + */ + attachment2?: { + /** + * example: + * WITH SUN ROOF + */ + value?: string; + }; + /** + * Vehicle Attachment 3 (e.g. SIDE CURTAIN) + */ + attachment3?: { + /** + * example: + * SIDE CURTAIN + */ + value?: string; + }; + /** + * Vehicle Scheme (e.g. REVISED OFF-PEAK CAR) + */ + scheme?: { + /** + * example: + * REVISED OFF-PEAK CAR + */ + value?: string; + }; + /** + * Total Hydro Carbon (THC) emission rate + */ + thcemission?: { + /** + * example: + * 1.011001 + */ + value?: number; // double + }; + /** + * Carbon Monoxide emission rate + */ + coemission?: { + /** + * example: + * 1.100001 + */ + value?: number; // double + }; + /** + * Nitrogen Oxide (NOx) emission rate. + */ + noxemission?: { + /** + * example: + * 0.011001 + */ + value?: number; // double + }; + /** + * Particulates (PM - Atmospheric Particulate Matter) emission rate. + */ + pmemission?: { + /** + * example: + * 0.007 + */ + value?: number; // double + }; + /** + * Engine Capacity in cubic centimeter (cc) + */ + enginecapacity?: { + /** + * example: + * 1600 + */ + value?: number; + }; + /** + * Power Rate. Applicable to Electric and Hybrid vehicles powered by electric motors. Unit is Kilowatt. + */ + powerrate?: { + /** + * example: + * 1.41 + */ + value?: number; // double + }; + /** + * Effective Date/Time of Ownership. See "date-time" in http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14' + */ + effectiveownership?: { + /** + * example: + * 2010-08-31T20:12:12+08:00 + */ + value?: string; // date-time + }; + /** + * Propellant (e.g. Compressed Natural Gas, Diesel, Diesel-CNG, Diesel-Electric, Diesel-Electric (Plug-In), Electric, Gas, Liquefied Petroleum Gas (LPG), Petrol, Petrol-CNG, Petrol-Electric, Petrol-Electric (Plug-In), Petrol-LPG + */ + propellant?: { + /** + * example: + * Compressed Natural Gas + */ + value?: string; + }; + /** + * Maximum Unladen Weight in kilograms (kg) + */ + maximumunladenweight?: { + /** + * example: + * 1500 + */ + value?: number; + }; + /** + * Maximum Laden Weight in kilograms (kg) + */ + maximumladenweight?: { + /** + * example: + * 1795 + */ + value?: number; + }; + /** + * Minimum PARF Benefit in Singapore dollars (SGD). + */ + minimumparfbenefit?: { + /** + * example: + * 8770.01 + */ + value?: number; // double + }; + /** + * Number of Transfer + */ + nooftransfers?: { + /** + * example: + * 2 + */ + value?: number; + }; + /** + * Vehicle Parking Certificate. Applicable for Heavy Vehicles. + */ + vpc?: { + /** + * example: + * 1234567890 + */ + value?: string; + }; + }[]; + } } diff --git a/src/myinfo/domain/profilestatus-domain.ts b/src/myinfo/domain/profilestatus-domain.ts index c92c257e..ff64e572 100644 --- a/src/myinfo/domain/profilestatus-domain.ts +++ b/src/myinfo/domain/profilestatus-domain.ts @@ -1,4 +1,3 @@ - export enum ProfileStatusEnum { NO_PROFILE = "01", INCOMPLETE_VERIFIED_FIELDS = "02", diff --git a/src/myinfo/fake/__tests__/fake-helper.spec.ts b/src/myinfo/fake/__tests__/fake-helper.spec.ts index 52c7b8f5..2f5fd812 100644 --- a/src/myinfo/fake/__tests__/fake-helper.spec.ts +++ b/src/myinfo/fake/__tests__/fake-helper.spec.ts @@ -1,6 +1,10 @@ -// tslint:disable: no-big-function import { MyInfoLifeStatusCode, MyInfoSexCode, MyInfoVehicleStatus } from "../../domain"; -import { FakeMyInfoHelper, transformChildBirthRecord, transformItems, transformItemsWithAdditionalMock } from "../fake-helper"; +import { + FakeMyInfoHelper, + transformChildBirthRecord, + transformItems, + transformItemsWithAdditionalMock, +} from "../fake-helper"; import { ProfileArchetype } from "../profiles/fake-profile"; import { mrSGDaddyPerfect } from "../profiles/mrSGDaddyPerfect"; import { mrSGNoLocalAddress } from "../profiles/mrSGNoLocalAddress "; @@ -8,7 +12,6 @@ import { mrSGFatherNormalChildrenOnly } from "../profiles/sponsored-children/mrS import { ChildrenBirthRecord, CpfContributionHistory, OverrideMode } from "../types"; describe("FakeMyInfoHelper", () => { - describe("getPersonBasic", () => { it("should successfully get based on archetype", () => { const fakeHelper = new FakeMyInfoHelper(); @@ -96,15 +99,15 @@ describe("FakeMyInfoHelper", () => { type: "SG", postal: "123456", street: "Some street", - unit: "111" - } + unit: "111", + }, }); expect(person.regadd).toStrictEqual({ ...mrSGDaddyPerfect.generate().regadd, postal: { value: "123456" }, street: { value: "Some street" }, - unit: { value: "111" } + unit: { value: "111" }, }); }); @@ -119,8 +122,8 @@ describe("FakeMyInfoHelper", () => { floor: "11", postal: "123456", street: "Some street", - unit: "111" - } + unit: "111", + }, }); const baseRegAdd = mrSGNoLocalAddress.generate().regadd; @@ -128,7 +131,7 @@ describe("FakeMyInfoHelper", () => { type: "SG", country: { code: "SG", - desc: "SINGAPORE" + desc: "SINGAPORE", }, block: { value: "123" }, building: { value: "Some building" }, @@ -151,7 +154,7 @@ describe("FakeMyInfoHelper", () => { regadd: { type: "UNFORMATTED", line1: "Line 1 address", - } + }, }); expect(person.regadd).toStrictEqual({ @@ -168,7 +171,7 @@ describe("FakeMyInfoHelper", () => { type: "UNFORMATTED", line1: "Line 1 address", line2: "Line 2 address", - } + }, }); const baseRegAdd = mrSGDaddyPerfect.generate().regadd; @@ -214,7 +217,9 @@ describe("FakeMyInfoHelper", () => { childrenbirthrecords: mockChildrenbirthrecords, }); - expect(person.childrenbirthrecords).toStrictEqual(mockChildrenbirthrecords.map(transformChildBirthRecord)); + expect(person.childrenbirthrecords).toStrictEqual( + mockChildrenbirthrecords.map(transformChildBirthRecord), + ); }); it("should NOT override all exisiting children of archetype if childrenbirthrecords is empty", () => { @@ -246,7 +251,10 @@ describe("FakeMyInfoHelper", () => { expect(person.childrenbirthrecords).toStrictEqual([ ...mockChildrenbirthrecords.map(transformChildBirthRecord), - ...mrSGDaddyPerfectChildren.slice(mockChildrenbirthrecords.length, mrSGDaddyPerfectChildren.length), + ...mrSGDaddyPerfectChildren.slice( + mockChildrenbirthrecords.length, + mrSGDaddyPerfectChildren.length, + ), ]); }); @@ -300,7 +308,6 @@ describe("FakeMyInfoHelper", () => { }); }); - // tslint:disable-next-line: no-big-function describe("getPerson", () => { it("should successfully get based on archetype", () => { const fakeHelper = new FakeMyInfoHelper(); @@ -338,10 +345,7 @@ describe("FakeMyInfoHelper", () => { }); it("should return only requested attributes", () => { - const requestedAttributes = [ - "drivinglicence.qdl.validity", - "cpfbalances" - ]; + const requestedAttributes = ["drivinglicence.qdl.validity", "cpfbalances"]; const fakeHelper = new FakeMyInfoHelper(requestedAttributes); const person = fakeHelper.getPerson({ archetype: ProfileArchetype.MR_SG_FATHER_ONLY_SPONSORED }); @@ -378,7 +382,9 @@ describe("FakeMyInfoHelper", () => { cpfcontributions: mockCpfContributions, }); - expect(person.cpfcontributions.history).toStrictEqual(mockCpfContributions.map(cpfContribution => transformItems(cpfContribution))); + expect(person.cpfcontributions.history).toStrictEqual( + mockCpfContributions.map((cpfContribution) => transformItems(cpfContribution)), + ); }); it("should override all exisiting cpfContributions of archetype if cpfcontributions is NOT empty and and myinfoPerson.cpfContributions is undefined", () => { @@ -390,7 +396,9 @@ describe("FakeMyInfoHelper", () => { cpfcontributions: mockCpfContributions, }); - expect(person.cpfcontributions.history).toStrictEqual(mockCpfContributions.map(cpfContribution => transformItems(cpfContribution))); + expect(person.cpfcontributions.history).toStrictEqual( + mockCpfContributions.map((cpfContribution) => transformItems(cpfContribution)), + ); }); it("should NOT override all exisiting cpfcontributions of archetype if cpfcontributions is empty", () => { @@ -404,7 +412,9 @@ describe("FakeMyInfoHelper", () => { cpfcontributions, }); - expect(person.cpfcontributions).toStrictEqual((mrSGFatherNormalChildrenOnly.generate()).cpfcontributions); + expect(person.cpfcontributions).toStrictEqual( + mrSGFatherNormalChildrenOnly.generate().cpfcontributions, + ); }); }); @@ -418,11 +428,15 @@ describe("FakeMyInfoHelper", () => { cpfcontributions: mockCpfContributions, }); - const mrSGFatherNormalChildren = (mrSGFatherNormalChildrenOnly.generate()).cpfcontributions.history; + const mrSGFatherNormalChildren = + mrSGFatherNormalChildrenOnly.generate().cpfcontributions.history; expect(person.cpfcontributions.history).toStrictEqual([ - ...mockCpfContributions.map(cpfContribution => transformItems(cpfContribution)), - ...mrSGFatherNormalChildren.slice(mockCpfContributions.length, mrSGFatherNormalChildren.length), + ...mockCpfContributions.map((cpfContribution) => transformItems(cpfContribution)), + ...mrSGFatherNormalChildren.slice( + mockCpfContributions.length, + mrSGFatherNormalChildren.length, + ), ]); }); @@ -437,7 +451,9 @@ describe("FakeMyInfoHelper", () => { cpfcontributions, }); - expect(person.cpfcontributions).toStrictEqual((mrSGFatherNormalChildrenOnly.generate()).cpfcontributions); + expect(person.cpfcontributions).toStrictEqual( + mrSGFatherNormalChildrenOnly.generate().cpfcontributions, + ); }); }); @@ -451,11 +467,12 @@ describe("FakeMyInfoHelper", () => { cpfcontributions: mockCpfContributions, }); - const mrSGaddyPerfectChildren = (mrSGFatherNormalChildrenOnly.generate()).cpfcontributions.history; + const mrSGaddyPerfectChildren = + mrSGFatherNormalChildrenOnly.generate().cpfcontributions.history; expect(person.cpfcontributions.history).toStrictEqual([ ...mrSGaddyPerfectChildren, - ...mockCpfContributions.map(cpfContribution => transformItems(cpfContribution)), + ...mockCpfContributions.map((cpfContribution) => transformItems(cpfContribution)), ]); }); @@ -470,14 +487,14 @@ describe("FakeMyInfoHelper", () => { cpfcontributions, }); - expect(person.cpfcontributions).toStrictEqual((mrSGFatherNormalChildrenOnly.generate()).cpfcontributions); + expect(person.cpfcontributions).toStrictEqual( + mrSGFatherNormalChildrenOnly.generate().cpfcontributions, + ); }); }); }); - describe("cpfBalances", () => { - const mockCpfBalances = { ma: 1234.89, oa: 1234.89, @@ -502,7 +519,7 @@ describe("FakeMyInfoHelper", () => { ma: 0, oa: 0, sa: 0, - ra: 0 + ra: 0, }; const person = fakeHelper.getPerson({ @@ -510,9 +527,8 @@ describe("FakeMyInfoHelper", () => { cpfbalances: mockNoCpfBalances, }); - expect(person.cpfbalances).toStrictEqual((mrSGDaddyPerfect.generate()).cpfbalances); + expect(person.cpfbalances).toStrictEqual(mrSGDaddyPerfect.generate().cpfbalances); }); - }); describe("noaBasic", () => { @@ -543,21 +559,24 @@ describe("FakeMyInfoHelper", () => { noabasic: mockNoa, }); - expect(person["noa-basic"]).toStrictEqual((mrSGFatherNormalChildrenOnly.generate())["noa-basic"]); + expect(person["noa-basic"]).toStrictEqual(mrSGFatherNormalChildrenOnly.generate()["noa-basic"]); }); }); }); describe("Vehicles", () => { - const vehicles = [{ - status: MyInfoVehicleStatus.LIVE, - vehicleno: "S1Y", - iulabelno: "1234567891" - }, { - status: MyInfoVehicleStatus.DEREGISTERED, - vehicleno: "MID1234D", - iulabelno: "1234567890" - }]; + const vehicles = [ + { + status: MyInfoVehicleStatus.LIVE, + vehicleno: "S1Y", + iulabelno: "1234567891", + }, + { + status: MyInfoVehicleStatus.DEREGISTERED, + vehicleno: "MID1234D", + iulabelno: "1234567890", + }, + ]; it("should successfully update vehicles based on mock params", () => { const fakeHelper = new FakeMyInfoHelper(); @@ -582,10 +601,9 @@ describe("FakeMyInfoHelper", () => { archetype: ProfileArchetype.MR_SG_FATHER_NORMAL_CHILDREN, }); - expect(person["vehicles"]).toStrictEqual([]); + expect(person.vehicles).toStrictEqual([]); }); }); - }); }); diff --git a/src/myinfo/fake/factory/person-basic-factory.ts b/src/myinfo/fake/factory/person-basic-factory.ts index 2c2255e7..3705b27b 100644 --- a/src/myinfo/fake/factory/person-basic-factory.ts +++ b/src/myinfo/fake/factory/person-basic-factory.ts @@ -1,239 +1,249 @@ import { Factory } from "rosie"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoDialectCode, MyInfoLifeStatusCode, MyInfoMaritalStatusCode, MyInfoMerdekaGenerationMessageCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoDialectCode, + MyInfoLifeStatusCode, + MyInfoMaritalStatusCode, + MyInfoMerdekaGenerationMessageCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { aliasName } from "../profiles/common"; - export const PersonBasicFactory = new Factory() .sequence("uinfin", (i) => ({ - "lastupdated": "2018-06-01", - "value": "S123456" + i + "A", - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + value: "S123456" + i + "A", + source: "1", + classification: "C", })) .attrs({ - "edulevel": { - "lastupdated": "2020-09-10", - "code": null, - "source": "2", - "classification": "C", - "desc": null, - }, - "dialect": { - "lastupdated": "2018-06-01", - "code": MyInfoDialectCode.HOKKIEN, - "source": "1", - "classification": "C", - "desc": MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), - }, - "occupation": { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", - }, - "regadd": { - "country": { - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + edulevel: { + lastupdated: "2020-09-10", + code: null, + source: "2", + classification: "C", + desc: null, + }, + dialect: { + lastupdated: "2018-06-01", + code: MyInfoDialectCode.HOKKIEN, + source: "1", + classification: "C", + desc: MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), + }, + occupation: { + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", + }, + regadd: { + country: { + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), }, - "unit": { - "value": "22", + unit: { + value: "22", }, - "street": { - "value": "TOA PAYOH LORONG 1", + street: { + value: "TOA PAYOH LORONG 1", }, - "lastupdated": "2018-05-10", - "block": { - "value": "123", + lastupdated: "2018-05-10", + block: { + value: "123", }, - "postal": { - "value": "310123", + postal: { + value: "310123", }, - "source": "1", - "classification": "C", - "floor": { - "value": "12", + source: "1", + classification: "C", + floor: { + value: "12", }, - "type": "SG", - "building": { - "value": "", + type: "SG", + building: { + value: "", }, }, - "mobileno": { - "lastupdated": "2019-04-03", - "source": "4", - "classification": "C", - "areacode": { - "value": "65", + mobileno: { + lastupdated: "2019-04-03", + source: "4", + classification: "C", + areacode: { + value: "65", }, - "prefix": { - "value": "+", + prefix: { + value: "+", }, - "nbr": { - "value": "88158701", + nbr: { + value: "88158701", }, }, - "passportexpirydate": { - "lastupdated": "", - "source": "1", - "classification": "C", - "value": "", - }, - "divorcedate": { - "lastupdated": "", - "source": "1", - "classification": "C", - "value": "", - }, - "marriagecertno": { - "lastupdated": "2018-05-10", - "source": "1", - "classification": "C", - "value": "M525997", - }, - "merdekagen": { - "eligibility": { - "value": true, + passportexpirydate: { + lastupdated: "", + source: "1", + classification: "C", + value: "", + }, + divorcedate: { + lastupdated: "", + source: "1", + classification: "C", + value: "", + }, + marriagecertno: { + lastupdated: "2018-05-10", + source: "1", + classification: "C", + value: "M525997", + }, + merdekagen: { + eligibility: { + value: true, }, - "lastupdated": "2019-04-01", - "quantum": { - "value": 200, + lastupdated: "2019-04-01", + quantum: { + value: 200, }, - "source": "1", - "classification": "C", - "message": { - "code": MyInfoMerdekaGenerationMessageCode.ALL_OK, - "desc": MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), + source: "1", + classification: "C", + message: { + code: MyInfoMerdekaGenerationMessageCode.ALL_OK, + desc: MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), }, }, - "gstvoucher": { - "gstregular": { - "value": 300, + gstvoucher: { + gstregular: { + value: 300, }, - "year": { - "value": "2019", + year: { + value: "2019", }, - "exclusion": { - "value": false, + exclusion: { + value: false, }, - "gstmedisave": { - "value": 250, + gstmedisave: { + value: 250, }, - "lastupdated": "2019-04-01", - "gstspecial": { - "value": 0, + lastupdated: "2019-04-01", + gstspecial: { + value: 0, }, - "source": "1", - "classification": "C", - "signup": { - "value": true, + source: "1", + classification: "C", + signup: { + value: true, }, }, - "email": { - "lastupdated": "2019-04-03", - "source": "4", - "classification": "C", - "value": "gt.govandi@gmail.com", - }, - "birthcountry": { - "lastupdated": "2018-06-01", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "source": "1", - "classification": "C", - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - }, - "race": { - "lastupdated": "2018-06-01", - "code": MyInfoRaceCode.CHINESE, - "source": "1", - "classification": "C", - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - }, - "silversupport": { - "eligibility": { - "value": true, + email: { + lastupdated: "2019-04-03", + source: "4", + classification: "C", + value: "gt.govandi@gmail.com", + }, + birthcountry: { + lastupdated: "2018-06-01", + code: MyInfoCountryPlaceCode.SINGAPORE, + source: "1", + classification: "C", + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + }, + race: { + lastupdated: "2018-06-01", + code: MyInfoRaceCode.CHINESE, + source: "1", + classification: "C", + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + }, + silversupport: { + eligibility: { + value: true, }, - "lastupdated": "2019-04-01", - "amount": { - "value": 300, + lastupdated: "2019-04-01", + amount: { + value: 300, }, - "source": "1", - "classification": "C", - "year": { - "value": "2019", + source: "1", + classification: "C", + year: { + value: "2019", }, }, - "countryofmarriage": { - "lastupdated": "2018-05-10", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "source": "1", - "classification": "C", - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - }, - "sex": { - "lastupdated": "2018-06-01", - "code": MyInfoSexCode.MALE, - "source": "1", - "classification": "C", - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), - }, - "marriagedate": { - "lastupdated": "1993-10-22", - "source": "1", - "classification": "C", - "value": "1993-10-22", - }, - "residentialstatus": { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "source": "1", - "classification": "C", - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - }, - "passportnumber": { - "lastupdated": "", - "source": "1", - "classification": "C", - "value": "", - }, - "marital": { - "lastupdated": "2018-05-10", - "code": MyInfoMaritalStatusCode.MARRIED, - "source": "1", - "classification": "C", - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - }, - "aliasname": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": aliasName.JASCKSON_LIM_YONG_XIANG, - }, - "nationality": { - "lastupdated": "2018-06-01", - "code": MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, - "source": "1", - "classification": "C", - "desc": MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN), - }, - "dob": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1953-10-06", - }, - "name": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "User-Name", - }, - "secondaryrace": { - "lastupdated": "2018-06-01", - "code": MyInfoRaceCode.GERMAN, - "source": "1", - "classification": "C", - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), + countryofmarriage: { + lastupdated: "2018-05-10", + code: MyInfoCountryPlaceCode.SINGAPORE, + source: "1", + classification: "C", + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + }, + sex: { + lastupdated: "2018-06-01", + code: MyInfoSexCode.MALE, + source: "1", + classification: "C", + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), + }, + marriagedate: { + lastupdated: "1993-10-22", + source: "1", + classification: "C", + value: "1993-10-22", + }, + residentialstatus: { + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + source: "1", + classification: "C", + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + }, + passportnumber: { + lastupdated: "", + source: "1", + classification: "C", + value: "", + }, + marital: { + lastupdated: "2018-05-10", + code: MyInfoMaritalStatusCode.MARRIED, + source: "1", + classification: "C", + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + }, + aliasname: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: aliasName.JASCKSON_LIM_YONG_XIANG, + }, + nationality: { + lastupdated: "2018-06-01", + code: MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + source: "1", + classification: "C", + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN), + }, + dob: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1953-10-06", + }, + name: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "User-Name", + }, + secondaryrace: { + lastupdated: "2018-06-01", + code: MyInfoRaceCode.GERMAN, + source: "1", + classification: "C", + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), }, }) .attr("sponsoredchildrenrecords", () => [sponsoredchildrecordFactory.build(), sponsoredchildrecordFactory.build()]) @@ -241,96 +251,96 @@ export const PersonBasicFactory = new Factory() .sequence("birthcertno", (i) => ({ - "value": "S556288" + i, + value: "S556288" + i, })) .sequence("name", (i) => ({ - "value": "child" + i, + value: "child" + i, })) .attrs({ - "dialect": { - "code": MyInfoDialectCode.HOKKIEN, - "desc": MyInfoDialectCode.fn.toEnumValue(MyInfoDialectCode.HOKKIEN), + dialect: { + code: MyInfoDialectCode.HOKKIEN, + desc: MyInfoDialectCode.fn.toEnumValue(MyInfoDialectCode.HOKKIEN), }, - "race": { - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + race: { + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), }, - "lifestatus": { - "code": MyInfoLifeStatusCode.ALIVE, - "desc": MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), }, - "tob": { - "value": "0901", + tob: { + value: "0901", }, - "sex": { - "code": MyInfoSexCode.FEMALE, - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), + sex: { + code: MyInfoSexCode.FEMALE, + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - "source": "1", - "classification": "C", - "hanyupinyinname": { - "value": "Cheng Pei Ni", + source: "1", + classification: "C", + hanyupinyinname: { + value: "Cheng Pei Ni", }, - "hanyupinyinaliasname": { - "value": "", + hanyupinyinaliasname: { + value: "", }, - "marriedname": { - "value": "", + marriedname: { + value: "", }, - "aliasname": { - "value": "", + aliasname: { + value: "", }, - "dob": { - "value": "2011-09-10", + dob: { + value: "2011-09-10", }, - "lastupdated": "2018-05-16", - "secondaryrace": { - "code": "", - "desc": "", + lastupdated: "2018-05-16", + secondaryrace: { + code: "", + desc: "", }, }); export const sponsoredchildrecordFactory = new Factory() .sequence("name", (i) => ({ - "value": "child" + i, + value: "child" + i, })) .attrs({ - "dialect": { - "code": MyInfoDialectCode.HOKKIEN, - "desc": MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), + dialect: { + code: MyInfoDialectCode.HOKKIEN, + desc: MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), }, - "race": { - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + race: { + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), }, - "lifestatus": { - "code": MyInfoLifeStatusCode.ALIVE, - "desc": MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), }, - "sex": { - "code": MyInfoSexCode.MALE, - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), + sex: { + code: MyInfoSexCode.MALE, + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - "source": "1", - "classification": "C", - "hanyupinyinname": { - "value": "Sponsored Child", + source: "1", + classification: "C", + hanyupinyinname: { + value: "Sponsored Child", }, - "hanyupinyinaliasname": { - "value": "", + hanyupinyinaliasname: { + value: "", }, - "marriedname": { - "value": "", + marriedname: { + value: "", }, - "aliasname": { - "value": "", + aliasname: { + value: "", }, - "dob": { - "value": "2012-09-10", + dob: { + value: "2012-09-10", }, - "lastupdated": "2018-05-16", - "secondaryrace": { - "code": "", - "desc": "", + lastupdated: "2018-05-16", + secondaryrace: { + code: "", + desc: "", }, }); diff --git a/src/myinfo/fake/fake-helper.ts b/src/myinfo/fake/fake-helper.ts index 3330fa74..8be046a9 100644 --- a/src/myinfo/fake/fake-helper.ts +++ b/src/myinfo/fake/fake-helper.ts @@ -1,8 +1,32 @@ +/* eslint-disable sonarjs/cognitive-complexity */ +/* eslint-disable max-lines-per-function */ import { get, isEmpty, map, omit, partition, set } from "lodash"; -// tslint:disable-next-line: max-line-length -import { MyInfoComponents, MyInfoComStatusCode, MyInfoCountryPlaceCode, MyInfoDrivingLicenceValidityCode, MyInfoHDBTypeCode, MyInfoHousingTypeCode, MyInfoLifeStatusCode, MyInfoMaritalStatusCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode, MyInfoVehicleStatus } from "../domain"; +import { + MyInfoComStatusCode, + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoDrivingLicenceValidityCode, + MyInfoHDBTypeCode, + MyInfoHousingTypeCode, + MyInfoLifeStatusCode, + MyInfoMaritalStatusCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, + MyInfoVehicleStatus, +} from "../domain"; import { profiles } from "./profiles/fake-profiles"; -import { ChildrenBirthRecord, CpfBalanceExtension, GVS, MockParams, MockParamsPerson, NoaBasicExtension, OverrideMode, UniqueAddressSgKeys, UniqueAddressUnformattedKeys } from "./types"; +import { + ChildrenBirthRecord, + CpfBalanceExtension, + GVS, + MockParams, + MockParamsPerson, + NoaBasicExtension, + OverrideMode, + UniqueAddressSgKeys, + UniqueAddressUnformattedKeys, +} from "./types"; type PersonBasic = MyInfoComponents.Schemas.PersonBasic; type Person = MyInfoComponents.Schemas.Person; @@ -16,16 +40,14 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { /** * @param attributes attributes to return in the MyInfoPerson in getPersonData */ - public constructor( - private readonly attributes?: ReadonlyArray, - ) { } + public constructor(private readonly attributes?: ReadonlyArray) {} /** * fake getPersonData + * * @param input the mock profile parameters. * See FakeMyInfoPersonArchetypes for the actual person. */ - // tslint:disable-next-line: no-big-function public getPersonInfo = (mockParams: MockParams): Person => { const mockProfile = profiles.find((profile) => profile.name === mockParams.archetype); if (!mockProfile) { @@ -111,7 +133,15 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } if (!isEmpty(mockParams.regadd)) { - const sgProps: UniqueAddressSgKeys[] = ["block", "building", "country", "floor", "postal", "street", "unit"]; + const sgProps: UniqueAddressSgKeys[] = [ + "block", + "building", + "country", + "floor", + "postal", + "street", + "unit", + ]; const unformattedProps: UniqueAddressUnformattedKeys[] = ["line1", "line2"]; if (mockParams.regadd.type === "SG") { @@ -124,10 +154,18 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), }, block: { value: !isEmpty(mockParams.regadd.block) ? mockParams.regadd.block : regadd.block.value }, - building: { value: !isEmpty(mockParams.regadd.building) ? mockParams.regadd.building : regadd.building.value }, + building: { + value: !isEmpty(mockParams.regadd.building) + ? mockParams.regadd.building + : regadd.building.value, + }, floor: { value: !isEmpty(mockParams.regadd.floor) ? mockParams.regadd.floor : regadd.floor.value }, - postal: { value: !isEmpty(mockParams.regadd.postal) ? mockParams.regadd.postal : regadd.postal.value }, - street: { value: !isEmpty(mockParams.regadd.street) ? mockParams.regadd.street : regadd.street.value }, + postal: { + value: !isEmpty(mockParams.regadd.postal) ? mockParams.regadd.postal : regadd.postal.value, + }, + street: { + value: !isEmpty(mockParams.regadd.street) ? mockParams.regadd.street : regadd.street.value, + }, unit: { value: !isEmpty(mockParams.regadd.unit) ? mockParams.regadd.unit : regadd.unit.value }, }; @@ -259,127 +297,126 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } if (!isEmpty(mockParams.vehicles)) { - myinfoPerson.vehicles = - mockParams.vehicles.map(vehicle => { - return { - roadtaxexpirydate: { - value: "2020-06-06", - }, - engineno: { - value: "4G13NU1453", - }, - attachment3: { - value: null, - }, - effectiveownership: { - value: "2010-06-06T12:09:05", - }, - scheme: { - value: "OPC - OFF PEAK CAR", - }, - powerrate: { - value: 1.7, - }, - source: "1", - primarycolour: { - value: "MAROON", - }, - type: { - value: "STATION WAGON/JEEP/LAND ROVER", - }, - vehicleno: { - value: vehicle.vehicleno, - }, - coeexpirydate: { - value: "2020-06-06", - }, - chassisno: { - value: "TUU28391334KL189", - }, - noxemission: { - value: 0.013456, - }, - model: { - value: "FORESTER", - }, - openmarketvalue: { - value: 23485.3, - }, - coemission: { - value: 0.153209, - }, - attachment2: { - value: null, - }, - attachment1: { - value: "CONTINENTAL TIRE", - }, - make: { - value: "SUBARU", - }, - pmemission: { - value: 0.199, - }, - originalregistrationdate: { - value: "2009-12-06", - }, - yearofmanufacture: { - value: "2010", - }, - vpc: { - value: null, - }, - enginecapacity: { - value: 1600, - }, - classification: "C", - nooftransfers: { - value: 1, - }, - propellant: { - value: "Petrol", - }, - co2emission: { - value: 145, - }, - motorno: { - value: null, - }, - minimumparfbenefit: { - value: 2500, - }, - thcemission: { - value: 0.187765, - }, - firstregistrationdate: { - value: "2010-06-06", - }, - lastupdated: "2020-08-26", - maximumunladenweight: { - value: 1500, - }, - coecategory: { - value: "A - CAR UP TO 1600CC & 97KW (130BHP)", - }, - maximumladenweight: { - value: 2000, - }, - secondarycolour: { - value: null, - }, - iulabelno: { - value: vehicle.iulabelno, - }, - quotapremium: { - value: 0, - }, - status: { - code: vehicle.status, - desc: MyInfoVehicleStatus.fn.toEnumDesc(vehicle.status), - }, - unavailable: false, - }; - }); + myinfoPerson.vehicles = mockParams.vehicles.map((vehicle) => { + return { + roadtaxexpirydate: { + value: "2020-06-06", + }, + engineno: { + value: "4G13NU1453", + }, + attachment3: { + value: null, + }, + effectiveownership: { + value: "2010-06-06T12:09:05", + }, + scheme: { + value: "OPC - OFF PEAK CAR", + }, + powerrate: { + value: 1.7, + }, + source: "1", + primarycolour: { + value: "MAROON", + }, + type: { + value: "STATION WAGON/JEEP/LAND ROVER", + }, + vehicleno: { + value: vehicle.vehicleno, + }, + coeexpirydate: { + value: "2020-06-06", + }, + chassisno: { + value: "TUU28391334KL189", + }, + noxemission: { + value: 0.013456, + }, + model: { + value: "FORESTER", + }, + openmarketvalue: { + value: 23485.3, + }, + coemission: { + value: 0.153209, + }, + attachment2: { + value: null, + }, + attachment1: { + value: "CONTINENTAL TIRE", + }, + make: { + value: "SUBARU", + }, + pmemission: { + value: 0.199, + }, + originalregistrationdate: { + value: "2009-12-06", + }, + yearofmanufacture: { + value: "2010", + }, + vpc: { + value: null, + }, + enginecapacity: { + value: 1600, + }, + classification: "C", + nooftransfers: { + value: 1, + }, + propellant: { + value: "Petrol", + }, + co2emission: { + value: 145, + }, + motorno: { + value: null, + }, + minimumparfbenefit: { + value: 2500, + }, + thcemission: { + value: 0.187765, + }, + firstregistrationdate: { + value: "2010-06-06", + }, + lastupdated: "2020-08-26", + maximumunladenweight: { + value: 1500, + }, + coecategory: { + value: "A - CAR UP TO 1600CC & 97KW (130BHP)", + }, + maximumladenweight: { + value: 2000, + }, + secondarycolour: { + value: null, + }, + iulabelno: { + value: vehicle.iulabelno, + }, + quotapremium: { + value: 0, + }, + status: { + code: vehicle.status, + desc: MyInfoVehicleStatus.fn.toEnumDesc(vehicle.status), + }, + unavailable: false, + }; + }); } if (!isEmpty(mockParams.userdisplayname)) { myinfoPerson.name.value = mockParams.userdisplayname; @@ -417,7 +454,7 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } return myinfoPerson; - } + }; public getPersonBasic = (mockParams: MockParams): PersonBasic => { const myinfoPerson = this.getPersonInfo(mockParams); @@ -427,25 +464,29 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } return filterThroughMyInfoAttributes(myinfoPerson, this.attributes); - } - + }; public getPerson = (mockParams: MockParamsPerson): Person => { const myinfoPerson = this.getPersonInfo(mockParams); if (!isEmpty(mockParams.cpfcontributions)) { - const cpfContributionHistory = mockParams.cpfcontributions.map(cpfContribution => transformItems(cpfContribution)); + const cpfContributionHistory = mockParams.cpfcontributions.map((cpfContribution) => + transformItems(cpfContribution), + ); if (!myinfoPerson.cpfcontributions) { myinfoPerson.cpfcontributions = { history: [], classification: "C", source: "1", - lastupdated: null + lastupdated: null, }; } switch (mockParams.cpfcontributionhistoryoverridemode) { case OverrideMode.appendToExisting: - myinfoPerson.cpfcontributions.history = [...myinfoPerson.cpfcontributions.history, ...cpfContributionHistory]; + myinfoPerson.cpfcontributions.history = [ + ...myinfoPerson.cpfcontributions.history, + ...cpfContributionHistory, + ]; break; case OverrideMode.partial: @@ -463,7 +504,12 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } } - if (mockParams.cpfbalances?.ma || mockParams.cpfbalances?.oa || mockParams.cpfbalances?.ra || mockParams.cpfbalances?.sa) { + if ( + mockParams.cpfbalances?.ma || + mockParams.cpfbalances?.oa || + mockParams.cpfbalances?.ra || + mockParams.cpfbalances?.sa + ) { myinfoPerson.cpfbalances = transformItemsWithAdditionalMock(mockParams.cpfbalances) as CpfBalanceExtension; } @@ -476,11 +522,12 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { } return filterThroughMyInfoAttributes(myinfoPerson, this.attributes); - } + }; private checkIsSingaporeanOrPr(residentialStatusValue: string): boolean { return ( - residentialStatusValue === MyInfoResidentialCode.CITIZEN || residentialStatusValue === MyInfoResidentialCode.PR + residentialStatusValue === MyInfoResidentialCode.CITIZEN || + residentialStatusValue === MyInfoResidentialCode.PR ); } } @@ -493,9 +540,15 @@ export class FakeMyInfoHelper implements IFakeMyInfoHelper { * @param attributes array of attributes to filter for */ function filterThroughMyInfoAttributes(person: PersonBasic, attributes: ReadonlyArray): PersonBasic { - const [childrenRawCbrAttributes, childrenNormalAttributes] = partition(attributes, (value) => value.startsWith("childrenbirthrecords.")); - const [sponsoredRawCbrAttributes, sponsoredNormalAttributes] = partition(attributes, (value) => value.startsWith("sponsoredchildrenrecords.")); - const [vehiclesRawCbrAttributes, vehiclesNormalAttributes] = partition(attributes, (value) => value.startsWith("vehicles.")); + const [childrenRawCbrAttributes, childrenNormalAttributes] = partition(attributes, (value) => + value.startsWith("childrenbirthrecords."), + ); + const [sponsoredRawCbrAttributes, sponsoredNormalAttributes] = partition(attributes, (value) => + value.startsWith("sponsoredchildrenrecords."), + ); + const [vehiclesRawCbrAttributes, vehiclesNormalAttributes] = partition(attributes, (value) => + value.startsWith("vehicles."), + ); const [drivinglicenceRawCbrAttributes] = partition(attributes, (value) => value.startsWith("drivinglicence.")); const childrenFilteredPerson = filterThroughAttributes(person, childrenNormalAttributes); @@ -504,7 +557,10 @@ function filterThroughMyInfoAttributes(person: PersonBasic, attributes: Readonly let drivinglicenceFilteredPerson = {}; if (childrenRawCbrAttributes.length > 0) { - const childrenbirthrecordsAttributes = map(childrenRawCbrAttributes, (cbrAttribute) => cbrAttribute.split(".")[1]); + const childrenbirthrecordsAttributes = map( + childrenRawCbrAttributes, + (cbrAttribute) => cbrAttribute.split(".")[1], + ); // get filtered childrenbirthrecords const filteredChildrenbirthrecords = map(person.childrenbirthrecords, (cbr) => { const result = filterThroughAttributes(cbr, childrenbirthrecordsAttributes); @@ -513,7 +569,10 @@ function filterThroughMyInfoAttributes(person: PersonBasic, attributes: Readonly set(childrenFilteredPerson, "childrenbirthrecords", filteredChildrenbirthrecords); } if (sponsoredRawCbrAttributes.length > 0) { - const sponsoredBirthrecordsAttributes = map(sponsoredRawCbrAttributes, (cbrAttribute) => cbrAttribute.split(".")[1]); + const sponsoredBirthrecordsAttributes = map( + sponsoredRawCbrAttributes, + (cbrAttribute) => cbrAttribute.split(".")[1], + ); // get filtered childrenbirthrecords const filteredSponsoredChildrenbirthrecords = map(person.sponsoredchildrenrecords, (cbr) => { const result = filterThroughAttributes(cbr, sponsoredBirthrecordsAttributes); @@ -522,7 +581,10 @@ function filterThroughMyInfoAttributes(person: PersonBasic, attributes: Readonly set(sponsoredFilteredPerson, "sponsoredchildrenrecords", filteredSponsoredChildrenbirthrecords); } if (vehiclesRawCbrAttributes.length > 0) { - const vehicleBirthrecordsAttributes = map(vehiclesRawCbrAttributes, (cbrAttribute) => cbrAttribute.split(".")[1]); + const vehicleBirthrecordsAttributes = map( + vehiclesRawCbrAttributes, + (cbrAttribute) => cbrAttribute.split(".")[1], + ); // get filtered vehicles const filteredVehicleChildrenbirthrecords = map(person.vehicles, (cbr) => { const result = filterThroughAttributes(cbr, vehicleBirthrecordsAttributes); @@ -535,7 +597,7 @@ function filterThroughMyInfoAttributes(person: PersonBasic, attributes: Readonly const drivingLicence = filterThroughDeepAttributes(person, drivinglicenceRawCbrAttributes); drivinglicenceFilteredPerson = { drivinglicence: { - ...drivingLicence["drivinglicence"], + ...(drivingLicence as any).drivinglicence, ...generateDefaultMockResponse(), }, }; @@ -557,7 +619,7 @@ function filterThroughAttributes(object: object, attributes: ReadonlyArray { const key = attrPath.split(".")[0]; const attrValue = get(object, attrPath, null); - if (!!attrValue) { + if (attrValue) { return { ...accumulator, [key]: object[key] }; } return accumulator; @@ -578,7 +640,6 @@ function filterThroughDeepAttributes(object: object, attributes: ReadonlyArray { if (item[key] === "") { return objectKey; } - objectKey[key] = { value: key !== 'yearofassessment' && !isNaN(+item[key]) ? +item[key] : item[key] }; + objectKey[key] = { value: key !== "yearofassessment" && !isNaN(+item[key]) ? +item[key] : item[key] }; return objectKey; }, {}); } - -export function transformItemsWithAdditionalMock(item: any, defaultMockParams: boolean = true,) { +export function transformItemsWithAdditionalMock(item: any) { const transformedItems = transformItems(item); const defaultItems = { source: "1", classification: "C", - lastupdated: `${new Date().toISOString().split('T')[0]}`, + lastupdated: `${new Date().toISOString().split("T")[0]}`, }; return { ...transformedItems, ...defaultItems }; } - diff --git a/src/myinfo/fake/fake-request.ts b/src/myinfo/fake/fake-request.ts index 52dee0cd..5a2fecf4 100644 --- a/src/myinfo/fake/fake-request.ts +++ b/src/myinfo/fake/fake-request.ts @@ -2,18 +2,13 @@ import { AxiosResponse } from "axios"; import { IMyInfoRequest } from "../helper"; export class FakeMyInfoRequest implements IMyInfoRequest { - constructor() { - } + constructor() {} - public async get( - expectedResponse: any, - ): Promise { + public async get(expectedResponse: any): Promise { return expectedResponse; } - public async post( - expectedResponse: any, - ): Promise { + public async post(expectedResponse: any): Promise { return expectedResponse; } } diff --git a/src/myinfo/fake/profiles/MrPreschoolRegistration.ts b/src/myinfo/fake/profiles/MrPreschoolRegistration.ts index 40625c5b..896b81d3 100644 --- a/src/myinfo/fake/profiles/MrPreschoolRegistration.ts +++ b/src/myinfo/fake/profiles/MrPreschoolRegistration.ts @@ -1,7 +1,12 @@ import * as _ from "lodash"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; -import { preschoolEligibleChild_K1, preschoolEligibleChild_N1, preschoolEligibleChild_PG, preschoolIneligibleChild1 } from "./childbirthRecords"; +import { + preschoolEligibleChild_K1, + preschoolEligibleChild_N1, + preschoolEligibleChild_PG, + preschoolIneligibleChild1, +} from "./childbirthRecords"; const id = "T2446959F"; const name = ProfileArchetype.MR_PRESCHOOL_REGISTRATION; diff --git a/src/myinfo/fake/profiles/childbirthRecords.ts b/src/myinfo/fake/profiles/childbirthRecords.ts index 49bfa394..f32a48a2 100644 --- a/src/myinfo/fake/profiles/childbirthRecords.ts +++ b/src/myinfo/fake/profiles/childbirthRecords.ts @@ -14,9 +14,12 @@ export const preschoolEligibleChild_IC = { birthcertno: { value: "T6071883G" }, name: { value: "Ezra Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(2)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -27,9 +30,12 @@ export const preschoolEligibleChild_N2 = { birthcertno: { value: "T7839011A" }, name: { value: "Elliot Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(4)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -40,9 +46,12 @@ export const preschoolEligibleChild_PG = { birthcertno: { value: "T0993929B" }, name: { value: "Ella Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(18)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -53,9 +62,12 @@ export const preschoolEligibleChild_N1 = { birthcertno: { value: "T9732016G" }, name: { value: "Ellie Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(3)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -66,9 +78,12 @@ export const preschoolEligibleChild_K1 = { birthcertno: { value: "T0174806D" }, name: { value: "Emma Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(5)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -79,9 +94,12 @@ export const preschoolEligibleChild_K2 = { birthcertno: { value: "T8821991G" }, name: { value: "Kelly Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(6)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -92,9 +110,12 @@ export const preschoolEligibleChild2_N1 = { birthcertno: { value: "T1256698G" }, name: { value: "Kylie Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(3)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -105,9 +126,12 @@ export const preschoolEligibleChild2_IC = { birthcertno: { value: "T8932406D" }, name: { value: "Karol Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(6)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -118,9 +142,12 @@ export const preschoolEligibleChild2_K1 = { birthcertno: { value: "T4961714Z" }, name: { value: "Kara Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(5)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -131,9 +158,12 @@ export const preschoolEligibleChild2_N2 = { birthcertno: { value: "T1023211I" }, name: { value: "Sara Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(4)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -144,9 +174,12 @@ export const preschoolEligibleChild2_PG = { birthcertno: { value: "T3784654B" }, name: { value: "Stella Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(22)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -157,13 +190,15 @@ export const preschoolEligibleChild2_K2 = { birthcertno: { value: "T9992319E" }, name: { value: "Sonia Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(9)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; - export const preschoolIneligibleChild1 = { source: "1", classification: "C", @@ -171,9 +206,12 @@ export const preschoolIneligibleChild1 = { birthcertno: { value: "T1704475Z" }, name: { value: "Emmy Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(8)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -184,13 +222,15 @@ export const preschoolIneligibleChild2 = { birthcertno: { value: "T8197709C" }, name: { value: "Emmanuel Lee" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(7)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; - const childYoungest = { source: "1", classification: "C", @@ -198,9 +238,12 @@ const childYoungest = { birthcertno: { value: "T9604076D" }, name: { value: "Youngest Tan Ke Xuan" }, dob: { value: formatDateToString() }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -211,9 +254,12 @@ const child1MonthOld = { birthcertno: { value: "T4480566E" }, name: { value: "1 Month Tan Ke Yu" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(1)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -224,9 +270,12 @@ const child2MonthsOld = { birthcertno: { value: "T6046032E" }, name: { value: "2 Months Tan Keh Guan" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -237,9 +286,12 @@ const childMiddle1 = { birthcertno: { value: "T3835928I" }, name: { value: "Middle Tan Twin1" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -250,9 +302,12 @@ const childMiddle2 = { birthcertno: { value: "T1938935E" }, name: { value: "Middle Tan Twin2" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -263,13 +318,15 @@ const childMiddle3 = { birthcertno: { value: "T0584009G" }, name: { value: "Tan Boy" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(3)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; - const childMiddle4 = { source: "1", classification: "C", @@ -277,9 +334,12 @@ const childMiddle4 = { birthcertno: { value: "T1257717B" }, name: { value: "Tan Girl" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(4)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -290,9 +350,12 @@ const childMiddle5 = { birthcertno: { value: "T4172977A" }, name: { value: "Tan Girl Younger" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(5)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -303,9 +366,12 @@ const childSuperOld = { birthcertno: { value: "T4793991C" }, name: { value: "Super Old Tan Ke Wei" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(8)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -316,9 +382,12 @@ const child6YearsOld = { birthcertno: { value: "T0202564C" }, // NRIC used to check for child immunisation records. please do not change. name: { value: "Turning 6 Tan Kid born Jan 1st" }, dob: { value: formatDateToString(DateUtils.startOfYear(ZonedDateTime.now().minusYears(6))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -329,9 +398,12 @@ const child7YearsOld = { birthcertno: { value: "T9970437Z" }, name: { value: "Turning 7 Tan Kid born Dec 31" }, dob: { value: formatDateToString(DateUtils.endOfYear(ZonedDateTime.now().minusYears(7))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -342,9 +414,12 @@ const childDeceased1 = { birthcertno: { value: "T8005316E" }, name: { value: "Deceased child 1" }, dob: { value: formatDateToString(DateUtils.endOfYear(ZonedDateTime.now().minusYears(4))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.DECEASED, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.DECEASED) }, + lifestatus: { + code: MyInfoLifeStatusCode.DECEASED, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.DECEASED), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; @@ -355,9 +430,12 @@ const childDeceased2 = { birthcertno: { value: "T8205956Z" }, name: { value: "Deceased child 2" }, dob: { value: formatDateToString(DateUtils.endOfYear(ZonedDateTime.now().minusYears(5))) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2200" }, - lifestatus: { code: MyInfoLifeStatusCode.DECEASED, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.DECEASED) }, + lifestatus: { + code: MyInfoLifeStatusCode.DECEASED, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.DECEASED), + }, unavailable: false, } as MyInfoComponents.Schemas.Childrenbirthrecords; diff --git a/src/myinfo/fake/profiles/common.ts b/src/myinfo/fake/profiles/common.ts index 976f0ebb..bc547480 100644 --- a/src/myinfo/fake/profiles/common.ts +++ b/src/myinfo/fake/profiles/common.ts @@ -7,7 +7,6 @@ export const unavailableField: UnavailableField = { interface UnavailableField { classification: "C"; - // tslint:disable-next-line: max-union-size source: "1" | "2" | "3" | "4"; lastupdated: string; // date unavailable: boolean; diff --git a/src/myinfo/fake/profiles/mrAppReviewer.ts b/src/myinfo/fake/profiles/mrAppReviewer.ts index 68b98c6b..427134d6 100644 --- a/src/myinfo/fake/profiles/mrAppReviewer.ts +++ b/src/myinfo/fake/profiles/mrAppReviewer.ts @@ -1,5 +1,17 @@ +/* eslint-disable max-lines-per-function */ import * as _ from "lodash"; -import { MyInfoCountryPlaceCode, MyInfoDialectCode, MyInfoEduLevelCode, MyInfoMaritalStatusCode, MyInfoMerdekaGenerationMessageCode, MyInfoNationalityCitizenshipCode, MyInfoPioneerGenerationMessageCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoCountryPlaceCode, + MyInfoDialectCode, + MyInfoEduLevelCode, + MyInfoMaritalStatusCode, + MyInfoMerdekaGenerationMessageCode, + MyInfoNationalityCitizenshipCode, + MyInfoPioneerGenerationMessageCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; const id = "S1111111D"; @@ -12,286 +24,287 @@ const lastupdated = "2020-01-01"; export const mrAppReviewer: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; return { - "name": { - "value": profileName, - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + name: { + value: profileName, + source, + classification, + lastupdated, + unavailable: false, }, - "aliasname": { - "value": "TEST PROFILE", - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + aliasname: { + value: "TEST PROFILE", + source, + classification, + lastupdated, + unavailable: false, }, - "sex": { - "code": MyInfoSexCode.MALE, - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + sex: { + code: MyInfoSexCode.MALE, + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), + source, + classification, + lastupdated, + unavailable: false, }, - "race": { - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + race: { + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source, + classification, + lastupdated, + unavailable: false, }, - "secondaryrace": { - "code": MyInfoRaceCode.GERMAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + secondaryrace: { + code: MyInfoRaceCode.GERMAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), + source, + classification, + lastupdated, + unavailable: false, }, - "dialect": { - "code": MyInfoDialectCode.HOKKIEN, - "desc": MyInfoDialectCode.fn.toEnumValue(MyInfoDialectCode.HOKKIEN), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + dialect: { + code: MyInfoDialectCode.HOKKIEN, + desc: MyInfoDialectCode.fn.toEnumValue(MyInfoDialectCode.HOKKIEN), + source, + classification, + lastupdated, + unavailable: false, }, - "nationality": { - "code": MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, - "desc": MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + nationality: { + code: MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc( + MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + ), + source, + classification, + lastupdated, + unavailable: false, }, - "dob": { - "value": "1989-10-06", - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + dob: { + value: "1989-10-06", + source, + classification, + lastupdated, + unavailable: false, }, - "birthcountry": { - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + birthcountry: { + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source, + classification, + lastupdated, + unavailable: false, }, - "residentialstatus": { - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + residentialstatus: { + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source, + classification, + lastupdated, + unavailable: false, }, - "regadd": { - "type": MyInfoCountryPlaceCode.SINGAPORE, - "block": { - "value": "123", + regadd: { + type: MyInfoCountryPlaceCode.SINGAPORE, + block: { + value: "123", }, - "building": { - "value": null, + building: { + value: null, }, - "floor": { - "value": "12", + floor: { + value: "12", }, - "unit": { - "value": "22", + unit: { + value: "22", }, - "street": { - "value": "TEST ACCT STREET", + street: { + value: "TEST ACCT STREET", }, - "country": { - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + country: { + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), }, - "postal": { - "value": "310123", + postal: { + value: "310123", }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + source, + classification, + lastupdated, + unavailable: false, }, - "email": { - "value": "gt.govandi@gmail.com", - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + email: { + value: "gt.govandi@gmail.com", + source, + classification, + lastupdated, + unavailable: false, }, - "homeno": { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "areacode": { - "value": null, + homeno: { + lastupdated: "2020-09-10", + source: "2", + classification: "C", + areacode: { + value: null, }, - "prefix": { - "value": null, + prefix: { + value: null, }, - "nbr": { - "value": null, + nbr: { + value: null, }, - "unavailable": false, + unavailable: false, }, - "mobileno": { - "areacode": { - "value": "65", + mobileno: { + areacode: { + value: "65", }, - "prefix": { - "value": "+", + prefix: { + value: "+", }, - "nbr": { - "value": "97324992", + nbr: { + value: "97324992", }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + source, + classification, + lastupdated, + unavailable: false, }, - "marital": { - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + marital: { + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source, + classification, + lastupdated, + unavailable: false, }, - "marriagecertno": { - "value": "M525997", - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + marriagecertno: { + value: "M525997", + source, + classification, + lastupdated, + unavailable: false, }, - "countryofmarriage": { - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + countryofmarriage: { + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source, + classification, + lastupdated, + unavailable: false, }, - "marriagedate": { - "value": "1993-10-22", - "source": source, - "classification": classification, - "lastupdated": lastupdated, - "unavailable": false, + marriagedate: { + value: "1993-10-22", + source, + classification, + lastupdated, + unavailable: false, }, - "edulevel": { - "lastupdated": "2020-09-10", - "code": MyInfoEduLevelCode.PRIMARY, - "desc": MyInfoEduLevelCode.fn.toEnumDesc(MyInfoEduLevelCode.PRIMARY), - "source": "2", - "classification": "C", - "unavailable": false, + edulevel: { + lastupdated: "2020-09-10", + code: MyInfoEduLevelCode.PRIMARY, + desc: MyInfoEduLevelCode.fn.toEnumDesc(MyInfoEduLevelCode.PRIMARY), + source: "2", + classification: "C", + unavailable: false, }, - "occupation": { - "lastupdated": "2020-09-10", - "value": null, - "source": "2", - "classification": "C", - "unavailable": false, + occupation: { + lastupdated: "2020-09-10", + value: null, + source: "2", + classification: "C", + unavailable: false, }, - "merdekagen": { - "eligibility": { - "value": true, + merdekagen: { + eligibility: { + value: true, }, - "quantum": { - "value": 100, + quantum: { + value: 100, }, - "message": { - "code": MyInfoMerdekaGenerationMessageCode.ALL_OK, - "desc": MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), + message: { + code: MyInfoMerdekaGenerationMessageCode.ALL_OK, + desc: MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, + source, + classification, + lastupdated, }, - "gstvoucher": { - "gstregular": { - "value": 123, + gstvoucher: { + gstregular: { + value: 123, }, - "year": { - "value": "2019", + year: { + value: "2019", }, - "exclusion": { - "value": false, + exclusion: { + value: false, }, - "gstmedisave": { - "value": 0, + gstmedisave: { + value: 0, }, - "gstspecial": { - "value": 123, + gstspecial: { + value: 123, }, - "signup": { - "value": false, + signup: { + value: false, }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, + source, + classification, + lastupdated, }, - "silversupport": { - "eligibility": { - "value": true, + silversupport: { + eligibility: { + value: true, }, - "amount": { - "value": 123, + amount: { + value: 123, }, - "year": { - "value": "2019", + year: { + value: "2019", }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, + source, + classification, + lastupdated, }, - "pioneergen": { - "eligibility": { - "value": true, + pioneergen: { + eligibility: { + value: true, }, - "quantum": { - "value": "100.00", + quantum: { + value: "100.00", }, - "message": { - "code": MyInfoPioneerGenerationMessageCode.ALL_OK, - "desc": MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.ALL_OK), + message: { + code: MyInfoPioneerGenerationMessageCode.ALL_OK, + desc: MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.ALL_OK), }, - "source": source, - "classification": classification, - "lastupdated": lastupdated, + source, + classification, + lastupdated, }, - "childrenbirthrecords": [], - "sponsoredchildrenrecords": [], - "hdbtype": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "unavailable": true, + childrenbirthrecords: [], + sponsoredchildrenrecords: [], + hdbtype: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + unavailable: true, }, - "housingtype": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "unavailable": true, + housingtype: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + unavailable: true, + }, + drivinglicence: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + unavailable: true, }, - "drivinglicence": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "unavailable": true, - } }; }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario1.ts b/src/myinfo/fake/profiles/mrICADaddyScenario1.ts index 9ecd05f8..90d6f037 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario1.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario1.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario1: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-01", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-01", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M12345", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M12345", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario2.ts b/src/myinfo/fake/profiles/mrICADaddyScenario2.ts index a48e0bc6..28bc678e 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario2.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario2.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario2: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.MALAY, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.MALAY, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-02", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-02", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.PR, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.PR, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.MALAYSIAN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M23456", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M23456", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario3.ts b/src/myinfo/fake/profiles/mrICADaddyScenario3.ts index 2b989c9a..f79b8dd4 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario3.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario3.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario3: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.INDIAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.INDIAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-03", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-03", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M34567", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M34567", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario4.ts b/src/myinfo/fake/profiles/mrICADaddyScenario4.ts index 78b2f3bb..6caf5a9a 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario4.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario4.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario4: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.MALAY, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.MALAY, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-04", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-04", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.ALIEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.ALIEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.ALIEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.ALIEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.MALAYSIAN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M56789", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M56789", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario5.ts b/src/myinfo/fake/profiles/mrICADaddyScenario5.ts index 79414c72..fdc184d3 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario5.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario5.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario5: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.INDIAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.INDIAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-05", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-05", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M67890", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M67890", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICADaddyScenario7.ts b/src/myinfo/fake/profiles/mrICADaddyScenario7.ts index fa45fc5c..fab741d2 100644 --- a/src/myinfo/fake/profiles/mrICADaddyScenario7.ts +++ b/src/myinfo/fake/profiles/mrICADaddyScenario7.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrICADaddyScenario7: FakeProfile = { profile.sex.code = MyInfoSexCode.MALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-02-07", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-02-07", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M78901", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M78901", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario1.ts b/src/myinfo/fake/profiles/mrICAMommyScenario1.ts index 6ac99804..062b1672 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario1.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario1.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario1: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-01", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-01", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M12345", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M12345", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario2.ts b/src/myinfo/fake/profiles/mrICAMommyScenario2.ts index 9f6667a1..9941f441 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario2.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario2.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario2: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-02", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-02", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M23456", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M23456", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario3.ts b/src/myinfo/fake/profiles/mrICAMommyScenario3.ts index 23f26f88..c786ac3c 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario3.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario3.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario3: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.INDIAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.INDIAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-03", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-03", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.PR, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.PR, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.MALAYSIAN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M45678", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M45678", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario4.ts b/src/myinfo/fake/profiles/mrICAMommyScenario4.ts index 0e13c1cb..1ef1d100 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario4.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario4.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario4: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.MALAY, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.MALAY, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.MALAY), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-04", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-04", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.PR, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.PR, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.MALAYSIAN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M56789", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M56789", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario5.ts b/src/myinfo/fake/profiles/mrICAMommyScenario5.ts index 2a8a28f9..2a66e432 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario5.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario5.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario5: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-05", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-05", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M67891", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M67891", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario6.ts b/src/myinfo/fake/profiles/mrICAMommyScenario6.ts index 4364d68c..7811d2fd 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario6.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario6.ts @@ -1,6 +1,11 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,27 +22,27 @@ export const mrsICAMommyScenario6: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.INDIAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.INDIAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.INDIAN), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-06", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-06", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.PR, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.PR, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.MALAYSIAN; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrICAMommyScenario8.ts b/src/myinfo/fake/profiles/mrICAMommyScenario8.ts index ea435960..c486af7d 100644 --- a/src/myinfo/fake/profiles/mrICAMommyScenario8.ts +++ b/src/myinfo/fake/profiles/mrICAMommyScenario8.ts @@ -1,6 +1,13 @@ - import * as _ from "lodash"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { BaseProfile } from "./sponsored-children/BaseProfile"; @@ -17,53 +24,53 @@ export const mrsICAMommyScenario8: FakeProfile = { profile.sex.code = MyInfoSexCode.FEMALE; profile.sex.desc = MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE); profile.race = { - "lastupdated": "2022-02-25", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }; profile.dob = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "1990-01-08", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "1990-01-08", }; profile.residentialstatus = { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }; profile.nationality.code = MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN; profile.marriagecertno = { - "lastupdated": "2022-02-25", - "source": "1", - "classification": "C", - "value": "M12345", + lastupdated: "2022-02-25", + source: "1", + classification: "C", + value: "M12345", }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "2020-09-10", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "2020-09-10", }; profile.countryofmarriage = { - "lastupdated": "2022-02-25", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }; profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }; return profile; - } + }, }; diff --git a/src/myinfo/fake/profiles/mrJapaneseAddressBlank.ts b/src/myinfo/fake/profiles/mrJapaneseAddressBlank.ts index 4574f821..2fe6eb8b 100644 --- a/src/myinfo/fake/profiles/mrJapaneseAddressBlank.ts +++ b/src/myinfo/fake/profiles/mrJapaneseAddressBlank.ts @@ -14,11 +14,11 @@ export const mrJapaneseAddressBlank: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.residentialstatus = { - "code": "", - "desc": "", - "source": "3", - "classification": "C", - "lastupdated": "", + code: "", + desc: "", + source: "3", + classification: "C", + lastupdated: "", }; profile.employment = { classification: "C", @@ -27,64 +27,63 @@ export const mrJapaneseAddressBlank: FakeProfile = { value: "Google Pte Ltd", }; profile.nationality = { - "code": MyInfoNationalityCitizenshipCode.JAPANESE, - "desc": MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.JAPANESE), - "source": "1", - "classification": "C", - "lastupdated": "2019-09-18", + code: MyInfoNationalityCitizenshipCode.JAPANESE, + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.JAPANESE), + source: "1", + classification: "C", + lastupdated: "2019-09-18", }; profile.birthcountry = { - "code": MyInfoCountryPlaceCode.JAPAN, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.JAPAN), - "source": "1", - "classification": "C", - "lastupdated": "2019-09-18", - + code: MyInfoCountryPlaceCode.JAPAN, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.JAPAN), + source: "1", + classification: "C", + lastupdated: "2019-09-18", }; (profile as any).regadd = { - "type": "", - "unit": { "value": "" }, - "block": { "value": "" }, - "floor": { "value": "" }, - "postal": { "value": "" }, - "street": { "value": "" }, - "building": { "value": "" }, - "country": { - "code": "", - "desc": "", + type: "", + unit: { value: "" }, + block: { value: "" }, + floor: { value: "" }, + postal: { value: "" }, + street: { value: "" }, + building: { value: "" }, + country: { + code: "", + desc: "", }, - "classification": "C", - "source": "3", - "lastupdated": "2018-05-10", + classification: "C", + source: "3", + lastupdated: "2018-05-10", }; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; profile.marital = { - "lastupdated": "2020-09-10", - "code": null, - "source": "2", - "classification": "C", - "desc": null, + lastupdated: "2020-09-10", + code: null, + source: "2", + classification: "C", + desc: null, }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", }; profile.dialect = { - "lastupdated": "2020-09-10", - "code": "", - "source": "2", - "classification": "C", - "desc": "", + lastupdated: "2020-09-10", + code: "", + source: "2", + classification: "C", + desc: "", }; return profile; diff --git a/src/myinfo/fake/profiles/mrJapaneseNoAddressObject.ts b/src/myinfo/fake/profiles/mrJapaneseNoAddressObject.ts index 87b63239..164e747f 100644 --- a/src/myinfo/fake/profiles/mrJapaneseNoAddressObject.ts +++ b/src/myinfo/fake/profiles/mrJapaneseNoAddressObject.ts @@ -14,56 +14,55 @@ export const mrJapaneseNoAddressObject: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.residentialstatus = { - "code": "", - "desc": "", - "source": "3", - "classification": "C", - "lastupdated": "", + code: "", + desc: "", + source: "3", + classification: "C", + lastupdated: "", }; profile.nationality = { - "code": MyInfoNationalityCitizenshipCode.JAPANESE, - "desc": MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.JAPANESE), - "source": "1", - "classification": "C", - "lastupdated": "2019-09-18", + code: MyInfoNationalityCitizenshipCode.JAPANESE, + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.JAPANESE), + source: "1", + classification: "C", + lastupdated: "2019-09-18", }; profile.birthcountry = { - "code": MyInfoCountryPlaceCode.JAPAN, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.JAPAN), - "source": "1", - "classification": "C", - "lastupdated": "2019-09-18", - + code: MyInfoCountryPlaceCode.JAPAN, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.JAPAN), + source: "1", + classification: "C", + lastupdated: "2019-09-18", }; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; profile.regadd = undefined; profile.marital = { - "lastupdated": "2020-09-10", - "code": null, - "source": "2", - "classification": "C", - "desc": null, + lastupdated: "2020-09-10", + code: null, + source: "2", + classification: "C", + desc: null, }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", }; profile.dialect = { - "lastupdated": "2020-09-10", - "code": "", - "source": "2", - "classification": "C", - "desc": "", + lastupdated: "2020-09-10", + code: "", + source: "2", + classification: "C", + desc: "", }; return profile; diff --git a/src/myinfo/fake/profiles/mrMYDadJobless.ts b/src/myinfo/fake/profiles/mrMYDadJobless.ts index 3b9c6a79..5fcd2a98 100644 --- a/src/myinfo/fake/profiles/mrMYDadJobless.ts +++ b/src/myinfo/fake/profiles/mrMYDadJobless.ts @@ -8,16 +8,15 @@ const name = ProfileArchetype.MR_MY_DAD_JOBLESS; export const mrMYDadJobless: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; const profile = mrMYDaddyPerfect.generate(profileName); profile.occupation = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", }; return profile; diff --git a/src/myinfo/fake/profiles/mrMYDaddyPerfect.ts b/src/myinfo/fake/profiles/mrMYDaddyPerfect.ts index 8495af61..a976c8f7 100644 --- a/src/myinfo/fake/profiles/mrMYDaddyPerfect.ts +++ b/src/myinfo/fake/profiles/mrMYDaddyPerfect.ts @@ -20,25 +20,25 @@ export const mrMYDaddyPerfect: FakeProfile = { profile.residentialstatus.code = ""; profile.residentialstatus.desc = ""; profile.marital = { - "lastupdated": "2020-09-10", - "code": null, - "source": "2", - "classification": "C", - "desc": null, + lastupdated: "2020-09-10", + code: null, + source: "2", + classification: "C", + desc: null, }; profile.marriagedate = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", }; profile.dialect = { - "lastupdated": "2020-09-10", - "code": "", - "source": "2", - "classification": "C", - "desc": "", + lastupdated: "2020-09-10", + code: "", + source: "2", + classification: "C", + desc: "", }; return profile; diff --git a/src/myinfo/fake/profiles/mrPRDaddyOneChildAndExpiredPassport.ts b/src/myinfo/fake/profiles/mrPRDaddyOneChildAndExpiredPassport.ts index 346724e3..517f36d0 100644 --- a/src/myinfo/fake/profiles/mrPRDaddyOneChildAndExpiredPassport.ts +++ b/src/myinfo/fake/profiles/mrPRDaddyOneChildAndExpiredPassport.ts @@ -19,16 +19,16 @@ export const mrPRDaddyOneChildAndExpiredPassport: FakeProfile = { profile.childrenbirthrecords = [ChildrenRecords.childYoungest]; profile.passportnumber = { - "lastupdated": "2018-05-10", - "source": "1", - "classification": "C", - "value": "L3280034", + lastupdated: "2018-05-10", + source: "1", + classification: "C", + value: "L3280034", }; profile.passportexpirydate = { - "lastupdated": "2018-05-10", - "source": "1", - "classification": "C", - "value": "2011-09-10", + lastupdated: "2018-05-10", + source: "1", + classification: "C", + value: "2011-09-10", }; return profile; }, diff --git a/src/myinfo/fake/profiles/mrPRDaddyPerfect.ts b/src/myinfo/fake/profiles/mrPRDaddyPerfect.ts index 53712e44..bea27740 100644 --- a/src/myinfo/fake/profiles/mrPRDaddyPerfect.ts +++ b/src/myinfo/fake/profiles/mrPRDaddyPerfect.ts @@ -1,7 +1,12 @@ import * as _ from "lodash"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; -import { preschoolEligibleChild2_K2, preschoolEligibleChild2_N2, preschoolEligibleChild2_PG, preschoolIneligibleChild2 } from "./childbirthRecords"; +import { + preschoolEligibleChild2_K2, + preschoolEligibleChild2_N2, + preschoolEligibleChild2_PG, + preschoolIneligibleChild2, +} from "./childbirthRecords"; import { MyInfoNationalityCitizenshipCode, MyInfoResidentialCode } from "../../domain"; const id = "S2599302J"; diff --git a/src/myinfo/fake/profiles/mrPRNoLocalAddress.ts b/src/myinfo/fake/profiles/mrPRNoLocalAddress.ts index f5a69d82..625771bb 100644 --- a/src/myinfo/fake/profiles/mrPRNoLocalAddress.ts +++ b/src/myinfo/fake/profiles/mrPRNoLocalAddress.ts @@ -17,18 +17,18 @@ export const mrPRNoLocalAddress: FakeProfile = { profile.residentialstatus.code = MyInfoResidentialCode.PR; profile.residentialstatus.desc = MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.PR); profile.regadd = { - "type": "UNFORMATTED", - "line1": { "value": "96 GUILD STREET" }, - "line2": { "value": "LONDON SE16 1BE" }, - "classification": "C", - "source": "1", - "lastupdated": "2018-05-10", + type: "UNFORMATTED", + line1: { value: "96 GUILD STREET" }, + line2: { value: "LONDON SE16 1BE" }, + classification: "C", + source: "1", + lastupdated: "2018-05-10", }; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; return profile; diff --git a/src/myinfo/fake/profiles/mrSGDaddyManyChildren.ts b/src/myinfo/fake/profiles/mrSGDaddyManyChildren.ts index 9dba0a79..80196750 100644 --- a/src/myinfo/fake/profiles/mrSGDaddyManyChildren.ts +++ b/src/myinfo/fake/profiles/mrSGDaddyManyChildren.ts @@ -3,7 +3,6 @@ import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { ChildrenRecords } from "./childbirthRecords"; - const id = "T2446959F"; const name = ProfileArchetype.MR_SG_DADDY_MANY_CHILDREN; diff --git a/src/myinfo/fake/profiles/mrSGDaddyMissingFields.ts b/src/myinfo/fake/profiles/mrSGDaddyMissingFields.ts index acdb5b55..a5b7545b 100644 --- a/src/myinfo/fake/profiles/mrSGDaddyMissingFields.ts +++ b/src/myinfo/fake/profiles/mrSGDaddyMissingFields.ts @@ -3,7 +3,6 @@ import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { unavailableField } from "./common"; - const id = "S8779834H"; const name = ProfileArchetype.MR_SG_DADDY_MISSING_FIELDS; @@ -22,7 +21,7 @@ export const mrSGDaddyMissingFields: FakeProfile = { profile.homeno = unavailableField; profile.marriagecertno = unavailableField; profile.countryofmarriage = unavailableField; - if (!!profile.childrenbirthrecords) { + if (profile.childrenbirthrecords) { profile.childrenbirthrecords = profile.childrenbirthrecords.slice(0, 1); } profile.edulevel = unavailableField; diff --git a/src/myinfo/fake/profiles/mrSGDaddyMissingUneditableFields.ts b/src/myinfo/fake/profiles/mrSGDaddyMissingUneditableFields.ts index 825a7862..38d2218a 100644 --- a/src/myinfo/fake/profiles/mrSGDaddyMissingUneditableFields.ts +++ b/src/myinfo/fake/profiles/mrSGDaddyMissingUneditableFields.ts @@ -3,7 +3,6 @@ import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { unavailableField } from "./common"; - const id = "S8974352D"; const name = ProfileArchetype.MR_SG_DADDY_MISSING_UNEDITABLE_FIELDS; diff --git a/src/myinfo/fake/profiles/mrSGDaddyPerfect.ts b/src/myinfo/fake/profiles/mrSGDaddyPerfect.ts index a9a20438..6f2217a6 100644 --- a/src/myinfo/fake/profiles/mrSGDaddyPerfect.ts +++ b/src/myinfo/fake/profiles/mrSGDaddyPerfect.ts @@ -1,8 +1,20 @@ +/* eslint-disable max-lines-per-function */ import * as _ from "lodash"; -import { FakeProfile, ProfileArchetype } from "./fake-profile"; -import { preschoolEligibleChild2_IC, preschoolEligibleChild2_K1 } from "./childbirthRecords"; +import { + MyInfoCountryPlaceCode, + MyInfoDialectCode, + MyInfoLifeStatusCode, + MyInfoMaritalStatusCode, + MyInfoMerdekaGenerationMessageCode, + MyInfoNationalityCitizenshipCode, + MyInfoPioneerGenerationMessageCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; import { aliasName } from "../profiles/common"; -import { MyInfoCountryPlaceCode, MyInfoDialectCode, MyInfoLifeStatusCode, MyInfoMaritalStatusCode, MyInfoMerdekaGenerationMessageCode, MyInfoNationalityCitizenshipCode, MyInfoPioneerGenerationMessageCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { preschoolEligibleChild2_IC, preschoolEligibleChild2_K1 } from "./childbirthRecords"; +import { FakeProfile, ProfileArchetype } from "./fake-profile"; const id = "S8399420G"; const name = ProfileArchetype.MR_SG_DADDY_PERFECT; @@ -10,377 +22,378 @@ const name = ProfileArchetype.MR_SG_DADDY_PERFECT; export const mrSGDaddyPerfect: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; return { - "edulevel": { - "lastupdated": "2020-09-10", - "code": null, - "desc": null, - "source": "2", - "classification": "C", + edulevel: { + lastupdated: "2020-09-10", + code: null, + desc: null, + source: "2", + classification: "C", }, - "dialect": { - "lastupdated": "2018-06-01", - "code": MyInfoDialectCode.HOKKIEN, - "desc": MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), - "source": "1", - "classification": "C", + dialect: { + lastupdated: "2018-06-01", + code: MyInfoDialectCode.HOKKIEN, + desc: MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), + source: "1", + classification: "C", }, - "occupation": { - "lastupdated": "2020-09-10", - "value": null, - "source": "2", - "classification": "C", + occupation: { + lastupdated: "2020-09-10", + value: null, + source: "2", + classification: "C", }, - "regadd": { - "country": { - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + regadd: { + country: { + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), }, - "unit": { - "value": "22", + unit: { + value: "22", }, - "street": { - "value": "TOA PAYOH LORONG 1", + street: { + value: "TOA PAYOH LORONG 1", }, - "lastupdated": "2018-05-10", - "block": { - "value": "123", + lastupdated: "2018-05-10", + block: { + value: "123", }, - "postal": { - "value": "310123", + postal: { + value: "310123", }, - "source": "1", - "classification": "C", - "floor": { - "value": "12", + source: "1", + classification: "C", + floor: { + value: "12", }, - "type": "SG", - "building": { - "value": null, + type: "SG", + building: { + value: null, }, }, - "mobileno": { - "lastupdated": "2019-04-03", - "source": "4", - "classification": "C", - "areacode": { - "value": "65", + mobileno: { + lastupdated: "2019-04-03", + source: "4", + classification: "C", + areacode: { + value: "65", }, - "prefix": { - "value": "+", + prefix: { + value: "+", }, - "nbr": { - "value": "88158701", + nbr: { + value: "88158701", }, }, - "passportexpirydate": { - "lastupdated": "2021-01-01", - "source": "1", - "classification": "C", - "value": "2030-09-10", + passportexpirydate: { + lastupdated: "2021-01-01", + source: "1", + classification: "C", + value: "2030-09-10", }, - "divorcedate": { - "lastupdated": null, - "source": "1", - "classification": "C", - "value": null, + divorcedate: { + lastupdated: null, + source: "1", + classification: "C", + value: null, }, - "marriagecertno": { - "lastupdated": "2018-05-10", - "source": "1", - "classification": "C", - "value": "M525997", + marriagecertno: { + lastupdated: "2018-05-10", + source: "1", + classification: "C", + value: "M525997", }, - "merdekagen": { - "eligibility": { - "value": false, + merdekagen: { + eligibility: { + value: false, }, - "lastupdated": "2019-04-01", - "quantum": { - "value": 200, + lastupdated: "2019-04-01", + quantum: { + value: 200, }, - "source": "1", - "classification": "C", - "message": { - "code": MyInfoMerdekaGenerationMessageCode.ALL_OK, - "desc": MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), + source: "1", + classification: "C", + message: { + code: MyInfoMerdekaGenerationMessageCode.ALL_OK, + desc: MyInfoMerdekaGenerationMessageCode.fn.toEnumDesc(MyInfoMerdekaGenerationMessageCode.ALL_OK), }, }, - "pioneergen": { - "eligibility": { - "value": false, + pioneergen: { + eligibility: { + value: false, }, - "lastupdated": "2021-01-15", - "quantum": { - "value": "0.00", + lastupdated: "2021-01-15", + quantum: { + value: "0.00", }, - "source": "1", - "classification": "C", - "message": { - "code": MyInfoPioneerGenerationMessageCode.NON_PG, - "desc": MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.NON_PG), + source: "1", + classification: "C", + message: { + code: MyInfoPioneerGenerationMessageCode.NON_PG, + desc: MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.NON_PG), }, }, - "gstvoucher": { - "gstregular": { - "value": 300, + gstvoucher: { + gstregular: { + value: 300, }, - "year": { - "value": "2018", + year: { + value: "2018", }, - "exclusion": { - "value": false, + exclusion: { + value: false, }, - "gstmedisave": { - "value": 250, + gstmedisave: { + value: 250, }, - "lastupdated": "2019-04-01", - "gstspecial": { - "value": 300, + lastupdated: "2019-04-01", + gstspecial: { + value: 300, }, - "source": "1", - "classification": "C", - "signup": { - "value": false, + source: "1", + classification: "C", + signup: { + value: false, }, }, - "email": { - "lastupdated": "2019-04-03", - "source": "4", - "classification": "C", - "value": "gt.govandi@gmail.com", + email: { + lastupdated: "2019-04-03", + source: "4", + classification: "C", + value: "gt.govandi@gmail.com", }, - "birthcountry": { - "lastupdated": "2018-06-01", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + birthcountry: { + lastupdated: "2018-06-01", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }, - "race": { - "lastupdated": "2018-06-01", - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), - "source": "1", - "classification": "C", + race: { + lastupdated: "2018-06-01", + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + source: "1", + classification: "C", }, - "silversupport": { - "eligibility": { - "value": true, + silversupport: { + eligibility: { + value: true, }, - "lastupdated": "2019-04-01", - "amount": { - "value": 300, + lastupdated: "2019-04-01", + amount: { + value: 300, }, - "source": "1", - "classification": "C", - "year": { - "value": "2019", + source: "1", + classification: "C", + year: { + value: "2019", }, }, - "countryofmarriage": { - "lastupdated": "2018-05-10", - "code": MyInfoCountryPlaceCode.SINGAPORE, - "desc": MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), - "source": "1", - "classification": "C", + countryofmarriage: { + lastupdated: "2018-05-10", + code: MyInfoCountryPlaceCode.SINGAPORE, + desc: MyInfoCountryPlaceCode.fn.toEnumDesc(MyInfoCountryPlaceCode.SINGAPORE), + source: "1", + classification: "C", }, - "sex": { - "lastupdated": "2018-06-01", - "code": MyInfoSexCode.MALE, - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), - "source": "1", - "classification": "C", + sex: { + lastupdated: "2018-06-01", + code: MyInfoSexCode.MALE, + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), + source: "1", + classification: "C", }, - "marriagedate": { - "lastupdated": "1993-10-22", - "source": "1", - "classification": "C", - "value": "1993-10-22", + marriagedate: { + lastupdated: "1993-10-22", + source: "1", + classification: "C", + value: "1993-10-22", }, - "residentialstatus": { - "lastupdated": "2018-06-01", - "code": MyInfoResidentialCode.CITIZEN, - "desc": MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), - "source": "1", - "classification": "C", + residentialstatus: { + lastupdated: "2018-06-01", + code: MyInfoResidentialCode.CITIZEN, + desc: MyInfoResidentialCode.fn.toEnumDesc(MyInfoResidentialCode.CITIZEN), + source: "1", + classification: "C", }, - "passportnumber": { - "lastupdated": "2021-01-01", - "source": "1", - "classification": "C", - "value": "L3280033", + passportnumber: { + lastupdated: "2021-01-01", + source: "1", + classification: "C", + value: "L3280033", }, - "marital": { - "lastupdated": "2018-05-10", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", + marital: { + lastupdated: "2018-05-10", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", }, - "aliasname": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": aliasName.JASCKSON_LIM_YONG_XIANG, + aliasname: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: aliasName.JASCKSON_LIM_YONG_XIANG, }, - "childrenbirthrecords": [ + childrenbirthrecords: [ { - "dialect": { - "code": MyInfoDialectCode.HOKKIEN, - "desc": MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), + dialect: { + code: MyInfoDialectCode.HOKKIEN, + desc: MyInfoDialectCode.fn.toEnumDesc(MyInfoDialectCode.HOKKIEN), }, - "race": { - "code": MyInfoRaceCode.CHINESE, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), + race: { + code: MyInfoRaceCode.CHINESE, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.CHINESE), }, - "lifestatus": { - "code": MyInfoLifeStatusCode.ALIVE, - "desc": MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), }, - "tob": { - "value": "0901", + tob: { + value: "0901", }, - "sex": { - "code": MyInfoSexCode.FEMALE, - "desc": MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), + sex: { + code: MyInfoSexCode.FEMALE, + desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - "source": "1", - "classification": "C", - "birthcertno": { - "value": "S5562882C", + source: "1", + classification: "C", + birthcertno: { + value: "S5562882C", }, - "hanyupinyinname": { - "value": "Cheng Pei Ni", + hanyupinyinname: { + value: "Cheng Pei Ni", }, - "hanyupinyinaliasname": { - "value": null, + hanyupinyinaliasname: { + value: null, }, - "marriedname": { - "value": null, + marriedname: { + value: null, }, - "aliasname": { - "value": null, + aliasname: { + value: null, }, - "dob": { - "value": "2011-09-10", + dob: { + value: "2011-09-10", }, - "name": { - "value": "Jo Lee Pei Ni", + name: { + value: "Jo Lee Pei Ni", }, - "lastupdated": "2018-05-16", - "secondaryrace": { - "code": null, - "desc": null, + lastupdated: "2018-05-16", + secondaryrace: { + code: null, + desc: null, }, }, preschoolEligibleChild2_IC, preschoolEligibleChild2_K1, ], - "sponsoredchildrenrecords": [], - "nationality": { - "lastupdated": "2018-06-01", - "code": MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, - "desc": MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN), - "source": "1", - "classification": "C", + sponsoredchildrenrecords: [], + nationality: { + lastupdated: "2018-06-01", + code: MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc( + MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + ), + source: "1", + classification: "C", }, - "dob": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1975-10-06", + dob: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1975-10-06", }, - "name": { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": profileName, + name: { + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: profileName, }, - "secondaryrace": { - "lastupdated": "2018-06-01", - "code": MyInfoRaceCode.GERMAN, - "desc": MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), - "source": "1", - "classification": "C", + secondaryrace: { + lastupdated: "2018-06-01", + code: MyInfoRaceCode.GERMAN, + desc: MyInfoRaceCode.fn.toEnumDesc(MyInfoRaceCode.GERMAN), + source: "1", + classification: "C", }, - "hdbtype": { - "lastupdated": "2020-08-26", - "code": null, - "desc": null, - "source": "1", - "classification": "C", + hdbtype: { + lastupdated: "2020-08-26", + code: null, + desc: null, + source: "1", + classification: "C", }, - "housingtype": { - "lastupdated": "2020-08-26", - "code": null, - "desc": null, - "source": "1", - "classification": "C", + housingtype: { + lastupdated: "2020-08-26", + code: null, + desc: null, + source: "1", + classification: "C", }, - "drivinglicence": { - "revocation": { - "startdate": { - "value": null, + drivinglicence: { + revocation: { + startdate: { + value: null, }, - "enddate": { - "value": null, + enddate: { + value: null, }, }, - "totaldemeritpoints": { - "value": 0, + totaldemeritpoints: { + value: 0, }, - "disqualification": { - "startdate": { - "value": null, + disqualification: { + startdate: { + value: null, }, - "enddate": { - "value": null, + enddate: { + value: null, }, }, - "qdl": { - "expirydate": { - "value": null, + qdl: { + expirydate: { + value: null, }, - "validity": { - "code": null, - "desc": null, + validity: { + code: null, + desc: null, }, - "classes": [], + classes: [], }, - "lastupdated": "2020-08-26", - "pdl": { - "expirydate": { - "value": null, + lastupdated: "2020-08-26", + pdl: { + expirydate: { + value: null, }, - "validity": { - "code": null, - "desc": null, + validity: { + code: null, + desc: null, }, - "classes": [], + classes: [], }, - "source": "1", - "classification": "C", - "comstatus": { - "code": null, - "desc": null, + source: "1", + classification: "C", + comstatus: { + code: null, + desc: null, }, - "photocardserialno": { - "value": null, + photocardserialno: { + value: null, }, - "suspension": { - "startdate": { - "value": null, + suspension: { + startdate: { + value: null, }, - "enddate": { - "value": null, + enddate: { + value: null, }, }, - } + }, }; }, }; diff --git a/src/myinfo/fake/profiles/mrSGDaddyTwoDeceasedChild.ts b/src/myinfo/fake/profiles/mrSGDaddyTwoDeceasedChild.ts index 3c025443..68259db5 100644 --- a/src/myinfo/fake/profiles/mrSGDaddyTwoDeceasedChild.ts +++ b/src/myinfo/fake/profiles/mrSGDaddyTwoDeceasedChild.ts @@ -13,7 +13,11 @@ export const mrSGDaddyTwoDeceasedChild: FakeProfile = { profileName = _.isEmpty(profileName) ? name : profileName; const profile = mrSGDaddyPerfect.generate(profileName); - profile.childrenbirthrecords = [ChildrenRecords.child2MonthsOld, ChildrenRecords.childDeceased1, ChildrenRecords.childDeceased2]; + profile.childrenbirthrecords = [ + ChildrenRecords.child2MonthsOld, + ChildrenRecords.childDeceased1, + ChildrenRecords.childDeceased2, + ]; return profile; }, diff --git a/src/myinfo/fake/profiles/mrSGFreshGradYoungParent.ts b/src/myinfo/fake/profiles/mrSGFreshGradYoungParent.ts index f5873705..35f962a2 100644 --- a/src/myinfo/fake/profiles/mrSGFreshGradYoungParent.ts +++ b/src/myinfo/fake/profiles/mrSGFreshGradYoungParent.ts @@ -4,7 +4,6 @@ import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { ChildrenRecords } from "./childbirthRecords"; import { MyInfoMaritalStatusCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; - const id = "T2446959F"; const name = ProfileArchetype.MR_SG_FRESH_GRAD_YOUNG_PARENT; /** diff --git a/src/myinfo/fake/profiles/mrSGFromBedok.ts b/src/myinfo/fake/profiles/mrSGFromBedok.ts index 234889f1..db15f140 100644 --- a/src/myinfo/fake/profiles/mrSGFromBedok.ts +++ b/src/myinfo/fake/profiles/mrSGFromBedok.ts @@ -16,13 +16,13 @@ export const mrSGFromBedok: FakeProfile = { ...profile.regadd, block: { value: "634" }, street: { value: "BEDOK STREET" }, - postal: { value: "458634" } + postal: { value: "458634" }, }; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; return profile; diff --git a/src/myinfo/fake/profiles/mrSGNoAddress.ts b/src/myinfo/fake/profiles/mrSGNoAddress.ts index 4d00cfee..1c39eabd 100644 --- a/src/myinfo/fake/profiles/mrSGNoAddress.ts +++ b/src/myinfo/fake/profiles/mrSGNoAddress.ts @@ -14,10 +14,10 @@ export const mrSGNoAddress: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.regadd = undefined; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; return profile; diff --git a/src/myinfo/fake/profiles/mrSGNoLocalAddress .ts b/src/myinfo/fake/profiles/mrSGNoLocalAddress .ts index b6bbf509..f69b893f 100644 --- a/src/myinfo/fake/profiles/mrSGNoLocalAddress .ts +++ b/src/myinfo/fake/profiles/mrSGNoLocalAddress .ts @@ -13,18 +13,18 @@ export const mrSGNoLocalAddress: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.regadd = { - "type": "UNFORMATTED", - "line1": { "value": "96 GUILD STREET" }, - "line2": { "value": "LONDON SE16 1BE" }, - "classification": "C", - "source": "1", - "lastupdated": "2018-05-10", + type: "UNFORMATTED", + line1: { value: "96 GUILD STREET" }, + line2: { value: "LONDON SE16 1BE" }, + classification: "C", + source: "1", + lastupdated: "2018-05-10", }; profile.dob = { - "lastupdated": "2018-06-01", - "source": "1", - "classification": "C", - "value": "1983-10-06", + lastupdated: "2018-06-01", + source: "1", + classification: "C", + value: "1983-10-06", }; return profile; diff --git a/src/myinfo/fake/profiles/mrSGPreschoolRegister.ts b/src/myinfo/fake/profiles/mrSGPreschoolRegister.ts index 088e14d2..55183239 100644 --- a/src/myinfo/fake/profiles/mrSGPreschoolRegister.ts +++ b/src/myinfo/fake/profiles/mrSGPreschoolRegister.ts @@ -64,5 +64,10 @@ const c6 = { } as MyInfoComponents.Schemas.Childrenbirthrecords; export const ChildrenRecords = { - c1, c2, c3, c4, c5, c6, + c1, + c2, + c3, + c4, + c5, + c6, }; diff --git a/src/myinfo/fake/profiles/mrSGUncleMgNeedAddress.ts b/src/myinfo/fake/profiles/mrSGUncleMgNeedAddress.ts index a39b32f7..719faf04 100644 --- a/src/myinfo/fake/profiles/mrSGUncleMgNeedAddress.ts +++ b/src/myinfo/fake/profiles/mrSGUncleMgNeedAddress.ts @@ -9,7 +9,6 @@ const name = ProfileArchetype.MR_SG_UNCLE_MG_NEED_ADDR_UPDATE; export const mrSGUncleMgNeedAddress: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; diff --git a/src/myinfo/fake/profiles/mrSGUncleNonBenefits.ts b/src/myinfo/fake/profiles/mrSGUncleNonBenefits.ts index 897147fe..bf4c5125 100644 --- a/src/myinfo/fake/profiles/mrSGUncleNonBenefits.ts +++ b/src/myinfo/fake/profiles/mrSGUncleNonBenefits.ts @@ -29,17 +29,17 @@ export const mrSGUncleNonBenefits: FakeProfile = { }; profile.silversupport = { - "eligibility": { - "value": false, + eligibility: { + value: false, }, - "lastupdated": "2019-04-01", - "amount": { - "value": 0, + lastupdated: "2019-04-01", + amount: { + value: 0, }, - "source": "1", - "classification": "C", - "year": { - "value": "2019", + source: "1", + classification: "C", + year: { + value: "2019", }, }; return profile; diff --git a/src/myinfo/fake/profiles/mrSGUncleNonPg.ts b/src/myinfo/fake/profiles/mrSGUncleNonPg.ts index 89dd0361..d6b8ebe0 100644 --- a/src/myinfo/fake/profiles/mrSGUncleNonPg.ts +++ b/src/myinfo/fake/profiles/mrSGUncleNonPg.ts @@ -14,7 +14,9 @@ export const mrSGUncleNonPg: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.NON_PG; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.NON_PG); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.NON_PG, + ); profile.pioneergen.quantum.value = "0.00"; profile.dob = { lastupdated: "2021-01-01", diff --git a/src/myinfo/fake/profiles/mrSGUnclePgAllOk.ts b/src/myinfo/fake/profiles/mrSGUnclePgAllOk.ts index 6e765657..bf684d21 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgAllOk.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgAllOk.ts @@ -14,7 +14,9 @@ export const mrSGUnclePgAllOk: FakeProfile = { const profile = mrSGDaddyPerfect.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.ALL_OK; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.ALL_OK); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.ALL_OK, + ); profile.dob = { lastupdated: "2021-01-01", source: "1", diff --git a/src/myinfo/fake/profiles/mrSGUnclePgCallReceive.ts b/src/myinfo/fake/profiles/mrSGUnclePgCallReceive.ts index ffd41535..6928e9a5 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgCallReceive.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgCallReceive.ts @@ -14,7 +14,9 @@ export const mrSGUnclePgCallReceive: FakeProfile = { const profile = mrSGUnclePgAllOk.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE, + ); return profile; }, diff --git a/src/myinfo/fake/profiles/mrSGUnclePgNeedAddress.ts b/src/myinfo/fake/profiles/mrSGUnclePgNeedAddress.ts index 60c7aab2..4fb01035 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgNeedAddress.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgNeedAddress.ts @@ -14,7 +14,9 @@ export const mrSGUnclePgNeedAddress: FakeProfile = { const profile = mrSGUnclePgAllOk.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.CALL_TO_RECEIVE, + ); return profile; }, diff --git a/src/myinfo/fake/profiles/mrSGUnclePgNeedMedisave.ts b/src/myinfo/fake/profiles/mrSGUnclePgNeedMedisave.ts index d303f666..f0329dd0 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgNeedMedisave.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgNeedMedisave.ts @@ -14,7 +14,9 @@ export const mrSGUnclePgNeedMedisave: FakeProfile = { const profile = mrSGUnclePgAllOk.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.NEED_MEDISAVE_TOPUP; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.NEED_MEDISAVE_TOPUP); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.NEED_MEDISAVE_TOPUP, + ); return profile; }, diff --git a/src/myinfo/fake/profiles/mrSGUnclePgNilStatus.ts b/src/myinfo/fake/profiles/mrSGUnclePgNilStatus.ts index 22e2891e..2a4f5243 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgNilStatus.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgNilStatus.ts @@ -9,13 +9,14 @@ const name = ProfileArchetype.MR_SG_UNCLE_PG_NIL_STATUS; export const mrSGUnclePgNilStatus: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; const profile = mrSGUnclePgAllOk.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.NIL_STATUS; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.NIL_STATUS); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.NIL_STATUS, + ); profile.dob = { lastupdated: "2021-01-01", source: "1", diff --git a/src/myinfo/fake/profiles/mrSGUnclePgOptOut.ts b/src/myinfo/fake/profiles/mrSGUnclePgOptOut.ts index b9a393d8..f0b37bbb 100644 --- a/src/myinfo/fake/profiles/mrSGUnclePgOptOut.ts +++ b/src/myinfo/fake/profiles/mrSGUnclePgOptOut.ts @@ -9,13 +9,14 @@ const name = ProfileArchetype.MR_SG_UNCLE_PG_OPT_OUT; export const mrSGUnclePgOptOut: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; const profile = mrSGUncleNonPg.generate(profileName); profile.pioneergen.message.code = MyInfoPioneerGenerationMessageCode.OPT_OUT; - profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc(MyInfoPioneerGenerationMessageCode.OPT_OUT); + profile.pioneergen.message.desc = MyInfoPioneerGenerationMessageCode.fn.toEnumDesc( + MyInfoPioneerGenerationMessageCode.OPT_OUT, + ); profile.dob = { lastupdated: "2021-01-01", source: "1", diff --git a/src/myinfo/fake/profiles/mrSGUncleRetiree.ts b/src/myinfo/fake/profiles/mrSGUncleRetiree.ts index dfcc8934..71fd1e92 100644 --- a/src/myinfo/fake/profiles/mrSGUncleRetiree.ts +++ b/src/myinfo/fake/profiles/mrSGUncleRetiree.ts @@ -2,7 +2,15 @@ import * as _ from "lodash"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { ChildrenRecords } from "./childbirthRecords"; -import { MyInfoComStatusCode, MyInfoDrivingLicenceValidityCode, MyInfoEduLevelCode, MyInfoHousingTypeCode, MyInfoMaritalStatusCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoComStatusCode, + MyInfoDrivingLicenceValidityCode, + MyInfoEduLevelCode, + MyInfoHousingTypeCode, + MyInfoMaritalStatusCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; const id = "S8399420G"; const name = ProfileArchetype.MR_SG_UNCLE_RETIREE; diff --git a/src/myinfo/fake/profiles/mrsMYMomJobless.ts b/src/myinfo/fake/profiles/mrsMYMomJobless.ts index 4d9f1b27..210bcb7b 100644 --- a/src/myinfo/fake/profiles/mrsMYMomJobless.ts +++ b/src/myinfo/fake/profiles/mrsMYMomJobless.ts @@ -14,10 +14,10 @@ export const mrsMYMomJobless: FakeProfile = { const profile = mrsMYMommyPerfect.generate(profileName); profile.occupation = { - "lastupdated": "2020-09-10", - "source": "2", - "classification": "C", - "value": "", + lastupdated: "2020-09-10", + source: "2", + classification: "C", + value: "", }; profile.childrenbirthrecords = _.values(ChildrenRecords); diff --git a/src/myinfo/fake/profiles/mrsMYMommyPerfect.ts b/src/myinfo/fake/profiles/mrsMYMommyPerfect.ts index 8a588b1f..df180cb6 100644 --- a/src/myinfo/fake/profiles/mrsMYMommyPerfect.ts +++ b/src/myinfo/fake/profiles/mrsMYMommyPerfect.ts @@ -2,7 +2,12 @@ import * as _ from "lodash"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; import { aliasName } from "../profiles/common"; -import { MyInfoCountryPlaceCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoSexCode } from "../../domain"; +import { + MyInfoCountryPlaceCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoSexCode, +} from "../../domain"; const id = "F5994458N"; const name = ProfileArchetype.MRS_MY_MOMMY_PERFECT; @@ -30,34 +35,33 @@ export const mrsMYMommyPerfect: FakeProfile = { profile.residentialstatus.code = ""; profile.residentialstatus.desc = ""; - profile.marriagecertno= { - "lastupdated": "2018-05-10", - "source": "1", - "classification": "C", - "value": "PZDarmzK2vPZROwDbTbT7mS3b59xRABwRN9uRM2Y3qBgdQxcNi", - }, - - profile.marital = { - "lastupdated": "2022-02-25", - "code": MyInfoMaritalStatusCode.MARRIED, - "desc": MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), - "source": "1", - "classification": "C", - }; + (profile.marriagecertno = { + lastupdated: "2018-05-10", + source: "1", + classification: "C", + value: "PZDarmzK2vPZROwDbTbT7mS3b59xRABwRN9uRM2Y3qBgdQxcNi", + }), + (profile.marital = { + lastupdated: "2022-02-25", + code: MyInfoMaritalStatusCode.MARRIED, + desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), + source: "1", + classification: "C", + }); profile.marriagedate = { - "lastupdated": "1993-10-22", - "source": "1", - "classification": "C", - "value": "1993-10-22", + lastupdated: "1993-10-22", + source: "1", + classification: "C", + value: "1993-10-22", }; profile.dialect = { - "lastupdated": "2020-09-10", - "code": "", - "source": "2", - "classification": "C", - "desc": "", + lastupdated: "2020-09-10", + code: "", + source: "2", + classification: "C", + desc: "", }; return profile; diff --git a/src/myinfo/fake/profiles/mrsPRHdbOwnerWorkingAdult.ts b/src/myinfo/fake/profiles/mrsPRHdbOwnerWorkingAdult.ts index 735ca242..14e17230 100644 --- a/src/myinfo/fake/profiles/mrsPRHdbOwnerWorkingAdult.ts +++ b/src/myinfo/fake/profiles/mrsPRHdbOwnerWorkingAdult.ts @@ -1,9 +1,17 @@ import * as _ from "lodash"; +import { + MyInfoCountryPlaceCode, + MyInfoDrivingLicenceValidityCode, + MyInfoHDBTypeCode, + MyInfoMaritalStatusCode, + MyInfoNationalityCitizenshipCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../domain"; +import { aliasName } from "../profiles/common"; +import { ChildrenRecords } from "./childbirthRecords"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; -import { ChildrenRecords } from "./childbirthRecords"; -import { aliasName } from "../profiles/common"; -import { MyInfoCountryPlaceCode, MyInfoDrivingLicenceValidityCode, MyInfoHDBTypeCode, MyInfoMaritalStatusCode, MyInfoNationalityCitizenshipCode, MyInfoResidentialCode, MyInfoSexCode } from "../../domain"; const id = "T2446959F"; const name = ProfileArchetype.MRS_PR_HDB_OWNER_WORKING_ADULT_MID_CAREER_PMETS; @@ -22,7 +30,6 @@ const name = ProfileArchetype.MRS_PR_HDB_OWNER_WORKING_ADULT_MID_CAREER_PMETS; export const mrsPRHdbOwnerWorkingAdult: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; @@ -74,7 +81,11 @@ export const mrsPRHdbOwnerWorkingAdult: FakeProfile = { code: MyInfoMaritalStatusCode.MARRIED, desc: MyInfoMaritalStatusCode.fn.toEnumDesc(MyInfoMaritalStatusCode.MARRIED), }; - profile.childrenbirthrecords = [ChildrenRecords.child1MonthOld, ChildrenRecords.child6YearsOld, ChildrenRecords.childMiddle1]; + profile.childrenbirthrecords = [ + ChildrenRecords.child1MonthOld, + ChildrenRecords.child6YearsOld, + ChildrenRecords.childMiddle1, + ]; profile.hdbtype = { lastupdated: "2020-01-01", source: "1", @@ -100,8 +111,8 @@ export const mrsPRHdbOwnerWorkingAdult: FakeProfile = { }, }, }; - profile.vehicles = - [{ + profile.vehicles = [ + { roadtaxexpirydate: { value: "2020-06-06", }, @@ -217,7 +228,8 @@ export const mrsPRHdbOwnerWorkingAdult: FakeProfile = { code: "1", desc: "LIVE", }, - }]; + }, + ]; return profile; }, }; diff --git a/src/myinfo/fake/profiles/mrsSGMommyPerfect.ts b/src/myinfo/fake/profiles/mrsSGMommyPerfect.ts index b551e07b..ec111aae 100644 --- a/src/myinfo/fake/profiles/mrsSGMommyPerfect.ts +++ b/src/myinfo/fake/profiles/mrsSGMommyPerfect.ts @@ -32,10 +32,7 @@ export const mrsSGMommyPerfect: FakeProfile = { value: "1988-10-16", }; - profile.childrenbirthrecords = [ - preschoolEligibleChild_K2, - preschoolEligibleChild2_N1, - ]; + profile.childrenbirthrecords = [preschoolEligibleChild_K2, preschoolEligibleChild2_N1]; return profile; }, diff --git a/src/myinfo/fake/profiles/msSGTeenager17.ts b/src/myinfo/fake/profiles/msSGTeenager17.ts index 3ab34e0f..e8b3d40a 100644 --- a/src/myinfo/fake/profiles/msSGTeenager17.ts +++ b/src/myinfo/fake/profiles/msSGTeenager17.ts @@ -1,8 +1,8 @@ import * as _ from "lodash"; +import { MyInfoSexCode } from "../../domain"; +import { aliasName } from "../profiles/common"; import { FakeProfile, ProfileArchetype } from "./fake-profile"; import { mrSGDaddyPerfect } from "./mrSGDaddyPerfect"; -import { aliasName } from "../profiles/common"; -import { MyInfoSexCode } from "../../domain"; const id = "T0834325F"; const name = ProfileArchetype.MS_SG_TEENAGER_17; @@ -10,7 +10,6 @@ const name = ProfileArchetype.MS_SG_TEENAGER_17; export const msSgTeenager17: FakeProfile = { id, name, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? name : profileName; diff --git a/src/myinfo/fake/profiles/sponsored-children/BaseProfile.ts b/src/myinfo/fake/profiles/sponsored-children/BaseProfile.ts index bfde6b85..e5021f90 100644 --- a/src/myinfo/fake/profiles/sponsored-children/BaseProfile.ts +++ b/src/myinfo/fake/profiles/sponsored-children/BaseProfile.ts @@ -1,14 +1,25 @@ +/* eslint-disable max-lines-per-function */ import * as _ from "lodash"; -import { FakeProfile } from "../fake-profile"; -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoDialectCode, MyInfoMaritalStatusCode, MyInfoMerdekaGenerationMessageCode, MyInfoNationalityCitizenshipCode, MyInfoPioneerGenerationMessageCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode } from "../../../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoDialectCode, + MyInfoMaritalStatusCode, + MyInfoMerdekaGenerationMessageCode, + MyInfoNationalityCitizenshipCode, + MyInfoPioneerGenerationMessageCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, +} from "../../../domain"; import { aliasName } from "../common"; +import { FakeProfile } from "../fake-profile"; const id = "S8399420G"; export const BaseProfile: FakeProfile = { id, name: null, - // tslint:disable-next-line: no-big-function generate: (profileName) => { profileName = _.isEmpty(profileName) ? "" : profileName; @@ -71,7 +82,9 @@ export const BaseProfile: FakeProfile = { nationality: { lastupdated: "2018-06-01", code: MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, - desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc(MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN), + desc: MyInfoNationalityCitizenshipCode.fn.toEnumDesc( + MyInfoNationalityCitizenshipCode.SINGAPORE_CITIZEN, + ), source: "1", classification: "C", }, diff --git a/src/myinfo/fake/profiles/sponsored-children/mrSGFatherNormalChildrenOnly.ts b/src/myinfo/fake/profiles/sponsored-children/mrSGFatherNormalChildrenOnly.ts index 75eebe5e..78741950 100644 --- a/src/myinfo/fake/profiles/sponsored-children/mrSGFatherNormalChildrenOnly.ts +++ b/src/myinfo/fake/profiles/sponsored-children/mrSGFatherNormalChildrenOnly.ts @@ -8,593 +8,593 @@ const id = "S9116045E"; const name = ProfileArchetype.MR_SG_FATHER_NORMAL_CHILDREN; const cpfContributions = [ { - "date": { - "value": "2016-12-01" + date: { + value: "2016-12-01", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2016-11" + month: { + value: "2016-11", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2016-12-12" + date: { + value: "2016-12-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2016-12", }, - "month": { - "value": "2016-12" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2016-12-21" + date: { + value: "2016-12-21", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2016-12", }, - "month": { - "value": "2016-12" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-01-01" + date: { + value: "2017-01-01", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2016-12" + month: { + value: "2016-12", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-01-12" + date: { + value: "2017-01-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-01", }, - "month": { - "value": "2017-01" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-01-21" + date: { + value: "2017-01-21", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-01", }, - "month": { - "value": "2017-01" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-02-01" + date: { + value: "2017-02-01", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-01" + month: { + value: "2017-01", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-02-12" + date: { + value: "2017-02-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-02", }, - "month": { - "value": "2017-02" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-02-21" + date: { + value: "2017-02-21", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-02", }, - "month": { - "value": "2017-02" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-03-01" + date: { + value: "2017-03-01", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-02" + month: { + value: "2017-02", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-03-12" + date: { + value: "2017-03-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-03", }, - "month": { - "value": "2017-03" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-03-21" + date: { + value: "2017-03-21", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-03" + month: { + value: "2017-03", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-04-01" + date: { + value: "2017-04-01", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-03", }, - "month": { - "value": "2017-03" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-04-12" + date: { + value: "2017-04-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-04", }, - "month": { - "value": "2017-04" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-04-21" + date: { + value: "2017-04-21", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-04" + month: { + value: "2017-04", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-05-01" + date: { + value: "2017-05-01", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-04", }, - "month": { - "value": "2017-04" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-05-12" + date: { + value: "2017-05-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-05", }, - "month": { - "value": "2017-05" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-05-21" + date: { + value: "2017-05-21", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-05" + month: { + value: "2017-05", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-06-01" + date: { + value: "2017-06-01", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-05", }, - "month": { - "value": "2017-05" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-06-12" + date: { + value: "2017-06-12", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-06", }, - "month": { - "value": "2017-06" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-06-21" + date: { + value: "2017-06-21", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-06" + month: { + value: "2017-06", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-07-01" + date: { + value: "2017-07-01", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-06", }, - "month": { - "value": "2017-06" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-07-12" + date: { + value: "2017-07-12", }, - "amount": { - "value": 500 + amount: { + value: 500, }, - "month": { - "value": "2017-07" + month: { + value: "2017-07", + }, + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-07-21" + date: { + value: "2017-07-21", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-07", }, - "month": { - "value": "2017-07" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-08-01" + date: { + value: "2017-08-01", + }, + amount: { + value: 500, }, - "amount": { - "value": 500 + month: { + value: "2017-07", }, - "month": { - "value": "2017-07" + employer: { + value: "Crystal Horse Invest Pte Ltd", }, - "employer": { - "value": "Crystal Horse Invest Pte Ltd" - } }, { - "date": { - "value": "2017-08-12" + date: { + value: "2017-08-12", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-08" + month: { + value: "2017-08", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-08-21" + date: { + value: "2017-08-21", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-08", }, - "month": { - "value": "2017-08" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-09-01" + date: { + value: "2017-09-01", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-08", }, - "month": { - "value": "2017-08" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-09-12" + date: { + value: "2017-09-12", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-09" + month: { + value: "2017-09", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-09-21" + date: { + value: "2017-09-21", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-09", }, - "month": { - "value": "2017-09" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-10-01" + date: { + value: "2017-10-01", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-09", }, - "month": { - "value": "2017-09" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-10-12" + date: { + value: "2017-10-12", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-10" + month: { + value: "2017-10", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-10-21" + date: { + value: "2017-10-21", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-10", }, - "month": { - "value": "2017-10" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-11-01" + date: { + value: "2017-11-01", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-10" + month: { + value: "2017-10", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-11-12" + date: { + value: "2017-11-12", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-11", }, - "month": { - "value": "2017-11" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-11-21" + date: { + value: "2017-11-21", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-11", }, - "month": { - "value": "2017-11" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-12-01" + date: { + value: "2017-12-01", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-11" + month: { + value: "2017-11", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-12-12" + date: { + value: "2017-12-12", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-12", }, - "month": { - "value": "2017-12" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2017-12-21" + date: { + value: "2017-12-21", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2017-12" + month: { + value: "2017-12", + }, + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2018-01-01" + date: { + value: "2018-01-01", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2017-12", }, - "month": { - "value": "2017-12" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2018-01-12" + date: { + value: "2018-01-12", + }, + amount: { + value: 750, }, - "amount": { - "value": 750 + month: { + value: "2018-01", }, - "month": { - "value": "2018-01" + employer: { + value: "Delta Marine Consultants PL", }, - "employer": { - "value": "Delta Marine Consultants PL" - } }, { - "date": { - "value": "2018-01-21" + date: { + value: "2018-01-21", }, - "amount": { - "value": 750 + amount: { + value: 750, }, - "month": { - "value": "2018-01" + month: { + value: "2018-01", }, - "employer": { - "value": "Delta Marine Consultants PL" - } - } + employer: { + value: "Delta Marine Consultants PL", + }, + }, ]; export const mrSGFatherNormalChildrenOnly: FakeProfile = { id, @@ -608,25 +608,25 @@ export const mrSGFatherNormalChildrenOnly: FakeProfile = { history: cpfContributions, classification: "C", source: "1", - lastupdated: `${new Date().toISOString().split('T')[0]}`, + lastupdated: `${new Date().toISOString().split("T")[0]}`, }; profile.cpfbalances = { ma: { value: 11470.71 }, oa: { value: 11470.71 }, sa: { value: 11470.71 }, ra: { value: 11470.71 }, - lastupdated: `${new Date().toISOString().split('T')[0]}`, + lastupdated: `${new Date().toISOString().split("T")[0]}`, classification: "C", source: "1", }; profile["noa-basic"] = { amount: { - value: 1234 + value: 1234, }, yearofassessment: { value: "2019", }, - lastupdated: `${new Date().toISOString().split('T')[0]}`, + lastupdated: `${new Date().toISOString().split("T")[0]}`, classification: "C", source: "1", }; diff --git a/src/myinfo/fake/profiles/sponsored-children/msSGMotherBothChildren.ts b/src/myinfo/fake/profiles/sponsored-children/msSGMotherBothChildren.ts index fd59f28e..f8430a3e 100644 --- a/src/myinfo/fake/profiles/sponsored-children/msSGMotherBothChildren.ts +++ b/src/myinfo/fake/profiles/sponsored-children/msSGMotherBothChildren.ts @@ -27,7 +27,7 @@ export const msSGMotherBothChildren: FakeProfile = { lastupdated: "2016-12-01", classification: "C", source: "1", - unavailable: true + unavailable: true, }; return profile; diff --git a/src/myinfo/fake/profiles/sponsored-children/normalChildren.ts b/src/myinfo/fake/profiles/sponsored-children/normalChildren.ts index 72f2b5cd..551b2b10 100644 --- a/src/myinfo/fake/profiles/sponsored-children/normalChildren.ts +++ b/src/myinfo/fake/profiles/sponsored-children/normalChildren.ts @@ -14,9 +14,12 @@ const childYoungest = { birthcertno: { value: "T9722304H" }, name: { value: "Tan Ke Xuan" }, dob: { value: formatDateToString() }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "1000" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const child1MonthOld = { @@ -26,9 +29,12 @@ const child1MonthOld = { birthcertno: { value: "T4657515B" }, name: { value: "Tan Ke Yu" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(1)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "1200" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const child2MonthsOld = { @@ -38,9 +44,12 @@ const child2MonthsOld = { birthcertno: { value: "T7041892J" }, name: { value: "Tan Keh Guan" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "0300" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childMiddle1 = { @@ -50,9 +59,12 @@ const childMiddle1 = { birthcertno: { value: "T2746216I" }, name: { value: "Tan Chiu" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "0848" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childMiddle2 = { @@ -62,9 +74,12 @@ const childMiddle2 = { birthcertno: { value: "T9702737J" }, name: { value: "Tan Chua" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "0330" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childMiddle3 = { @@ -74,9 +89,12 @@ const childMiddle3 = { birthcertno: { value: "T5688127H" }, name: { value: "Tan Su" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(3)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "2350" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childMiddle4 = { @@ -86,9 +104,12 @@ const childMiddle4 = { birthcertno: { value: "T2862346H" }, name: { value: "Tan Go" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(4)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "0059" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childMiddle5 = { @@ -98,9 +119,12 @@ const childMiddle5 = { birthcertno: { value: "T1235431I" }, name: { value: "Tan Sy" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(5)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "0000" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const child6YearsOld = { @@ -110,9 +134,12 @@ const child6YearsOld = { birthcertno: { value: "T3485740C" }, name: { value: "Tan Kim" }, dob: { value: formatDateToString(DateUtils.startOfYear(ZonedDateTime.now().minusYears(6))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "0901" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const child7YearsOld = { @@ -122,9 +149,12 @@ const child7YearsOld = { birthcertno: { value: "T8555618A" }, name: { value: "Tan Liu" }, dob: { value: formatDateToString(DateUtils.endOfYear(ZonedDateTime.now().minusYears(7))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, tob: { value: "1215" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; const childSuperOld = { @@ -134,9 +164,12 @@ const childSuperOld = { birthcertno: { value: "T7269740A" }, name: { value: "Tan Ke Wei" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(8)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, tob: { value: "1500" }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, } as MyInfoComponents.Schemas.Childrenbirthrecords; export const Childrenbirthrecords = { diff --git a/src/myinfo/fake/profiles/sponsored-children/sponsoredChildBirthRecords.ts b/src/myinfo/fake/profiles/sponsored-children/sponsoredChildBirthRecords.ts index 14a73f8d..e306c2b2 100644 --- a/src/myinfo/fake/profiles/sponsored-children/sponsoredChildBirthRecords.ts +++ b/src/myinfo/fake/profiles/sponsored-children/sponsoredChildBirthRecords.ts @@ -14,8 +14,11 @@ const childYoungest = { nric: { value: "T1828432J" }, name: { value: "Sponsored Child Tan Ke Xuan" }, dob: { value: formatDateToString() }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -26,8 +29,11 @@ const child1MonthOld = { nric: { value: "T4383608G" }, name: { value: "Sponsored Child Tan Ke Yu" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(1)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -38,8 +44,11 @@ const child2MonthsOld = { nric: { value: "T7153144E" }, name: { value: "Sponsored Child Tan Keh Guan" }, dob: { value: formatDateToString(ZonedDateTime.now().minusMonths(2)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -50,8 +59,11 @@ const childMiddle1 = { nric: { value: "T1694727F" }, name: { value: "Sponsored Child Tan Chiu" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -62,8 +74,11 @@ const childMiddle2 = { nric: { value: "T1669632Z" }, name: { value: "Sponsored Child Tan Chua" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(2)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -71,8 +86,11 @@ const childMiddle3 = { nric: { value: "T1509027D" }, name: { value: "Sponsored Child Tan Su" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(3)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -83,8 +101,11 @@ const childMiddle4 = { nric: { value: "T1422931G" }, name: { value: "Sponsored Child Tan Go" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(4)) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -95,8 +116,11 @@ const childMiddle5 = { nric: { value: "T1511326F" }, name: { value: "Sponsored Child Tan Sy" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(5)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -107,8 +131,11 @@ const childSuperOld = { nric: { value: "T0050832I" }, name: { value: "Sponsored Child Tan Ke Wei" }, dob: { value: formatDateToString(ZonedDateTime.now().minusYears(8)) }, - sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.FEMALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.FEMALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -119,8 +146,11 @@ const child6YearsOld = { nric: { value: "T1364674G" }, name: { value: "Sponsored Child Tan Kim" }, dob: { value: formatDateToString(DateUtils.startOfYear(ZonedDateTime.now().minusYears(6))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; @@ -131,8 +161,11 @@ const child7YearsOld = { nric: { value: "T1210114C" }, name: { value: "Sponsored Child Tan Liu" }, dob: { value: formatDateToString(DateUtils.endOfYear(ZonedDateTime.now().minusYears(7))) }, - sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE), }, - lifestatus: { code: MyInfoLifeStatusCode.ALIVE, desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE) }, + sex: { code: MyInfoSexCode.MALE, desc: MyInfoSexCode.fn.toEnumDesc(MyInfoSexCode.MALE) }, + lifestatus: { + code: MyInfoLifeStatusCode.ALIVE, + desc: MyInfoLifeStatusCode.fn.toEnumDesc(MyInfoLifeStatusCode.ALIVE), + }, unavailable: false, } as MyInfoComponents.Schemas.Sponsoredchildrenrecords; diff --git a/src/myinfo/fake/types.ts b/src/myinfo/fake/types.ts index eb3195f4..8e7b19e6 100644 --- a/src/myinfo/fake/types.ts +++ b/src/myinfo/fake/types.ts @@ -1,4 +1,17 @@ -import { MyInfoComponents, MyInfoCountryPlaceCode, MyInfoDrivingLicenceValidityCode, MyInfoHDBTypeCode, MyInfoHousingTypeCode, MyInfoLifeStatusCode, MyInfoMaritalStatusCode, MyInfoMerdekaGenerationMessageCode, MyInfoRaceCode, MyInfoResidentialCode, MyInfoSexCode, MyInfoVehicleStatus } from "../domain"; +import { + MyInfoComponents, + MyInfoCountryPlaceCode, + MyInfoDrivingLicenceValidityCode, + MyInfoHDBTypeCode, + MyInfoHousingTypeCode, + MyInfoLifeStatusCode, + MyInfoMaritalStatusCode, + MyInfoMerdekaGenerationMessageCode, + MyInfoRaceCode, + MyInfoResidentialCode, + MyInfoSexCode, + MyInfoVehicleStatus, +} from "../domain"; import { ProfileArchetype } from "./profiles/fake-profile"; export enum GVS { diff --git a/src/myinfo/helper/__tests__/myinfo.ext.spec.ts b/src/myinfo/helper/__tests__/myinfo.ext.spec.ts index 8319a36e..92c06544 100644 --- a/src/myinfo/helper/__tests__/myinfo.ext.spec.ts +++ b/src/myinfo/helper/__tests__/myinfo.ext.spec.ts @@ -1,11 +1,9 @@ - import { MyInfoHelper, MyInfoHelperConstructor } from ".."; import { configs } from "./test.configs"; import { set } from "lodash"; import { aliasName } from "../../fake/profiles/common"; describe("MyInfoClient", () => { - describe("STAGING Person basic API V3", () => { it("should use the available env variables, call myinfo, and get back person", async () => { const props: MyInfoHelperConstructor = { @@ -17,31 +15,31 @@ describe("MyInfoClient", () => { privateKeyToSignRequest: configs.myinfoAuthKey, privateKeyPassword: configs.myinfoAuthKeyPassphrase, }; - if (!!configs.overridePersonBasicUrl) { + if (configs.overridePersonBasicUrl) { set(props, "overridePersonBasicUrl", configs.overridePersonBasicUrl); } type V3Attributes = - "name" | - "aliasname" | - "sex" | - "race" | - "secondaryrace" | - "dialect" | - "nationality" | - "dob" | - "birthcountry" | - "residentialstatus" | - "email" | - "mobileno" | - "regadd" | - "marital" | - "marriagedate" | - "occupation" | - "edulevel" | - "countryofmarriage" | - "marriagecertno" | - "childrenbirthrecords"; + | "name" + | "aliasname" + | "sex" + | "race" + | "secondaryrace" + | "dialect" + | "nationality" + | "dob" + | "birthcountry" + | "residentialstatus" + | "email" + | "mobileno" + | "regadd" + | "marital" + | "marriagedate" + | "occupation" + | "edulevel" + | "countryofmarriage" + | "marriagecertno" + | "childrenbirthrecords"; const myInfoHelper = new MyInfoHelper(props); const testNric = "S1627395C"; @@ -63,7 +61,7 @@ describe("MyInfoClient", () => { privateKeyToSignRequest: configs.myinfoAuthKey, privateKeyPassword: configs.myinfoAuthKeyPassphrase, }; - if (!!configs.overrideProfileStatusUrl) { + if (configs.overrideProfileStatusUrl) { set(props, "overridePersonBasicUrl", configs.overrideProfileStatusUrl); } diff --git a/src/myinfo/helper/__tests__/test.configs.ts b/src/myinfo/helper/__tests__/test.configs.ts index f901e673..609f1ab6 100644 --- a/src/myinfo/helper/__tests__/test.configs.ts +++ b/src/myinfo/helper/__tests__/test.configs.ts @@ -1,5 +1,6 @@ import { ConfigUtils, JestUtil, StringUtil } from "../../../util"; +// eslint-disable-next-line @typescript-eslint/no-var-requires require("dotenv").config(); const { disableMissingEnvWarnings, getValueFromEnv } = ConfigUtils; @@ -44,5 +45,4 @@ export const configs = { "marriagecertno", "childrenbirthrecords.name", ], - }; diff --git a/src/myinfo/helper/myinfo-helper.ts b/src/myinfo/helper/myinfo-helper.ts index edd78eb5..d8bf2f32 100644 --- a/src/myinfo/helper/myinfo-helper.ts +++ b/src/myinfo/helper/myinfo-helper.ts @@ -11,21 +11,20 @@ import { MyInfoRequest, MyInfoRequestConstructor } from "./myinfo-request"; export type EnvType = "test" | "sandbox" | "prod"; export interface IMyInfoHelper { - getPersonBasic: (uinfin: string, attributes: string[]) => Promise>; - getPerson: (uinfin: string, attributes: string[]) => Promise>; + getPersonBasic: ( + uinfin: string, + attributes: string[], + ) => Promise>; + getPerson: ( + uinfin: string, + attributes: string[], + ) => Promise>; } export interface IMyInfoRequest { - get: ( - uri: string, - params?: { [key: string]: any }, - accessToken?: string, - ) => Promise; - - post: ( - uri: string, - params: { [key: string]: any } - ) => Promise; + get: (uri: string, params?: { [key: string]: any }, accessToken?: string) => Promise; + + post: (uri: string, params: { [key: string]: any }) => Promise; } export interface MyInfoHelperConstructor { @@ -85,7 +84,6 @@ const PERSON_BASIC_BASE_URL = "api.myinfo.gov.sg/gov/v3/person-basic"; const PROFILE_STATUS_BASE_URL = "api.myinfo.gov.sg/gov/v3/person-basic/status"; export class MyInfoHelper implements IMyInfoHelper { - private myInfoRequest: MyInfoRequest; private readonly clientID: string; @@ -154,7 +152,7 @@ export class MyInfoHelper implements IMyInfoHelper { const queryString = querystringUtil.stringify(queryParams); return `${this.authorizationUrl}?${queryString}`; - } + }; /** * Obtain token for person data @@ -170,7 +168,7 @@ export class MyInfoHelper implements IMyInfoHelper { client_secret: this.clientSecret, client_id: this.clientID, redirect_uri: this.redirectUri, - state: querystringUtil.unescape(state) + state: querystringUtil.unescape(state), }; let response: AxiosResponse; @@ -182,7 +180,7 @@ export class MyInfoHelper implements IMyInfoHelper { } return response.data; - } + }; /** * Obtain V3 person basic data using uinfin. @@ -190,7 +188,10 @@ export class MyInfoHelper implements IMyInfoHelper { * getPersonBasic will return an object with only the properties matching the keys. * e.g. when K = "name" | "email", getPersonBasic returns an object looking like { name, email } */ - public getPersonBasic = async(uinfin: string, attributes: string[]): Promise> => { + public getPersonBasic = async ( + uinfin: string, + attributes: string[], + ): Promise> => { const url = `${this.personBasicUrl}/${uinfin}`; const proxyUrl = this.proxyPersonBasicUrl ? `${this.proxyPersonBasicUrl}/${uinfin}` : ""; const params = { @@ -213,7 +214,10 @@ export class MyInfoHelper implements IMyInfoHelper { const jwe = await JweUtil.decryptJWE(encryptedPersonJWE, this.keyToDecryptJWE); const jws = JSON.parse(jwe.payload.toString()); const verifiedJws = await JweUtil.verifyJWS(jws, this.certToVerifyJWS); - const personData = JSON.parse(verifiedJws.payload.toString()) as Pick; + const personData = JSON.parse(verifiedJws.payload.toString()) as Pick< + MyInfoComponents.Schemas.PersonBasic, + K + >; if (personData == null) { throw new SingpassMyInfoError("Person-common data cannot be null"); @@ -233,7 +237,10 @@ export class MyInfoHelper implements IMyInfoHelper { * e.g. when K = "name" | "email", getPerson returns an object looking like { name, email } */ - public getPerson = async(accessToken: string, attributes: string[]): Promise> => { + public getPerson = async ( + accessToken: string, + attributes: string[], + ): Promise> => { const uinfin = await this.extractUinfinFromAccessToken(accessToken); const url = `${this.personUrl}/${uinfin}/`; @@ -279,12 +286,20 @@ export class MyInfoHelper implements IMyInfoHelper { public getProfileStatus = async (uinfin: string): Promise => { const url = `${this.profileStatusUrl}/${uinfin}`; const proxyUrl = this.proxyProfileStatusUrl ? `${this.proxyProfileStatusUrl}/${uinfin}` : ""; - const response = await this.myInfoRequest.get<{ statusCode: number, msg: string }>(url, null, null, proxyUrl, this.additionalHeaders); + const response = await this.myInfoRequest.get<{ statusCode: number; msg: string }>( + url, + null, + null, + proxyUrl, + this.additionalHeaders, + ); if (!!response.data.msg && typeof response.data.msg === "string") { return JSON.parse(response.data.msg); } - throw new SingpassMyInfoError("getProfileStatus response does not include the `msg` field as singpass-myinfo lib expected"); + throw new SingpassMyInfoError( + "getProfileStatus response does not include the `msg` field as singpass-myinfo lib expected", + ); }; /** @@ -317,9 +332,7 @@ export class MyInfoHelper implements IMyInfoHelper { } private getUrl(overrideUrl: string, defaultUrl: string, env: EnvType) { - return (!_.isEmpty(overrideUrl)) - ? overrideUrl - : this.constructUrl(env, defaultUrl); + return !_.isEmpty(overrideUrl) ? overrideUrl : this.constructUrl(env, defaultUrl); } private constructUrl(environment: EnvType, baseUrl: string) { diff --git a/src/myinfo/index.ts b/src/myinfo/index.ts index 083b7ca0..9d7b811f 100644 --- a/src/myinfo/index.ts +++ b/src/myinfo/index.ts @@ -1,6 +1,9 @@ export { - MyInfoHelper as Helper, MyInfoHelperConstructor as HelperConstructor, EnvType, - MyInfoRequest as Request, MyInfoRequestConstructor as RequestConstructor, + MyInfoHelper as Helper, + MyInfoHelperConstructor as HelperConstructor, + EnvType, + MyInfoRequest as Request, + MyInfoRequestConstructor as RequestConstructor, } from "./helper"; import * as Fake from "./fake"; diff --git a/src/singpass/__tests__/singpass-helper-ndi.spec.ts b/src/singpass/__tests__/singpass-helper-ndi.spec.ts index 142449bd..0d918659 100644 --- a/src/singpass/__tests__/singpass-helper-ndi.spec.ts +++ b/src/singpass/__tests__/singpass-helper-ndi.spec.ts @@ -1,7 +1,7 @@ -import { NdiOidcHelper, NdiOidcHelperConstructor } from "../singpass-helper-ndi"; -import { TokenPayload, TokenResponse } from '../shared-constants'; -import * as JweUtils from "../../util/JweUtil"; import { JWE, JWS } from "node-jose"; +import * as JweUtils from "../../util/JweUtil"; +import { TokenPayload, TokenResponse } from "../shared-constants"; +import { NdiOidcHelper, NdiOidcHelperConstructor } from "../singpass-helper-ndi"; const mockOidcConfigUrl = "https://mocksingpass.sg/authorize"; const mockClientId = "CLIENT-ID"; @@ -9,12 +9,12 @@ const mockRedirectUri = "http://mockme.sg/callback"; const mockDecryptKey = "sshh-secret"; const mockSignKey = "sshh-secret"; const mockTokenResponse: TokenResponse = { - access_token: 'MOCK_ACCESS_TOKEN', + access_token: "MOCK_ACCESS_TOKEN", refresh_token: "MOCK_REFRESH_TOKEN", id_token: "MOCK_ID_TOKEN", token_type: "bearer", expires_in: 599, - scope: "openid" + scope: "openid", }; const createMockTokenPayload = (overrideProps?: Partial): TokenPayload => ({ @@ -29,7 +29,6 @@ const createMockTokenPayload = (overrideProps?: Partial): TokenPay ...overrideProps, }); -// tslint:disable-next-line: no-big-function describe("NDI Singpass Helper", () => { const props: NdiOidcHelperConstructor = { oidcConfigUrl: mockOidcConfigUrl, @@ -42,17 +41,17 @@ describe("NDI Singpass Helper", () => { describe("constructing authorization url", () => { it("should construct the correct authorzation endpoint", async () => { - helper._testExports.getSingpassClient().get = jest.fn((): any => Promise.resolve({ - status: 200, - data: { - authorization_endpoint: "https://mocksingpass.sg/authorize", - }, - })); - const authUrl = await helper.constructAuthorizationUrl( - "af0ifjsldkj", - "a2ghskf1234las", + helper._testExports.getSingpassClient().get = jest.fn((): any => + Promise.resolve({ + status: 200, + data: { + authorization_endpoint: "https://mocksingpass.sg/authorize", + }, + }), ); - const expected = "https://mocksingpass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; + const authUrl = await helper.constructAuthorizationUrl("af0ifjsldkj", "a2ghskf1234las"); + const expected = + "https://mocksingpass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; expect(authUrl).toEqual(expected); }); }); @@ -74,7 +73,9 @@ describe("NDI Singpass Helper", () => { const mockPayload = createMockTokenPayload({ sub: undefined, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is not defined"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is not defined", + ); }); it("should throw an error if sub property does not contain a valid NRIC", () => { @@ -82,7 +83,9 @@ describe("NDI Singpass Helper", () => { sub: `s=some-nonsense,u=f09fcf4c-f57b-40b5-a8e0-6fb6eef640e3`, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is invalid, does not contain valid NRIC and uuid string"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is invalid, does not contain valid NRIC and uuid string", + ); }); it("should throw an error if sub property is not in the expected format", () => { @@ -90,7 +93,9 @@ describe("NDI Singpass Helper", () => { sub: `s=S6005040F,f=f09fcf4c-f57b-40b5-a8e0-6fb6eef640e3`, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is invalid, does not contain valid NRIC and uuid string"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is invalid, does not contain valid NRIC and uuid string", + ); }); }); @@ -98,15 +103,19 @@ describe("NDI Singpass Helper", () => { const mockOverrideDecryptKey = '{"kty": "EC","d": "AA1YtF2O779tiuJ4Rs3UVItxgX3GFOgQ-aycS-n-lFU","use": "enc","crv": "P-256","kid": "MOCK-OVERRIDE-DECRYPT-KEY-ID","x": "MFqQFZrB74cDhiBHhIBg9iCB-qj86vU45dj2iA-RAjs","y": "yUOsmZh4rd3qwqXRgRCIaAyRcOj4S0mD6tEsd-aTlL0","alg": "ECDH-ES+A256KW"}'; - const mockVerifiedJws = { payload: JSON.stringify({ mockResults: 'VERIFIED_JWS' }) }; + const mockVerifiedJws = { payload: JSON.stringify({ mockResults: "VERIFIED_JWS" }) }; it("should use overrideDecryptKey when specified", async () => { const corppassHelper = new NdiOidcHelper({ ...props, }); - const mockDecryptJwe = jest.spyOn(JweUtils, "decryptJWE").mockResolvedValueOnce({ payload: 'DECRYPT_RESULTS' } as unknown as JWE.DecryptResult); - const mockVerifyJWS = jest.spyOn(JweUtils, "verifyJWS").mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); + const mockDecryptJwe = jest + .spyOn(JweUtils, "decryptJWE") + .mockResolvedValueOnce({ payload: "DECRYPT_RESULTS" } as unknown as JWE.DecryptResult); + const mockVerifyJWS = jest + .spyOn(JweUtils, "verifyJWS") + .mockResolvedValueOnce(mockVerifiedJws as unknown as JWS.VerificationResult); const mockJwksUrl = "https://www.mocksingpass.gov.sg/.well-known/keys"; const mockTokenEndpoint = "https://www.mocksingpass.gov.sg/mga/sps/oauth/oauth20/token"; @@ -120,9 +129,8 @@ describe("NDI Singpass Helper", () => { data: { token_endpoint: mockTokenEndpoint, issuer: mockIssuer, - 'authorization-info_endpoint': mockAuthorizationInfoEndpoint, + "authorization-info_endpoint": mockAuthorizationInfoEndpoint, jwks_uri: mockJwksUrl, - }, }; }); @@ -133,31 +141,20 @@ describe("NDI Singpass Helper", () => { status: 200, data: { keys: ["MOCK_KEY"], - }, }; }); - corppassHelper._testExports.getSingpassClient().get = axiosMock; await corppassHelper.getIdTokenPayload(mockTokenResponse, { key: mockOverrideDecryptKey, format: "json" }); - expect(axiosMock.mock.calls[0]).toEqual( - expect.arrayContaining([ - mockOidcConfigUrl, - ]), - ); - expect(axiosMock.mock.calls[1]).toEqual( - expect.arrayContaining([ - mockJwksUrl, - ]), - ); + expect(axiosMock.mock.calls[0]).toEqual(expect.arrayContaining([mockOidcConfigUrl])); + expect(axiosMock.mock.calls[1]).toEqual(expect.arrayContaining([mockJwksUrl])); - expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockOverrideDecryptKey, 'json',); - expect(mockVerifyJWS).toHaveBeenCalledWith('DECRYPT_RESULTS', JSON.stringify("MOCK_KEY"), 'json'); + expect(mockDecryptJwe).toHaveBeenCalledWith(mockTokenResponse.id_token, mockOverrideDecryptKey, "json"); + expect(mockVerifyJWS).toHaveBeenCalledWith("DECRYPT_RESULTS", JSON.stringify("MOCK_KEY"), "json"); expect(axiosMock).toHaveBeenCalledTimes(2); - }); }); }); diff --git a/src/singpass/__tests__/singpass-helper.spec.ts b/src/singpass/__tests__/singpass-helper.spec.ts index 3c184f15..8b76b059 100644 --- a/src/singpass/__tests__/singpass-helper.spec.ts +++ b/src/singpass/__tests__/singpass-helper.spec.ts @@ -1,5 +1,5 @@ +import { TokenPayload } from "../shared-constants"; import { OidcHelper, OidcHelperConstructor, SessionLogoutResult, SessionRefreshResult } from "../singpass-helper"; -import { TokenPayload } from '../shared-constants'; const mockAuthUrl = "https://mocksingpass.sg/authorize"; const mockLogoutUrl = "https://mocksingpass.sg/logout"; @@ -22,7 +22,6 @@ const createMockTokenPayload = (overrideProps?: Partial): TokenPay ...overrideProps, }); -// tslint:disable-next-line: no-big-function describe("Singpass Helper", () => { const props: OidcHelperConstructor = { authorizationUrl: mockAuthUrl, @@ -38,11 +37,9 @@ describe("Singpass Helper", () => { describe("constructing authorization url", () => { it("should construct the correct authorzation endpoint", () => { - const authUrl = helper.constructAuthorizationUrl( - "af0ifjsldkj", - "a2ghskf1234las", - ); - const expected = "https://mocksingpass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; + const authUrl = helper.constructAuthorizationUrl("af0ifjsldkj", "a2ghskf1234las"); + const expected = + "https://mocksingpass.sg/authorize?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; expect(authUrl).toEqual(expected); }); @@ -52,7 +49,8 @@ describe("Singpass Helper", () => { "a2ghskf1234las", "https://mocksingpassoverride.sg/auth", ); - const expected = "https://mocksingpassoverride.sg/auth?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; + const expected = + "https://mocksingpassoverride.sg/auth?state=af0ifjsldkj&nonce=a2ghskf1234las&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; expect(authUrl).toEqual(expected); }); }); @@ -74,7 +72,9 @@ describe("Singpass Helper", () => { const mockPayload = createMockTokenPayload({ sub: undefined, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is not defined"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is not defined", + ); }); it("should throw an error if sub property does not contain a valid NRIC", () => { @@ -82,7 +82,9 @@ describe("Singpass Helper", () => { sub: `s=some-nonsense,u=f09fcf4c-f57b-40b5-a8e0-6fb6eef640e3`, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is invalid, does not contain valid NRIC and uuid string"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is invalid, does not contain valid NRIC and uuid string", + ); }); it("should throw an error if sub property is not in the expected format", () => { @@ -90,7 +92,9 @@ describe("Singpass Helper", () => { sub: `s=S6005040F,f=f09fcf4c-f57b-40b5-a8e0-6fb6eef640e3`, }); - expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError("Token payload sub property is invalid, does not contain valid NRIC and uuid string"); + expect(() => helper.extractNricAndUuidFromPayload(mockPayload)).toThrowError( + "Token payload sub property is invalid, does not contain valid NRIC and uuid string", + ); }); }); @@ -101,12 +105,11 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "some-header": "some-value", - } + }, + }); + helperWithHeaders._testExports.singpassClient.post = jest.fn().mockResolvedValue({ + data: { id_token: "some-token" }, }); - helperWithHeaders._testExports.singpassClient.post = jest.fn() - .mockResolvedValue({ - data: { id_token: "some-token" } - }); await helperWithHeaders.getTokens("some-code"); expect(helperWithHeaders._testExports.singpassClient.post).toHaveBeenCalledWith( @@ -116,7 +119,7 @@ describe("Singpass Helper", () => { headers: expect.objectContaining({ "some-header": "some-value", }), - }) + }), ); }); @@ -125,12 +128,11 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "content-type": "some-override-value", - } + }, + }); + helperWithHeaders._testExports.singpassClient.post = jest.fn().mockResolvedValue({ + data: { id_token: "some-token" }, }); - helperWithHeaders._testExports.singpassClient.post = jest.fn() - .mockResolvedValue({ - data: { id_token: "some-token" } - }); await helperWithHeaders.getTokens("some-code"); expect(helperWithHeaders._testExports.singpassClient.post).toHaveBeenCalledWith( @@ -140,7 +142,7 @@ describe("Singpass Helper", () => { headers: { "content-type": "application/x-www-form-urlencoded", }, - }) + }), ); }); }); @@ -153,12 +155,11 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "some-header": "some-value", - } + }, + }); + helperWithHeaders._testExports.singpassClient.post = jest.fn().mockResolvedValue({ + data: { id_token: "some-token" }, }); - helperWithHeaders._testExports.singpassClient.post = jest.fn() - .mockResolvedValue({ - data: { id_token: "some-token" } - }); await helperWithHeaders.refreshTokens("some-code"); expect(helperWithHeaders._testExports.singpassClient.post).toHaveBeenCalledWith( @@ -168,7 +169,7 @@ describe("Singpass Helper", () => { headers: expect.objectContaining({ "some-header": "some-value", }), - }) + }), ); }); @@ -177,12 +178,11 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "content-type": "some-override-value", - } + }, + }); + helperWithHeaders._testExports.singpassClient.post = jest.fn().mockResolvedValue({ + data: { id_token: "some-token" }, }); - helperWithHeaders._testExports.singpassClient.post = jest.fn() - .mockResolvedValue({ - data: { id_token: "some-token" } - }); await helperWithHeaders.refreshTokens("some-code"); expect(helperWithHeaders._testExports.singpassClient.post).toHaveBeenCalledWith( @@ -192,80 +192,81 @@ describe("Singpass Helper", () => { headers: { "content-type": "application/x-www-form-urlencoded", }, - }) + }), ); }); }); }); describe("refresh session", () => { - const constructedMockAuthUrl = "https://mocksingpass.sg/authorize?state=dummyState&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; + const constructedMockAuthUrl = + "https://mocksingpass.sg/authorize?state=dummyState&redirect_uri=http%3A%2F%2Fmockme.sg%2Fcallback&scope=openid&client_id=CLIENT-ID&response_type=code"; describe("when refresh is successful", () => { it("should set a cookie header with the session ID and call singpass authorize endpoint", async () => { - helper._testExports.singpassClient.get = jest.fn((): any => Promise.resolve({ - status: 302, - headers: { - location: "https://localhost/singpass/callback?state=abc&code=xyz", - }, - })); - const sessionId = "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; + helper._testExports.singpassClient.get = jest.fn((): any => + Promise.resolve({ + status: 302, + headers: { + location: "https://localhost/singpass/callback?state=abc&code=xyz", + }, + }), + ); + const sessionId = + "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; const result = await helper.refreshSession(sessionId); expect(result).toEqual(SessionRefreshResult.SUCCESS); - expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith( - constructedMockAuthUrl, - { - headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, - maxRedirects: 0, - validateStatus: helper._testExports.validateStatusFn, - }, - ); + expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith(constructedMockAuthUrl, { + headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, + maxRedirects: 0, + validateStatus: helper._testExports.validateStatusFn, + }); }); }); describe("when refresh is unsuccessful", () => { describe("when session ID is invalid", () => { it("should set a cookie header with the session ID and call singpass authorize endpoint", async () => { - helper._testExports.singpassClient.get = jest.fn((): any => Promise.resolve({ - status: 302, - headers: { - location: "https://stg-login.singpass.gov.sg/spauth/TAMOperationHandler?TAM_OP=login&URL=%2Fmga%2Fsps%2Foauth%2Foauth20%2Fauthorize%3Fstate%3DCkxPR0lOAA%253D%253D%26nonce%3D%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A3001%252Fsingpass%252Fcallback%26scope%3Dopenid%26client_id%3DBLAH-BLAH%26response_type%3Dcode%26esrvcID%3DBLAH-BLAH&AUTHNLEVEL=5", - }, - })); + helper._testExports.singpassClient.get = jest.fn((): any => + Promise.resolve({ + status: 302, + headers: { + location: + "https://stg-login.singpass.gov.sg/spauth/TAMOperationHandler?TAM_OP=login&URL=%2Fmga%2Fsps%2Foauth%2Foauth20%2Fauthorize%3Fstate%3DCkxPR0lOAA%253D%253D%26nonce%3D%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A3001%252Fsingpass%252Fcallback%26scope%3Dopenid%26client_id%3DBLAH-BLAH%26response_type%3Dcode%26esrvcID%3DBLAH-BLAH&AUTHNLEVEL=5", + }, + }), + ); const sessionId = "0_rubbish"; const result = await helper.refreshSession(sessionId); expect(result).toEqual(SessionRefreshResult.INVALID_SESSION_ID); - expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith( - constructedMockAuthUrl, - { - headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, - maxRedirects: 0, - validateStatus: helper._testExports.validateStatusFn, - }, - ); + expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith(constructedMockAuthUrl, { + headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, + maxRedirects: 0, + validateStatus: helper._testExports.validateStatusFn, + }); }); }); describe("when Singpass server returns an error", () => { it("should set a cookie header with the session ID and call singpass authorize endpoint", async () => { - helper._testExports.singpassClient.get = jest.fn(() => Promise.reject({ - response: { - status: 500, - }, - })); - const sessionId = "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; + helper._testExports.singpassClient.get = jest.fn(() => + Promise.reject({ + response: { + status: 500, + }, + }), + ); + const sessionId = + "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; const result = await helper.refreshSession(sessionId); expect(result).toEqual(SessionRefreshResult.SINGPASS_ERROR); - expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith( - constructedMockAuthUrl, - { - headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, - maxRedirects: 0, - validateStatus: helper._testExports.validateStatusFn, - }, - ); + expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith(constructedMockAuthUrl, { + headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, + maxRedirects: 0, + validateStatus: helper._testExports.validateStatusFn, + }); }); }); }); @@ -276,7 +277,7 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "some-header": "some-value", - } + }, }); helperWithHeaders._testExports.singpassClient.get = jest.fn(); @@ -287,7 +288,7 @@ describe("Singpass Helper", () => { headers: expect.objectContaining({ "some-header": "some-value", }), - }) + }), ); }); @@ -296,7 +297,7 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { Cookie: "some-override-value", - } + }, }); helperWithHeaders._testExports.singpassClient.get = jest.fn(); @@ -307,7 +308,7 @@ describe("Singpass Helper", () => { headers: { Cookie: "PD-S-SESSION-ID=some-id", }, - }) + }), ); }); }); @@ -318,42 +319,47 @@ describe("Singpass Helper", () => { it("should throw an error", () => { const helperWithoutLogout = new OidcHelper({ ...props, logoutUrl: undefined }); - const sessionId = "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; + const sessionId = + "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; expect(helperWithoutLogout.logoutOfSession(sessionId)).rejects.toThrowError(); }); }); describe("when logout is successful", () => { it("should set a cookie header with the session ID and call singpass logout endpoint", async () => { - helper._testExports.singpassClient.get = jest.fn().mockReturnValue(Promise.resolve({ - status: 200, - })); - const sessionId = "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; + helper._testExports.singpassClient.get = jest.fn().mockReturnValue( + Promise.resolve({ + status: 200, + }), + ); + const sessionId = + "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; const result = await helper.logoutOfSession(sessionId); expect(result).toEqual(SessionLogoutResult.SUCCESS); - expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith( - mockLogoutUrl, - { headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` } }, - ); + expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith(mockLogoutUrl, { + headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, + }); }); }); describe("when logout is unsuccessful", () => { describe("when Singpass server returns an error", () => { it("should set a cookie header with the session ID and call singpass logout endpoint", async () => { - helper._testExports.singpassClient.get = jest.fn(() => Promise.reject({ - response: { - status: 500, - }, - })); - const sessionId = "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; + helper._testExports.singpassClient.get = jest.fn(() => + Promise.reject({ + response: { + status: 500, + }, + }), + ); + const sessionId = + "1_0jP8lQbVdNJWu/WNMclh6jynB9d+Ui/e3BmbiLccaVRREZkMoEQ=_AAAAAwA=_ehj7WNPdSF5ZR+ERSflwNaDaBPo="; const result = await helper.logoutOfSession(sessionId); expect(result).toEqual(SessionLogoutResult.SINGPASS_ERROR); - expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith( - mockLogoutUrl, - { headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` } }, - ); + expect(helper._testExports.singpassClient.get).toHaveBeenCalledWith(mockLogoutUrl, { + headers: { Cookie: `PD-S-SESSION-ID=${sessionId}` }, + }); }); }); }); @@ -364,7 +370,7 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { "some-header": "some-value", - } + }, }); helperWithHeaders._testExports.singpassClient.get = jest.fn(); @@ -375,7 +381,7 @@ describe("Singpass Helper", () => { headers: expect.objectContaining({ "some-header": "some-value", }), - }) + }), ); }); @@ -384,7 +390,7 @@ describe("Singpass Helper", () => { ...props, additionalHeaders: { Cookie: "some-override-value", - } + }, }); helperWithHeaders._testExports.singpassClient.get = jest.fn(); @@ -395,7 +401,7 @@ describe("Singpass Helper", () => { headers: { Cookie: "PD-S-SESSION-ID=some-id", }, - }) + }), ); }); }); diff --git a/src/singpass/singpass-helper-ndi.ts b/src/singpass/singpass-helper-ndi.ts index c7bc372b..590867fa 100644 --- a/src/singpass/singpass-helper-ndi.ts +++ b/src/singpass/singpass-helper-ndi.ts @@ -4,9 +4,9 @@ import { createClient } from "../client/axios-client"; import { JweUtil } from "../util"; import { SingpassMyInfoError } from "../util/error/SingpassMyinfoError"; import { logger } from "../util/Logger"; -import { TokenPayload, TokenResponse } from './shared-constants'; -import { Key } from '../util/KeyUtil'; -import { createClientAssertion } from '../util/SigningUtil'; +import { TokenPayload, TokenResponse } from "./shared-constants"; +import { Key } from "../util/KeyUtil"; +import { createClientAssertion } from "../util/SigningUtil"; export interface NdiOidcHelperConstructor { oidcConfigUrl: string; @@ -45,11 +45,10 @@ export class NdiOidcHelper { }); } - public constructAuthorizationUrl = async ( - state: string, - nonce?: string - ): Promise => { - const { data: { authorization_endpoint } } = await this.axiosClient.get(this.oidcConfigUrl); + public constructAuthorizationUrl = async (state: string, nonce?: string): Promise => { + const { + data: { authorization_endpoint }, + } = await this.axiosClient.get(this.oidcConfigUrl); const queryParams = { state, @@ -58,37 +57,38 @@ export class NdiOidcHelper { scope: "openid", client_id: this.clientID, response_type: "code", - }; const queryString = querystringUtil.stringify(queryParams); return `${authorization_endpoint}?${queryString}`; - } + }; /** * Get tokens from Singpass endpoint. Note: This will fail if not on an IP whitelisted by SP. * Use getIdTokenPayload on returned Token Response to get the token payload */ public getTokens = async (authCode: string): Promise => { - const { data: { token_endpoint, issuer } } = await this.axiosClient.get(this.oidcConfigUrl); + const { + data: { token_endpoint, issuer }, + } = await this.axiosClient.get(this.oidcConfigUrl); const params = { grant_type: "authorization_code", code: authCode, client_id: this.clientID, redirect_uri: this.redirectUri, - client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer', + client_assertion_type: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", client_assertion: await createClientAssertion({ issuer: this.clientID, subject: this.clientID, audience: issuer, key: this.clientAssertionSignKey, - }) + }), }; const body = querystringUtil.stringify(params); const config = { headers: { - "content-type": "application/x-www-form-urlencoded" + "content-type": "application/x-www-form-urlencoded", }, }; const response = await this.axiosClient.post(token_endpoint, body, config); @@ -97,7 +97,7 @@ export class NdiOidcHelper { throw new SingpassMyInfoError("Failed to get ID token"); } return response.data; - } + }; /** * Decrypts the ID Token JWT inside the TokenResponse to get the payload @@ -105,8 +105,12 @@ export class NdiOidcHelper { */ public async getIdTokenPayload(tokens: TokenResponse, overrideDecryptKey?: Key): Promise { try { - const { data: { jwks_uri } } = await this.axiosClient.get(this.oidcConfigUrl); - const { data: { keys } } = await this.axiosClient.get<{ keys: Object[] }>(jwks_uri); + const { + data: { jwks_uri }, + } = await this.axiosClient.get(this.oidcConfigUrl); + const { + data: { keys }, + } = await this.axiosClient.get<{ keys: Object[] }>(jwks_uri); const jwsVerifyKey = JSON.stringify(keys[0]); const { id_token } = tokens; @@ -114,7 +118,7 @@ export class NdiOidcHelper { const finalDecryptionKey = overrideDecryptKey ?? this.jweDecryptKey; const decryptedJwe = await JweUtil.decryptJWE(id_token, finalDecryptionKey.key, finalDecryptionKey.format); const jwsPayload = decryptedJwe.payload.toString(); - const verifiedJws = await JweUtil.verifyJWS(jwsPayload, jwsVerifyKey, 'json'); + const verifiedJws = await JweUtil.verifyJWS(jwsPayload, jwsVerifyKey, "json"); return JSON.parse(verifiedJws.payload.toString()) as TokenPayload; } catch (e) { logger.error("Failed to get token payload", e); @@ -125,7 +129,7 @@ export class NdiOidcHelper { /** * Returns the nric and uuid from the token payload */ - public extractNricAndUuidFromPayload(payload: TokenPayload): { nric: string, uuid: string } { + public extractNricAndUuidFromPayload(payload: TokenPayload): { nric: string; uuid: string } { const { sub } = payload; if (sub) { diff --git a/src/singpass/singpass-helper.ts b/src/singpass/singpass-helper.ts index abe2f8e1..baa7201e 100644 --- a/src/singpass/singpass-helper.ts +++ b/src/singpass/singpass-helper.ts @@ -5,7 +5,7 @@ import { createClient } from "../client/axios-client"; import { JweUtil } from "../util"; import { SingpassMyInfoError } from "../util/error/SingpassMyinfoError"; import { logger } from "../util/Logger"; -import { TokenPayload, TokenResponse } from './shared-constants'; +import { TokenPayload, TokenResponse } from "./shared-constants"; export enum SessionRefreshResult { SUCCESS = "SUCCESS", @@ -36,7 +36,6 @@ export interface OidcHelperConstructor { } export class OidcHelper { - private SINGPASS_SESSION_COOKIE_NAME = "PD-S-SESSION-ID"; private axiosClient: AxiosInstance = createClient({ timeout: 10000, @@ -52,7 +51,6 @@ export class OidcHelper { private jwsVerifyKey: string; private additionalHeaders?: Record; - constructor(props: OidcHelperConstructor) { this.authorizationUrl = props.authorizationUrl; this.logoutUrl = props.logoutUrl; @@ -65,11 +63,7 @@ export class OidcHelper { this.additionalHeaders = props.additionalHeaders || {}; } - public constructAuthorizationUrl = ( - state: string, - nonce?: string, - overrideAuthUrl?: string, - ): string => { + public constructAuthorizationUrl = (state: string, nonce?: string, overrideAuthUrl?: string): string => { const queryParams = { state, ...(nonce ? { nonce } : {}), @@ -77,11 +71,10 @@ export class OidcHelper { scope: "openid", client_id: this.clientID, response_type: "code", - }; const queryString = querystringUtil.stringify(queryParams); return `${overrideAuthUrl ?? this.authorizationUrl}?${queryString}`; - } + }; /** * Get tokens from Singpass endpoint. Note: This will fail if not on an IP whitelisted by SP. @@ -100,7 +93,7 @@ export class OidcHelper { const config = { headers: { ...this.additionalHeaders, - "content-type": "application/x-www-form-urlencoded" + "content-type": "application/x-www-form-urlencoded", }, ...axiosRequestConfig, }; @@ -110,13 +103,16 @@ export class OidcHelper { throw new SingpassMyInfoError("Failed to get ID token"); } return response.data; - } + }; /** * Get fresh tokens from Singpass endpoint. Note: This will fail if not on an IP whitelisted by SP. * Use getIdTokenPayload on returned Token Response to get the token payload */ - public refreshTokens = async (refreshToken: string, axiosRequestConfig?: AxiosRequestConfig): Promise => { + public refreshTokens = async ( + refreshToken: string, + axiosRequestConfig?: AxiosRequestConfig, + ): Promise => { const params = { scope: "openid", grant_type: "refresh_token", @@ -129,7 +125,7 @@ export class OidcHelper { const config = { headers: { ...this.additionalHeaders, - "content-type": "application/x-www-form-urlencoded" + "content-type": "application/x-www-form-urlencoded", }, ...axiosRequestConfig, }; @@ -139,7 +135,7 @@ export class OidcHelper { throw new SingpassMyInfoError("Failed to get ID token"); } return response.data; - } + }; /** * Decrypts the ID Token JWT inside the TokenResponse to get the payload @@ -147,7 +143,6 @@ export class OidcHelper { */ public async getIdTokenPayload(tokens: TokenResponse): Promise { try { - const { id_token } = tokens; const decryptedJwe = await JweUtil.decryptJWE(id_token, this.jweDecryptKey); const jwsPayload = decryptedJwe.payload.toString(); @@ -162,7 +157,7 @@ export class OidcHelper { /** * Returns the nric and uuid from the token payload */ - public extractNricAndUuidFromPayload(payload: TokenPayload): { nric: string, uuid: string } { + public extractNricAndUuidFromPayload(payload: TokenPayload): { nric: string; uuid: string } { const { sub } = payload; if (sub) { @@ -184,6 +179,7 @@ export class OidcHelper { /** * Refresh the Singpass session, using a valid session id (that is retrieved from Singpass domain cookie) + * * @param sessionId the session id extracted from PD-S-SESSION-ID in the user agent * @param state state that will be passed to the your redirect uri from this refresh call. defaults to "dummyState" * @returns INVALID_SESSION_ID - the sessionId param is no longer valid @@ -197,14 +193,17 @@ export class OidcHelper { const requestConfig: AxiosRequestConfig = { headers: { ...this.additionalHeaders, - Cookie: `${this.SINGPASS_SESSION_COOKIE_NAME}=${sessionId}` + Cookie: `${this.SINGPASS_SESSION_COOKIE_NAME}=${sessionId}`, }, maxRedirects: 0, validateStatus: this.validateStatus, }; try { const result = await this.axiosClient.get(authorizationUrl, requestConfig); - if (result.headers.location?.includes("saml.singpass.gov.sg") || result.headers.location?.includes("login.singpass.gov.sg")) { + if ( + result.headers.location?.includes("saml.singpass.gov.sg") || + result.headers.location?.includes("login.singpass.gov.sg") + ) { logger.warn(`Attempted to refresh session with invalid session ID`); return SessionRefreshResult.INVALID_SESSION_ID; } @@ -220,18 +219,21 @@ export class OidcHelper { * Keeping for other use cases. * * Log user out of Singpass, using a valid session id (that is retrieved from Singpass domain cookie) + * * @param sessionId the session id extracted from PD-S-SESSION-ID in the user agent */ public async logoutOfSession(sessionId: string): Promise { if (isNil(this.logoutUrl)) { - throw new SingpassMyInfoError("Trying to call singpass-helper logoutOfSession without setting the logout URL"); + throw new SingpassMyInfoError( + "Trying to call singpass-helper logoutOfSession without setting the logout URL", + ); } const requestConfig = { headers: { ...this.additionalHeaders, - Cookie: `${this.SINGPASS_SESSION_COOKIE_NAME}=${sessionId}` - } + Cookie: `${this.SINGPASS_SESSION_COOKIE_NAME}=${sessionId}`, + }, }; try { await this.axiosClient.get(this.logoutUrl, requestConfig); diff --git a/src/util/ConfigUtils.ts b/src/util/ConfigUtils.ts index 070c65f1..8709d196 100644 --- a/src/util/ConfigUtils.ts +++ b/src/util/ConfigUtils.ts @@ -7,7 +7,7 @@ export function disableMissingEnvWarnings() { } export function getValueFromEnv(key: string, defaultValue?: string): string { - const value = !!process.env[key] ? process.env[key].trim() : defaultValue; + const value = process.env[key] ? process.env[key].trim() : defaultValue; if (!value && displayWarnings) { logger.warn(`Configuration key not found or empty: ${key}`); } @@ -15,7 +15,7 @@ export function getValueFromEnv(key: string, defaultValue?: string): string { } export function getValueFromEnvWithoutWarn(key: string, defaultValue?: string): string { - const value = !!process.env[key] ? process.env[key].trim() : defaultValue; + const value = process.env[key] ? process.env[key].trim() : defaultValue; return value; } @@ -36,7 +36,6 @@ export function getIntValueFromEnv(key: string, defaultValue: number): number { return intValue; } - export function getBooleanValueFromEnv(key: string, defaultValue: boolean = false): boolean { const stringValue = getValueFromEnv(key, null); if (!stringValue) { diff --git a/src/util/DateUtils.ts b/src/util/DateUtils.ts index a027bc51..88e096d9 100644 --- a/src/util/DateUtils.ts +++ b/src/util/DateUtils.ts @@ -1,7 +1,17 @@ -import { convert, DateTimeFormatterBuilder, Instant, LocalDate, LocalDateTime, LocalTime, ResolverStyle, TemporalAdjusters, ZonedDateTime, ZoneId } from "@js-joda/core"; +import { + convert, + DateTimeFormatterBuilder, + Instant, + LocalDate, + LocalDateTime, + LocalTime, + ResolverStyle, + TemporalAdjusters, + ZonedDateTime, + ZoneId, +} from "@js-joda/core"; import "@js-joda/timezone"; import * as _ from "lodash"; -import { logger } from "../util/Logger"; export namespace DateUtils { export const SG_TZ = ZoneId.of("Asia/Singapore"); @@ -10,7 +20,7 @@ export namespace DateUtils { // Defaults // ============================================================================= - let defaultTz = SG_TZ; // Defaults to Singapore zone + let defaultTz = SG_TZ; // Defaults to Singapore zone /** * Gets the default timezone used by DateUtils @@ -35,7 +45,7 @@ export namespace DateUtils { * Converts a number representing milliseconds from epoch to ZonedDateTime */ export function msToZonedDateTime(ms: number, zoneId: ZoneId = defaultTz): ZonedDateTime { - return !!ms ? ZonedDateTime.ofInstant(Instant.ofEpochMilli(ms), zoneId) : null; + return ms ? ZonedDateTime.ofInstant(Instant.ofEpochMilli(ms), zoneId) : null; } // ============================================================================= @@ -68,8 +78,8 @@ export namespace DateUtils { try { if (!iso) return null; - // tslint:disable-next-line: tsr-detect-unsafe-regexp - const filterRegex = /(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:([0-5][0-9]))?/; + const filterRegex = + /(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])(:([0-5][0-9]))?/; const filteredIso = iso.match(filterRegex)?.[0]; return LocalDateTime.parse(filteredIso); } catch (error) { @@ -89,7 +99,6 @@ export namespace DateUtils { try { if (!iso) return null; - // tslint:disable-next-line: tsr-detect-unsafe-regexp const filterRegex = /(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])/; const filteredIso = iso.match(filterRegex)?.[0]; return LocalDate.parse(filteredIso); @@ -105,7 +114,6 @@ export namespace DateUtils { try { if (!iso) return null; - // tslint:disable-next-line: tsr-detect-unsafe-regexp const filterRegex = /(2[0-3]|[01][0-9]):([0-5][0-9])(:([0-5][0-9]))?/; const filteredIso = iso.match(filterRegex)?.[0]; return LocalTime.parse(filteredIso); @@ -114,7 +122,6 @@ export namespace DateUtils { } } - // ============================================================================= // Aggregate transformers // ============================================================================= @@ -149,7 +156,7 @@ export namespace DateUtils { * Converts input to a ZonedDateTime and then converts it to an ISO-8601 string */ export function toIsoZonedDateTime(input: DateTimeType, zoneId: ZoneId = defaultTz): string { - return !!input ? toZonedDateTime(input, zoneId)?.toString() : null; + return input ? toZonedDateTime(input, zoneId)?.toString() : null; } /** @@ -237,7 +244,12 @@ export namespace DateUtils { const zdt = toZonedDateTime(input, zoneId); if (!zdt) return null; - return zdt.with(TemporalAdjusters.lastDayOfYear()).withHour(23).withMinute(59).withSecond(59).withNano(999999999); + return zdt + .with(TemporalAdjusters.lastDayOfYear()) + .withHour(23) + .withMinute(59) + .withSecond(59) + .withNano(999999999); } /** @@ -246,7 +258,9 @@ export namespace DateUtils { */ export function isWithinPeriod(startOfPeriod: string, endOfPeriod: string, input = LocalDate.now()): boolean { const CORPPASS_DATE_FORMAT = "uuuu-MM-dd"; - const formatter = new DateTimeFormatterBuilder().appendPattern(CORPPASS_DATE_FORMAT).toFormatter(ResolverStyle.STRICT); + const formatter = new DateTimeFormatterBuilder() + .appendPattern(CORPPASS_DATE_FORMAT) + .toFormatter(ResolverStyle.STRICT); const start = LocalDate.parse(startOfPeriod, formatter); const end = LocalDate.parse(endOfPeriod, formatter); return !(input.compareTo(start) < 0 || input.compareTo(end) > 0); diff --git a/src/util/EnumUtils.ts b/src/util/EnumUtils.ts index 7a44d408..932702a0 100644 --- a/src/util/EnumUtils.ts +++ b/src/util/EnumUtils.ts @@ -1,12 +1,12 @@ import * as _ from "lodash"; export namespace EnumUtils { - /** * Generates a function that lists all the enum keys */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars export function keysFunc(enumType: any): () => string[] { - const keys: string[] = _.keys(enumType); // Memoized + const keys: string[] = _.keys(enumType); // Memoized return () => keys; } @@ -16,7 +16,7 @@ export namespace EnumUtils { export function valuesFunc(enumType: any): () => T[] { // Filtering for numbers only for as _.values also includes enum key strings when it's a numbers enum const isNumber = _.some(_.values(enumType), _.isNumber); - const values: T[] = _.filter(_.values(enumType), (value) => _.isNumber(value) === isNumber); // Memoized + const values: T[] = _.filter(_.values(enumType), (value) => _.isNumber(value) === isNumber); // Memoized return () => values; } @@ -31,17 +31,16 @@ export namespace EnumUtils { const valueMap = new Map(); // Memoized // Filtering for numbers only for as _.values also includes enum key strings when it's a numbers enum - _.filter(_.values(enumType), (value) => _.isNumber(value) === isNumber) - .forEach((value) => { - if (isNumber) { - valueMap.set(value, value); - } else if (_.isString(value)) { - valueMap.set(value.toUpperCase(), value); - } - }); + _.filter(_.values(enumType), (value) => _.isNumber(value) === isNumber).forEach((value) => { + if (isNumber) { + valueMap.set(value, value); + } else if (_.isString(value)) { + valueMap.set(value.toUpperCase(), value); + } + }); return (value: string | number) => { - const findValue = (isNumber ? _.toNumber(value) : _.toString(value).toUpperCase()); // Type coercion + const findValue = isNumber ? _.toNumber(value) : _.toString(value).toUpperCase(); // Type coercion const foundValue = valueMap.get(findValue); if (_.isNil(foundValue)) { if (throwIfInvalid) { @@ -61,11 +60,11 @@ export namespace EnumUtils { * Returns undefined if the value is no in the enum set */ export function toEnumKeyFunc(enumType: any, shouldThrowIfInvalid: boolean = false): (value: T) => string { - const isNumber = _.some(_.values(enumType), _.isNumber); // Memoized - const invertedMap: _.Dictionary = _.invert(enumType); // Memoized + const isNumber = _.some(_.values(enumType), _.isNumber); // Memoized + const invertedMap: _.Dictionary = _.invert(enumType); // Memoized return (value: T): string => { - const findValue = (isNumber ? _.toNumber(value) : _.toString(value)); // Type coercion + const findValue = isNumber ? _.toNumber(value) : _.toString(value); // Type coercion const foundKey = invertedMap[findValue]; if (_.isNil(foundKey) && shouldThrowIfInvalid) { throw new Error(`Invalid enum value: ${value}`); @@ -80,8 +79,12 @@ export namespace EnumUtils { * Automatically does type coercion (i.e. conversion to string or number) * Returns undefined if the value is no in the enum set */ - export function toEnumDescFunc(enumType: any, enumDesc: any, shouldThrowIfInvalid: boolean = false): (value: T) => U { - const invertedMap: _.Dictionary = _.invert(enumType); // Memoized + export function toEnumDescFunc( + enumType: any, + enumDesc: any, + shouldThrowIfInvalid: boolean = false, + ): (value: T) => U { + const invertedMap: _.Dictionary = _.invert(enumType); // Memoized return (value: T): U => { const findValue = _.toString(value); // Type coercion diff --git a/src/util/JestUtil.ts b/src/util/JestUtil.ts index 845a7203..25eca01d 100644 --- a/src/util/JestUtil.ts +++ b/src/util/JestUtil.ts @@ -1,4 +1,4 @@ -declare var global: any; +declare let global: any; /** * @returns Whether the code is currently running in Jest or not diff --git a/src/util/JweUtil.ts b/src/util/JweUtil.ts index 5e563c83..757b6999 100644 --- a/src/util/JweUtil.ts +++ b/src/util/JweUtil.ts @@ -1,10 +1,14 @@ import * as jose from "node-jose"; import { SingpassMyInfoError } from "./error/SingpassMyinfoError"; -import { KeyFormat } from './KeyUtil'; +import { KeyFormat } from "./KeyUtil"; import { TokenResponse as SingpassTokenResponse } from "../singpass/shared-constants"; import { TokenResponse as CorppassTokenResponse } from "../corppass/shared-constants"; -export async function decryptJWE(jwe: string, decryptKey: string, format: KeyFormat = 'pem'): Promise { +export async function decryptJWE( + jwe: string, + decryptKey: string, + format: KeyFormat = "pem", +): Promise { if (!jwe) throw new SingpassMyInfoError("Missing JWE data."); if (!decryptKey) throw new SingpassMyInfoError("Missing key to decrypt JWE payload."); // TODO: can be further optimized by caching key in memory instead of regenerating each time @@ -14,7 +18,11 @@ export async function decryptJWE(jwe: string, decryptKey: string, format: KeyFor return jose.JWE.createDecrypt(key, { algorithms: ["*"] }).decrypt(jwe); } -export async function verifyJWS(jws: string, verifyCert: string, format: KeyFormat = 'pem'): Promise { +export async function verifyJWS( + jws: string, + verifyCert: string, + format: KeyFormat = "pem", +): Promise { if (!jws) throw new SingpassMyInfoError("Missing JWS data."); if (!verifyCert) throw new SingpassMyInfoError("Missing cert to verify JWS payload."); diff --git a/src/util/KeyUtil.ts b/src/util/KeyUtil.ts index fe8ff5bf..22903fa0 100644 --- a/src/util/KeyUtil.ts +++ b/src/util/KeyUtil.ts @@ -1,6 +1,6 @@ -import * as jwt from 'jsonwebtoken'; +import * as jwt from "jsonwebtoken"; -export type KeyFormat = 'json' | 'pkcs8' | 'spki' | 'pkix' | 'x509' | 'pem'; +export type KeyFormat = "json" | "pkcs8" | "spki" | "pkix" | "x509" | "pem"; export interface Key { key: string; diff --git a/src/util/Logger.ts b/src/util/Logger.ts index de45e185..0e5b5294 100644 --- a/src/util/Logger.ts +++ b/src/util/Logger.ts @@ -1,7 +1,6 @@ +/* eslint-disable no-console */ import { redactError } from "./RedactorUtil"; -// tslint:disable: no-console - export interface ILogger { log: (message: string, param?: any) => void; debug: (message: string, param?: any) => void; @@ -12,17 +11,29 @@ export interface ILogger { } export const logger: ILogger = { - log: (message: string, param?: any) => { console.log(message, redactError(param)); }, - debug: (message: string, param?: any) => { console.debug(message, redactError(param)); }, - info: (message: string, param?: any) => { console.info(message, redactError(param)); }, - trace: (message: string, param?: any) => { console.trace(message, redactError(param)); }, - warn: (message: string, param?: any) => { console.warn(message, redactError(param)); }, - error: (message: string, param?: any) => { console.error(message, redactError(param)); }, + log: (message: string, param?: any) => { + console.log(message, redactError(param)); + }, + debug: (message: string, param?: any) => { + console.debug(message, redactError(param)); + }, + info: (message: string, param?: any) => { + console.info(message, redactError(param)); + }, + trace: (message: string, param?: any) => { + console.trace(message, redactError(param)); + }, + warn: (message: string, param?: any) => { + console.warn(message, redactError(param)); + }, + error: (message: string, param?: any) => { + console.error(message, redactError(param)); + }, }; export const setLogger = (overwriteLogger: Partial) => { Object.assign(logger, { ...logger, - ...overwriteLogger + ...overwriteLogger, }); }; diff --git a/src/util/RedactorUtil.ts b/src/util/RedactorUtil.ts index 18e26045..f5c02c62 100644 --- a/src/util/RedactorUtil.ts +++ b/src/util/RedactorUtil.ts @@ -6,7 +6,7 @@ export const redactUinfin = (input: string): string => { return input; } - return input.replace(/[stfgSTFGM]\d{7}[a-zA-Z]/mg, (value) => { + return input.replace(/[stfgSTFGM]\d{7}[a-zA-Z]/gm, (value) => { return `${value.substr(0, 1)}***${value.substr(4)}`; }); }; diff --git a/src/util/SigningUtil.ts b/src/util/SigningUtil.ts index 6915b9ce..bbb70099 100644 --- a/src/util/SigningUtil.ts +++ b/src/util/SigningUtil.ts @@ -1,10 +1,11 @@ -import * as _ from "lodash"; -import * as qs from "querystring"; +/* eslint-disable max-params */ import * as crypto from "crypto"; +import * as jwt from "jsonwebtoken"; +import * as _ from "lodash"; import * as jose from "node-jose"; -import * as jwt from 'jsonwebtoken'; +import * as qs from "querystring"; +import { Key } from "./KeyUtil"; import { SingpassMyInfoError } from "./error/SingpassMyinfoError"; -import { Key } from './KeyUtil'; export enum HttpMethod { GET = "GET", @@ -21,6 +22,7 @@ interface AuthHeader { /** * Generate the Authorization header for requests to V3 MyInfo + * * @param url * @param queryParams * @param method @@ -28,7 +30,6 @@ interface AuthHeader { * @param signingKey * @param signingKeyPassphrase */ -// tslint:disable-next-line: parameters-max-number export function generateMyInfoAuthorizationHeader( url: string, queryParams: { [key: string]: any }, @@ -52,16 +53,23 @@ export function generateMyInfoAuthorizationHeader( } function generateAuthHeaderString(appId: string, nonceValue: any, signature: string, timestamp: number) { - return "PKI_SIGN app_id=\"" + appId + // Defaults to 1st part of incoming request hostname - "\",nonce=\"" + nonceValue + - "\",signature_method=\"RS256\"" + - ",signature=\"" + signature + - "\",timestamp=\"" + timestamp + - "\""; + return ( + 'PKI_SIGN app_id="' + + appId + // Defaults to 1st part of incoming request hostname + '",nonce="' + + nonceValue + + '",signature_method="RS256"' + + ',signature="' + + signature + + '",timestamp="' + + timestamp + + '"' + ); } /** * Function to generate signature for authenticated requests to myinfo v3 + * * @param authHeader * @param queryParams * @param method @@ -71,7 +79,7 @@ function generateAuthHeaderString(appId: string, nonceValue: any, signature: str */ function generateSignature( authHeader: Partial, - queryParams: { [key: string]: any; }, + queryParams: { [key: string]: any }, method: HttpMethod, url: string, key: string, @@ -89,25 +97,37 @@ function generateSignature( const baseString = method.toUpperCase() + "&" + url + "&" + baseParamsStr; const signWith = { key }; - if (!!keyPassphrase) { + if (keyPassphrase) { _.set(signWith, "passphrase", keyPassphrase); } - const signature = crypto.createSign("RSA-SHA256") - .update(baseString) - .sign(signWith, "base64"); + const signature = crypto.createSign("RSA-SHA256").update(baseString).sign(signWith, "base64"); return signature; } interface CreateClientAssertion { - issuer: string;audience:string; subject: string; + issuer: string; + audience: string; + subject: string; key: Key; } -export async function createClientAssertion({issuer, audience, subject, key}: CreateClientAssertion): Promise { +export async function createClientAssertion({ + issuer, + audience, + subject, + key, +}: CreateClientAssertion): Promise { if (!key) throw new SingpassMyInfoError("Missing key to sign client assertion."); if (!key.alg) throw new SingpassMyInfoError("Missing key algorithm to sign client assertion."); const signingKey = await jose.JWK.asKey(key.key, key.format); - return jwt.sign({}, signingKey.toPEM(true), {algorithm: key.alg, keyid: signingKey.kid, issuer, audience, subject, expiresIn: 120}); + return jwt.sign({}, signingKey.toPEM(true), { + algorithm: key.alg, + keyid: signingKey.kid, + issuer, + audience, + subject, + expiresIn: 120, + }); } diff --git a/src/util/StringUtil.ts b/src/util/StringUtil.ts index 1fe8fc11..1108d88e 100644 --- a/src/util/StringUtil.ts +++ b/src/util/StringUtil.ts @@ -1,6 +1,5 @@ import * as isBase64 from "is-base64"; - export function replaceLineBreaks(input: string): string { if (!input) { return input; diff --git a/src/util/__tests__/ConfigUtils.spec.ts b/src/util/__tests__/ConfigUtils.spec.ts index b74d4af1..b05f0618 100644 --- a/src/util/__tests__/ConfigUtils.spec.ts +++ b/src/util/__tests__/ConfigUtils.spec.ts @@ -1,9 +1,13 @@ -import { getBooleanValueFromEnv, getIntValueFromEnv, getValueFromEnv, getValueFromEnvWithoutWarn } from "../ConfigUtils"; +import { + getBooleanValueFromEnv, + getIntValueFromEnv, + getValueFromEnv, + getValueFromEnvWithoutWarn, +} from "../ConfigUtils"; const consoleWarn = jest.spyOn(global.console, "warn"); describe("ConfigUtils", () => { - afterEach(() => { consoleWarn.mockReset(); }); @@ -12,16 +16,15 @@ describe("ConfigUtils", () => { const env = process.env; it("should return trimmed value from environment", () => { - env["test"] = "test-value "; + env.test = "test-value "; expect(getValueFromEnv("test")).toEqual("test-value"); expect(consoleWarn).not.toHaveBeenCalled(); }); - it("should return default value and do not warn if env var is not available and default value is non-empty", - () => { - expect(getValueFromEnv("new_key", "cool stuff")).toEqual("cool stuff"); - expect(consoleWarn).not.toHaveBeenCalled(); - }); + it("should return default value and do not warn if env var is not available and default value is non-empty", () => { + expect(getValueFromEnv("new_key", "cool stuff")).toEqual("cool stuff"); + expect(consoleWarn).not.toHaveBeenCalled(); + }); it("should return default value and warn if env var is not available and default value is empty", () => { expect(getValueFromEnv("new_key", "")).toEqual(""); @@ -43,16 +46,15 @@ describe("ConfigUtils", () => { const env = process.env; it("should return trimmed value from environment", () => { - env["test"] = "test-value "; + env.test = "test-value "; expect(getValueFromEnvWithoutWarn("test")).toEqual("test-value"); expect(consoleWarn).not.toHaveBeenCalled(); }); - it("should return default value and do not warn if env var is not available and default value is non-empty", - () => { - expect(getValueFromEnvWithoutWarn("new_key", "cool stuff")).toEqual("cool stuff"); - expect(consoleWarn).not.toHaveBeenCalled(); - }); + it("should return default value and do not warn if env var is not available and default value is non-empty", () => { + expect(getValueFromEnvWithoutWarn("new_key", "cool stuff")).toEqual("cool stuff"); + expect(consoleWarn).not.toHaveBeenCalled(); + }); it("should return default value and do not warn if env var is not available and default value is empty", () => { expect(getValueFromEnvWithoutWarn("new_key", "")).toEqual(""); @@ -74,25 +76,25 @@ describe("ConfigUtils", () => { const env = process.env; it("should return correct value when config has valid number format", () => { - env["test"] = "123"; + env.test = "123"; expect(getIntValueFromEnv("test", 0)).toEqual(123); - env["test"] = "321 "; + env.test = "321 "; expect(getIntValueFromEnv("test", 0)).toEqual(321); }); it("should return default value when config not found", () => { - delete env["test"]; + delete env.test; expect(getIntValueFromEnv("test", 1)).toEqual(1); }); it("should return default value when config is an empty string", () => { - env["test"] = ""; + env.test = ""; expect(getIntValueFromEnv("test", 2)).toEqual(2); }); it("should return default value when config does not have valid number format", () => { - env["test"] = "not a number"; + env.test = "not a number"; expect(getIntValueFromEnv("test", 3)).toEqual(3); }); }); @@ -101,27 +103,27 @@ describe("ConfigUtils", () => { const env = process.env; it("should return the correct value when config is 'true'", () => { - env["test"] = "true"; + env.test = "true"; expect(getBooleanValueFromEnv("test")).toEqual(true); }); it("should return the correct value when config is 'false'", () => { - env["test"] = "false"; + env.test = "false"; expect(getBooleanValueFromEnv("test")).toEqual(false); }); it("should return false when the config is not found", () => { - delete env["test"]; + delete env.test; expect(getBooleanValueFromEnv("test")).toEqual(false); }); it("should return false when the config is an empty string", () => { - env["test"] = ""; + env.test = ""; expect(getBooleanValueFromEnv("test")).toEqual(false); }); it("should return false and warn when the config is not a valid boolean string", () => { - env["test"] = "some invalid string"; + env.test = "some invalid string"; expect(getBooleanValueFromEnv("test")).toEqual(false); expect(consoleWarn).toHaveBeenCalled(); }); diff --git a/src/util/__tests__/DateUtil.spec.ts b/src/util/__tests__/DateUtil.spec.ts index aa365a81..721ff81d 100644 --- a/src/util/__tests__/DateUtil.spec.ts +++ b/src/util/__tests__/DateUtil.spec.ts @@ -1,7 +1,6 @@ import { LocalDate } from "@js-joda/core"; import { DateUtils } from "../DateUtils"; - describe("isWithinPeriod", () => { it("should return false when checking if tmr is between 2 years ago and today", () => { const current = LocalDate.now(); @@ -31,13 +30,13 @@ describe("isWithinPeriod", () => { it("should return true when checking if today is between today and 9999-12-31", () => { const current = LocalDate.now(); const start = current.toString(); - const end = '9999-12-31'; + const end = "9999-12-31"; expect(DateUtils.isWithinPeriod(start, end)).toBe(true); }); it("should return false when checking if yesterday is between today and 9999-12-31", () => { const current = LocalDate.now(); const start = current.toString(); - const end = '9999-12-31'; + const end = "9999-12-31"; expect(DateUtils.isWithinPeriod(start, end, current.minusDays(1))).toBe(false); }); }); diff --git a/src/util/__tests__/JweUtil.spec.ts b/src/util/__tests__/JweUtil.spec.ts index f562e104..aecb0327 100644 --- a/src/util/__tests__/JweUtil.spec.ts +++ b/src/util/__tests__/JweUtil.spec.ts @@ -2,20 +2,22 @@ import { TokenResponse } from "../../singpass/shared-constants"; import { extractJwtHeader, extractKidFromIdToken } from "../JweUtil"; import { SingpassMyInfoError } from "../error/SingpassMyinfoError"; - describe("extractJwtHeader", () => { it("should extract JWT header", () => { - const SAMPLE_JWT = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; + const SAMPLE_JWT = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"; expect(extractJwtHeader(SAMPLE_JWT)).toStrictEqual({ - "alg": "HS256", - "typ": "JWT" + alg: "HS256", + typ: "JWT", }); }); }); describe("extractKidFromIdToken", () => { - const SAMPLE_JWT_WITHOUT_KID = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; - const SAMPLE_JWT_WITH_KID = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InRlc3Qta2lkIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.dcwcwIMbXPoifMvEnN_SlEEYOoErMH7CchiTQ8m9oy8'; + const SAMPLE_JWT_WITHOUT_KID = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"; + const SAMPLE_JWT_WITH_KID = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InRlc3Qta2lkIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.dcwcwIMbXPoifMvEnN_SlEEYOoErMH7CchiTQ8m9oy8"; it("should throw error when id_token header does not contain kid", () => { const SAMPLE_TOKEN: TokenResponse = { access_token: "", @@ -23,7 +25,7 @@ describe("extractKidFromIdToken", () => { id_token: SAMPLE_JWT_WITHOUT_KID, token_type: "", expires_in: 0, - scope: "" + scope: "", }; expect(() => extractKidFromIdToken(SAMPLE_TOKEN)).toThrow(SingpassMyInfoError); }); @@ -34,8 +36,8 @@ describe("extractKidFromIdToken", () => { id_token: SAMPLE_JWT_WITH_KID, token_type: "", expires_in: 0, - scope: "" + scope: "", }; - expect(extractKidFromIdToken(SAMPLE_TOKEN)).toEqual('test-kid'); + expect(extractKidFromIdToken(SAMPLE_TOKEN)).toEqual("test-kid"); }); }); diff --git a/src/util/__tests__/Logger.spec.ts b/src/util/__tests__/Logger.spec.ts index 71cba9ed..838526ab 100644 --- a/src/util/__tests__/Logger.spec.ts +++ b/src/util/__tests__/Logger.spec.ts @@ -8,40 +8,35 @@ describe("Logger", () => { }); }); - it.each([ - "log", - "debug", - "info", - "trace", - "warn", - "error", - ] - )("should overwrite %s method of logger", (overrideLogKey: string) => { - const mockLog = jest.fn(); - const newLogger = { - [overrideLogKey]: (message: string, param?: any) => { mockLog(`[Override] ${message}`, `[Override] ${param}`); } - }; - - // test the original log function (something that is not overrideLogKey) - const logKey = overrideLogKey === "log" ? "debug" : "log"; - - loggerModule.setLogger(newLogger); - - const logSpy = jest.spyOn(console, logKey); - - const originalMessage = "message"; - const originalParam = "param"; - - const overrideMessage = "[Override] message"; - const overrideParam = "[Override] param"; - - // tslint:disable-next-line: tsr-detect-unsafe-properties-access - loggerModule.logger[logKey](originalMessage, originalParam); - expect(logSpy).toHaveBeenCalledWith(originalMessage, originalParam); - - // tslint:disable-next-line: tsr-detect-unsafe-properties-access - loggerModule.logger[overrideLogKey](originalMessage, originalParam); - expect(mockLog).toHaveBeenCalledWith(overrideMessage, overrideParam); - }); + it.each(["log", "debug", "info", "trace", "warn", "error"])( + "should overwrite %s method of logger", + (overrideLogKey: string) => { + const mockLog = jest.fn(); + const newLogger = { + [overrideLogKey]: (message: string, param?: any) => { + mockLog(`[Override] ${message}`, `[Override] ${param}`); + }, + }; + + // test the original log function (something that is not overrideLogKey) + const logKey = overrideLogKey === "log" ? "debug" : "log"; + + loggerModule.setLogger(newLogger); + + const logSpy = jest.spyOn(console, logKey); + + const originalMessage = "message"; + const originalParam = "param"; + + const overrideMessage = "[Override] message"; + const overrideParam = "[Override] param"; + + loggerModule.logger[logKey](originalMessage, originalParam); + expect(logSpy).toHaveBeenCalledWith(originalMessage, originalParam); + + loggerModule.logger[overrideLogKey](originalMessage, originalParam); + expect(mockLog).toHaveBeenCalledWith(overrideMessage, overrideParam); + }, + ); }); }); diff --git a/src/util/__tests__/RedactorUtil.spec.ts b/src/util/__tests__/RedactorUtil.spec.ts index a70ca250..ee347b24 100644 --- a/src/util/__tests__/RedactorUtil.spec.ts +++ b/src/util/__tests__/RedactorUtil.spec.ts @@ -1,7 +1,6 @@ import { redactUinfin } from "../RedactorUtil"; describe("Redactor", () => { - describe("redactUinfin", () => { it("should redact an nric", () => { const input = "S1234567Z"; diff --git a/src/util/__tests__/SigningUtil.spec.ts b/src/util/__tests__/SigningUtil.spec.ts index 4da4251b..aea0474a 100644 --- a/src/util/__tests__/SigningUtil.spec.ts +++ b/src/util/__tests__/SigningUtil.spec.ts @@ -1,6 +1,7 @@ import * as SigningUtil from "../SigningUtil"; -const sandboxPvtKey = "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDZe3ilItIfTMCK\nsvWHP+6ZCbdc9OH/LSUugwB4NKup659UONj4d8t5dNezmL3tl3Mq8vOTRGZYnQHA\nEugicBnqBfJLJJtXK6AZvoF/0DwYNdIcbpZzLZHuCbP2mE8pvV7pbC9ceWJ+8BtZ\ns95eLUb+DlA3u1BZgDSPkr8iEawEIBXpkhjF+Xm1thFHQHmFoOKepBGYVKhg6UEh\nw7WmPtqjfecmzuh9p4cJICgZwJBMhrUSZ/+6go8lBGgYgLHnHCu68F4PWAo1AwAA\nqy4Ek/ywxmbGkg6+jqGDh6/5C5p0A8w6re84acfBzyHiTif9NHC4XffiPI0onCVp\ntkIsjRMRAgMBAAECggEAAzZB6mJwxJosFjOD0WSkbMMwrGFISZRmAhSL0bqpaSy7\n+vdZ92JBiyb3UCvRBkZgPFtyzuAWonfMwLfAXbdwUon8izD2HSjD4dpAuSpr1zAY\nTQFlgtVcXEeHAZaieKtw0IHsbL4bZWRWnkUI42guYVTE/FKHL1zOEFH3aHsaIl3V\n+LJDP6zhlD9QuRvJYNBMWgFUP9bMLqXUpYeH2q/6Dn0Z5lCHP6/wTpHrDYvfthds\nZd59rgeYk8BZ0VxY7j1kchLY28rk/8+zvwVNxORyhQebci7KHP8hJGSAOiKJsCiW\nN6Bin7ofmu9ukzfNygtQ39yM89Cg/xJRUq9QLXoS6QKBgQDzeqzaL/AMRi9o8ih4\n52W6+sqZteKdYpVzuusJ41D0dpzG8xvTl8+gseb3cCuSMomKAXrJexwNC8NlCF20\nIXdblv1/PGhKwkVWdY5grqr10jTSuJW7WIXuXlc7TR7uINwX7wV8bRQNoMk2rQcr\ns9iKvVC//BQq7c85XxzloPUVrQKBgQDkqo4wWLGTb3K5CrdwycyAWV/J1P843tmA\n6/hjO8RBuXeSI+ApEwWGnpOB5Y+wAbnbuJcAayCFtap/sA5+34E+NCn0hzLuNWD4\nP+edpib3nUkPwmKNYOQ+J8vdbTkhkwJ4cBqkVHymx3u/E/UEoblI7rF9T3TKusiV\n+cSW0Ko3dQKBgQCMVuZw8PatLHtBQ2s+nSoPB2VmCeewDdXVGiVF0sej0QZ2ykP8\nx2E+36wgbYA/yW9ro4Sxw4scne4nOxY/sJaKrVI6V4hJpwauWh4R7jvOazZVS13K\n2bCA/9HJ9Z7hZQFXrkb8PCc137p7EGq0rvoephZ4QoUhZWdvSzptxUPfFQKBgQDK\nb1+v12Vl091pid46gLyFyBmwEdvc2hUOOFlOaKPnV61OeGpDkq5qrkqCTdu2AuEq\nbrFn0m8ZUGnf3toGYhIGIqId8+8XybPOMqz2+Rg4UEtVI06iQOvvRsYJgl94pLAk\nNYKwhodQEvwvfhiFADOLKJ2DBWus6k0X0OXEani23QKBgBl/PU8oouRqx2tz1vpj\n9GxnlJZG9DUlaO/uilBjFSyrKLbNJxpYtEpSANUgg7G1GowxhqpuBXqqQAWUIgSs\nuA6XmTIguQMgtuuBcGiSfPkA1qmbQyoJqriEzbzjM/4HBW9rW3+0M7c+bhR8eczz\nhVsivdEqfvpsBTziCpVkzrA/\n-----END PRIVATE KEY-----\n"; +const sandboxPvtKey = + "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDZe3ilItIfTMCK\nsvWHP+6ZCbdc9OH/LSUugwB4NKup659UONj4d8t5dNezmL3tl3Mq8vOTRGZYnQHA\nEugicBnqBfJLJJtXK6AZvoF/0DwYNdIcbpZzLZHuCbP2mE8pvV7pbC9ceWJ+8BtZ\ns95eLUb+DlA3u1BZgDSPkr8iEawEIBXpkhjF+Xm1thFHQHmFoOKepBGYVKhg6UEh\nw7WmPtqjfecmzuh9p4cJICgZwJBMhrUSZ/+6go8lBGgYgLHnHCu68F4PWAo1AwAA\nqy4Ek/ywxmbGkg6+jqGDh6/5C5p0A8w6re84acfBzyHiTif9NHC4XffiPI0onCVp\ntkIsjRMRAgMBAAECggEAAzZB6mJwxJosFjOD0WSkbMMwrGFISZRmAhSL0bqpaSy7\n+vdZ92JBiyb3UCvRBkZgPFtyzuAWonfMwLfAXbdwUon8izD2HSjD4dpAuSpr1zAY\nTQFlgtVcXEeHAZaieKtw0IHsbL4bZWRWnkUI42guYVTE/FKHL1zOEFH3aHsaIl3V\n+LJDP6zhlD9QuRvJYNBMWgFUP9bMLqXUpYeH2q/6Dn0Z5lCHP6/wTpHrDYvfthds\nZd59rgeYk8BZ0VxY7j1kchLY28rk/8+zvwVNxORyhQebci7KHP8hJGSAOiKJsCiW\nN6Bin7ofmu9ukzfNygtQ39yM89Cg/xJRUq9QLXoS6QKBgQDzeqzaL/AMRi9o8ih4\n52W6+sqZteKdYpVzuusJ41D0dpzG8xvTl8+gseb3cCuSMomKAXrJexwNC8NlCF20\nIXdblv1/PGhKwkVWdY5grqr10jTSuJW7WIXuXlc7TR7uINwX7wV8bRQNoMk2rQcr\ns9iKvVC//BQq7c85XxzloPUVrQKBgQDkqo4wWLGTb3K5CrdwycyAWV/J1P843tmA\n6/hjO8RBuXeSI+ApEwWGnpOB5Y+wAbnbuJcAayCFtap/sA5+34E+NCn0hzLuNWD4\nP+edpib3nUkPwmKNYOQ+J8vdbTkhkwJ4cBqkVHymx3u/E/UEoblI7rF9T3TKusiV\n+cSW0Ko3dQKBgQCMVuZw8PatLHtBQ2s+nSoPB2VmCeewDdXVGiVF0sej0QZ2ykP8\nx2E+36wgbYA/yW9ro4Sxw4scne4nOxY/sJaKrVI6V4hJpwauWh4R7jvOazZVS13K\n2bCA/9HJ9Z7hZQFXrkb8PCc137p7EGq0rvoephZ4QoUhZWdvSzptxUPfFQKBgQDK\nb1+v12Vl091pid46gLyFyBmwEdvc2hUOOFlOaKPnV61OeGpDkq5qrkqCTdu2AuEq\nbrFn0m8ZUGnf3toGYhIGIqId8+8XybPOMqz2+Rg4UEtVI06iQOvvRsYJgl94pLAk\nNYKwhodQEvwvfhiFADOLKJ2DBWus6k0X0OXEani23QKBgBl/PU8oouRqx2tz1vpj\n9GxnlJZG9DUlaO/uilBjFSyrKLbNJxpYtEpSANUgg7G1GowxhqpuBXqqQAWUIgSs\nuA6XmTIguQMgtuuBcGiSfPkA1qmbQyoJqriEzbzjM/4HBW9rW3+0M7c+bhR8eczz\nhVsivdEqfvpsBTziCpVkzrA/\n-----END PRIVATE KEY-----\n"; const sandboxKeyPass = "password"; describe("generateMyInfoAuthorizationHeader using mock MyInfo STG arguments", () => { @@ -10,7 +11,8 @@ describe("generateMyInfoAuthorizationHeader using mock MyInfo STG arguments", () queryParams: { client_id: "MyInfo_SelfTest", sp_esvcId: "Singpass_Eservice_id", - attributes: "name,sex,race,nationality,dob,email,mobileno,regadd,housingtype,hdbtype,marital,edulevel,assessableincome,hanyupinyinname,aliasname,hanyupinyinaliasname,marriedname,cpfcontributions,cpfbalances", + attributes: + "name,sex,race,nationality,dob,email,mobileno,regadd,housingtype,hdbtype,marital,edulevel,assessableincome,hanyupinyinname,aliasname,hanyupinyinaliasname,marriedname,cpfcontributions,cpfbalances", }, method: SigningUtil.HttpMethod.GET, appId: "MyInfo_SelfTest", @@ -31,6 +33,8 @@ describe("generateMyInfoAuthorizationHeader using mock MyInfo STG arguments", () mockParams.signingKeyPassphrase, ); - expect(header).toBe(`PKI_SIGN app_id=\"MyInfo_SelfTest\",nonce=\"151546019130900\",signature_method=\"RS256\",signature=\"WaWVjNfMaUuY5kFsc+jeL9SZYYIFn0me+UA9DLnS4hPjZ9IDwouUKliB8X0G6cIDVJNclA1pCaAKdcEtQoGEtKzWSsaYzuUUCByEP1/QVCEJ2MsNfaV6UnfvQEkAxoA05VGgOqKI38r667drVuj/a2zEaUo514dYkkRdPdsFs9OgGwvsG6Hkn5DHl+l5G+Bj0vfrrZJL9DyOYNW23odg6EqSj+XpFVfmBoJ7htnKorJZvp0jv8fQpR9FN2rws0LDuQ0/UMpsnEWax+z8AFuRxzH88CIQFrIxNzymhIR23HS3LbzLqAbTAMyRuXiWjV0xyNufa39hJj+qaNXoicDXIw==\",timestamp=\"1515460191309\"`); + expect(header).toBe( + `PKI_SIGN app_id="MyInfo_SelfTest",nonce="151546019130900",signature_method="RS256",signature="WaWVjNfMaUuY5kFsc+jeL9SZYYIFn0me+UA9DLnS4hPjZ9IDwouUKliB8X0G6cIDVJNclA1pCaAKdcEtQoGEtKzWSsaYzuUUCByEP1/QVCEJ2MsNfaV6UnfvQEkAxoA05VGgOqKI38r667drVuj/a2zEaUo514dYkkRdPdsFs9OgGwvsG6Hkn5DHl+l5G+Bj0vfrrZJL9DyOYNW23odg6EqSj+XpFVfmBoJ7htnKorJZvp0jv8fQpR9FN2rws0LDuQ0/UMpsnEWax+z8AFuRxzH88CIQFrIxNzymhIR23HS3LbzLqAbTAMyRuXiWjV0xyNufa39hJj+qaNXoicDXIw==",timestamp="1515460191309"`, + ); }); }); diff --git a/src/util/__tests__/StringUtil.spec.ts b/src/util/__tests__/StringUtil.spec.ts index cbfd27ee..cbb0a7bf 100644 --- a/src/util/__tests__/StringUtil.spec.ts +++ b/src/util/__tests__/StringUtil.spec.ts @@ -1,6 +1,5 @@ import { isBase64Valid, replaceLineBreaks } from "../StringUtil"; - describe("replaceLineBreaks", () => { it("should replace double-blackslash-n with linebreaks", () => { expect(replaceLineBreaks("line1\\nline2\\nline3")).toEqual("line1\nline2\nline3"); @@ -10,26 +9,30 @@ describe("replaceLineBreaks", () => { describe("isBase64Valid", () => { it("should return true for base64 valid strings", () => { expect(isBase64Valid("dGhlIGZvcmNlIGlzIHN0cm9uZyB3aXRoIHRoaXMgb25l")).toEqual(true); - expect(isBase64Valid( - "eyJyZWNpcGllbnRzIjpbeyJlbmNyeXB0ZWRfa2V5IjoiSnBSeEQyNWMzdExXNVFmSFhPU1VtN" + - "mhSUERoQXQtbzNLQnlBSlFGMU83MmE3STI2MGh6Q2d3In1dLCJwcm90ZWN0ZWQiOiJleUpoYk" + - "djaU9pSkJNalUyUzFjaUxDSnJhV1FpT2lJNFptUm5TbWhLTFRsdVRHVnhhbFpUYTJGemFVODJ" + - "kVE5OUXpobGRraFhWMVJ6Vm5Fell6bHhUbGhOSWl3aVpXNWpJam9pUVRFeU9FTkNReTFJVXpJ" + - "MU5pSjkiLCJpdiI6ImlicFVfM2hoUnpEbFBib2U3NThsaFEiLCJjaXBoZXJ0ZXh0IjoiYTRCV" + - "FRsM2kyNENTSktxX1pvb2hfTlppYUlwNk1DZHJvc25LRUppRi13Ymg5cmFjeFJnM212Szl4X0" + - "JSVS0zQk5KSFU1ZG9zY0NvTE5aQnZnOVFrZWlBcFZtcEk2Z09paGdCb1R6UDIwMU0iLCJ0YWc" + - "iOiJHSDFkVWpfZzIweGwxdVEtUXBaQnl3In0", - )).toEqual(true); + expect( + isBase64Valid( + "eyJyZWNpcGllbnRzIjpbeyJlbmNyeXB0ZWRfa2V5IjoiSnBSeEQyNWMzdExXNVFmSFhPU1VtN" + + "mhSUERoQXQtbzNLQnlBSlFGMU83MmE3STI2MGh6Q2d3In1dLCJwcm90ZWN0ZWQiOiJleUpoYk" + + "djaU9pSkJNalUyUzFjaUxDSnJhV1FpT2lJNFptUm5TbWhLTFRsdVRHVnhhbFpUYTJGemFVODJ" + + "kVE5OUXpobGRraFhWMVJ6Vm5Fell6bHhUbGhOSWl3aVpXNWpJam9pUVRFeU9FTkNReTFJVXpJ" + + "MU5pSjkiLCJpdiI6ImlicFVfM2hoUnpEbFBib2U3NThsaFEiLCJjaXBoZXJ0ZXh0IjoiYTRCV" + + "FRsM2kyNENTSktxX1pvb2hfTlppYUlwNk1DZHJvc25LRUppRi13Ymg5cmFjeFJnM212Szl4X0" + + "JSVS0zQk5KSFU1ZG9zY0NvTE5aQnZnOVFrZWlBcFZtcEk2Z09paGdCb1R6UDIwMU0iLCJ0YWc" + + "iOiJHSDFkVWpfZzIweGwxdVEtUXBaQnl3In0", + ), + ).toEqual(true); }); it("should return false for base64 invalid strings", () => { expect(isBase64Valid("dGhlIGZvcmNlIGlzIH\nN0cm9uZyB3aXRoIHRoaXMgb25l")).toEqual(false); - expect(isBase64Valid("dGhlIGZvcmNlIGlzIH\"N0cm9uZyB3aXRoIHRoaXMgb25l")).toEqual(false); - expect(isBase64Valid( - "eyJyZWNpcGllbnRzIjpbeyJlbmNyeXB0ZWRfa2V5IjoiSnBSeEQyNWMzdExXNVFmSFhPU1VtN" + - "mhSUERoQXQtbzNLQnlBSlFGMU83MmE3STI2MGh6Q2d3In1dLCJwcm90ZWN0ZWQiOiJleUpoYk" + - "djaU9pSkJNalUyUzFjaUxDSnJhV1FpT2lJNFptUm5TbWhLTFRsdVRHVnhhbFpUYTJGemFVODJ" + - "kVE5OUXpobGRraFhWMVJ6Vm5Fell6bHhUbGhOSWl3aVpXNWpJam9pUVRFeU9FTkNReTFJVXpJ;", - )).toEqual(false); + expect(isBase64Valid('dGhlIGZvcmNlIGlzIH"N0cm9uZyB3aXRoIHRoaXMgb25l')).toEqual(false); + expect( + isBase64Valid( + "eyJyZWNpcGllbnRzIjpbeyJlbmNyeXB0ZWRfa2V5IjoiSnBSeEQyNWMzdExXNVFmSFhPU1VtN" + + "mhSUERoQXQtbzNLQnlBSlFGMU83MmE3STI2MGh6Q2d3In1dLCJwcm90ZWN0ZWQiOiJleUpoYk" + + "djaU9pSkJNalUyUzFjaUxDSnJhV1FpT2lJNFptUm5TbWhLTFRsdVRHVnhhbFpUYTJGemFVODJ" + + "kVE5OUXpobGRraFhWMVJ6Vm5Fell6bHhUbGhOSWl3aVpXNWpJam9pUVRFeU9FTkNReTFJVXpJ;", + ), + ).toEqual(false); }); }); diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 7782a5a8..00000000 --- a/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./shared-config/tslint.json" -}