Dynamic Cypher based on JSON API Request

We have ingested 10 M + customers into Neo4j and now we want to FETCH customers based on Inputs from the User via REST API(Spring Boot). Our requirement is similar to Elastic Search Query (something like https://www.graphgrid.com/pairing-neo4j-elasticsearch-the-basics/) where the User should be able to Search based on various possible combinations and based on the matching criteria we should be able to return 0 or many customers.
For Example , the input JSON might have the possible combinations

  1. FN +LN + SSN
  2. LN+ Phone + DOB
  3. LN + DOB + ZIP
  4. SSN etc