{
  "openapi": "3.0.0",
  "info": {
    "title": "Solar Category Schema",
    "description": "The API will be organized around REST. Our API will have predictable, resource-oriented URLs, and will use HTTP response codes to indicate API errors. ",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://mconnect.creditfair.in",
      "description": "mconnect uat server"
    }
  ],
  "paths": {
    "/customerRest/customerSrv/createCustomer": {
      "post": {
        "tags": [
          "Mconnect Create Customer"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Customer name is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "fatherName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "applicantReligion": {
                "type": [
                  "string",
                  "null"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Please select valid religion",
                  "CF_code": "CF300"
                }
              },
              "communicationMobileNumber": {
                "type": "string",
                "pattern": "^[0-9]\\d{9}$",
                "minLength": 10,
                "maxLength": 10,
                "message": {
                  "return_code": "201002",
                  "message": "Communication Mobile Number is required in the correct format & length. It should be string",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "isCommunicationMobileNumberAadharLinked": {
                "type": "boolean",
                "message": {
                  "return_code": "201002",
                  "message": "Please confirm if the communication mobile number is aadhaar linked",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "aadharLinkedMobileNumber": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^[0-9]\\d{9}$",
                "message": {
                  "return_code": "201002",
                  "message": "Aadhar Linked Mobile Number is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "email": {
                "type": "string",
                "pattern": "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,7}",
                "message": {
                  "return_code": "201002",
                  "message": "Customer email is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "aadharNumber": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{12}$",
                "message": {
                  "return_code": "201002",
                  "message": "Aadhar Number is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "gender": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1,
                "enum": [
                  "F",
                  "M"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Gender is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "maritalStatus": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1,
                "enum": [
                  "M",
                  "S"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Marital status is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "dateofBirth": {
                "description": "dateofBirth",
                "type": "string",
                "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",
                "message": {
                  "return_code": "201002",
                  "message": "Date of Birth is Required Property",
                  "CF_code": "CF300",
                  "pattern": "Correct format of Date Of Birth is dd-mmm-yyyy"
                }
              },
              "panNumber": {
                "type": "string",
                "pattern": "^[A-Z]{5}[0-9]{4}[A-Z]{1}$",
                "minLength": 10,
                "maxLength": 10,
                "message": {
                  "return_code": "201002",
                  "message": "PAN Number is required in the correct format. It should be captial",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "preferredLanguage": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "enum": [
                  "EN",
                  "HI",
                  "MR",
                  "GU",
                  "BE",
                  "PU",
                  "TA",
                  "TE",
                  "KA",
                  "MA",
                  "UR",
                  "OD",
                  "ML"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Preferred language is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "centreID": {
                "type": [
                  "integer",
                  "null"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Center ID is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "anchorMerchantID": {
                "description": "anchorMerchantID",
                "type": [
                  "number",
                  "null"
                ],
                "message": {
                  "returnCode": "201002",
                  "returnText": "anchorMerchantID is required",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "uniqueCustomerId": {
                "type": [
                  "string",
                  "null"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Unique customer ID is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "loanAmount": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "minimum": 10000,
                "maximum": 2000000,
                "message": {
                  "message": "Loan amount is required and it should be between 10000 to 2000000",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              },
              "productName": {
                "description": "Error",
                "type": [
                  "string",
                  "null"
                ],
                "message": {
                  "message": "Product Name is required in the correct format",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              },
              "offerId": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "message": {
                  "message": "Offer Id is required in the correct format",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              },
              "inverterToBeInstalled": {
                "type": "string",
                "message": {
                  "return_code": "201006",
                  "message": "inverterToBeInstalled is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "panelToBeInstalled": {
                "type": "string",
                "message": {
                  "return_code": "201006",
                  "message": "panelToBeInstalled is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "monthlyPowerBill": {
                "type": [
                  "integer",
                  "null"
                ],
                "message": {
                  "return_code": "201006",
                  "message": "monthlyPowerBill is required",
                  "CF_code": "CF300"
                }
              },
              "nameChange": {
                "type": [
                  "boolean"
                ],
                "message": {
                  "return_code": "201006",
                  "message": "Electricity Name Change - nameChange is required",
                  "CF_code": "CF300"
                }
              },
              "kwInstallation": {
                "type": [
                  "number",
                  "null"
                ],
                "message": {
                  "return_code": "201006",
                  "message": "kwInstallation is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "grossProjectValue": {
                "type": [
                  "number",
                  "null"
                ],
                "message": {
                  "return_code": "201006",
                  "message": "grossProjectValue is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "subsidyAmount": {
                "type": [
                  "number",
                  "null"
                ],
                "message": {
                  "return_code": "201006",
                  "message": "subsidyAmount is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "typeOfCustomer": {
                "type": [
                  "integer",
                  "null"
                ],
                "minLength": 1,
                "maxLength": 1,
                "enum": [
                  1,
                  2,
                  3,
                  4,
                  5
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Please select valid type of customer",
                  "CF_code": "CF300"
                }
              },
              "solarPowerType": {
                "type": "integer",
                "minLength": 1,
                "maxLength": 1,
                "enum": [
                  1,
                  2,
                  3
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Please select valid solar power type",
                  "CF_code": "CF300"
                }
              },
              "typeOfCustomerApplication": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Individual",
                  "Non-Individual"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Please select valid type of customer application value",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "coApplicant": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 3,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant name is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "phone": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 10,
                    "maxLength": 10,
                    "pattern": "^[0-9]\\d{9}$",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant phone is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "email": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "pattern": "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,7}",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant email is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "gender": {
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "F",
                          "M"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Co-Applicant gender is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "maritalStatus": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 1,
                    "maxLength": 1,
                    "enum": [
                      "M",
                      "U"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant marital status is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "dateofBirth": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 10,
                    "maxLength": 10,
                    "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant date of birth is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "panNumber": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "pattern": "^[A-Z]{5}[0-9]{4}[A-Z]{1}$",
                    "minLength": 10,
                    "maxLength": 10,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant PAN Number is required in the correct format. It should be captial",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                }
              },
              "addresses": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "addrType": {
                      "description": "Error",
                      "type": "string",
                      "enum": [
                        "CURRES",
                        "PERMA",
                        "INSTALLATION"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Address type is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "addrLine1": {
                      "description": "Error",
                      "type": [
                        "string"
                      ],
                      "minLength": 1,
                      "message": {
                        "return_code": "201002",
                        "message": "Address line1 is required.",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "addrLine2": {
                      "description": "Error",
                      "type": [
                        "string"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Address line2 is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "landmark": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "minLength": 1,
                      "message": {
                        "return_code": "201002",
                        "message": "Landmark is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "city": {
                      "description": "Error",
                      "type": [
                        "string"
                      ],
                      "minLength": 1,
                      "message": {
                        "return_code": "201002",
                        "message": "City is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "state": {
                      "description": "Error",
                      "anyOf": [
                        {
                          "type": [
                            "string"
                          ],
                          "enum": [
                            "AN",
                            "AP",
                            "AR",
                            "AS",
                            "BR",
                            "CH",
                            "CG",
                            "DN",
                            "DD",
                            "DL",
                            "GA",
                            "GJ",
                            "HR",
                            "HP",
                            "JK",
                            "JH",
                            "KA",
                            "KL",
                            "LD",
                            "MP",
                            "MH",
                            "MN",
                            "ML",
                            "MZ",
                            "NL",
                            "OR",
                            "PY",
                            "PB",
                            "RJ",
                            "SK",
                            "TN",
                            "TR",
                            "UP",
                            "UL",
                            "WB",
                            "TS"
                          ],
                          "message": {
                            "return_code": "201002",
                            "message": "State is required",
                            "CF_code": "CF300",
                            "pattern": ""
                          }
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "pincode": {
                      "type": [
                        "string"
                      ],
                      "minLength": 6,
                      "maxLength": 6,
                      "message": {
                        "return_code": "201002",
                        "message": "Pincode is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "addressStatus": {
                      "type": "string",
                      "enum": [
                        "OWNED",
                        "RENTED",
                        "PARENTS HOUSE",
                        "Self Owned",
                        "Parent Owned",
                        "Rented With Family",
                        "Rented With Friend",
                        "Company Allotted"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Please select valid address status",
                        "CF_code": "CF300"
                      }
                    }
                  },
                  "required": [
                    "addrType",
                    "addrLine1",
                    "addrLine2",
                    "city",
                    "state",
                    "pincode"
                  ]
                }
              },
              "references": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Reference name is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "phone": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Reference phone is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "relation": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Relation is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    }
                  }
                }
              },
              "profession": {
                "type": "object",
                "properties": {
                  "professionType": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2,
                    "enum": [
                      "U",
                      "S",
                      "B",
                      "SB",
                      "SP",
                      "P",
                      "H"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Profession type is required in the correct format",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "professionDetails": {
                    "type": "object",
                    "properties": {
                      "company": {
                        "type": "string",
                        "minLength": 1,
                        "message": {
                          "return_code": "201002",
                          "message": "Company is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "companyEmail": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Company Email is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "companyPhone": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "minLength": 10,
                        "maxLength": 10,
                        "pattern": "^[0-9]\\d{9}$",
                        "message": {
                          "return_code": "201002",
                          "message": "Company phone is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "monthlyIncome": {
                        "type": "integer",
                        "minLength": 4,
                        "pattern": "^(\\s*\\w\\s*){2,}$",
                        "message": {
                          "return_code": "201002",
                          "message": "Monthly income is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "designation": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Designation is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "department": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Department is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "companyAddress": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Company address is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "landmark": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "returnText": "Landmark is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "city": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "City is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      "state": {
                        "anyOf": [
                          {
                            "type": [
                              "string"
                            ],
                            "enum": [
                              "AN",
                              "AP",
                              "AR",
                              "AS",
                              "BR",
                              "CH",
                              "CG",
                              "DN",
                              "DD",
                              "DL",
                              "GA",
                              "GJ",
                              "HR",
                              "HP",
                              "JK",
                              "JH",
                              "KA",
                              "KL",
                              "LD",
                              "MP",
                              "MH",
                              "MN",
                              "ML",
                              "MZ",
                              "NL",
                              "OR",
                              "PY",
                              "PB",
                              "RJ",
                              "SK",
                              "TN",
                              "TR",
                              "UP",
                              "UL",
                              "WB",
                              "TS"
                            ],
                            "message": {
                              "return_code": "201002",
                              "message": "State is required",
                              "CF_code": "CF300",
                              "pattern": ""
                            }
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "pincode": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "minLength": 6,
                        "maxLength": 6,
                        "message": {
                          "return_code": "201002",
                          "message": "Pincode is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    }
                  }
                }
              },
              "customersBankInfo": {
                "type": "object",
                "properties": {
                  "accountHolder": {
                    "minLength": 3,
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Account holder is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "bankBranch": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Bank branch is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "bankName": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Bank name is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "accountNumber": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Account Number is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "accountType": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Account type is required in the correct format",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "bankIfsc": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Bank IFSC is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "salaryAccount": {
                    "type": [
                      "boolean"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Salary account is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                }
              },
              "ebillDetails": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "pattern": "^[a-zA-Z0-9]*$",
                    "message": {
                      "return_code": "201002",
                      "message": "Customer ID is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "service_provider": {
                    "type": "string",
                    "message": {
                      "return_code": "201002",
                      "message": "Service provider is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "district": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "District is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                }
              },
              "additionalDetails": {
                "type": "object",
                "properties": {
                  "customerName": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 3,
                    "message": {
                      "return_code": "201002",
                      "message": "Customer name is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "phone": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "pattern": "^[0-9]{10}$|^(\\s*\\w\\s*){2,}$",
                    "minLength": 10,
                    "maxLength": 10,
                    "message": {
                      "return_code": "201002",
                      "message": "Phone number is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "relation": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "MOTHER",
                          "FATHER",
                          "BROTHER",
                          "SISTER",
                          "HUSBAND",
                          "WIFE",
                          "SON",
                          "DAUGHTER",
                          "GRANDMOTHER",
                          "GRANDFATHER",
                          "GRANDSON",
                          "GRANDDAUGHTER"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Relation is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Relation is required in correct format",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                }
              },
              "docDetails": {
                "type": "object",
                "properties": {
                  "docFormat": {
                    "description": "Error",
                    "type": [
                      "string"
                    ],
                    "enum": [
                      "jpg",
                      "gif",
                      "mp4",
                      "jpeg",
                      "png",
                      "bmp",
                      "tif",
                      "tiff",
                      "xlsx",
                      "xls",
                      "pdf",
                      "txt",
                      "odt",
                      "xml",
                      ""
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Document format is required in the correct format",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "docPassword": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Document password is required in the correct format.",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "docContent": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Base64 encoded document is required in the correct format",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "consumerNameOnBill": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Please provide consumer name on electricity bill",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "other_service_provider": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Please provide service provider name",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                }
              }
            },
            "required": [
              "name",
              "communicationMobileNumber",
              "isCommunicationMobileNumberAadharLinked",
              "aadharLinkedMobileNumber",
              "aadharNumber",
              "email",
              "gender",
              "applicantReligion",
              "maritalStatus",
              "dateofBirth",
              "panNumber",
              "preferredLanguage",
              "inverterToBeInstalled",
              "panelToBeInstalled",
              "monthlyPowerBill",
              "kwInstallation",
              "nameChange",
              "grossProjectValue",
              "subsidyAmount",
              "coApplicant",
              "addresses",
              "references",
              "profession",
              "loanAmount",
              "offerId"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.fatherName",
                  "equals",
                  "null"
                ],
                "true": {
                  "operation": "returnResponse",
                  "message": "Please input valid Father Name or else pass it as null",
                  "CF_code": "CF300",
                  "return_code": "201002"
                }
              },
              {
                "conditions": [
                  "$request.panNumber",
                  "notEquals",
                  "$request.coApplicant.panNumber"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "message": "Applicant & co-Applicant PAN can't be same",
                  "CF_code": "CF300"
                }
              },
              {
                "conditions": [
                  "$request.communicationMobileNumber",
                  "notEquals",
                  "$request.coApplicant.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant mobile numbers can't be same"
                }
              },
              {
                "conditions": [
                  "$request.email",
                  "notEquals",
                  "$request.coApplicant.email"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant email can't be same"
                }
              },
              {
                "conditions": [
                  "$referenceCount",
                  "greaterThan",
                  "3"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Only two references are allowed"
                }
              },
              {
                "conditions": [
                  "$request.references[0].phone",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.references[0].phone",
                    "notEquals",
                    "$request.references[1].phone"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Both references phone can't be same"
                  }
                }
              },
              {
                "conditions": [
                  "$request.references[0].phone",
                  "notEquals",
                  "$request.communicationMobileNumber"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & applicant phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[1].phone",
                  "notEquals",
                  "$request.communicationMobileNumber"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & applicant phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[0].phone",
                  "notEquals",
                  "$request.coApplicant.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & co-applicant phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[1].phone",
                  "notEquals",
                  "$request.coApplicant.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & co-applicant phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[0].phone",
                  "notEquals",
                  "$request.profession.professionDetails.companyPhone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & company phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[1].phone",
                  "notEquals",
                  "$request.profession.professionDetails.companyPhone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & company phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.profession.professionDetails.companyPhone",
                  "notEquals",
                  "$request.communicationMobileNumber"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Applicant & company phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.profession.professionDetails.companyPhone",
                  "notEquals",
                  "$request.coApplicant.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Co-Applicant & company phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.coApplicant.name",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.phone",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Co-Applicant phone should be mandatory"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant.name",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.email",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Co-Applicant email should be mandatory"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant.name",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.gender",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Co-Applicant gender should be mandatory"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant.name",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.dateofBirth",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Co-Applicant dateofBirth should be mandatory"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant.name",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.panNumber",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Co-Applicant panNumber should be mandatory"
                  }
                }
              },
              {
                "conditions": [
                  "$request.customersBankInfo.accountHolder",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.customersBankInfo.accountType",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Account type is required"
                  }
                }
              },
              {
                "conditions": [
                  "$request.customersBankInfo.accountHolder",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.customersBankInfo.bankName",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Bank name is required"
                  }
                }
              },
              {
                "conditions": [
                  "$request.customersBankInfo.accountHolder",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.customersBankInfo.accountNumber",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Account number is required"
                  }
                }
              },
              {
                "conditions": [
                  "$request.customersBankInfo.accountHolder",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.customersBankInfo.bankBranch",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Bank branch is required"
                  }
                }
              },
              {
                "conditions": [
                  "$request.customersBankInfo.accountHolder",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.customersBankInfo.bankIfsc",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Bank IFSC is required"
                  }
                }
              },
              {
                "conditions": [
                  "$request.addresses",
                  "isNotNull"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "CF_code": "CF300",
                  "message": "Address is required"
                }
              },
              {
                "conditions": [
                  "$addressCount",
                  "greaterThan",
                  "4"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "CF_code": "CF300",
                  "message": "Address should contain CURRES, PERMA & INSTALLATION parameters"
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.ebillDetails.service_provider",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please provide service provider details",
                    "return_code": "201002",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.ebillDetails.service_provider",
                    "equals",
                    "UPPCL"
                  ],
                  "true": {
                    "conditions": [
                      "$request.ebillDetails.district",
                      "isNotNull"
                    ],
                    "false": {
                      "operation": "returnResponse",
                      "return_code": "201004",
                      "message": "District is required for UPPCL provider",
                      "CF_code": "CF300"
                    }
                  }
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "false": {
                  "conditions": [
                    "$request.docDetails.docContent",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please provide document content or electricity bill details",
                    "CF_code": "CF300",
                    "return_code": "201002"
                  }
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "false": {
                  "conditions": [
                    "$request.docDetails.docFormat",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please provide document format or electricity bill details",
                    "CF_code": "CF300",
                    "return_code": "201002"
                  }
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "false": {
                  "conditions": [
                    "$request.docDetails.consumerNameOnBill",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please provide consumer name on the bill or electricity bill details",
                    "CF_code": "CF300",
                    "return_code": "201002"
                  }
                }
              },
              {
                "conditions": [
                  "$request.ebillDetails.customer_id",
                  "isNotNull"
                ],
                "false": {
                  "conditions": [
                    "$request.docDetails.other_service_provider",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please provide other service provider name or electricity bill details",
                    "CF_code": "CF300",
                    "return_code": "201002"
                  }
                }
              },
              {
                "conditions": [
                  "$request.applicantReligion",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.applicantReligion",
                    "in",
                    "['HINDU','MUSLIM','CHRISTIAN','SIKH','JAIN','ZOROASTRIANS','BUDDHIST','PARSI','BAHAI','null']"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "message": "Please select valid religion",
                    "CF_code": "CF300",
                    "return_code": "201002"
                  }
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "applicationNo": "get_loan_application_number->$consumer_application_id,$merchant_id",
                "cif": "$customers_id",
                "coif": "$customers_co_app_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "$responseMessage",
                  "additionalText": "$additionalMessage"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF500": {
            "content": {
              "application/json": "null",
              "status_code": 400
            }
          }
        },
        "functions": {
          "init": [
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "customers_co_app_id",
                "value": 0
              }
            },
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "length",
              "key": "$request.references",
              "stateKey": "referenceCount"
            },
            {
              "operation": "length",
              "key": "$request.addresses",
              "stateKey": "addressCount"
            },
            {
              "conditions": [
                "$request.centreID",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "value": "0",
                "stateKey": "center_number"
              },
              "true": {
                "operation": "setData",
                "value": "$request.centreID",
                "stateKey": "center_number"
              }
            },
            {
              "conditions": [
                "$request.anchorMerchantID",
                "isNotNull"
              ],
              "true": {
                "operation": "query",
                "name": "isAnchorMerchantValid",
                "queryType": "select",
                "table": "merchant",
                "columns": [
                  "id"
                ],
                "clause": {
                  "where": [
                    "anchor_merchant_id",
                    "id"
                  ],
                  "logicalOperator": "AND",
                  "queryParams": [
                    "$merchant_details.id",
                    "$request.anchorMerchantID"
                  ]
                },
                "stateKey": "isAnchorMerchantValid"
              }
            },
            {
              "conditions": [
                "$request.anchorMerchantID",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$request.anchorMerchantID"
              },
              "false": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$merchant_details.id"
              }
            },
            {
              "conditions": [
                "$isAnchorMerchantValid",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$request.anchorMerchantID"
              },
              "false": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$merchant_details.id"
              }
            },
            {
              "operation": "setData",
              "value": "set_address_value->$request.addresses,CURRES",
              "stateKey": "current_address"
            },
            {
              "operation": "setData",
              "value": "set_address_value->$request.addresses,PERMA",
              "stateKey": "permanent_address"
            },
            {
              "operation": "setData",
              "value": "set_address_value->$request.addresses,INSTALLATION",
              "stateKey": "installation_address"
            },
            {
              "operation": "mapData",
              "stateKey": "marital_status",
              "key": "$request.maritalStatus",
              "enum": {
                "M": "MARRIED",
                "S": "SINGLE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "isAadharLinkedMobile",
              "key": "$request.isCommunicationMobileNumberAadharLinked",
              "enum": {
                "True": 1,
                "False": 0
              }
            },
            {
              "operation": "mapData",
              "stateKey": "language",
              "key": "$request.preferredLanguage",
              "enum": {
                "EN": "ENGLISH",
                "HI": "HINDI",
                "MA": "MARATHI",
                "GU": "GUJARATI",
                "BE": "BENGALI",
                "PU": "PUNJABI",
                "TA": "TAMIL",
                "TE": "TELUGU",
                "KA": "KANNADA",
                "ML": "MALAYALAM",
                "UR": "URDU",
                "OD": "ODIA"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "profession_type",
              "key": "$request.profession.professionType",
              "enum": {
                "U": "UNEMPLOYED",
                "S": "SALARIED",
                "B": "BUSINESS",
                "SB": "Self Employed - Business",
                "SP": "Self Employed - Professional",
                "P": "PENSIONER",
                "H": "HOUSEWIFE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "customer_gender",
              "key": "$request.gender",
              "enum": {
                "M": 2,
                "F": 1
              }
            },
            {
              "operation": "mapData",
              "stateKey": "gender",
              "key": "$request.gender",
              "enum": {
                "M": "MALE",
                "F": "FEMALE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "co_customer_gender",
              "key": "$request.coApplicant.gender",
              "enum": {
                "M": 2,
                "F": 1
              }
            },
            {
              "operation": "mapData",
              "stateKey": "co_app_gender",
              "key": "$request.coApplicant.gender",
              "enum": {
                "M": "MALE",
                "F": "FEMALE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "discom_full_name",
              "key": "$request.ebillDetails.service_provider",
              "enum": {
                "APSPDCL": "Southern Power Distribution Company of Andhra Pradesh Limited",
                "APEPDCL": "Eastern Power Distribution Company of Andhra Pradesh Limited",
                "APDCL": "Assam Power Distribution Company Limited",
                "NBPDCL": "North Bihar Power Distribution Company Limited",
                "SBPDCL": "South Bihar Power Distribution Company Limited",
                "CESC": "Calcutta Electric Supply Corporation Limited",
                "CH_ELEC": "Chandigarh Electricity Department",
                "CSPDCL": "Chhattisgarh State Power Distribution Company Limited",
                "DAMAN_DIU": "Daman and Diu Electricity Department",
                "TATA_DL": "Tata Power Delhi Distribution",
                "BSES_DL": "BSES Yamuna Power Ltd / BSES Rajdhani Power Ltd",
                "GOA_ELEC": "Goa Electricity- for Tisvadi, Ponda & Verna",
                "UPAY_GOA": "Goa Electricity- for others",
                "UGVCL": "Uttar Gujarat VIJ Company Ltd.",
                "PGVCL": "Pashchim Gujarat VIJ Company Ltd.",
                "MGVCL": "Madhya Gujarat VIJ Company Limited",
                "DGVCL": "Dakshin Gujarat VIJ Company Limited",
                "TORRENT_AHD": "Torrent Power Limited - Ahmedabad",
                "TORRENT_SURAT": "Torrent Power Limited - Surat",
                "TORRENT_AGRA": "Torrent Power Limited - Agra",
                "TORRENT_BHIWANDI": "Torrent Power Limited - Bhiwandi",
                "TORRENT_DAHEJ": "Torrent Power Limited - Dahej",
                "DHBVN": "Dakshin Haryana Bijli Vitran Nigam",
                "UHBVN": "Uttar Haryana Bijli Vitran Nigam",
                "HPSEB": "Himachal Pradesh State Electricity Board Ltd",
                "MESCOM": "Mangalore Electricity Supply Company Limited",
                "BESCOM": "Bangalore Electricity Supply Company Ltd",
                "CESCOM": "Chamundeshwari Electricity Supply Company Limited Mysore",
                "GESCOM": "Gulbarga Electricity Supply Company Limited",
                "HESCOM": "Hubli Electricity Supply Company Limited",
                "KERALA": "Kerala State Electricity Board",
                "MPWZ": "Madhya Pradesh Paschim Kshetra Vidyut Vitran Company Limited",
                "MPCZ": "Madhya Pradesh Madhya Kshetra Vidyut Vitran Company Limited",
                "MPEZ": "Madhya Pradesh Poorv Kshetra Vidyut Vitran Company Limited",
                "TATA_MUMBAI": "TATA-Power - Mumbai",
                "MAHAVITRAN": "MAHAVITARAN-Maharashtra State Electricity Distribution Co. Ltd (MSEDCL)",
                "BEST_MH": "Brihanmumbai Electric Supply & Transport Undertaking for Greater Mumbai (BEST_MH)",
                "MeECL": "Meghalaya Energy Corporation Limited",
                "ORISSA": "Supply Company of Orissa Limited (North, South, West,Central)",
                "PSPCL": "Punjab State Power Corporation Limited",
                "JAIPUR": "Jaipur Vidhyut Vitran Nigam Ltd",
                "AJMER": "Ajmer Vidhyut Vitran Nigam Ltd",
                "JODHPUR": "Jodhpur Vidhyut Vitran Nigam Ltd",
                "CHENNAI_NORTH": "Tamil Nadu Generation and Distribution Corporation Limited - Chennai_North",
                "VILLUPURAM": "Tamil Nadu Generation and Distribution Corporation Limited - Villupuram",
                "COIMBATORE": "Tamil Nadu Generation and Distribution Corporation Limited - Coimbatore",
                "ERODE": "Tamil Nadu Generation and Distribution Corporation Limited - Erode",
                "MADURAI": "Tamil Nadu Generation and Distribution Corporation Limited - Madurai",
                "TRICHY": "Tamil Nadu Generation and Distribution Corporation Limited - Trichy",
                "TIRUNELVEL": "Tamil Nadu Generation and Distribution Corporation Limited - Tirunelvel",
                "VELLORE": "Tamil Nadu Generation and Distribution Corporation Limited - Vellore",
                "CHENNAI_SOUTH": "Tamil Nadu Generation and Distribution Corporation Limited - Chennai_South",
                "TSSPCL": "The Southern Power Distribution Company of Telangana Limited",
                "TRIPURA": "Tripura State Electricity Corporation Limited",
                "KESCO": "Kanpur Electricity Supply Company",
                "UPPCL": "UP Vidyut Vitran Nigam Limited (All Zones)",
                "WBENGAL": "WEST BENGAL STATE ELECTRICITY DISTRIBUTION COMPANY LIMITED",
                "OTH": "Other"
              }
            },
            {
              "conditions": [
                "$request.customersBankInfo.accountType",
                "isNotNull"
              ],
              "true": {
                "operation": "mapData",
                "stateKey": "account_type",
                "key": "$request.customersBankInfo.accountType",
                "enum": {
                  "SA": "savings",
                  "CA": "current",
                  "CC": "cc",
                  "NRE": "nre",
                  "NRO": "nro"
                }
              },
              "false": {
                "operation": "setData",
                "stateKey": "account_type",
                "value": ""
              }
            },
            {
              "operation": "insert",
              "table": "merchant_api_request",
              "values": {
                "request": "$request",
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_id"
              },
              "auto_id": "id"
            },
            {
              "operation": "calculate",
              "stateKey": "inverter_power_savings",
              "value": "$request.kwInstallation * 1000"
            },
            {
              "operation": "concat",
              "values": [
                "$current_address.addrLine1",
                " ",
                "$current_address.addrLine2"
              ],
              "stateKey": "current_address_line"
            },
            {
              "operation": "concat",
              "values": [
                "$permanent_address.addrLine1",
                " ",
                "$permanent_address.addrLine2"
              ],
              "stateKey": "permanent_address_line"
            },
            {
              "operation": "concat",
              "values": [
                "$installation_address.addrLine1",
                " ",
                "$installation_address.addrLine2"
              ],
              "stateKey": "installation_address_line"
            }
          ],
          "offerValid": [
            {
              "operation": "query",
              "name": "isOfferValid",
              "queryType": "raw",
              "dbRaw": "select mo.id from merchant_offers mo where mo.merchant_id = %s and mo.id = %s",
              "queryParams": [
                "$merchant_details.id",
                "$request.offerId"
              ],
              "stateKey": "offer_id"
            },
            {
              "conditions": [
                "$offer_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201002",
                "CF_code": "CF300",
                "message": "Invalid Offer ID"
              }
            }
          ],
          "productValid": [
            {
              "conditions": [
                "$request.productName",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "query",
                  "name": "isProductValid",
                  "queryType": "raw",
                  "dbRaw": "select id from products where merchant_id = %s and id = %s and deleted_at is null and product_visibility = 1",
                  "queryParams": [
                    "$merchant_details.id",
                    "$request.productName"
                  ],
                  "stateKey": "product_validation_id"
                },
                {
                  "conditions": [
                    "$product_validation_id",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201002",
                    "CF_code": "CF300",
                    "message": "Product is not enabled"
                  }
                }
              ]
            }
          ],
          "dedupe": [
            {
              "operation": "query",
              "name": "isExistingapplicant",
              "queryType": "raw",
              "dbRaw": "SELECT ca.id,ca.name,ca.mobile_number,ca.state,ca.applicant_id,UNIX_TIMESTAMP(ca.created_at),ca.merchant_id AS created_at FROM consumer_application ca INNER JOIN merchant m ON ca.merchant_id = m.id WHERE (ca.pan_card = %s OR ca.email = %s OR ca.mobile_number = %s)AND ca.is_deleted IS NULL AND m.status != 'bre' ORDER BY ca.created_at DESC;",
              "queryParams": [
                "encrypt->$request.panNumber",
                "encrypt->$request.email",
                "encrypt->$request.communicationMobileNumber"
              ],
              "stateKey": "r"
            },
            {
              "conditions": [
                "$r",
                "isNotNull"
              ],
              "true": {
                "operation": "returnResponse",
                "return_code": "401005",
                "CF_code": "CF300",
                "message": "It seems like it has been less than 3 months since you applied to Credit Fair . We'll be happy to serve you after 3 months"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "query",
                "name": "isExistingcoapplicant",
                "queryType": "raw",
                "dbRaw": "SELECT ca.id, ca.co_applicant_name as name, ca.co_applicant_mobile_number as mobile_number, UNIX_TIMESTAMP(ca.created_at) as created_at, ca.merchant_id, ca.state, ca.co_applicant_id as applicant_id FROM consumer_application ca INNER JOIN merchant m ON ca.merchant_id = m.id WHERE (ca.co_applicant_pan_card = %s or ca.co_applicant_email = %s or ca.co_applicant_mobile_number = %s) AND ca.is_deleted is null AND m.status != 'bre' ORDER BY created_at DESC",
                "queryParams": [
                  "encrypt->$request.coApplicant.panNumber",
                  "encrypt->$request.coApplicant.email",
                  "encrypt->$request.coApplicant.phone"
                ],
                "stateKey": "rcoapp"
              }
            },
            {
              "conditions": [
                "$rcoapp",
                "isNotNull"
              ],
              "true": {
                "operation": "returnResponse",
                "return_code": "401005",
                "CF_code": "CF300",
                "message": "It seems like it has been less than 3 months since you applied to Credit Fair . We'll be happy to serve you after 3 months"
              }
            }
          ],
          "getBank": [
            {
              "conditions": [
                "$request.customersBankInfo.accountHolder",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "acct_holder",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "acct_holder",
                "value": "$request.customersBankInfo.accountHolder"
              }
            },
            {
              "conditions": [
                "$request.customersBankInfo.bankName",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "bnk_name",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "bnk_name",
                "value": "$request.customersBankInfo.bankName"
              }
            },
            {
              "conditions": [
                "$request.customersBankInfo.accountNumber",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "acct_number",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "acct_number",
                "value": "$request.customersBankInfo.accountNumber"
              }
            },
            {
              "conditions": [
                "$request.customersBankInfo.bankBranch",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "bnk_branch",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "bnk_branch",
                "value": "$request.customersBankInfo.bankBranch"
              }
            },
            {
              "conditions": [
                "$request.customersBankInfo.bankIfsc",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "bnk_ifsc",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "bnk_ifsc",
                "value": "$request.customersBankInfo.bankIfsc"
              }
            }
          ],
          "getCoapplicant": [
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "co_app_name",
                "value": "$request.coApplicant.name"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "co_app_pan_card",
                "value": "$request.coApplicant.panNumber"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "co_app_email",
                "value": "$request.coApplicant.email"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_phone",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_phone",
                "value": "$request.coApplicant.phone"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "co_app_dob",
                "value": "$request.coApplicant.dateofBirth"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.relationShip",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "co_app_relationship",
                "value": "$request.coApplicant.relationShip"
              }
            }
          ],
          "applicationCreation": [
            {
              "operation": "query",
              "table": "users",
              "queryType": "insert",
              "values": {
                "name": "$request.name",
                "email": "$request.email",
                "mobile_number": "$request.communicationMobileNumber",
                "dob": "$request.dateofBirth",
                "gender": "$gender",
                "user_type": "1",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              }
            },
            {
              "operation": "query",
              "table": "customers",
              "queryType": "insert",
              "values": {
                "name": "$request.name",
                "email": "$request.email",
                "mobile_number": "$request.communicationMobileNumber",
                "gender": "$request.gender",
                "pan_card": "$request.panNumber",
                "dob": "$request.dateofBirth",
                "marital_status": "$marital_status",
                "is_verified": "0",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              },
              "auto_id": "id"
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "query",
                "table": "customers",
                "queryType": "insert",
                "values": {
                  "name": "$request.coApplicant.name",
                  "email": "$request.coApplicant.email",
                  "mobile_number": "$request.coApplicant.phone",
                  "gender": "$request.coApplicant.gender",
                  "pan_card": "$request.coApplicant.panNumber",
                  "dob": "$request.coApplicant.dateofBirth",
                  "is_verified": "0",
                  "created_at": "datetime.CUR_TIMESTAMP",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                },
                "auto_id": "co_app_id"
              }
            },
            {
              "operation": "query",
              "table": "consumer_application",
              "queryType": "insert",
              "values": {
                "loan_amount": "$request.loanAmount",
                "offer_id": "$request.offerId",
                "company_name": "get_company_id->$request.profession.professionDetails.company",
                "current_address_state": "get_state->$current_address.state",
                "name": "$request.name",
                "mobile_number": "encrypt->$request.communicationMobileNumber",
                "email": "encrypt->$request.email",
                "gender": "$gender",
                "applicant_id": "$customers_id",
                "co_applicant_id": "$customers_co_app_id",
                "marital_status": "$marital_status",
                "dob": "$request.dateofBirth",
                "pan_card": "encrypt->$request.panNumber",
                "aadhaar_card": "encrypt->$request.aadharNumber",
                "current_address_line_1": "format_address->$current_address_line",
                "current_address_landmark": "$current_address.landmark",
                "current_address_city": "$current_address.city",
                "current_address_pincode": "$current_address.pincode",
                "current_address_status": "$current_address.addressStatus",
                "state": "in-process",
                "updated_by": "MERCHANT API",
                "lender_id": 2,
                "merchant_id": "$merchant_id",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP",
                "employee_status": "$profession_type",
                "work_address_line_1": "format_address->$request.profession.professionDetails.companyAddress",
                "work_address_landmark": "$request.profession.professionDetails.landmark",
                "work_address_city": "$request.profession.professionDetails.city",
                "work_address_state": "get_state->$request.profession.professionDetails.state",
                "work_address_pincode": "$request.profession.professionDetails.pincode",
                "co_applicant_name": "$co_app_name",
                "co_applicant_mobile_number": "encrypt->$co_app_phone",
                "co_applicant_email": "encrypt->$co_app_email",
                "co_applicant_gender": "$co_app_gender",
                "co_applicant_dob": "$co_app_dob",
                "co_applicant_pan_card": "encrypt->$co_app_pan_card",
                "co_applicant_relationship": "$co_app_relationship",
                "permanent_address_line_1": "format_address->$permanent_address_line",
                "permanent_address_landmark": "$permanent_address.landmark",
                "permanent_address_city": "$permanent_address.city",
                "permanent_address_state": "get_state->$permanent_address.state",
                "permanent_address_pincode": "$permanent_address.pincode",
                "permanent_address_status": "$permanent_address.addressStatus",
                "monthly_income": "$request.profession.professionDetails.monthlyIncome",
                "purpose": "$merchant_details.category_id"
              },
              "auto_id": "id"
            }
          ],
          "electricityBillApi": [
            {
              "conditions": [
                "$request.ebillDetails.service_provider",
                "isNotNull"
              ],
              "true": [
                {
                  "conditions": [
                    "$request.ebillDetails.service_provider",
                    "notEquals",
                    "OTH"
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "run_karza_validation->$consumer_application_id,$request.ebillDetails.customer_id,$request.ebillDetails.service_provider,$request.ebillDetails.district,$request.communicationMobileNumber,$request.inverter_monthly_power_bill",
                    "stateKey": "responseBillValidation"
                  }
                }
              ],
              "false": [
                {
                  "operation": "setData",
                  "value": "Success",
                  "stateKey": "ebillStatus"
                },
                {
                  "operation": "setData",
                  "value": "in-process",
                  "stateKey": "applicationState"
                },
                {
                  "operation": "setData",
                  "value": "Application Submitted. You will receive decision via Webhook",
                  "stateKey": "responseMessage"
                }
              ]
            },
            {
              "conditions": [
                "$responseBillValidation.message",
                "equals",
                "Failed to validate utility bill"
              ],
              "true": [
                {
                  "operation": "setData",
                  "value": "E-bill validation API failed.",
                  "stateKey": "additionalMessage"
                },
                {
                  "operation": "setData",
                  "value": "Fail",
                  "stateKey": "ebillStatus"
                },
                {
                  "operation": "setData",
                  "value": "Electricity bill validation failed. Electricity bill document required.",
                  "stateKey": "comment"
                }
              ],
              "false": [
                {
                  "operation": "setData",
                  "value": "Success",
                  "stateKey": "ebillStatus"
                },
                {
                  "operation": "setData",
                  "value": "in-process",
                  "stateKey": "applicationState"
                }
              ]
            }
          ],
          "uploadDocument": [
            {
              "conditions": [
                "$request.docDetails.docContent",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "setData",
                  "value": "1",
                  "stateKey": "ebillUploaded"
                },
                {
                  "operation": "setData",
                  "stateKey": "doc_name",
                  "value": "electricity_bill"
                },
                {
                  "operation": "setData",
                  "stateKey": "applicantType",
                  "value": 1
                },
                {
                  "operation": "concat",
                  "values": [
                    "$consumer_application_id",
                    "/",
                    "$doc_name",
                    ".",
                    "$request.docDetails.docFormat"
                  ],
                  "stateKey": "s3_path"
                },
                {
                  "operation": "s3Upload",
                  "contentKey": "$request.docDetails.docContent",
                  "path": "$s3_path",
                  "stateKey": "doc_upload_status"
                }
              ]
            },
            {
              "conditions": [
                "$doc_upload_status",
                "isNotNull"
              ],
              "false": [
                {
                  "conditions": [
                    "$doc_upload_status",
                    "equals",
                    "False"
                  ],
                  "true": [
                    {
                      "operation": "setData",
                      "value": "Upload Document failed. Base64 encoding issue.",
                      "stateKey": "additionalMessage"
                    },
                    {
                      "operation": "setData",
                      "value": "0",
                      "stateKey": "ebillUploaded"
                    }
                  ]
                }
              ],
              "true": [
                {
                  "conditions": [
                    "$ebillStatus",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "setData",
                    "value": "Fail",
                    "stateKey": "ebillStatus"
                  }
                },
                {
                  "conditions": [
                    "$request.ebillDetails.customer_id",
                    "isNotNull"
                  ],
                  "false": [
                    {
                      "operation": "setData",
                      "value": "OTH",
                      "stateKey": "service_provider"
                    }
                  ]
                }
              ]
            }
          ],
          "fuzzyMatch": [
            {
              "conditions": [
                "$responseBillValidation.message",
                "equals",
                "Successfully validated utility bill"
              ],
              "true": {
                "operation": "setData",
                "value": "fuzzy_logic->$request.name,$consumer_application_id",
                "stateKey": "fuzzyResult"
              }
            },
            {
              "conditions": [
                "$fuzzyResult.name_match",
                "equals",
                "True"
              ],
              "true": [
                {
                  "operation": "setData",
                  "value": "Application Submitted. You will receive decision via Webhook",
                  "stateKey": "responseMessage"
                }
              ],
              "false": [
                {
                  "conditions": [
                    "$fuzzyResult.percentage",
                    "greaterThan",
                    90
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "Application Submitted. You will receive decision via Webhook",
                    "stateKey": "responseMessage"
                  },
                  "false": {
                    "operation": "setData",
                    "value": "Fail",
                    "stateKey": "applicantFuzzy"
                  }
                }
              ]
            },
            {
              "conditions": [
                "$applicantFuzzy",
                "equals",
                "Fail"
              ],
              "true": [
                {
                  "conditions": [
                    "$request.coApplicant.name",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "setData",
                    "value": "Application Submitted. You will receive decision via Webhook",
                    "stateKey": "responseMessage"
                  },
                  "true": {
                    "operation": "setData",
                    "stateKey": "fuzzyCoApp",
                    "value": "True"
                  }
                }
              ]
            },
            {
              "conditions": [
                "$responseBillValidation.message",
                "equals",
                "Successfully validated utility bill"
              ],
              "true": {
                "operation": "setData",
                "value": "$fuzzyResult.percentage",
                "stateKey": "applicant_match"
              }
            }
          ],
          "fuzzyMatchCoApp": [
            {
              "conditions": [
                "$fuzzyCoApp",
                "equals",
                "True"
              ],
              "true": {
                "operation": "setData",
                "value": "fuzzy_logic->$request.coApplicant.name,$consumer_application_id",
                "stateKey": "fuzzyResultCoApp"
              }
            },
            {
              "conditions": [
                "$fuzzyResultCoApp.name_match",
                "equals",
                "True"
              ],
              "true": {
                "operation": "setData",
                "value": "Application Submitted. You will receive decision via Webhook",
                "stateKey": "responseMessage"
              },
              "false": [
                {
                  "conditions": [
                    "$fuzzyResultCoApp.percentage",
                    "greaterThan",
                    90
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "Application Submitted. You will receive decision via Webhook",
                    "stateKey": "responseMessage"
                  },
                  "false": {
                    "operation": "setData",
                    "value": "Application Submitted. You will receive decision via Webhook",
                    "stateKey": "responseMessage"
                  }
                }
              ]
            },
            {
              "conditions": [
                "$fuzzyCoApp",
                "equals",
                "True"
              ],
              "true": {
                "operation": "setData",
                "value": "$fuzzyResultCoApp.percentage",
                "stateKey": "co_applicant_match"
              }
            }
          ],
          "fuzzyMatchSave": [
            {
              "conditions": [
                "$co_applicant_match",
                "isNotNull"
              ],
              "true": {
                "operation": "concat",
                "values": [
                  "{'applicant_match':",
                  "$applicant_match",
                  ",'co_applicant_match':",
                  "$co_applicant_match",
                  "}"
                ],
                "stateKey": "eBillNameVerify"
              },
              "false": {
                "operation": "concat",
                "values": [
                  "{'applicant_match':",
                  "$applicant_match",
                  "}"
                ],
                "stateKey": "eBillNameVerify"
              }
            }
          ]
        },
        "persistence": [
          {
            "table": "consumer_application_element",
            "queryType": "insert",
            "values": {
              "preferred_language": "$language",
              "center_id": "$center_number",
              "reference_name_1": "$request.references[0].name",
              "reference_contact_1": "$request.references[0].phone",
              "reference_relation_1": "$request.references[0].relation",
              "reference_name_2": "$request.references[1].name",
              "reference_contact_2": "$request.references[1].phone",
              "reference_relation_2": "$request.references[1].relation",
              "work_email": "$request.profession.professionDetails.companyEmail",
              "contact": "$request.profession.professionDetails.companyPhone",
              "designation": "$request.profession.professionDetails.designation",
              "department": "$request.profession.professionDetails.department",
              "unique_id_number": "$request.uniqueCustomerId",
              "created_at": "datetime.CUR_TIMESTAMP",
              "inverter": "$request.inverterToBeInstalled",
              "panel": "$request.panelToBeInstalled",
              "inverter_monthly_power_bill": "$responseBillValidation.monthly_bill",
              "inverter_KW_installation": "$request.kwInstallation",
              "inverter_gross_project_amount": "$request.grossProjectValue",
              "inverter_subsidy_amount": "$request.subsidyAmount",
              "inverter_power_savings": "$inverter_power_savings",
              "installation_address_line_1": "format_address->$installation_address_line",
              "installation_address_landmark": "$installation_address.landmark",
              "installation_address_city": "$installation_address.city",
              "installation_address_pincode": "$installation_address.pincode",
              "installation_address_status": "$installation_address.addressStatus",
              "installation_address_state": "get_state->$installation_address.state",
              "application_id": "$consumer_application_id",
              "type_of_customer": "$request.typeOfCustomer",
              "solar_power_type": "$request.solarPowerType",
              "father_name": "$request.fatherName",
              "applicant_religion": "$request.applicantReligion",
              "type_of_customer_application": "$request.typeOfCustomerApplication",
              "product_name": "$request.productName",
              "discom_service_provider": "$discom_full_name",
              "electricity_name_change": "$request.nameChange",
              "discom_district": "$request.ebillDetails.district",
              "ebill_customer_id": "$request.ebillDetails.customer_id"
            }
          },
          {
            "table": "consumer_application_additional",
            "queryType": "insert",
            "values": {
              "application_id": "$consumer_application_id",
              "initial_applied_tenure": "$request.offerId",
              "created_at": "datetime.CUR_TIMESTAMP",
              "is_comm_no_linked_to_aadhar": "$isAadharLinkedMobile",
              "aadhar_linked_mobile": "$request.aadharLinkedMobileNumber"
            }
          },
          {
            "conditions": [
              "$request.customersBankInfo.accountHolder",
              "isNotNull"
            ],
            "true": {
              "table": "bank",
              "queryType": "insert",
              "values": {
                "application_id": "$consumer_application_id",
                "applicant_type": 1,
                "name": "$acct_holder",
                "account_type": "$account_type",
                "bank_name": "$bnk_name",
                "account_number": "encrypt->$acct_number",
                "branch_name": "$bnk_branch",
                "ifsc_code": "$bnk_ifsc",
                "created_at": "datetime.CUR_TIMESTAMP"
              }
            }
          },
          {
            "table": "pro_forma_invoice",
            "queryType": "insert",
            "values": {
              "application_id": "$consumer_application_id",
              "loan_application_no": "get_loan_application_number->$consumer_application_id,$merchant_id",
              "created_at": "datetime.CUR_TIMESTAMP"
            }
          },
          {
            "queryType": "insert",
            "table": "status_logs",
            "values": {
              "application_id": "$consumer_application_id",
              "user_id": "107",
              "status": "in-process",
              "created_at": "datetime.CUR_TIMESTAMP"
            }
          },
          {
            "conditions": [
              "$ebillStatus",
              "equals",
              "Fail"
            ],
            "true": {
              "operation": "query",
              "queryType": "update",
              "table": "consumer_application",
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$consumer_application_id"
                ]
              },
              "values": {
                "state": "$applicationState"
              }
            }
          },
          {
            "conditions": [
              "$request.docDetails.docContent",
              "isNotNull"
            ],
            "true": {
              "table": "consumer_application_files",
              "queryType": "insert",
              "values": {
                "consumer_application_id": "$consumer_application_id",
                "file_type": "$doc_name",
                "file_path": "$s3_path",
                "created_at": "datetime.CUR_TIMESTAMP",
                "applicant_type": "$applicantType",
                "password": "$request.docDetails.custDocPassword"
              }
            }
          },
          {
            "conditions": [
              "$service_provider",
              "equals",
              "OTH"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$consumer_application_id"
                ]
              },
              "values": {
                "inverter_monthly_power_bill": "$request.monthlyPowerBill",
                "other_discom_service_provider": "$request.docDetails.other_service_provider"
              }
            }
          },
          {
            "table": "application_data_logs",
            "queryType": "insert",
            "values": {
              "application_id": "$consumer_application_id",
              "data": "format_application_data->$request",
              "status": "in-process",
              "created_at": "datetime.CUR_TIMESTAMP",
              "user_id": 107
            }
          },
          {
            "queryType": "update",
            "table": "consumer_application_files",
            "clause": {
              "where": [
                "consumer_application_id",
                "file_type"
              ],
              "logicalOperator": "AND",
              "queryParams": [
                "$consumer_application_id",
                "electricity_bill_validation_report"
              ]
            },
            "values": {
              "ebill_name_verify": "json_dumps->$eBillNameVerify"
            }
          }
        ]
      }
    },
    "/customerRest/customerSrv/updateApplication": {
      "post": {
        "tags": [
          "Mconnect Update Application"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "application_number": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Loan application number is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "coApplicant": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": [
                      "string"
                    ],
                    "minLength": 3,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant name is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "relationShip": {
                    "type": [
                      "string"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant relation is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "fatherName": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant Father name is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "phone": {
                    "type": [
                      "string"
                    ],
                    "minLength": 10,
                    "maxLength": 10,
                    "pattern": "^[0-9]\\d{9}$",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant phone is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "aadhar": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 12,
                    "maxLength": 12,
                    "pattern": "^[0-9]\\d{11}$",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant Aadhar is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "email": {
                    "type": [
                      "string"
                    ],
                    "pattern": "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,7}",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant email is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "gender": {
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "F",
                          "M"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Co-Applicant gender is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "taxResidency": {
                    "type": [
                      "string"
                    ],
                    "enum": [
                      "Domestic",
                      "NRI"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Invalid Tax Residency value",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "dateofBirth": {
                    "type": [
                      "string"
                    ],
                    "minLength": 10,
                    "maxLength": 10,
                    "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant date of birth is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "panNumber": {
                    "type": [
                      "string"
                    ],
                    "pattern": "^[A-Z]{5}[0-9]{4}[A-Z]{1}$",
                    "minLength": 10,
                    "maxLength": 10,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant PAN Number is required in the correct format. It should be captial",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "addressStatus": {
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "RENTED",
                          "OWNED",
                          "PARENTS HOUSE",
                          "Self Owned",
                          "Parent Owned",
                          "Rented With Family",
                          "Rented With Friend",
                          "Company Allotted"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Co-Applicant Address Status is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "address": {
                    "type": [
                      "string"
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Address is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "landmark": {
                    "description": "Error",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "city": {
                    "description": "Error",
                    "type": [
                      "string"
                    ],
                    "minLength": 1,
                    "message": {
                      "return_code": "201002",
                      "message": "City is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "state": {
                    "description": "Error",
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "AN",
                          "AP",
                          "AR",
                          "AS",
                          "BR",
                          "CH",
                          "CG",
                          "DN",
                          "DD",
                          "DL",
                          "GA",
                          "GJ",
                          "HR",
                          "HP",
                          "JK",
                          "JH",
                          "KA",
                          "KL",
                          "LD",
                          "MP",
                          "MH",
                          "MN",
                          "ML",
                          "MZ",
                          "NL",
                          "OR",
                          "PY",
                          "PB",
                          "RJ",
                          "SK",
                          "TN",
                          "TR",
                          "UP",
                          "UL",
                          "WB",
                          "TS"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "State is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "pincode": {
                    "description": "Error",
                    "type": [
                      "string"
                    ],
                    "minLength": 6,
                    "maxLength": 6,
                    "message": {
                      "return_code": "201002",
                      "message": "Pincode is required",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "employmentStatus": {
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "UNEMPLOYED",
                          "SALARIED",
                          "BUSINESS",
                          "PENSIONER",
                          "HOUSEWIFE",
                          "Self Employed - Business",
                          "Self Employed - Professional"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Employment Status is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "companyName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "monthlyIncome": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "designation": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "workExperience": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "applicant": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "panNumber": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "installation_address": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "installation_address_city": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "installation_address_pincode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "installation_address_state": {
                    "description": "Error",
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "AN",
                          "AP",
                          "AR",
                          "AS",
                          "BR",
                          "CH",
                          "CG",
                          "DN",
                          "DD",
                          "DL",
                          "GA",
                          "GJ",
                          "HR",
                          "HP",
                          "JK",
                          "JH",
                          "KA",
                          "KL",
                          "LD",
                          "MP",
                          "MH",
                          "MN",
                          "ML",
                          "MZ",
                          "NL",
                          "OR",
                          "PY",
                          "PB",
                          "RJ",
                          "SK",
                          "TN",
                          "TR",
                          "UP",
                          "UL",
                          "WB",
                          "TS"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "State is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "permanent_address": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "permanent_address_city": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "permanent_address_pincode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "permanent_address_state": {
                    "description": "Error",
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "AN",
                          "AP",
                          "AR",
                          "AS",
                          "BR",
                          "CH",
                          "CG",
                          "DN",
                          "DD",
                          "DL",
                          "GA",
                          "GJ",
                          "HR",
                          "HP",
                          "JK",
                          "JH",
                          "KA",
                          "KL",
                          "LD",
                          "MP",
                          "MH",
                          "MN",
                          "ML",
                          "MZ",
                          "NL",
                          "OR",
                          "PY",
                          "PB",
                          "RJ",
                          "SK",
                          "TN",
                          "TR",
                          "UP",
                          "UL",
                          "WB",
                          "TS"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "State is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "current_address": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "current_address_city": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "current_address_pincode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "current_address_state": {
                    "description": "Error",
                    "anyOf": [
                      {
                        "type": [
                          "string"
                        ],
                        "enum": [
                          "AN",
                          "AP",
                          "AR",
                          "AS",
                          "BR",
                          "CH",
                          "CG",
                          "DN",
                          "DD",
                          "DL",
                          "GA",
                          "GJ",
                          "HR",
                          "HP",
                          "JK",
                          "JH",
                          "KA",
                          "KL",
                          "LD",
                          "MP",
                          "MH",
                          "MN",
                          "ML",
                          "MZ",
                          "NL",
                          "OR",
                          "PY",
                          "PB",
                          "RJ",
                          "SK",
                          "TN",
                          "TR",
                          "UP",
                          "UL",
                          "WB",
                          "TS"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "State is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "installation_address_status": {
                    "anyOf": [
                      {
                        "type": [
                          "string",
                          "null"
                        ],
                        "enum": [
                          "RENTED",
                          "OWNED",
                          "PARENTS HOUSE",
                          "Self Owned",
                          "Parent Owned",
                          "Rented With Family",
                          "Rented With Friend",
                          "Company Allotted"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Installation Address Status is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "current_address_status": {
                    "anyOf": [
                      {
                        "type": [
                          "string",
                          "null"
                        ],
                        "enum": [
                          "RENTED",
                          "OWNED",
                          "PARENTS HOUSE",
                          "Self Owned",
                          "Parent Owned",
                          "Rented With Family",
                          "Rented With Friend",
                          "Company Allotted"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Current Address Status is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "permanent_address_status": {
                    "anyOf": [
                      {
                        "type": [
                          "string",
                          "null"
                        ],
                        "enum": [
                          "RENTED",
                          "OWNED",
                          "PARENTS HOUSE",
                          "Self Owned",
                          "Parent Owned",
                          "Rented With Family",
                          "Rented With Friend",
                          "Company Allotted"
                        ],
                        "message": {
                          "return_code": "201002",
                          "message": "Permanent Address Status is required",
                          "CF_code": "CF300",
                          "pattern": ""
                        }
                      }
                    ]
                  },
                  "profession_type": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "enum": [
                      "U",
                      "S",
                      "B",
                      "SB",
                      "SP",
                      "P",
                      "H",
                      null
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Invalid profession type. Allowed: U, S, B, SB, SP, P, H",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "company_name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "monthly_income": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "typeOfCustomer": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "enum": [
                      1,
                      2,
                      3,
                      4,
                      null
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Invalid typeOfCustomer. Allowed: 1, 2, 3, 4",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "solarPowerType": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "enum": [
                      1,
                      2,
                      3,
                      null
                    ],
                    "message": {
                      "return_code": "201002",
                      "message": "Invalid solarPowerType. Allowed: 1, 2, 3",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "inverterToBeInstalled": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "panelToBeInstalled": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "grossProjectValue": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "monthlyPowerBill": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "service_provider": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kwInstallation": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "subsidyAmount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "fatherName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "motherName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "employment_address": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "aadharNumber": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            },
            "required": [
              "application_number"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.application_number",
                  "equals",
                  "null"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "message": "Loan application number must not be null",
                  "CF_code": "CF300"
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.relationShip",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant relationShip is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.dateofBirth",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Date Of Birth is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.phone",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Phone is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.gender",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Gender is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.panNumber",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant PAN Number is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.email",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Email is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.city",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant City is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.address",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Address is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.state",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant State is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.pincode",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Pincode is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.addressStatus",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Address Status is required",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions": [
                  "$request.coApplicant",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.coApplicant.employmentStatus",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Co-Applicant Employment Status is required",
                    "CF_code": "CF300"
                  }
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "applicationNo": "get_loan_application_number->$application_id,$merchant_details.id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "$responseMessage"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF500": {
            "content": {
              "application/json": "null",
              "status_code": 400
            }
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "mapData",
              "stateKey": "co_app_gender",
              "key": "$request.coApplicant.gender",
              "enum": {
                "M": "MALE",
                "F": "FEMALE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "applicant_profession_type",
              "key": "$request.applicant.profession_type",
              "enum": {
                "U": "UNEMPLOYED",
                "S": "SALARIED",
                "B": "BUSINESS",
                "SB": "Self Employed - Business",
                "SP": "Self Employed - Professional",
                "P": "PENSIONER",
                "H": "HOUSEWIFE"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "discom_full_name",
              "key": "$request.applicant.service_provider",
              "enum": {
                "APSPDCL": "Southern Power Distribution Company of Andhra Pradesh Limited",
                "APEPDCL": "Eastern Power Distribution Company of Andhra Pradesh Limited",
                "APDCL": "Assam Power Distribution Company Limited",
                "NBPDCL": "North Bihar Power Distribution Company Limited",
                "SBPDCL": "South Bihar Power Distribution Company Limited",
                "CESC": "Calcutta Electric Supply Corporation Limited",
                "CH_ELEC": "Chandigarh Electricity Department",
                "CSPDCL": "Chhattisgarh State Power Distribution Company Limited",
                "DAMAN_DIU": "Daman and Diu Electricity Department",
                "TATA_DL": "Tata Power Delhi Distribution",
                "BSES_DL": "BSES Yamuna Power Ltd / BSES Rajdhani Power Ltd",
                "GOA_ELEC": "Goa Electricity- for Tisvadi, Ponda & Ponda",
                "UPAY_GOA": "Goa Electricity- for others",
                "UGVCL": "Uttar Gujarat VIJ Company Ltd.",
                "PGVCL": "Pashchim Gujarat VIJ Company Ltd.",
                "MGVCL": "Madhya Gujarat VIJ Company Limited",
                "DGVCL": "Dakshin Gujarat VIJ Company Limited",
                "TORRENT_AHD": "Torrent Power Limited - Ahmedabad",
                "TORRENT_SURAT": "Torrent Power Limited - Surat",
                "TORRENT_AGRA": "Torrent Power Limited - Agra",
                "TORRENT_BHIWANDI": "Torrent Power Limited - Bhiwandi",
                "TORRENT_DAHEJ": "Torrent Power Limited - Dahej",
                "DHBVN": "Dakshin Haryana Bijli Vitran Nigam",
                "UHBVN": "Uttar Haryana Bijli Vitran Nigam",
                "HPSEB": "Himachal Pradesh State Electricity Board Ltd",
                "MESCOM": "Mangalore Electricity Supply Company Limited",
                "BESCOM": "Bangalore Electricity Supply Company Ltd",
                "CESCOM": "Chamundeshwari Electricity Supply Company Limited Mysore",
                "GESCOM": "Gulbarga Electricity Supply Company Limited",
                "HESCOM": "Hubli Electricity Supply Company Limited",
                "KERALA": "Kerala State Electricity Board",
                "MPWZ": "Madhya Pradesh Paschim Kshetra Vidyut Vitran Company Limited",
                "MPCZ": "Madhya Pradesh Madhya Kshetra Vidyut Vitran Company Limited",
                "MPEZ": "Madhya Pradesh Poorv Kshetra Vidyut Vitran Company Limited",
                "TATA_MUMBAI": "TATA-Power - Mumbai",
                "MAHAVITRAN": "MAHAVITARAN-Maharashtra State Electricity Distribution Co. Ltd (MSEDCL)",
                "BEST_MH": "Brihanmumbai Electric Supply & Transport Undertaking for Greater Mumbai (BEST_MH)",
                "MeECL": "Meghalaya Energy Corporation Limited",
                "ORISSA": "Supply Company of Orissa Limited (North, South, West,Central)",
                "PSPCL": "Punjab State Power Corporation Limited",
                "JAIPUR": "Jaipur Vidhyut Vitran Nigam Ltd",
                "AJMER": "Ajmer Vidhyut Vitran Nigam Ltd",
                "JODHPUR": "Jodhpur Vidhyut Vitran Nigam Ltd",
                "CHENNAI_NORTH": "Tamil Nadu Generation and Distribution Corporation Limited - Chennai_North",
                "VILLUPURAM": "Tamil Nadu Generation and Distribution Corporation Limited - Villupuram",
                "COIMBATORE": "Tamil Nadu Generation and Distribution Corporation Limited - Coimbatore",
                "ERODE": "Tamil Nadu Generation and Distribution Corporation Limited - Erode",
                "MADURAI": "Tamil Nadu Generation and Distribution Corporation Limited - Madurai",
                "TRICHY": "Tamil Nadu Generation and Distribution Corporation Limited - Trichy",
                "TIRUNELVEL": "Tamil Nadu Generation and Distribution Corporation Limited - Tirunelvel",
                "VELLORE": "Tamil Nadu Generation and Distribution Corporation Limited - Vellore",
                "CHENNAI_SOUTH": "Tamil Nadu Generation and Distribution Corporation Limited - Chennai_South",
                "TSSPCL": "The Southern Power Distribution Company of Telangana Limited",
                "TRIPURA": "Tripura State Electricity Corporation Limited",
                "KESCO": "Kanpur Electricity Supply Company",
                "UPPCL": "UP Vidyut Vitran Nigam Limited (All Zones)",
                "WBENGAL": "WEST BENGAL STATE ELECTRICITY DISTRIBUTION COMPANY LIMITED",
                "OTH": "Other"
              }
            },
            {
              "conditions": [
                "$request.applicant",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "value": "Applicant Updated.",
                "stateKey": "responseMessage"
              }
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "limit": 1,
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.application_number"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "getApplicationDetailsById": [
            {
              "operation": "query",
              "name": "getapplicationdetailsbyid",
              "queryType": "select",
              "table": "consumer_application",
              "columns": [
                "mobile_number",
                "pan_card",
                "email",
                "employee_status",
                "state"
              ],
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "stateKey": "application_detail"
            },
            {
              "operation": "query",
              "name": "getapplicationelementdetailsbyid",
              "queryType": "select",
              "table": "consumer_application_element",
              "columns": [
                "reference_contact_1",
                "reference_contact_2"
              ],
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "stateKey": "application_element_detail"
            },
            {
              "conditions": [
                "$application_detail.mobile_number",
                "isNotNull"
              ],
              "true": {
                "conditions": [
                  "$application_detail.mobile_number",
                  "Equals",
                  "$request.coApplicant.phone"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant phone can't be same"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.pan_card",
                "isNotNull"
              ],
              "true": {
                "conditions": [
                  "$application_detail.pan_card",
                  "Equals",
                  "$request.coApplicant.panNumber"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant PAN can't be same"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.email",
                "isNotNull"
              ],
              "true": {
                "conditions": [
                  "$application_detail.email",
                  "Equals",
                  "$request.coApplicant.email"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant Email can't be same"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.employee_status",
                "Equals",
                "UNEMPLOYED"
              ],
              "true": {
                "conditions": [
                  "$request.coApplicant.monthlyIncome",
                  "isNotNull"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Co-Applicant Monthly Income required if employment is unemployed or pensioner"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.employee_status",
                "Equals",
                "UNEMPLOYED"
              ],
              "true": {
                "conditions": [
                  "$request.coApplicant.companyName",
                  "isNotNull"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Co-Applicant Company Name is required if employment is unemployed or pensioner"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.employee_status",
                "Equals",
                "PENSIONER"
              ],
              "true": {
                "conditions": [
                  "$request.coApplicant.monthlyIncome",
                  "isNotNull"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Co-Applicant Monthly Income is required if employment is unemployed or pensioner"
                }
              }
            },
            {
              "conditions": [
                "$application_detail.employee_status",
                "Equals",
                "PENSIONER"
              ],
              "true": {
                "conditions": [
                  "$request.coApplicant.companyName",
                  "isNotNull"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Co-Applicant Company Name is required if employment is unemployed or pensioner"
                }
              }
            },
            {
              "conditions": [
                "$application_element_detail.reference_contact_1",
                "isNotNull"
              ],
              "true": {
                "conditions": [
                  "$application_element_detail.reference_contact_1",
                  "Equals",
                  "$request.coApplicant.phone"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Reference1 Contact & co-Applicant phone can't be same"
                }
              }
            },
            {
              "conditions": [
                "$application_element_detail.reference_contact_2",
                "isNotNull"
              ],
              "true": {
                "conditions": [
                  "$application_element_detail.reference_contact_2",
                  "Equals",
                  "$request.coApplicant.phone"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "Reference2 & co-Applicant phone can't be same"
                }
              }
            }
          ],
          "rejectedCheck": [
            {
              "conditions": [
                "$application_detail.state",
                "equals",
                "rejected"
              ],
              "true": {
                "operation": "returnResponse",
                "message": "Application Rejected",
                "CF_code": "CF300",
                "return_code": "201002"
              }
            },
            {
              "conditions": [
                "$application_detail.state",
                "in",
                "['approved', 'disbursment checklist done', 'ready for disbursment', 'disbursed', 'nach registered']"
              ],
              "true": {
                "operation": "returnResponse",
                "message": "Approved application can not be updated",
                "CF_code": "CF300",
                "return_code": "201002"
              }
            }
          ],
          "dedupe": [
            {
              "operation": "query",
              "name": "isExistingapplicant",
              "queryType": "raw",
              "dbRaw": "SELECT id, name, mobile_number, state, applicant_id, UNIX_TIMESTAMP(created_at) as created_at FROM consumer_application WHERE (pan_card = %s or email = %s or mobile_number = %s)  AND is_deleted is null ORDER BY created_at DESC",
              "queryParams": [
                "encrypt->$request.coApplicant.panNumber",
                "encrypt->$request.coApplicant.email",
                "encrypt->$request.coApplicant.phone"
              ],
              "stateKey": "r"
            },
            {
              "conditions": [
                "$r",
                "isNotNull"
              ],
              "true": {
                "operation": "returnResponse",
                "return_code": "401005",
                "CF_code": "CF300",
                "message": "It seems like it has been less than 3 months since you applied to Credit Fair . We'll be happy to serve you after 3 months"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "true": {
                "operation": "query",
                "name": "isExistingcoapplicant",
                "queryType": "raw",
                "dbRaw": "SELECT id, co_applicant_name as name, co_applicant_mobile_number as mobile_number, UNIX_TIMESTAMP(created_at) as created_at, state, co_applicant_id as applicant_id FROM consumer_application WHERE (co_applicant_pan_card = %s or co_applicant_email = %s or co_applicant_mobile_number = %s) AND is_deleted is null ORDER BY created_at DESC",
                "queryParams": [
                  "encrypt->$request.coApplicant.panNumber",
                  "encrypt->$request.coApplicant.email",
                  "encrypt->$request.coApplicant.phone"
                ],
                "stateKey": "rcoapp"
              }
            },
            {
              "conditions": [
                "$rcoapp",
                "isNotNull"
              ],
              "true": {
                "operation": "returnResponse",
                "return_code": "401005",
                "CF_code": "CF300",
                "message": "It seems like it has been less than 3 months since you applied to Credit Fair . We'll be happy to serve you after 3 months"
              }
            }
          ],
          "fuzzyMatch": [
            {
              "conditions": [
                "$request.coApplicant",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "value": "fuzzy_logic->$request.coApplicant.name,$application_id",
                "stateKey": "fuzzyResult"
              }
            },
            {
              "conditions": [
                "$fuzzyResult.name_match",
                "equals",
                "True"
              ],
              "true": {
                "operation": "setData",
                "value": "True",
                "stateKey": "fuzzySuccess"
              },
              "false": [
                {
                  "conditions": [
                    "$fuzzyResult.percentage",
                    "lesserThan",
                    50
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "Add Co-Applicant using the name mentioned on the e-bill.You will receive decision via Webhook",
                    "stateKey": "responseMessage"
                  },
                  "false": {
                    "operation": "setData",
                    "value": "True",
                    "stateKey": "fuzzySuccess"
                  }
                }
              ]
            },
            {
              "conditions": [
                "$fuzzySuccess",
                "equals",
                "True"
              ],
              "true": [
                {
                  "conditions": [
                    "$application_detail.state",
                    "equals",
                    "waiting for documents"
                  ],
                  "true": [
                    {
                      "conditions": [
                        "$request.applicant",
                        "isNotNull"
                      ],
                      "true": {
                        "operation": "setData",
                        "value": "Applicant and Co-Applicant Updated. Application moved to waiting for decision.",
                        "stateKey": "responseMessage"
                      },
                      "false": {
                        "operation": "setData",
                        "value": "Co-Applicant Submitted. Application moved to waiting for decision.",
                        "stateKey": "responseMessage"
                      }
                    },
                    {
                      "operation": "setData",
                      "stateKey": "request_ap_id",
                      "value": "UUID"
                    },
                    {
                      "operation": "concat",
                      "values": [
                        "{'is_reversed_status': 0,",
                        "'id': '",
                        "$application_id",
                        "','status': 'waiting for decision',",
                        "'previous_status': 'waiting for documents',",
                        "'auth_user_id': 107,",
                        "'lender_id': 2,",
                        "'log_decision': 'true',",
                        "'request_ap_id': '",
                        "$request_ap_id",
                        "'}"
                      ],
                      "stateKey": "payload"
                    },
                    {
                      "operation": "query",
                      "queryType": "update",
                      "table": "consumer_application",
                      "clause": {
                        "where": [
                          "id"
                        ],
                        "queryParams": [
                          "$application_id"
                        ]
                      },
                      "values": {
                        "state": "waiting for decision"
                      }
                    },
                    {
                      "operation": "setData",
                      "value": "waiting for decision",
                      "stateKey": "applicationState"
                    }
                  ]
                }
              ],
              "false": [
                {
                  "conditions": [
                    "$request.applicant",
                    "isNotNull"
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "Applicant and Co-Applicant Updated.",
                    "stateKey": "responseMessage"
                  },
                  "false": {
                    "operation": "setData",
                    "value": "Co-Applicant Submitted.",
                    "stateKey": "responseMessage"
                  }
                }
              ]
            },
            {
              "operation": "setData",
              "value": "fuzzy_set->$fuzzyResult,$application_id",
              "stateKey": "fuzzyResult"
            }
          ],
          "saveApplicantData": [
            {
              "operation": "setData",
              "value": "save_applicant->$request,$application_id,$applicant_profession_type,$discom_full_name",
              "stateKey": "save_result"
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$request.coApplicant",
              "isNotNull"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application",
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "values": {
                "co_applicant_name": "$request.coApplicant.name",
                "co_applicant_relationship": "$request.coApplicant.relationShip",
                "co_applicant_dob ": "$request.coApplicant.dateofBirth",
                "co_applicant_gender": "$co_app_gender",
                "co_applicant_pan_card": "$request.coApplicant.panNumber",
                "co_applicant_email": "$request.coApplicant.email",
                "co_applicant_mobile_number": "$request.coApplicant.phone",
                "co_applicant_address_status": "$request.coApplicant.addressStatus",
                "co_applicant_aadhaar_card": "$request.coApplicant.aadhar",
                "co_applicant_address_line_1": "$request.coApplicant.address",
                "co_applicant_address_city": "$request.coApplicant.city",
                "co_applicant_address_landmark": "$request.coApplicant.landmark",
                "co_applicant_address_pincode": "$request.coApplicant.pincode",
                "co_applicant_address_state": "get_state->$request.coApplicant.state",
                "co_applicant_employee_status": "$request.coApplicant.employmentStatus",
                "co_applicant_monthly_income": "$request.coApplicant.monthlyIncome",
                "co_applicant_company_name": "$request.coApplicant.companyName",
                "co_applicant_experience": "$request.coApplicant.co_applicant_experience"
              }
            }
          },
          {
            "conditions": [
              "$request.coApplicant",
              "isNotNull"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "values": {
                "co_applicant_father_name": "$request.coApplicant.fatherName",
                "tax_residency_co_app": "$request.coApplicant.taxResidency",
                "co_applicant_designation ": "$request.coApplicant.designation"
              }
            }
          },
          {
            "conditions": [
              "$request.coApplicant",
              "isNotNull"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_files",
              "clause": {
                "where": [
                  "consumer_application_id",
                  "file_type"
                ],
                "logicalOperator": "AND",
                "queryParams": [
                  "$application_id",
                  "electricity_bill_validation_report"
                ]
              },
              "values": {
                "ebill_name_verify": "json_dumps->$fuzzyResult"
              }
            }
          },
          {
            "conditions": [
              "$applicationState",
              "equals",
              "waiting for decision"
            ],
            "true": {
              "queryType": "insert",
              "table": "status_logs",
              "values": {
                "application_id": "$application_id",
                "user_id": "107",
                "status": "waiting for decision",
                "created_at": "datetime.CUR_TIMESTAMP"
              }
            }
          },
          {
            "conditions": [
              "$applicationState",
              "equals",
              "waiting for decision"
            ],
            "true": {
              "table": "jobs",
              "queryType": "insert",
              "values": {
                "`from`": "statusChange",
                "payload": "json_dumps->$payload",
                "application_id": "$application_id",
                "available_at": "datetime.CUR_TIMESTAMP",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              }
            }
          }
        ]
      }
    },
    "/customerRest/documentSrv/uploadDocument": {
      "post": {
        "tags": [
          "Mconnect Loan Details"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "type": [
                  "string"
                ],
                "minLength": 4,
                "message": {
                  "return_code": "201002",
                  "message": "Loan application Number is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "applicantType": {
                "type": [
                  "number"
                ],
                "enum": [
                  1,
                  2
                ],
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Applicant Type is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "docCategory": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "enum": [
                  "KYC",
                  "Banking",
                  "Profession",
                  "Oth"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Document category is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "custDocIssuedCountry": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Document issued country is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "custDocIssuedAuth": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Document issued authority is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "docFormat": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "enum": [
                  "jpg",
                  "gif",
                  "mp4",
                  "jpeg",
                  "png",
                  "bmp",
                  "tif",
                  "tiff",
                  "xlsx",
                  "xls",
                  "pdf",
                  "txt",
                  "odt",
                  "xml"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Document format is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "docRefId": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Document reference id is required in the correct format.",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "custDocIssuedOn": {
                "description": "Error",
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",
                "message": {
                  "return_code": "201002",
                  "message": "Customer document issued on date is required in the correct format.",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "custDocExpDate": {
                "description": "Error",
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",
                "message": {
                  "return_code": "201002",
                  "message": "Customer document expiry date is required in the correct format.",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "custDocPassword": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Document password is required in the correct format.",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "docName": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "enum": [
                  "PAN",
                  "SECURITY_CHEQUE",
                  "APPLICANT_PHOTO",
                  "APPLICANT_AADHAAR_FRONT",
                  "APPLICANT_AADHAAR_BACK",
                  "ELECTRICITY_BILL",
                  "GAS_BILL",
                  "PASSPORT",
                  "BANK_STATEMENT",
                  "SALARY_SLIP",
                  "ITR",
                  "MCA",
                  "MCA",
                  "UTILITY_BILL_VALIDATION",
                  "CPV",
                  "ENACH",
                  "RENT_AGREEMENT",
                  "SALE_DEED",
                  "SHOP_ACT",
                  "GST_CERTIFICATE",
                  "CO_APPLICANT_BANK_STATEMENT_3",
                  "CO_APPLICANT_PAN",
                  "CO_APPLICANT_AADHAAR_FRONT",
                  "CO_APPLICANT_AADHAAR_BACK",
                  "CO_APPLICANT_PHOTO",
                  "PASSBOOK",
                  "AADHAR_XML",
                  "TFR",
                  "SOLAR_QUOTATION",
                  "ADVANCE_AMOUNT_RECEIPT",
                  "OTH",
                  "UDYOG_AADHAR_CERTIFICATE",
                  "FORM_16",
                  "STATEMENT_OF_ACCOUNT",
                  "EMI_DEDUCTION_BANK_STATEMENT",
                  "PROPERTY_TAX_INVOICE",
                  "PROPERTY_OWNERSHIP_PROOF",
                  "VOTAR_ID_FRONT",
                  "VOTAR_ID_BACK",
                  "INVOICE",
                  "NET_METERING_AGREEMENT",
                  "DCR_CERTIFICATE"
                ],
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Document name is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "docContent": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Base64 encoded document is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              }
            },
            "required": [
              "applicationNo",
              "applicantType",
              "docCategory",
              "custDocIssuedCountry",
              "custDocIssuedAuth",
              "docFormat",
              "docRefId",
              "docName",
              "docContent"
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Document uploaded successfully"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "value": null,
              "stateKey": "is_masked"
            },
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "setData",
              "stateKey": "applicantType",
              "value": "$request.applicantType"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "mapData",
              "stateKey": "doc_name",
              "key": "$request.docName",
              "enum": {
                "AADHAR_XML": "aadhar_xml",
                "ADVANCE_AMOUNT_RECEIPT": "advance_amount_receipt",
                "APPLICANT_AADHAAR_BACK": "aadhar_card_back",
                "APPLICANT_AADHAAR_FRONT": "aadhar_card",
                "APPLICANT_PHOTO": "customer_photo",
                "BANK_STATEMENT": "bank_statement",
                "BANK_STATEMENT_2": "bank_statement_2",
                "BANK_STATEMENT_3": "bank_statement_3",
                "BANK_STATEMENT_4": "bank_statement_4",
                "BANK_STATEMENT_5": "bank_statement_5",
                "BANK_STATEMENT_6": "bank_statement_6",
                "CO_APPLICANT_AADHAAR_BACK": "co_applicant_aadhar_card_back",
                "CO_APPLICANT_AADHAAR_FRONT": "co_applicant_aadhar_card",
                "CO_APPLICANT_BANK_STATEMENT": "co_applicant_bank_statement",
                "CO_APPLICANT_PAN": "co_applicant_pan_card",
                "CO_APPLICANT_PHOTO": "co_applicant_customer_photo",
                "CPV": "cpv",
                "DCR_CERTIFICATE": "dcr_certificate",
                "ELECTRICITY_BILL": "electricity_bill",
                "EMI_DEDUCTION_BANK_STATEMENT": "emi_deduction_bank_statement",
                "FORM_16": "form_16",
                "GAS_BILL": "gas_bill",
                "GST_CERTIFICATE": "gst_certificate",
                "INVOICE": "invoice",
                "ITR": "itr",
                "MCA": "mca",
                "NET_METERING_AGREEMENT": "net_metering_agreement",
                "OTH": "other",
                "PAN": "pan_card",
                "PASSBOOK": "passbook_copy",
                "PASSPORT": "passport",
                "PROPERTY_OWNERSHIP_PROOF": "property_ownership_proof",
                "PROPERTY_TAX_INVOICE": "property_tax_invoice",
                "RENT_AGREEMENT": "rent_agreement",
                "SALARY_SLIP": "salary_slip",
                "SALE_DEED": "sale_deed",
                "SECURITY_CHEQUE": "security_cheques",
                "SHOP_ACT": "shop_act",
                "SOLAR_QUOTATION": "proforma",
                "STATEMENT_OF_ACCOUNT": "statement_of_account",
                "TFR": "tfr",
                "UDYOG_AADHAR_CERTIFICATE": "udyog_aadhar_certificate",
                "UTILITY_BILL_VALIDATION": "utilitybillvalidation",
                "VOTAR_ID_BACK": "votar_id_back",
                "VOTAR_ID_FRONT": "votar_id_front"
              }
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "coApplicantPAN": [
            {
              "conditions":[
                "$applicantType",
                "equals",
                2
              ],
              "true": [
                {
                  "conditions": [
                    "$doc_name",
                    "equals",
                    "pan_card"
                  ],
                  "true": {
                    "operation": "setData",
                    "value": "co_applicant_pan_card",
                    "stateKey": "doc_name"
                  }
                }
              ]
            }
          ],
          "uploadDocument": [
            {
              "operation": "concat",
              "values": [
                "$application_id",
                "/",
                "$doc_name",
                ".",
                "$request.docFormat"
              ],
              "stateKey": "s3_path"
            },
            {
              "operation": "s3Upload",
              "contentKey": "$request.docContent",
              "path": "$s3_path",
              "stateKey": "doc_upload_status"
            },
            {
              "conditions": [
                "$doc_name",
                "equals",
                "bank_statement"
              ],
              "true": [
                {
                  "operation": "query",
                  "queryType": "raw",
                  "dbRaw": "SELECT COUNT(*) as cnt FROM consumer_application_files WHERE consumer_application_id = %s AND file_type = 'bank_statement' AND applicant_type = %s AND deleted_at is null",
                  "queryParams": [
                    "$application_id",
                    "$applicantType"
                  ],
                  "stateKey": "bank_statement_count"
                },
                {
                  "conditions": [
                    "$bank_statement_count.cnt",
                    "lesserThan",
                    "4"
                  ],
                  "true": [
                    {
                      "operation": "setData",
                      "stateKey": "pirimid_api_result-new",
                      "value": "uploadPirimidDocument->$application_id,$applicantType,$request.docContent,$request.docFormat,$request.custDocPassword"
                    }
                  ]
                }
              ]
            },
            {
              "conditions": [
                "$doc_name",
                "in",
                "['aadhar_card','aadhar_card_back','co_applicant_aadhar_card','co_applicant_aadhar_card_back']"
              ],
              "true": [
                {
                  "operation": "query",
                  "queryType": "raw",
                  "dbRaw": "SELECT COUNT(*) as cnt FROM consumer_application_files WHERE consumer_application_id = %s AND file_type = %s AND applicant_type = %s AND deleted_at is null",
                  "queryParams": [
                    "$application_id",
                    "doc_name",
                    "$applicantType"
                  ],
                  "stateKey": "aadhar_count"
                },
                {
                  "conditions": [
                    "$aadhar_count.cnt",
                    "lesserThan",
                    "3"
                  ],
                  "true": [
                    {
                      "operation": "setData",
                      "stateKey": "mask_result",
                      "value": "MaskAadhar->$application_id,$applicantType,$request.docContent,$doc_name,$request.docFormat"
                    }
                  ]
                }
              ]
            },
            {
              "conditions": [
                "$mask_result.status",
                "equals",
                "success"
              ],
              "true": {
                "operation": "setData",
                "value": 1,
                "stateKey": "is_masked"
              },
              "false": {
                "operation": "setData",
                "value": 0,
                "stateKey": "is_masked"
              }
            },
            {
              "conditions": [
                "$mask_result.s3_key",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "s3_path",
                "value": "$mask_result.s3_key"
              }
            },
            {
              "conditions": [
                "$doc_name",
                "equals",
                "advance_amount_receipt"
              ],
              "true": [
                {
                  "operation": "setData",
                  "value": "get_comment_tag->",
                  "stateKey": "comment_tag"
                },
                {
                  "operation": "concat",
                  "stateKey": "comment_text",
                  "values": [
                    "$comment_tag",
                    " Advance amount receipt is received"
                  ]
                }
              ]
            },
            {
              "conditions": [
                "$doc_upload_status",
                "equals",
                "False"
              ],
              "true": {
                "operation": "returnResponse",
                "message": "Base64 encoding issue",
                "CF_code": "CF300",
                "return_code": "201002"
              }
            }
          ],
          "moveToDCD": [
            {
              "conditions": [
                "$doc_name",
                "equals",
                "tfr"
              ],
              "true": [
                {
                  "operation": "setData",
                  "stateKey": "other_doc_name",
                  "value": "proforma"
                }
              ]
            },
            {
              "conditions": [
                "$doc_name",
                "equals",
                "proforma"
              ],
              "true": [
                {
                  "operation": "setData",
                  "stateKey": "other_doc_name",
                  "value": "tfr"
                }
              ]
            },
            {
              "conditions": [
                "$other_doc_name",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "query",
                  "name": "checkDcdConditions",
                  "queryType": "raw",
                  "dbRaw": "select id from consumer_application_files where consumer_application_id = %s and file_type = %s and deleted_at is null and not exists (select id from jobs where application_id = %s and `from` = 'autoDCD' and payload like %s)",
                  "queryParams": [
                    "$application_id",
                    "$other_doc_name",
                    "$application_id",
                    "%sse_doc_upload%"
                  ],
                  "stateKey": "dcd_conditions_met"
                }
              ]
            },
            {
              "conditions": [
                "$dcd_conditions_met",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "setData",
                  "stateKey": "dcd_check",
                  "value": "disbursement_checklist_check->$application_id"
                }
              ]
            },
            {
              "conditions": [
                "$dcd_check",
                "equals",
                true
              ],
              "true": [
                {
                  "operation": "concat",
                  "values": [
                    "{'application_id': '",
                    "$application_id",
                    "', 'triggered_by': 'sse_doc_upload'}"
                  ],
                  "stateKey": "payload"
                }
              ]
            }
          ],
          "quotationCheck": [
            {
              "conditions": [
                "$doc_name",
                "equals",
                "proforma"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "created_by",
                "value": 107
              }
            }
          ],
          "runEBillWorkflow": [
            {
              "conditions": [
                "$doc_name",
                "equals",
                "electricity_bill"
              ],
              "true": [
                {
                  "operation": "concat",
                  "values": [
                    "{'id':'",
                    "$application_id",
                    "','file_path':'",
                    "$s3_path",
                    "'}"
                  ],
                  "stateKey": "workflowPayload"
                }
              ]
            }
          ]
        },
        "persistence": [
          {
            "table": "consumer_application_files",
            "queryType": "insert",
            "values": {
              "consumer_application_id": "$application_id",
              "file_type": "$doc_name",
              "file_path": "$s3_path",
              "created_at": "datetime.CUR_TIMESTAMP",
              "applicant_type": "$applicantType",
              "cust_doc_no": "$request.custDocNo",
              "doc_category": "$request.docCategory",
              "cust_doc_issued_country": "$request.custDocIssuedCountry",
              "cust_doc_issued_auth": "$request.custDocIssuedAuth",
              "doc_ref_id": "$request.docRefId",
              "cust_doc_issued_on": "$request.custDocIssuedOn",
              "cust_doc_exp_date": "$request.custDocExpDate",
              "password": "$request.custDocPassword",
              "created_by": "$created_by",
              "is_masked": "$is_masked"
            }
          },
          {
            "conditions": [
              "$dcd_check",
              "equals",
              true
            ],
            "true": {
              "table": "jobs",
              "queryType": "insert",
              "values": {
                "`from`": "autoDCD",
                "payload": "json_dumps->$payload",
                "application_id": "$application_id",
                "available_at": "datetime.CUR_TIMESTAMP",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              }
            }
          },
          {
            "conditions": [
              "$workflowPayload",
              "isNotNull"
            ],
            "true": {
              "table": "jobs",
              "queryType": "insert",
              "values": {
                "`from`": "run_ebill_ocr_workflow",
                "payload": "json_dumps->$workflowPayload",
                "application_id": "$application_id",
                "available_at": "datetime.CUR_TIMESTAMP",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              }
            }
          },
          {
            "conditions": [
              "$doc_name",
              "equals",
              "advance_amount_receipt"
            ],
            "true": {
              "table": "comments",
              "queryType": "insert",
              "values": {
                "application_id": "$application_id",
                "user_id": 107,
                "comment": "$comment_text",
                "show_consumer": 0,
                "show_merchant": 0,
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP",
                "type": "consumer"
              }
            }
          }
        ]
      }
    },
    "/customerRest/customerSrv/loanDetails": {
      "post": {
        "tags": [
          "Mconnect Loan Details"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Loan applicationNo is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "loanAmount": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "minimum": 10000,
                "maximum": 2000000,
                "message": {
                  "message": "Loan amount is required and it should be between 10000 to 2000000",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              },
              "productName": {
                "description": "Error",
                "type": [
                  "string",
                  "null"
                ],
                "message": {
                  "message": "Product Name is required in the correct format",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              },
              "offerId": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "message": {
                  "message": "Offer Id is required in the correct format",
                  "pattern": "",
                  "return_code": "201002",
                  "CF_code": "CF300"
                }
              }
            },
            "required": [
              "applicationNo",
              "loanAmount",
              "offerId"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.applicationNo",
                  "notEquals",
                  "$request.offerId"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "message": "Applicantion Number and offer Id can't be same",
                  "CF_code": "CF300"
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            }
          ],
          "loanDetails": [
            {
              "operation": "query",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "app_id"
            },
            {
              "conditions": [
                "$app_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            },
            {
              "operation": "query",
              "name": "isOfferValid",
              "queryType": "raw",
              "dbRaw": "select m.id from consumer_application as c left join merchant_offers m on c.merchant_id = m.merchant_id where m.id = %s and c.id = %s",
              "queryParams": [
                "$request.offerId",
                "$app_id"
              ],
              "stateKey": "offer_id"
            },
            {
              "conditions": [
                "$offer_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201002",
                "CF_code": "CF300",
                "message": "offer id not exist"
              }
            },
            {
              "operation": "conversion",
              "value": "$app_id",
              "type": "string",
              "stateKey": "str_app_id"
            },
            {
              "operation": "query",
              "queryType": "select",
              "table": "status_logs",
              "columns": [
                "id"
              ],
              "clause": {
                "where": [
                  "application_id",
                  "status"
                ],
                "logicalOperator": "AND",
                "queryParams": [
                  "$app_id",
                  "in-process"
                ]
              },
              "stateKey": "status_log_id"
            },
            {
              "operation": "concat",
              "values": [
                "{'cmd':'command:AutoDecision','con':'jobs','param':{'id':'",
                "$str_app_id",
                "'},'job_handler':'App\\\\Helpers\\\\CmdHelper@runCommand'}"
              ],
              "stateKey": "queue_input"
            },
            {
              "operation": "setData",
              "stateKey": "json_queue_input",
              "value": "json_dumps->$queue_input"
            },
            {
              "operation": "concat",
              "values": [
                "%",
                "$app_id",
                "%"
              ],
              "stateKey": "like_app_id"
            },
            {
              "operation": "query",
              "queryType": "raw",
              "dbRaw": "SELECT job_id from queue_log WHERE input like %s and input like %s",
              "queryParams": [
                "$like_app_id",
                "%AutoDecision%"
              ],
              "stateKey": "isautodecisionqueuelogsexists"
            }
          ]
        },
        "persistence": [
          {
            "table": "application_data_logs",
            "queryType": "insert",
            "values": {
              "application_id": "$app_id",
              "data": "format_application_data->$request",
              "status": "in-process",
              "created_at": "datetime.CUR_TIMESTAMP",
              "user_id": 107
            }
          },
          {
            "queryType": "update",
            "table": "consumer_application",
            "clause": {
              "where": [
                "id"
              ],
              "queryParams": [
                "$app_id"
              ]
            },
            "values": {
              "state": "in-process",
              "loan_amount": "$request.loanAmount",
              "offer_id": "$request.offerId"
            }
          },
          {
            "conditions": [
              "$request.productName",
              "isNotNull"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$app_id"
                ]
              },
              "values": {
                "product_name": "$request.productName"
              }
            }
          },
          {
            "conditions": [
              "$status_log_id",
              "isNotNull"
            ],
            "false": {
              "queryType": "insert",
              "table": "status_logs",
              "values": {
                "application_id": "$app_id",
                "user_id": "107",
                "status": "in-process",
                "created_at": "datetime.CUR_TIMESTAMP"
              },
              "auto_id": "id"
            }
          },
          {
            "conditions": [
              "$isautodecisionqueuelogsexists",
              "isNotNull"
            ],
            "false": {
              "queryType": "insert",
              "name": "autoDecisionQueueLogs",
              "table": "queue_log",
              "values": {
                "uid": "null",
                "status": "pen",
                "exchange": "job_exch",
                "route_key": "exch_rout_key_job",
                "job_handler": "App\\Helpers\\CmdHelper@runCommand",
                "input": "$json_queue_input",
                "attempt_count": "0",
                "cmd": "command:AutoDecision",
                "created_at": "datetime.CUR_TIMESTAMP"
              },
              "auto_id": "id"
            }
          }
        ]
      }
    },
    "/customerRest/customerSrv/bankDetails": {
      "post": {
        "tags": [
          "Mconnect Bank Details"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "cif": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "minLength": 4,
                "message": {
                  "return_code": "201002",
                  "message": "CIF is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "accountHolder": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Account holder is required in the correct format",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "bankBranch": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Bank branch is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "bankName": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Bank name is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "accountNumber": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Account number is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "accountType": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "enum": [
                  "SA",
                  "CA",
                  "CC",
                  "NRE",
                  "NRO"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Account type is required in the correct format.",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "bankIfsc": {
                "description": "Error",
                "type": [
                  "string"
                ],
                "minLength": 3,
                "message": {
                  "return_code": "201002",
                  "message": "Bank ifsc is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "salaryAccount": {
                "description": "Error",
                "type": [
                  "boolean"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Salary account is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              }
            },
            "required": [
              "cif",
              "accountHolder",
              "bankBranch",
              "bankName",
              "accountNumber",
              "accountType",
              "bankIfsc"
            ]
          },
          "rules": {}
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "conditions": [
                "$request.accountType",
                "isNotNull"
              ],
              "true": {
                "operation": "mapData",
                "stateKey": "account_type",
                "key": "$request.accountType",
                "enum": {
                  "SA": "savings",
                  "CA": "current",
                  "CC": "cc",
                  "NRE": "nre",
                  "NRO": "nro"
                }
              },
              "false": {
                "operation": "setData",
                "stateKey": "account_type",
                "value": ""
              }
            }
          ],
          "bankDetails": [
            {
              "operation": "query",
              "name": "getidbyapplicationidnycif",
              "queryType": "select",
              "table": "consumer_application",
              "columns": [
                "id",
                "applicant_id",
                "co_applicant_id"
              ],
              "clause": {
                "where": [
                  "applicant_id",
                  "co_applicant_id"
                ],
                "logicalOperator": "OR",
                "queryParams": [
                  "$request.cif",
                  "$request.cif"
                ]
              },
              "ordering": {
                "column": "created_at",
                "sorting": "desc"
              },
              "limit": 1,
              "stateKey": "i"
            },
            {
              "conditions": [
                "$i",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            },
            {
              "conditions": [
                "$request.cif",
                "notEquals",
                "$i.co_applicant_id"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "a_type",
                "value": 1
              },
              "false": {
                "operation": "setData",
                "stateKey": "a_type",
                "value": 2
              }
            },
            {
              "operation": "query",
              "name": "getbank",
              "queryType": "select",
              "table": "bank",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "application_id",
                  "applicant_type"
                ],
                "logicalOperator": "AND",
                "queryParams": [
                  "$i.id",
                  "$a_type"
                ]
              },
              "limit": 1,
              "stateKey": "r"
            },
            {
              "conditions": [
                "$r",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "setData",
                  "stateKey": "ib",
                  "value": "True"
                },
                {
                  "operation": "returnResponse",
                  "CF_code": "CF200",
                  "return_code": "201002"
                }
              ],
              "false": {
                "operation": "setData",
                "stateKey": "ib",
                "value": "False"
              }
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$ib",
              "equals",
              "False"
            ],
            "true": {
              "queryType": "insert",
              "name": "savebank",
              "table": "bank",
              "values": {
                "application_id": "$i.id",
                "applicant_type": "$a_type",
                "name": "$request.accountHolder",
                "account_type": "$account_type",
                "bank_name": "$request.bankName",
                "account_number": "encrypt->$request.accountNumber",
                "branch_name": "$request.bankBranch",
                "ifsc_code": "$request.bankIfsc",
                "created_at": "datetime.CUR_TIMESTAMP"
              },
              "auto_id": "id"
            }
          }
        ]
      }
    },
    "/merchantRest/merchantSrv/getOffers": {
      "get": {
        "tags": [
          "Mconnect Get Offers"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "product_id": {
                "type": "string"
              },
              "loanAmount": {
                "type": "string"
              }
            }
          },
          "rules": {
            "data": []
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "data": "$merchant_offers"
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "conditions": [
                "$request.anchorMerchantID",
                "isNotNull"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$request.anchorMerchantID"
              },
              "false": {
                "operation": "setData",
                "stateKey": "merchant_id",
                "value": "$merchant_details.id"
              }
            },
            {
              "operation": "setData",
              "stateKey": "loan_amount",
              "value": "$request.loanAmount"
            },
            {
              "operation": "setData",
              "stateKey": "productId",
              "value": "$request.productId"
            },
            {
              "conditions": [
                "$request.productId",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "productId",
                "value": 0
              }
            },
            {
              "conditions": [
                "$request.loanAmount",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "loan_amount",
                "value": 0
              }
            },
            {
              "operation": "setData",
              "stateKey": "loan_URL",
              "value": "$env.FETCH_URL"
            }
          ],
          "getOffers": [
            {
              "conditions": [
                "$loan_amount",
                "greaterThan",
                0
              ],
              "false": [
                {
                  "conditions": [
                    "$productId",
                    "greaterThan",
                    0
                  ],
                  "true": {
                    "operation": "query",
                    "name": "getOfferWithProduct",
                    "queryType": "raw",
                    "dbRaw": "SELECT merchant_offers.id, tenure, processing_fee, tenure, advance_type, advance_emi, processing_fee_type, interest_type_id, interest_rate, payment_frequency, charge_subvention_remaining_amount, processing_fee_on_advance_amount FROM merchant_offers left join product_offers on merchant_offers.id=offer_id left join merchant on merchant_offers.merchant_id=merchant.id WHERE merchant_id =  %s and merchant_offers.status = 1 and merchant_offers.disable_offer_status=1 and product_offers.deleted_at is null and product_id=%s",
                    "queryParams": [
                      "$merchant_id",
                      "$productId"
                    ],
                    "stateKey": "offers"
                  },
                  "false": {
                    "operation": "query",
                    "name": "getOffer",
                    "queryType": "raw",
                    "dbRaw": "SELECT merchant_offers.id, tenure, processing_fee, tenure, advance_type, advance_emi, processing_fee_type, interest_type_id, interest_rate, payment_frequency, charge_subvention_remaining_amount, processing_fee_on_advance_amount FROM merchant_offers left join merchant on merchant_offers.merchant_id=merchant.id WHERE merchant_id = %s and merchant_offers.status = 1 and merchant_offers.disable_offer_status=1",
                    "queryParams": [
                      "$merchant_id"
                    ],
                    "stateKey": "offers"
                  }
                },
                {
                  "operation": "setData",
                  "stateKey": "merchant_offers",
                  "value": "format_offer->$offers"
                }
              ],
              "true": [
                {
                  "conditions": [
                    "$productId",
                    "greaterThan",
                    0
                  ],
                  "true": {
                    "operation": "concat",
                    "values": [
                      "$loan_URL",
                      "?merchant_id=",
                      "$merchant_id",
                      "&loan_amount=",
                      "$loan_amount",
                      "&product_id=",
                      "$productId"
                    ],
                    "stateKey": "api_url"
                  },
                  "false": {
                    "operation": "concat",
                    "values": [
                      "$loan_url",
                      "?merchant_id=",
                      "$merchant_id",
                      "&loan_amount=",
                      "$loan_amount"
                    ],
                    "stateKey": "api_url"
                  }
                },
                {
                  "operation": "apiCall",
                  "url": "$api_url",
                  "method": "get",
                  "headers": {
                    "cf-x-client": "$env.CF-X-CLIENT",
                    "cf-x-client-secret": "$env.CF-X-CLIENT-SECRET"
                  },
                  "body": "",
                  "stateKey": "offers"
                },
                {
                  "operation": "setData",
                  "stateKey": "merchant_offers",
                  "value": "format_offer->$offers.data"
                }
              ]
            }
          ]
        },
        "persistence": []
      }
    },
    "/customerRest/customerSrv/fetch-loan-status": {
      "get": {
        "tags": [
          "Mconnect Create Customer"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "type": "string"
              }
            }
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.applicationNo",
                  "equals",
                  "0"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "message": "Loan applicationNo is required in the correct format",
                  "CF_code": "CF300"
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "status": "$application_state.state",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                },
                "data": {
                  "approved_amount": "$application_state.approved_amount",
                  "tenure": "$application_state.tenure",
                  "esign": "$esign",
                  "enach": "$enach",
                  "docs": "$documents_list"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200_WITHOUT_DATA": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "status": "$application_state.state",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "getLoanState": [
            {
              "operation": "query",
              "name": "get_loan_state",
              "queryType": "select",
              "table": "consumer_application",
              "columns": [
                "state",
                "approved_amount",
                "tenure"
              ],
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "stateKey": "application_state"
            },
            {
              "operation": "query",
              "queryType": "select",
              "table": "consumer_application_element",
              "columns": [
                "mandatory_document_list"
              ],
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "stateKey": "mandatory_documents"
            },
            {
              "operation": "conversion",
              "value": "$mandatory_documents",
              "type": "list",
              "stateKey": "documents_list"
            },
            {
              "operation": "setData",
              "stateKey": "esign",
              "value": "generate_url->$application_id,esign"
            },
            {
              "operation": "setData",
              "stateKey": "enach",
              "value": "generate_url->$application_id,enachrequest"
            },
            {
              "conditions": [
                "$application_state",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Application Not Found"
              }
            },
            {
              "conditions": [
                "$application_state.state",
                "in",
                "['approved','waiting for documents']"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "000000",
                "CF_code": "CF200_WITHOUT_DATA"
              }
            }
          ]
        }
      }
    },
    "/get-token": {
      "get": {
        "tags": [],
        "requestBody": {
          "content": {}
        },
        "responses": {
          "CF200": {
            "content": {
              "application/json": {
                "token": "$jwt_token"
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "generateToken",
              "payload": {
                "api_key": "$auth.Authorization",
                "exp": {
                  "minutes": 10
                }
              },
              "algorithm": "HS256",
              "stateKey": "jwt_token",
              "signingKey": "$env.JWT_SECRET_KEY"
            }
          ]
        }
      }
    },
    "/customerRest/customerSrv/save-consent": {
      "post": {
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationLoanNo": {
                "type": [
                  "string"
                ],
                "minLength": 4,
                "message": {
                  "return_code": "201002",
                  "message": "Loan Number is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "applicant_type": {
                "type": [
                  "number"
                ],
                "enum": [
                  1,
                  2
                ],
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Applicant Type is required in the correct format",
                  "pattern": "",
                  "CF_code": "CF300"
                }
              },
              "latitude": {
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Latitude is required as string",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "longitude": {
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Longitude is required as string",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "ip": {
                "type": [
                  "string",
                  "null"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "IP is required as string",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "status": {
                "type": [
                  "string"
                ],
                "message": {
                  "return_code": "201002",
                  "message": "Status is required as string",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              }
            },
            "required": [
              "applicationLoanNo",
              "applicant_type",
              "latitude",
              "longitude",
              "status",
              "ip"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.latitude",
                  "equals",
                  "null"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Null string is not allowed in latitude"
                }
              },
              {
                "conditions": [
                  "$request.longitude",
                  "equals",
                  "null"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Null string is not allowed in longitude"
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF201": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "conditions": [
                "$request.ip",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "value": "UNKNOWN",
                "stateKey": "ip"
              },
              "true": {
                "operation": "setData",
                "value": "$request.ip",
                "stateKey": "ip"
              }
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationLoanNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "checkConsentExists": [
            {
              "operation": "query",
              "queryType": "select",
              "table": "consent_log",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "application_id",
                  "applicant_type"
                ],
                "queryParams": [
                  "$application_id",
                  "$request.applicant_type"
                ]
              },
              "stateKey": "consent_exists"
            },
            {
              "conditions": [
                "$consent_exists",
                "isNotNull"
              ],
              "true": {
                "operation": "returnResponse",
                "CF_code": "CF201",
                "return_code": "201002",
                "message": "Consent already exists"
              }
            },
            {
              "operation": "concat",
              "values": [
                "{'application_id': '",
                "$application_id",
                "', 'applicant_type': '",
                "$request.applicant_type",
                "'}"
              ],
              "stateKey": "payload"
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$request.applicant_type",
              "equals",
              2
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "values": {
                "is_co_app_consent": 1
              }
            },
            "false": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "values": {
                "is_consent": 1
              }
            }
          },
          {
            "table": "consent_log",
            "queryType": "insert",
            "values": {
              "application_id": "$application_id",
              "ips": "$ip",
              "latitude": "$request.latitude",
              "longitude": "$request.longitude",
              "status": "1",
              "type": "bureau & KYC",
              "applicant_type": "$request.applicant_type",
              "created_at": "datetime.CUR_TIMESTAMP",
              "updated_at": "datetime.CUR_TIMESTAMP"
            }
          },
          {
            "table": "jobs",
            "queryType": "insert",
            "values": {
              "`from`": "mconnectConsent",
              "payload": "json_dumps->$payload",
              "application_id": "$application_id",
              "available_at": "datetime.CUR_TIMESTAMP",
              "created_at": "datetime.CUR_TIMESTAMP",
              "updated_at": "datetime.CUR_TIMESTAMP"
            }
          }
        ]
      }
    },
    "/merchantRest/merchantSrv/send-da-confirmation": {
      "post": {
        "tags": [],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Loan applicationNo is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "sanctionLoanAmount": {
                "type": "integer",
                "message": {
                  "return_code": "201002",
                  "message": "Sanction Loan Amount is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "approverName": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Approver Name is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "approverDesignation": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Approver Designation is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "approvedDate": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Approved date is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              }
            },
            "required": [
              "applicationNo",
              "sanctionLoanAmount",
              "approverName",
              "approverDesignation",
              "approvedDate"
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "$successResponse"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "setData",
              "stateKey": "successResponse",
              "value": "Success"
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "validation": [
            {
              "operation": "query",
              "queryType": "select",
              "table": "consumer_application",
              "columns": [
                "approved_amount",
                "state",
                "lender_id",
                "loan_amount"
              ],
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "applicationDetails"
            },
            {
              "conditions": [
                "$applicationDetails.state",
                "in",
                "[disbursement query', 'disbursement checklist done']"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201002",
                "message": "DA confirmation cannot be updated since the case is not approved yet.",
                "CF_code": "CF300"
              }
            },
            {
              "operation": "query",
              "queryType": "raw",
              "dbRaw": "SELECT id FROM application_data_logs WHERE application_id = %s AND JSON_CONTAINS_PATH(`data`, 'one', '$.approved_amount') AND model = 'da_confirmation_api'",
              "queryParams": [
                "$application_id"
              ],
              "stateKey": "amountChangeDuplicateRequest"
            },
            {
              "conditions": [
                "$amountChangeDuplicateRequest",
                "isNotNull"
              ],
              "true": [
                {
                  "operation": "concat",
                  "values": [
                    "Request of change in the Applied loan amount from Rs. ",
                    "$applicationDetails.loan_amount",
                    " to Rs. ",
                    "$request.sanctionLoanAmount",
                    ".The Applied loan amount was already updated once."
                  ],
                  "stateKey": "commentLine"
                },
                {
                  "operation": "concat",
                  "stateKey": "payload",
                  "values": [
                    "{'loan_amount':{'old':'",
                    "$applicationDetails.loan_amount",
                    "','new':'",
                    "$request.sanctionLoanAmount",
                    "'}}"
                  ]
                },
                {
                  "operation": "query",
                  "table": "application_data_logs",
                  "queryType": "insert",
                  "values": {
                    "application_id": "$application_id",
                    "data": "json_dumps->$payload",
                    "status": "approved",
                    "created_at": "datetime.CUR_TIMESTAMP",
                    "user_id": 107,
                    "model": "da_confirmation_api"
                  }
                },
                {
                  "operation": "query",
                  "queryType": "update",
                  "table": "consumer_application",
                  "clause": {
                    "where": [
                      "id"
                    ],
                    "queryParams": [
                      "$application_id"
                    ]
                  },
                  "values": {
                    "loan_amount": "$request.sanctionLoanAmount"
                  }
                },
                {
                  "operation": "query",
                  "queryType": "insert",
                  "table": "comments",
                  "values": {
                    "application_id": "$application_id",
                    "user_id": 107,
                    "comment": "$commentLine",
                    "show_consumer": 0,
                    "show_merchant": 0,
                    "created_at": "datetime.CUR_TIMESTAMP",
                    "updated_at": "datetime.CUR_TIMESTAMP",
                    "type": "consumer"
                  }
                },
                {
                  "operation": "returnResponse",
                  "return_code": "201003",
                  "CF_code": "CF300",
                  "message": "The application is under review as the applied loan amount is changed more than one time."
                }
              ]
            },
            {
              "operation": "setData",
              "stateKey": "postApprovalJourney",
              "value": "check_post_approval_journey->$application_id,$applicationDetails.lender_id"
            },
            {
              "conditions": [
                "$postApprovalJourney",
                "equals",
                true
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201002",
                "message": "Post approval journey pending.",
                "CF_code": "CF300"
              }
            },
            {
              "operation": "calculate",
              "stateKey": "upperLimitApprovedAmount",
              "value": "$applicationDetails.approved_amount + 10001"
            },
            {
              "operation": "calculate",
              "stateKey": "lowerLimitApprovedAmount",
              "value": "$applicationDetails.approved_amount - 10001"
            },
            {
              "conditions": [
                "$request.sanctionLoanAmount",
                "greaterThan",
                "$upperLimitApprovedAmount"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "amountAcceptable",
                "value": false
              },
              "false": {
                "operation": "setData",
                "stateKey": "amountAcceptable",
                "value": true
              }
            }
          ],
          "sanctionAmountProcessing": [
            {
              "conditions": [
                "$request.sanctionLoanAmount",
                "notEquals",
                "$applicationDetails.approved_amount"
              ],
              "true": [
                {
                  "conditions": [
                    "$amountAcceptable",
                    "equals",
                    true
                  ],
                  "true": [
                    {
                      "operation": "concat",
                      "stateKey": "commentLine",
                      "values": [
                        "Approved loan amount changed from Rs. ",
                        "$applicationDetails.approved_amount",
                        " to Rs.",
                        "$request.sanctionLoanAmount"
                      ]
                    },
                    {
                      "operation": "query",
                      "queryType": "update",
                      "table": "consumer_application",
                      "clause": {
                        "where": [
                          "id"
                        ],
                        "queryParams": [
                          "$application_id"
                        ]
                      },
                      "values": {
                        "loan_amount": "$request.sanctionLoanAmount",
                        "approved_amount": "$request.sanctionLoanAmount"
                      }
                    },
                    {
                      "operation": "concat",
                      "stateKey": "applicationDataLogsPayload",
                      "values": [
                        "{'loan_amount':{'old':'",
                        "$applicationDetails.loan_amount",
                        "','new':'",
                        "$request.sanctionLoanAmount",
                        "'},'approved_amount':{'old':'",
                        "$applicationDetails.approved_amount",
                        "','new':'",
                        "$request.sanctionLoanAmount",
                        "'}}"
                      ]
                    },
                    {
                      "operation": "concat",
                      "stateKey": "reviseJobPayload",
                      "values": [
                        "{'list':{'cam':'1','proforma':'1','sanction':'1','loanagreement':'0','emi_schedule':'1','payment_links':'1'},'auth_user_id':",
                        "107",
                        ",'app_id':'",
                        "$application_id",
                        "','source':'da-confirmation-api'}"
                      ]
                    },
                    {
                      "operation": "concat",
                      "stateKey": "successResponse",
                      "values": [
                        "DA confirmation approved and the Approved loan amount changed from Rs.",
                        "$applicationDetails.approved_amount",
                        " to Rs.",
                        "$request.sanctionLoanAmount"
                      ]
                    }
                  ],
                  "false": [
                    {
                      "operation": "concat",
                      "stateKey": "reviewComment",
                      "values": [
                        "Request of change in the Applied loan amount from Rs. ",
                        "$applicationDetails.loan_amount",
                        " to Rs. ",
                        "$request.sanctionLoanAmount"
                      ]
                    },
                    {
                      "operation": "query",
                      "queryType": "insert",
                      "table": "comments",
                      "values": {
                        "application_id": "$application_id",
                        "user_id": 107,
                        "comment": "$reviewComment",
                        "show_consumer": 0,
                        "show_merchant": 0,
                        "created_at": "datetime.CUR_TIMESTAMP",
                        "updated_at": "datetime.CUR_TIMESTAMP",
                        "type": "consumer"
                      }
                    },
                    {
                      "operation": "returnResponse",
                      "return_code": "201004",
                      "message": "The application is under review as the applied loan amount is increased more than Rs.10,000",
                      "CF_code": "CF300"
                    }
                  ]
                }
              ]
            }
          ],
          "signedDAPayload": [
            {
              "operation": "concat",
              "values": [
                "{'cmd':'command:SignedDAUpload','con':'jobs','param':{'id':'",
                "$application_id",
                "','sanctionLoanAmount':'",
                "$request.sanctionLoanAmount",
                "','approverName':'",
                "$request.approverName",
                "','approverDesignation':'",
                "$request.approverDesignation",
                "','approvedDate':'",
                "$request.approvedDate",
                "'},'job_handler':'App\\\\Helpers\\\\CmdHelper@runCommand'}"
              ],
              "stateKey": "signedDAQueue"
            },
            {
              "operation": "setData",
              "stateKey": "da_queue_payload",
              "value": "json_dumps->$signedDAQueue"
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$applicationDataLogsPayload",
              "isNotNull"
            ],
            "true": {
              "table": "application_data_logs",
              "queryType": "insert",
              "values": {
                "application_id": "$application_id",
                "data": "json_dumps->$applicationDataLogsPayload",
                "status": "approved",
                "created_at": "datetime.CUR_TIMESTAMP",
                "user_id": 107,
                "model": "da_confirmation_api"
              }
            }
          },
          {
            "conditions": [
              "$commentLine",
              "isNotNull"
            ],
            "true": {
              "queryType": "insert",
              "table": "comments",
              "values": {
                "application_id": "$application_id",
                "user_id": 107,
                "comment": "$commentLine",
                "show_consumer": 0,
                "show_merchant": 0,
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP",
                "type": "consumer"
              }
            }
          },
          {
            "conditions": [
              "$da_queue_payload",
              "isNotNull"
            ],
            "true": {
              "queryType": "insert",
              "table": "queue_log",
              "values": {
                "uid": "null",
                "status": "pen",
                "exchange": "job_exch",
                "route_key": "exch_rout_key_job",
                "job_handler": "App\\Helpers\\CmdHelper@runCommand",
                "input": "$da_queue_payload",
                "attempt_count": "0",
                "created_at": "datetime.CUR_TIMESTAMP",
                "application_id": "$application_id"
              }
            }
          },
          {
            "conditions": [
              "$reviseJobPayload",
              "isNotNull"
            ],
            "true": {
              "queryType": "insert",
              "table": "jobs",
              "values": {
                "`from`": "reviseDocuments",
                "payload": "json_dumps->$reviseJobPayload",
                "application_id": "$application_id",
                "available_at": "datetime.CUR_TIMESTAMP",
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP"
              }
            }
          }
        ]
      }
    },
    "/customerRest/customerSrv/add-reference": {
      "post": {
        "tags": [],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Loan applicationNo is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "references": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Reference name is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "phone": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Reference phone is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    },
                    "relationship": {
                      "description": "Error",
                      "type": [
                        "string",
                        "null"
                      ],
                      "message": {
                        "return_code": "201002",
                        "message": "Relation is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    }
                  }
                }
              }
            },
            "required": [
              "applicationNo",
              "references"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$referenceCount",
                  "greaterThan",
                  "3"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Only two references are allowed"
                }
              },
              {
                "conditions": [
                  "$request.references[0].phone",
                  "isNotNull"
                ],
                "true": {
                  "conditions": [
                    "$request.references[0].phone",
                    "notEquals",
                    "$request.references[1].phone"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "CF_code": "CF300",
                    "message": "Both references phone can't be same"
                  }
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            },
            {
              "operation": "length",
              "key": "$request.references",
              "stateKey": "referenceCount"
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ]
        },
        "persistence": [
          {
            "operation": "query",
            "queryType": "update",
            "table": "consumer_application_element",
            "clause": {
              "where": [
                "application_id"
              ],
              "queryParams": [
                "$application_id"
              ]
            },
            "values": {
              "reference_name_1": "$request.references[0].name",
              "reference_contact_1": "$request.references[0].phone",
              "reference_relation_1": "$request.references[0].relationship",
              "reference_name_2": "$request.references[1].name",
              "reference_contact_2": "$request.references[1].phone",
              "reference_relation_2": "$request.references[1].relationship"
            }
          }
        ]
      }
    },
    "/merchantRest/merchantSrv/change-request": {
      "post": {
        "tags": [
          "Mconnect Change Request"
        ],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "applicationNo": {
                "type": "string",
                "minLength": 1,
                "message": {
                  "return_code": "201002",
                  "message": "Loan applicationNo is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "changeDetails": {
                "type": "object",
                "properties": {
                  "loanApplicationNo": {
                    "type": "string",
                    "message": {
                      "return_code": "201002",
                      "message": "Loan Application No. should be a string",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "applicantName": {
                    "type": "string",
                    "minLength": 3,
                    "message": {
                      "return_code": "201002",
                      "message": "Applicant Name should be a string of minimum length 3",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "coApplicantName": {
                    "type": "string",
                    "minLength": 3,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-Applicant Name should be a string of minimum length 3",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "projectSize": {
                    "type": "number",
                    "message": {
                      "return_code": "201002",
                      "message": "Project size should be a number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "projectCost": {
                    "type": "number",
                    "message": {
                      "return_code": "201002",
                      "message": "Project cost should be a number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "coApplicantMobileNumber": {
                    "type": "string",
                    "pattern": "^[6-9]\\d{9}$",
                    "minLength": 10,
                    "maxLength": 10,
                    "message": {
                      "return_code": "201002",
                      "message": "Co-applicant mobile number should be a valid 10-digit number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "applicantAddress": {
                    "type": "string",
                    "minLength": 1,
                    "message": {
                      "return_code": "201002",
                      "message": "Applicant Address should be a string",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "applicantMobileNumber": {
                    "type": "string",
                    "pattern": "^[6-9]\\d{9}$",
                    "minLength": 10,
                    "maxLength": 10,
                    "message": {
                      "return_code": "201002",
                      "message": "Applicant Mobile number should be a valid 10-digit number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "tenure": {
                    "type": "integer",
                    "message": {
                      "return_code": "201002",
                      "message": "Tenure should be an integer value in months",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "interestRate": {
                    "type": "number",
                    "message": {
                      "return_code": "201002",
                      "message": "Interest rate charged to customer should be a number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "emiAmount": {
                    "type": "number",
                    "message": {
                      "return_code": "201002",
                      "message": "EMI amount should be a number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "loanAmount": {
                    "type": "number",
                    "message": {
                      "return_code": "201002",
                      "message": "Amount of Loan Sanctioned should be a number",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  },
                  "typeOfCustomer": {
                    "type": "string",
                    "message": {
                      "return_code": "201002",
                      "message": "Type of customer should be a string",
                      "CF_code": "CF300",
                      "pattern": ""
                    }
                  }
                },
                "additionalProperties": false,
                "minProperties": 1,
                "message": {
                  "return_code": "201002",
                  "message": "changeDetails must contain at least one of the allowed keys to be changed",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              }
            },
            "required": [
              "applicationNo",
              "changeDetails"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.applicationNo",
                  "equals",
                  "0"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "message": "Loan applicationNo is required in the correct format",
                  "CF_code": "CF300"
                }
              }
            ]
          }
        },
        "responses": {
          "CF300": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "$response.return_code",
                  "returnText": "$response.message"
                }
              },
              "status_code": 400
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          },
          "CF200": {
            "content": {
              "application/json": {
                "request_id": "$request_id",
                "returnStatus": {
                  "returnCode": "000000",
                  "returnText": "Success"
                }
              },
              "status_code": 200
            },
            "actions": [
              {
                "operation": "query",
                "queryType": "update",
                "table": "merchant_api_request",
                "clause": {
                  "where": [
                    "id"
                  ],
                  "queryParams": [
                    "$merchant_api_request_id"
                  ]
                },
                "values": {
                  "response": "json_dumps->$response",
                  "request_id": "$request_id",
                  "updated_at": "datetime.CUR_TIMESTAMP"
                }
              }
            ]
          }
        },
        "functions": {
          "init": [
            {
              "operation": "setData",
              "stateKey": "request_id",
              "value": "UUID"
            },
            {
              "operation": "query",
              "queryType": "insert",
              "table": "merchant_api_request",
              "values": {
                "created_at": "datetime.CUR_TIMESTAMP",
                "merchant_id": "$merchant_details.id",
                "request": "json_dumps->$request"
              },
              "auto_id": "id"
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "loan_application_no"
                ],
                "queryParams": [
                  "$request.applicationNo"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "application_id"
            },
            {
              "conditions": [
                "$application_id",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Loan Application Number Not Exist"
              }
            }
          ],
          "statusCheck": [
            {
              "operation": "query",
              "queryType": "select",
              "table": "consumer_application",
              "columns": [
                "approved_amount",
                "state",
                "lender_id",
                "loan_amount",
                "co_applicant_mobile_number"
              ],
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "ordering": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "applicationDetails"
            },
            {
              "conditions": [
                "$applicationDetails.state",
                "in",
                "['approved','disbursement query']"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201003",
                "CF_code": "CF300",
                "message": "Application is not approved"
              }
            }
          ],
          "generateComment": [
            {
              "operation": "setData",
              "stateKey": "comments",
              "value": "change_request_comment->$request.changeDetails"
            },
            {
              "operation": "setData",
              "stateKey": "user_id_list",
              "value": "8,2"
            },
            {
              "operation": "conversion",
              "value": "$user_id_list",
              "type": "list",
              "stateKey": "users"
            },
            {
              "operation": "setData",
              "stateKey": "trigger_notification",
              "value": "trigger_user_emails->$users,$application_id,$comments"
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$request.changeDetails",
              "isNotNull"
            ],
            "true": {
              "table": "change_log_request",
              "queryType": "insert",
              "values": {
                "application_id": "$application_id",
                "request_details": "json_dumps->$request.changeDetails",
                "status": "$applicationDetails.state",
                "created_at": "datetime.CUR_TIMESTAMP",
                "source": "MERCHANT API",
                "user_id": 107
              }
            }
          },
          {
            "conditions": [
              "$comments",
              "isNotNull"
            ],
            "true": {
              "table": "comments",
              "queryType": "insert",
              "values": {
                "application_id": "$application_id",
                "user_id": 107,
                "comment": "$comments",
                "show_consumer": 0,
                "show_merchant": 0,
                "created_at": "datetime.CUR_TIMESTAMP",
                "updated_at": "datetime.CUR_TIMESTAMP",
                "type": "consumer"
              }
            }
          }
        ]
      }
    }
  }
}