Json Schema Validation in Logic Apps and Flow

You can create Logic Apps and Flow workflows that trigger on receipt of a Http request and optionally receive a Json payload. This technique can be used as an integration pattern in a B2B enviroment.  You can design your Json scheme specifically for your partners so that is is easy to use and understand.  This provides your integation partners with an API that abtracts the complexities and business logic of the underlying platforms from the calling system.  This is a good way of creating an API for Dynamics 365 rather than proving direct access to the Dynamics Web API which gives unrestricted accesss to the underlying entities.

In this example I created a Logic App  workflow accepts a Json message use the Json data received to creates a contact and account record in Dynamics 365.

Logic Apps Workflow triggered by Http post with Json payload

I created this workflow by starting with a blank workflow and added a Request trigger and entered the sample Json below to generate the payload schema.

Logic Apps Enter Sample Json

I then added actions to the workflow to create a contact and account record in Dynamics 365 using the data in the Json payload. In the create account action I have used the company parameter from the Http request Json and set the primary contact to the contact created in the first action.

Create account records in Dynamics 365 from worlflow action

I can now provide my integration partner with details of the Url and the Json schema to call the Workflow.  The issue with this is that there is no validation of the Json posted and if the endpoint is triggered without a payload we end up with empty records in Dynamics 365. A better way of handling this is to use a Json Schema tool to create a schema with validation. I created my own Json schema making the  three fields required and used this schema in my Logic App instead of the previously auto generated schema.

{
“$schema”: “http://json-schema.org/draft-04/schema#”,
“type”: “object”,
“properties”: {
“firstname”: {
“type”: “string”
},
“lastname”: {
“type”: “string”
},
“company”: {
“type”: “string”
}
},
  “required”: [
    “firstname”,
    “lastname”,
    “company”
  ]
}

I then selected setting on the Logic Apps Http Trigger

Logic Apps Http Request Settings

I then set Schema Valdiation to on

Logic Apps Schema Validation On

Now when I try call my Logic Apps workflow the Json payload is validated against the schema and the caller gets an error back to this effect.

Logic Apps call from Postman with Json schema validation

Flow can also be also configured in exactly the same way to validate a Json Schema.