{
  "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 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": ""
                }
              },
              "phone": {
                "description": "Phone",
                "type": "string",
                "pattern": "^[0-9]\\d{9}$",
                "minLength": 10,
                "maxLength": 10,
                "message": {
                  "return_code": "201002",
                  "message": "Customer phone is required in the correct format & length. It should be string",
                  "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": ""
                }
              },
              "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": ""
                }
              },
              "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"
                }
              },
              "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"]
              },
              "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": ""
                    }
                  }
                },
                "message": {
                  "return_code": "201002",
                  "message": "CoApplicant key is requireed",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "addresses": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "addrType": {
                      "description": "Error",
                      "type": "string",
                      "enum": [
                        "CURRES",
                        "PERMA"
                      ],
                      "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": {
                      "description": "Error",
                      "type": [
                        "string"
                      ],
                      "minLength": 6,
                      "maxLength": 6,
                      "message": {
                        "return_code": "201002",
                        "message": "Pincode is required",
                        "CF_code": "CF300",
                        "pattern": ""
                      }
                    }
                  },
                  "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,
                        "pattern": "^(\\s*\\w\\s*){2,}$",
                        "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": ""
                    }
                  }
                },
                "message": {
                  "return_code": "201002",
                  "message": "customersBankInfo key is requireed",
                  "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]\\d{9}$",
                    "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": ""
                    }
                  }
                }
              }
            },
            "required": [
              "name",
              "phone",
              "email",
              "gender",
              "maritalStatus",
              "dateofBirth",
              "panNumber",
              "preferredLanguage",
              "inverterToBeInstalled",
              "panelToBeInstalled",
              "monthlyPowerBill",
              "kwInstallation",
              "grossProjectValue",
              "subsidyAmount",
              "coApplicant",
              "addresses",
              "references",
              "profession",
              "customersBankInfo"
            ]
          },
          "rules": {
            "data": [
              {
                "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.phone",
                  "notEquals",
                  "$request.coApplicant.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Applicant & co-Applicant phone 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.phone"
                ],
                "false": {
                  "operation": "returnResponse",
                  "return_code": "201004",
                  "CF_code": "CF300",
                  "message": "Reference & applicant phone can't be same"
                }
              },
              {
                "conditions": [
                  "$request.references[1].phone",
                  "notEquals",
                  "$request.phone"
                ],
                "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.phone"
                ],
                "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",
                  "3"
                ],
                "true": {
                  "operation": "returnResponse",
                  "return_code": "201002",
                  "CF_code": "CF300",
                  "message": "Address should contain CURRES & PERMA parameters"
                }
              }
            ]
          }
        },
        "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": "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"
                }
              }
            ]
          },
          "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": "length",
              "key": "$request.references",
              "stateKey": "referenceCount"
            },
            {
              "operation": "length",
              "key": "$request.addresses",
              "stateKey": "addressCount"
            },
            {
              "operation": "calculate",
              "stateKey": "inverter_power_savings",
              "value": "$request.kwInstallation * 1000"
            },
            {
              "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.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"
              }
            },
            {
              "conditions": [
                "$request.addresses[0].addrType",
                "equals",
                "CURRES"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "current_address",
                "value": "$request.addresses[0]"
              },
              "false": {
                "operation": "setData",
                "stateKey": "current_address",
                "value": "$request.addresses[1]"
              }
            },
            {
              "conditions": [
                "$request.addresses[0].addrType",
                "equals",
                "PERMA"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "permanent_address",
                "value": "$request.addresses[0]"
              },
              "false": {
                "operation": "setData",
                "stateKey": "permanent_address",
                "value": "$request.addresses[1]"
              }
            },
            {
              "operation": "mapData",
              "stateKey": "marital_status",
              "key": "$request.maritalStatus",
              "enum": {
                "M": "MARRIED",
                "S": "SINGLE"
              }
            },
            {
              "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"
              }
            },
            {
              "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": "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"
            }
          ],
          "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"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_name",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_name",
                "value": "$request.coApplicant.name"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_pan_card",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_pan_card",
                "value": "$request.coApplicant.panNumber"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_email",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_email",
                "value": "$request.coApplicant.email"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.name",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_gender",
                "value": ""
              }
            },
            {
              "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"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_dob",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_dob",
                "value": "$request.coApplicant.dateofBirth"
              }
            },
            {
              "conditions": [
                "$request.coApplicant.relationShip",
                "isNotNull"
              ],
              "false": {
                "operation": "setData",
                "stateKey": "co_app_relationship",
                "value": ""
              },
              "true": {
                "operation": "setData",
                "stateKey": "co_app_relationship",
                "value": "$request.coApplicant.relationShip"
              }
            }
          ]
        },
        "persistence": [
          {
            "table": "customers",
            "queryType": "insert",
            "values": {
              "name": "$request.name",
              "email": "$request.email",
              "mobile_number": "$request.phone",
              "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": {
              "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"
            }
          },
          {
            "table": "consumer_application",
            "queryType": "insert",
            "values": {
              "company_name": "get_company_id->$request.profession.professionDetails.company",
              "current_address_state": "get_state->$current_address.state",
              "name": "$request.name",
              "mobile_number": "encrypt->$request.phone",
              "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",
              "current_address_line_1": "$current_address_line",
              "current_address_landmark": "$current_address.landmark",
              "current_address_city": "$current_address.city",
              "current_address_pincode": "$current_address.pincode",
              "state": "form completed",
              "updated_by": "MERCHANT API",
              "lender_id": 20,
              "merchant_id": "$merchant_id",
              "created_at": "datetime.CUR_TIMESTAMP",
              "updated_at": "datetime.CUR_TIMESTAMP",
              "employee_status": "$profession_type",
              "work_address_line_1": "$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": "$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",
              "monthly_income": "$request.profession.professionDetails.monthlyIncome"
            },
            "auto_id": "id"
          },
          {
            "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": "$request.monthlyPowerBill",
              "inverter_KW_installation": "$request.kwInstallation",
              "inverter_gross_project_amount": "$request.grossProjectValue",
              "inverter_subsidy_amount": "$request.subsidyAmount",
              "inverter_power_savings": "$inverter_power_savings",
              "application_id": "$consumer_application_id",
              "type_of_customer": "$request.typeOfCustomer"
            }
          },
          {
            "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"
            }
          },
          {
            "table": "application_data_logs",
            "queryType": "insert",
            "values": {
              "application_id": "$consumer_application_id",
              "data": "format_application_data->$request",
              "status": "form completed",
              "created_at": "datetime.CUR_TIMESTAMP",
              "user_id": 107
            }
          }
        ]
      }
    },
    "/customerRest/documentSrv/uploadDocument": {
      "post": {
        "tags": [
          "Mconnect Loan 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",
                  "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",
                  "OTH"
                ],
                "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": [
              "cif",
              "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",
              "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": "doc_name",
              "key": "$request.docName",
              "enum": {
                "PAN": "pan_card",
                "SECURITY_CHEQUE": "security_cheques",
                "APPLICANT_PHOTO": "customer_photo",
                "APPLICANT_AADHAAR_FRONT": "aadhar_card",
                "APPLICANT_AADHAAR_BACK": "aadhar_card_back",
                "ELECTRICITY_BILL": "electricity_bill",
                "GAS_BILL": "gas_bill",
                "PASSPORT": "passport",
                "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",
                "SALARY_SLIP": "salary_slip",
                "ITR": "itr",
                "MCA": "mca",
                "UTILITY_BILL_VALIDATION": "utilitybillvalidation",
                "CPV": "cpv",
                "RENT_AGREEMENT": "rent_agreement",
                "SALE_DEED": "sale_deed",
                "SHOP_ACT": "shop_act",
                "GST_CERTIFICATE": "gst_certificate",
                "CO_APPLICANT_BANK_STATEMENT": "co_applicant_bank_statement",
                "CO_APPLICANT_PAN": "co_applicant_pan_card",
                "CO_APPLICANT_AADHAAR_FRONT": "co_applicant_aadhar_card",
                "CO_APPLICANT_AADHAAR_BACK": "co_applicant_aadhar_card_back",
                "CO_APPLICANT_PHOTO": "co_applicant_customer_photo",
                "PASSBOOK": "passbook_copy",
                "AADHAR_XML": "aadhar_xml",
                "OTH": "other"
              }
            }
          ],
          "uploadDocument": [
            {
              "operation": "query",
              "name": "getApplicationIDbyCIF",
              "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": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "applicationDetails"
            },
            {
              "conditions": [
                "$applicationDetails",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "message": "CIF Number Not Exist",
                "return_code": "201002",
                "CF_code": "CF300"
              }
            },
            {
              "conditions": [
                "$request.cif",
                "equals",
                "$applicationDetails.co_applicant_id"
              ],
              "true": {
                "operation": "setData",
                "stateKey": "applicantType",
                "value": 2
              },
              "false": {
                "operation": "setData",
                "stateKey": "applicantType",
                "value": 1
              }
            },
            {
              "operation": "concat",
              "values": [
                "$applicationDetails.id",
                "/",
                "$doc_name",
                ".",
                "$request.docFormat"
              ],
              "stateKey": "s3_path"
            },
            {
              "operation": "s3Upload",
              "contentKey": "$request.docContent",
              "path": "$s3_path",
              "stateKey": "doc_upload_status"
            },
            {
              "conditions": [
                "$doc_upload_status",
                "equals",
                "False"
              ],
              "true": {
                "operation": "returnResponse",
                "message": "Base64 encoding issue",
                "CF_code": "CF300",
                "return_code": "201002"
              }
            }
          ]
        },
        "persistence": [
          {
            "table": "consumer_application_files",
            "queryType": "insert",
            "values": {
              "consumer_application_id": "$applicationDetails.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"
            }
          }
        ]
      }
    },
    "/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"
              }
            }
          },
          {
            "operation": "query",
            "name": "getconsumerApplicationAdditionalDetails",
            "queryType": "select",
            "table": "consumer_application_additional",
            "columns": [
              "id"
            ],
            "clause": {
              "where": ["application_id"],
              "queryParams": ["$app_id"]
            },
            "limit": 1,
            "stateKey": "consumer_app_additional"
          },
          {
            "conditions": [
              "$consumer_app_additional",
              "isNotNull"
            ],"true": {
            "queryType": "update",
            "table": "consumer_application_additional",
            "clause": {
              "where": ["application_id"],
              "queryParams": ["$app_id"]
            },
            "values": {
              "initial_applied_tenure": "$request.offerId",
              "updated_at": "datetime.CUR_TIMESTAMP"
            }
          },
            "false": {
              "table": "consumer_application_additional",
              "queryType": "insert",
              "values": {
                "application_id": "$app_id",
                "initial_applied_tenure": "$request.offerId",
                "created_at": "datetime.CUR_TIMESTAMP"
              }
            }
          },
          {
            "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",
                "created_at": "datetime.CUR_TIMESTAMP",
                "application_id": "$app_id"
              },
              "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"
                ],
                "false": {
                  "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",
                "data": {},
                "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"
              ],
              "clause": {
                "where": [
                  "id"
                ],
                "queryParams": [
                  "$application_id"
                ]
              },
              "stateKey": "application_state"
            },
            {
              "conditions": [
                "$application_state",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "return_code": "201002",
                "CF_code": "CF300"
              }
            }
          ]
        }
      }
    },
    "/customerRest/customerSrv/save-electricity-bill-details": {
      "post": {
        "tags": [],
        "requestBody": {
          "content": {
            "type": "object",
            "properties": {
              "application_number": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Loan application number is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "customer_id": {
                "type": "string",
                "pattern": "^[0-9]*$",
                "message": {
                  "return_code": "201002",
                  "message": "Customer ID is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "mobile_number": {
                "type": "string",
                "pattern": "^[6-9]\\d{9}$",
                "message": {
                  "return_code": "201002",
                  "message": "Mobile number is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "service_provider": {
                "type": "string",
                "message": {
                  "return_code": "201002",
                  "message": "Service provider is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "monthly_bill_amount": {
                "type": "integer",
                "message": {
                  "return_code": "201002",
                  "message": "Monthly bill amount is required",
                  "CF_code": "CF300",
                  "pattern": ""
                }
              },
              "district": {
                "type": ["string", "null"],
                "message": {
                  "return_code": "201002",
                  "message": "District is required",
                  "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": [
              "application_number",
              "customer_id",
              "service_provider",
              "monthly_bill_amount"
            ]
          },
          "rules": {
            "data": [
              {
                "conditions": [
                  "$request.service_provider",
                  "equals",
                  "UPPCL"
                ],
                "true": {
                  "conditions": [
                    "$request.district",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "District is required for UPPCL provider",
                    "CF_code": "CF300"
                  }
                }
              },
              {
                "conditions":[
                  "$request.service_provider",
                  "equals",
                  "OTH"
                ],
                "true": {
                  "conditions": [
                    "$request.other_service_provider",
                    "isNotNull"
                  ],
                  "false": {
                    "operation": "returnResponse",
                    "return_code": "201004",
                    "message": "Please provide service provider name",
                    "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"
            },
            {
              "operation": "mapData",
              "stateKey": "discom_full_name",
              "key": "$request.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"
              }
            }
          ],
          "getIdByApplicationNo": [
            {
              "operation": "query",
              "name": "getidbyapplicationno",
              "queryType": "select",
              "table": "pro_forma_invoice",
              "columns": ["application_id"],
              "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"
              }
            }
          ],
          "electricity_bill_api": [
            {
              "operation": "concat",
              "values": ["$env.CF_ENDPOINT", "/api/electricity-bill-details"],
              "stateKey": "utility_bill_url"
            },
            {
              "conditions":[
                "$request.service_provider",
                "equals",
                "OTH"
              ],
              "false": {
                "operation": "apiCall",
                "url": "$utility_bill_url",
                "method": "post",
                "headers": {
                  "X-Client-Id": "$env.PIGGY_CLIENT_ID",
                  "X-Client-Secret": "$env.PIGGY_CLIENT_SECRET"
                },
                "body": {
                  "application_id": "$application_id",
                  "customer_id": "$request.customer_id",
                  "provider": "$request.service_provider",
                  "district": "$request.district",
                  "mobile_number": "$request.mobile_number"
                },
                "stateKey": "responseBillValidation"
              }
            },
            {
              "conditions": [
                "$responseBillValidation.message",
                "equals",
                "Failed to validate utility bill"
              ],
              "true": {
                "operation": "returnResponse",
                "return_code": "201002",
                "CF_code": "CF300",
                "message": "Failed to validate electricity bill"
              }
            }
          ]
        },
        "persistence": [
          {
            "conditions": [
              "$request.service_provider",
              "equals",
              "OTH"
            ],
            "true": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": ["application_id"],
                "queryParams": ["$application_id"]
              },
              "values": {
                "inverter_monthly_power_bill": "$monthly_bill_amount",
                "other_discom_service_provider": "$request.other_service_provider"
              }
            },
            "false": {
              "queryType": "update",
              "table": "consumer_application_element",
              "clause": {
                "where": ["application_id"],
                "queryParams": ["$application_id"]
              },
              "values": {
                "discom_service_provider": "$discom_full_name"
              }
            }
          }
        ]
      }
    },
    "/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": {
              "cif": {
                "description": "Error",
                "type": [
                  "number"
                ],
                "minLength": 4,
                "message": {
                  "return_code": "201002",
                  "message": "CIF 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": [
              "cif",
              "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"
              }
            }
          ],
          "getApplicationIDbyCIF": [
            {
              "operation": "query",
              "name": "getApplicationIDbyCIF",
              "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": {
                "sorting": "DESC",
                "column": "created_at"
              },
              "stateKey": "applicationDetails"
            },
            {
              "conditions": [
                "$applicationDetails",
                "isNotNull"
              ],
              "false": {
                "operation": "returnResponse",
                "message": "CIF Number Not Exist",
                "return_code": "201002",
                "CF_code": "CF300"
              }
            },
            {
              "conditions": [
                "$request.cif",
                "equals",
                "$applicationDetails.co_applicant_id"
              ],
              "true": {
                "operation": "returnResponse",
                "message": "Please provide applicant cif",
                "return_code": "201002",
                "CF_code": "CF300"
              },
              "false": {
                "operation": "setData",
                "stateKey": "applicantType",
                "value": 1
              }
            }
          ],
          "checkConsentExists": [
            {
              "operation": "query",
              "queryType": "select",
              "table": "consent_log",
              "columns": [
                "application_id"
              ],
              "clause": {
                "where": [
                  "application_id"
                ],
                "queryParams": [
                  "$applicationDetails.id"
                ]
              },
              "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': '",
                "$applicationDetails.id",
                "', 'applicant_type': '",
                "$applicantType",
                "'}"
              ],
              "stateKey": "payload"
            }
          ]
        },
        "persistence": [
          {
            "table": "consent_log",
            "queryType": "insert",
            "values": {
              "application_id": "$applicationDetails.id",
              "ips": "$ip",
              "latitude": "$request.latitude",
              "longitude": "$request.longitude",
              "status": "1",
              "type": "bureau & KYC",
              "applicant_type": "$applicantType",
              "created_at": "datetime.CUR_TIMESTAMP",
              "updated_at": "datetime.CUR_TIMESTAMP"
            }
          },
          {
            "table": "jobs",
            "queryType": "insert",
            "values": {
              "`from`": "mconnectConsent",
              "payload": "json_dumps->$payload",
              "application_id": "$applicationDetails.id",
              "available_at": "datetime.CUR_TIMESTAMP",
              "created_at": "datetime.CUR_TIMESTAMP",
              "updated_at": "datetime.CUR_TIMESTAMP"
            }
          }
        ]
      }
    }
  },
  "components": {
    "getState": [
      {
        "args": [
          "arg1"
        ]
      },
      {
        "operation": "query",
        "name": "getState",
        "queryType": "select",
        "table": "state",
        "columns": [
          "name"
        ],
        "clause": {
          "where": [
            "code"
          ],
          "queryParams": [
            "arg1"
          ]
        },
        "resultKey": "state"
      }
    ],
    "getCompanyId": [
      {
        "args": [
          "arg1"
        ]
      },
      {
        "operation": "query",
        "name": "getCompanyId",
        "queryType": "select",
        "table": "company",
        "columns": [
          "id"
        ],
        "clause": {
          "where": [
            "company"
          ],
          "queryParams": [
            "arg1"
          ]
        },
        "stateKey": "company_id"
      },
      {
        "conditions": [
          "$company_id",
          "isNotNull"
        ],
        "false": {
          "table": "company",
          "operation": "insert",
          "values": {
            "category": "CAT D",
            "company": "profession.professionDetails.company"
          },
          "auto_id": "id"
        },
        "true": {
          "operation": "returnData",
          "resultKey": "$company_id"
        }
      },
      {
        "conditions": [
          "company.id",
          "isNotNull"
        ],
        "false": {
          "operation": "returnData",
          "resultKey": "company.id"
        }
      }
    ],
    "getLoanApplicationNo": [
      {
        "args": [
          "arg1"
        ]
      },
      {
        "operation": "length",
        "key": "arg1",
        "stateKey": "len_app_id"
      },
      {
        "conditions": [
          "$len_app_id",
          "lesserThan",
          7
        ],
        "true": [
          {
            "operation": "subtract",
            "val1": 7,
            "val2": "$len_app_id",
            "stateKey": "diff"
          },
          {
            "operation": "concat",
            "values": [
              "0",
              ""
            ],
            "number": "$diff",
            "stateKey": "lan1"
          },
          {
            "operation": "query",
            "stateKey": "merchant_slug",
            "queryType": "select",
            "table": "merchant",
            "columns": [
              "slug"
            ],
            "limit": 1,
            "clause": {
              "where": [
                "id"
              ],
              "queryParams": [
                "$merchant_id"
              ]
            }
          },
          {
            "operation": "concat",
            "values": [
              "upper->$merchant_slug",
              "$lan1",
              "arg1"
            ],
            "resultKey": "loan_application_number"
          }
        ]
      }
    ]
  }
}