Pre-Registration UI Upgrade
The Pre-Registration UI-spec file pre-registration-demographic.json
was previously included in the mosip-config repository in version 1.1.5.*, but starting from version 1.2.0, it should be manually published using the master data UI-spec API.
How to define and publish UI specifications?
Go to Swagger
clientIdSecretKey
to get the Authentication token:{env_url}/v1/authmanager/swagger-ui/index.html?configUrl=/v1/authmanager/v3/api-docs/swagger-config#/authmanager/clientIdSecretKey "request": { "clientId": "mosip-reg-client", "secretKey": {secret_key}, "appId": "admin" }
Go to Swagger
defineUISpec
to define the new UI Specifications
{env_url}/v1/masterdata/swagger-ui/index.html?configUrl=/v1/masterdata/v3/api-docs/swagger-config#/ui-spec-controller/defineUISpec"
request": {
"identitySchemaId": {id of latest identity schema},
"domain": "pre-registration",
"type": "schema",
"title": "Pre-registration UI Specification",
"description": "Pre-registration UI Specification",
"jsonspec": {Add New UI Spec}
}
Go to
publishUISpec
to Publish the newly defined UI Spec
{env_url}/v1/masterdata/swagger-ui/index.html?configUrl=/v1/masterdata/v3/api-docs/swagger-config#/ui-spec-controller/publishUISpec
get the id from the defineUISpec response and add it in request
"request": {
"id": "{}",
"effectiveFrom": "2022-07-28T08:42:07.706Z"
}
Once done, check the
master.ui_spec
table.
Changes in UI Specifications
The Pre-registration UI Specifications document provides details about all UI spec attributes. This document can be referred to in order to identify the changes between versions 1.1.5 and 1.2.0.1.
The following new attributes have been added:
subType (optional - for dynamic dropdowns)
transliteration (mandatory to enable transliteration)
locationHierarchyLevel (mandatory to be added in each location dropdown to indicate the location hierarchy level)
parentLocCode (mandatory to be added in the topmost dropdown in the location hierarchy to indicate the parent for it. It can also be omitted, in which case the mosip.country.code property will be used)
gender
Attribute should be mandatory, and the parameterrequired
should betrue
The control type for the date of birth should be changed to
ageDate
The labelName should be provided with the "languageCode" as the "key" and the label as the "value". Example: {"labelName": { "eng": "Date Of Birth", "ara": "تاريخ الولادة", "fra": "Date de naissance" }}
visibleCondition (optional)
requiredCondition (optional)
alignmentGroup (optional)
containerStyle (optional)
headerStyle (optional)
changeAction (optional)
UI Specifications of 1.1.5 and 1.2.0
1.1.5
{
"identity": [{
"id": "IDSchemaVersion",
"description": "ID Schema Version",
"type": "number",
"controlType": null,
"fieldType": "default",
"inputRequired": false,
"validators": [],
"required": true
},
{
"id": "fullName",
"description": "Enter Full Name",
"labelName": {
"eng": "Full Name",
"ara": "الاسم الكامل",
"fra": "Nom complet"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": true
},
{
"id": "dateOfBirth",
"description": "Enter DOB",
"labelName": {
"eng": "Date Of Birth",
"ara": "تاريخ الولادة",
"fra": "Date de naissance"
},
"controlType": "date",
"inputRequired": true,
"fieldType": "default",
"type": "string",
"validators": [],
"required": true
},
{
"id": "gender",
"description": "Enter Gender",
"labelName": {
"eng": "Gender",
"ara": "جنس",
"fra": "Le genre"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "dynamic",
"type": "simpleType",
"validators": [
],
"required": true
},
{
"id": "residenceStatus",
"description": "Residence status",
"labelName": {
"eng": "Residence Status",
"ara": "حالة الإقامة",
"fra": "Statut de résidence"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "dynamic",
"type": "simpleType",
"validators": [
],
"required": true
},
{
"id": "addressLine1",
"description": "addressLine1",
"labelName": {
"eng": "Address Line1",
"ara": "العنوان السطر 1",
"fra": "Adresse 1"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": true
},
{
"id": "addressLine2",
"description": "addressLine2",
"labelName": {
"eng": "Address Line2",
"ara": "العنوان السطر 2",
"fra": "Adresse 2"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": false
},
{
"id": "addressLine3",
"description": "addressLine3",
"labelName": {
"eng": "Address Line3",
"ara": "العنوان السطر 3",
"fra": "Adresse 3"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": false
},
{
"id": "region",
"description": "region",
"labelName": {
"eng": "Region",
"ara": "منطقة",
"fra": "Région"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": true
},
{
"id": "province",
"description": "province",
"labelName": {
"eng": "Province",
"ara": "المحافظة",
"fra": "Province"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": true
},
{
"id": "city",
"description": "city",
"labelName": {
"eng": "City",
"ara": "مدينة",
"fra": "Ville"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": [
]
}],
"required": true
},
{
"id": "zone",
"description": "zone",
"labelName": {
"eng": "Zone",
"ara": "منطقة",
"fra": "Zone"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [
],
"required": true
},
{
"id": "postalCode",
"description": "postalCode",
"labelName": {
"eng": "Postal Code",
"ara": "الكود البريدى",
"fra": "code postal"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "default",
"type": "string",
"validators": [{
"type": "regex",
"validator": "^[(?i)A-Z0-9]{5}$|^NA$",
"arguments": [
]
}],
"required": true
},
{
"id": "phone",
"description": "phone",
"labelName": {
"eng": "Phone",
"ara": "هاتف",
"fra": "Téléphone"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "string",
"validators": [{
"type": "regex",
"validator": "^([6-9]{1})([0-9]{9})$",
"arguments": [
]
}],
"required": true
},
{
"id": "email",
"description": "email",
"labelName": {
"eng": "Email",
"ara": "البريد الإلكتروني",
"fra": "Email"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "string",
"validators": [{
"type": "regex",
"validator": "^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-zA-Z]{2,})$",
"arguments": [
]
}],
"required": true
},
{
"id": "proofOfAddress",
"description": "proofOfAddress",
"labelName": [{
"value": "Address Proof",
"language": "eng"
}],
"controlType": "fileupload",
"inputRequired": true,
"validators": [
],
"required": false
},
{
"id": "proofOfIdentity",
"description": "proofOfIdentity",
"labelName": [{
"value": "Identity Proof",
"language": "eng"
}],
"controlType": "fileupload",
"inputRequired": true,
"validators": [
],
"required": true
},
{
"id": "proofOfRelationship",
"description": "proofOfRelationship",
"labelName": [{
"value": "Relationship Proof",
"language": "eng"
}],
"controlType": "fileupload",
"inputRequired": true,
"validators": [
],
"required": true
},
{
"id": "proofOfDateOfBirth",
"description": "proofOfDateOfBirth",
"labelName": [{
"value": "DOB Proof",
"language": "eng"
}],
"controlType": "fileupload",
"inputRequired": true,
"validators": [
],
"required": true
},
{
"id": "proofOfException",
"description": "proofOfException",
"labelName": [{
"value": "Exception Proof",
"language": "eng"
}],
"controlType": "fileupload",
"inputRequired": true,
"validators": [
],
"required": true
}
],
"locationHierarchy": ["region", "province", "city", "zone", "postalCode"]
}
1.2.0
{
"identity": {
"identity": [{
"id": "IDSchemaVersion",
"description": "ID Schema Version",
"type": "number",
"controlType": null,
"fieldType": "default",
"inputRequired": false,
"validators": [],
"required": true
}, {
"id": "fullName",
"description": "Enter Full Name",
"labelName": {
"eng": "Full Name",
"ara": "الاسم الكامل",
"fra": "Nom complet"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": []
}],
"required": true,
"transliteration": true
}, {
"id": "dateOfBirth",
"description": "Enter DOB",
"labelName": {
"eng": "Date Of Birth",
"ara": "تاريخ الولادة",
"fra": "Date de naissance"
},
"controlType": "ageDate",
"inputRequired": true,
"fieldType": "default",
"type": "string",
"validators": [],
"required": true
}, {
"id": "gender",
"description": "Enter Gender",
"labelName": {
"eng": "Gender",
"ara": "جنس",
"fra": "Le genre"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "dynamic",
"subType": "gender",
"type": "simpleType",
"validators": [],
"required": true
}, {
"id": "residenceStatus",
"description": "Residence status",
"labelName": {
"eng": "Residence Status",
"ara": "حالة الإقامة",
"fra": "Statut de résidence"
},
"controlType": "dropdown",
"inputRequired": true,
"fieldType": "dynamic",
"subType": "residenceStatus",
"type": "simpleType",
"validators": [],
"required": true
}, {
"id": "addressLine1",
"description": "addressLine1",
"labelName": {
"eng": "Address Line1",
"ara": "العنوان السطر 1",
"fra": "Adresse 1"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": []
}],
"required": true,
"transliteration": true
}, {
"id": "addressLine2",
"description": "addressLine2",
"labelName": {
"eng": "Address Line2",
"ara": "العنوان السطر 2",
"fra": "Adresse 2"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": []
}],
"required": false,
"transliteration": true
}, {
"id": "addressLine3",
"description": "addressLine3",
"labelName": {
"eng": "Address Line3",
"ara": "العنوان السطر 3",
"fra": "Adresse 3"
},
"controlType": "textbox",
"inputRequired": true,
"fieldType": "default",
"type": "simpleType",
"validators": [{
"type": "regex",
"validator": "^(?=.{0,50}$).*",
"arguments": []
}],
"required": false,
"transliteration": true
}, {
"id": "region",
"description": "region",