| 
<?php
 require_once("Autoloader.php");
 
 /**
 * Example schema to be accepted via JSON input
 */
 $_payLoadSchema = [
 [
 'node' => [
 'name' => 'title',
 'type' => 'text',
 'required' => true,
 'max_length' => 20
 ]
 ],
 [
 'node' => [
 'name' => 'action',
 'type' => 'text',
 'required' => true,
 'max_length' => 20,
 'choices' => [
 "CUSTOMER_DATA",
 "CUSTOMER_CREATE"
 ]
 ]
 ],
 [
 'node' => [
 'name' => 'transaction_amount',
 'type' => 'numeric',
 'required' => true,
 'value_range' => [
 'min_value' => 10,
 'max_value' => 100
 ]
 ]
 ],
 [
 'node' => [
 'name' => 'transaction_date',
 'type' => 'choices',
 'required' => true,
 'choices' => [
 "2018-01-01",
 "2018-01-02"
 ]
 ]
 ],
 [
 'node' => [
 'name' => 'customer_ids',
 'type' => 'array',
 'required' => true,
 'max_item_count' => 2
 ]
 ],
 [
 'node' => [
 'name' => 'is_active',
 'type' => 'boolean',
 'required' => false
 ]
 ],
 [
 'node' => [
 'name' => 'additional_data',
 'type' => 'object',
 'sub_nodes' => [
 ['node' => [
 'name' => 'additional_field_1',
 'type' => 'text',
 'max_length' => "100"
 ]],
 ['node' => [
 'name' => 'additional_field_2',
 'type' => 'numeric'
 ]]
 ]
 ]
 ]
 ];
 
 
 /**
 * example JSON input
 */
 $json_raw = '
 {
 "title": "",
 "action": "CUSTOMER_CREATE",
 "transaction_amount": "44",
 "transaction_date": "2018-01-01",
 "customer_ids": [
 1001,
 1002,
 1003
 ],
 "is_active": true,
 "additional_data": {
 "additional_field_2": 10
 }
 }
 ';
 
 use JSONSchema\JsonSchemaValidator;
 
 $jsonschemavalidator = new JsonSchemaValidator();
 try {
 $jsonschemavalidator->validateSchema($_payLoadSchema, $json_raw);
 } catch (Exception $e) {
 echo $e->getMessage();
 }
 
 print_r($jsonschemavalidator->getErrors());
 
 
 ?>
 |