This
post
was originally published
here
We just released a new version of our Azure Function JSON Schema Validation, adding support for more complex schema validations. In this case, we add support for applying subschemas validation conditionally.
The
if
,
then
and
else
keywords allow the application of a subschema based on the outcome of another schema, much like the
if
/
then
/
else
constructs you’ve probably seen in traditional programming languages.
If
if
is valid,
then
must also be valid (and
else
is ignored.) If
if
is invalid,
else
must also be valid (and
then
is ignored).
If
then
or
else
is not defined,
if
behaves as if they have a value of
true
.
If
then
and/or
else
appear in a schema without
if
,
then
and
else
are ignored.
JSON Schema Validation Function
The JSON Schema Validation is a simple Azure Function that allows you to validate your JSON message against a JSON Schema, enabling you to specify constraints on the structure of instance data to ensure it meets the requirements.
The function receives a JSON payload with two properties:
The JSON message in the
json
property.
And the JSON Schema in the
jsonSchema
property.
Example:
"json": {
"address": [
"contact": {
"firstName": "myFirstName",
"lastName": "myLastName"
"type": "bill"
"jsonSchema": {
"type": "object",
"properties": {
"address": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contact": {
"type": "object",
"properties": {
"firstName": {
"type": "string"
"lastName": {
"type": "string"
"required": []
"type": {
"type": "string"
"required": [
"contact",
"type"
"if": {
"properties": {
"address": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"const": "bill"
"then": {
"properties": {
"address": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contact": {
"required": [
"firstName"
"properties": {
"firstName": {
"type": "string"
"else": {
"properties": {
"address": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contact": {
"required": [],
"properties": {}
The function’s output will be:
A 200 OK if the JSON message is valid.
Or a 400 Bad Request if there are validation errors/issues.
Where can I download it?
You can download the complete Azure Functions source code here:
Download JSON Schema Validation Azure Function
Hope you find this helpful! So, if you liked the content or found it helpful and want to help me write more content, you can buy (or help buy) my son a Star Wars Lego!
Big thanks to my team member
Luís Rigueira
for adding this new feature.
Author:
Sandro Pereira
Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc.
He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community.
View all posts by Sandro Pereira
Logic App Consumption deployment: The secret of KeyVault parameter cannot be retrieved. Http status code: ‘Forbidden’. Error message: ‘Access denied to first party service
BizTalk Server Visual Studio project: attempted re-targeting of the project has been canceled.
BizTalk Oracle Adapter error: The assembly required for type mapping not found.
PowerShell script to identify all SQL V1 actions and triggers inside Logic Apps Consumption
Friday (funny) Fact: There is no size limit for the Logic App parameter name