| # Custom Message Support |
| Users can add their own custom messages for schema validation using the instructions in this page. |
| |
| The json schema itself has a place for the customised message. |
| |
| ## Examples |
| ### Example 1 : |
| The custom message can be provided outside properties for each type, as shown in the schema below. |
| ```json |
| { |
| "type": "object", |
| "properties": { |
| "firstName": { |
| "type": "string", |
| "description": "The person's first name." |
| }, |
| "foo": { |
| "type": "array", |
| "maxItems": 3 |
| } |
| }, |
| "message": { |
| "maxItems" : "MaxItem must be 3 only", |
| "type" : "Invalid type" |
| } |
| } |
| ``` |
| ### Example 2 : |
| To keep custom messages distinct for each type, one can even give them in each property. |
| ```json |
| { |
| "type": "object", |
| "properties": { |
| "dateTime": { |
| "type": "string", |
| "format": "date", |
| "message": { |
| "format": "Keep date format yyyy-mm-dd" |
| } |
| }, |
| "uuid": { |
| "type": "string", |
| "format": "uuid", |
| "message": { |
| "format": "Input should be uuid" |
| } |
| } |
| } |
| } |
| ``` |
| ### Example 3 : |
| For the keywords `required` and `dependencies`, different messages can be specified for different properties. |
| |
| ```json |
| { |
| "type": "object", |
| "properties": { |
| "foo": { |
| "type": "number" |
| }, |
| "bar": { |
| "type": "string" |
| } |
| }, |
| "required": ["foo", "bar"], |
| "message": { |
| "type" : "should be an object", |
| "required": { |
| "foo" : "'foo' is required", |
| "bar" : "'bar' is required" |
| } |
| } |
| } |
| ``` |
| ### Example 4 : |
| The message can use arguments but note that single quotes need to be escaped as `java.text.MessageFormat` will be used to format the message. |
| |
| ```json |
| { |
| "type": "object", |
| "properties": { |
| "foo": { |
| "type": "number" |
| }, |
| "bar": { |
| "type": "string" |
| } |
| }, |
| "required": ["foo", "bar"], |
| "message": { |
| "type" : "should be an object", |
| "required": { |
| "foo" : "{0}: ''foo'' is required", |
| "bar" : "{0}: ''bar'' is required" |
| } |
| } |
| } |
| ``` |
| |
| ## Format |
| ```json |
| "message": { |
| [validationType] : [customMessage] |
| } |
| ``` |
| Users can express custom message in the **'message'** field. |
| The **'validation type'** should be the key and the **'custom message'** should be the value. |
| |
| Also, we can make format the dynamic message with properties returned from [ValidationMessage.java](https://github.com/networknt/json-schema-validator/blob/master/src/main/java/com/networknt/schema/ValidationMessage.java) class such as **arguments, path e.t.c.** |
| |
| |
| |
| Take a look at the [PR1](https://github.com/networknt/json-schema-validator/pull/438) and [PR2](https://github.com/networknt/json-schema-validator/pull/632) |