title: JSON schema validation with Map of string with Enum constraints
body: <p>Requesting help with JSON Schema validation, below is sample JSON and Schema. I am trying to figure out how to specify "ppd" schema rule specifically "cfg" is a map of String, String and need to further restrict the entries of the key and value in this map by Enum definition i.e. allowed values for "inputDateTimeFormat" is a valid date time format so rule should encode if key is "inputDateTimeFormat" then allowed value is a pattern matching date time format and similarly if key is "valuemapping" then allowed values is pattern matching k=v (example below). </p>
  
  <p>Could you please suggest a way to achieve this?</p>
  
  <p>JSON Sample -</p>
  
  <pre><code>{
    "sm": [
      {
        "mid": "id-1",
        "ppd": [
          {
            "name": "cc-1",
            "cfg": {
              "columns": "v-1",
              "valueMapping": "B=01;S=02"
            }
          },
          {
            "name": "cc-2",
            "cfg": {
              "columns": "v-2",
              "inputDateTimeFormat": "ddMMMyyyy_HH:mm:ss.SSSSSS",
              "outputDateTimeFormat": "yyyy-MM-dd'T'HH:mm:Ss.SSSZ"
            }
          },
          {
            "name": "cc-3",
            "cfg": {
              "columns": "v-3;v-4",
              "markers": "d=01"
            }
          }
        ]
      }
    ]
  }
  </code></pre>
  
  <p>JSON Schema :</p>
  
  <pre><code>{
    "type": "object",
    "$schema": "http://json-schema.org/draft-06/schema",
    "id": "source-mappings-schema",
    "required": true,
    "properties": {
      "sm": {
        "type": "array",
        "id": "source-mappings-schema/sm",
        "required": true,
        "items": {
          "type": "object",
          "id": "source-mappings-schema/sm/0",
          "required": true,
          "properties": {
            "mappingId": {
              "type": "string",
              "id": "source-mappings-schema/sm/0/mappingId",
              "required": true
            },
            "ppd": {
              "type": "array",
              "id": "source-mappings-schema/sm/0/ppd",
              "required": true,
              "items": {
                "type": "object",
                "id": "source-mappings-schema/sm/0/ppd/0",
                "required": true,
                "properties": {
                  "name": {
                    "type": "string",
                    "id": "source-mappings-schema/sm/0/ppd/0/name",
                    "required": true
                  },
                  "cfg": {
                    "type": "array",
                    "id": "source-mappings-schema/sm/0/ppd/0/cfg",
                    "required": true,
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  </code></pre>