Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

What is Validating Properties?

Sometimes it is required to validate the value of Properties in the Property Store in order to make sure they comply to a given set of rules.

For Properties of type application/json you can use the JSON Schema specification for validating.

For more details see here: JSON Schema .

PIPEFORCE provides built-in toolings for storage, resolving and validation using JSON Schemas.

Store a JSON Schema in the Property Store

By default, a JSON schema which describes a JSON object (= document) within PIPEORCE is placed in a property with content type application/json in the property store using this property path:

global/app/<APP>/object/<NAME>/v1/schema

Where <APP> is the name of the app, the object belongs to. <NAME> is the name of the object. In the example of a person which is part of the app myappp, you could use this path to access the object schema in a unique way from within the overall PIPEFORCE instance:

global/app/myapp/object/person/v1/schema

Validate a JSON document

In order to validate whether a given JSON document complies with such a given JSON schema, you can use the command json.validate. This command will by default check whether a given document is a valid JSON document (= syntax validation). Additionally, a JSON Schema can be defined which should be loaded and used as based for schema validation (= structural validation).

This example will validate a JSON given in the body using the JSON schema from above which is now stored in the property store:

body: {
    "firstName": "Sam",
    "lastName": "Meyer",
    "age": 48,
    "gender": "male"
  }
  
pipeline:
  - json.validate:
      schema: $uri:global/app/myapp/object/person/v1/schema

In case the given JSON document is valid and complies with the JSON schema rules, OK is returned:

{
    "status": "ok",
    "statusCode": 200
}

Let’s change the value of field age now to a string value (in line 4) instead and validate again.

body: {
    "firstName": "Sam",
    "lastName": "Meyer",
    "age": "48",
    "gender": "male"
  }
  
pipeline:
  - json.validate:
      schema: $uri:global/app/myapp/object/person/v1/schema

This will return an validation error like this:

{
    "status": "error",
    "statusCode": 200,
    "statusMessage": [
        {
            "type": "type",
            "path": "$.age",
            "message": "$.age: string found, number expected"
        }
    ]
}

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.