{
  "schemaDialect": "OpenAPI 3.0",
  "description": "JSON has string, number, boolean, object, array and null. Integer is a whole-number constraint. Float, double, decimal and dates use type plus format. These definitions are expanded into request schemas at startup.",
  "types": {
    "string": {
      "schema": {
        "type": "string"
      },
      "description": "JSON text; numeric-looking strings remain strings.",
      "validExamples": [
        "demo",
        "",
        "123"
      ],
      "invalidExamples": [
        1,
        true,
        {},
        []
      ]
    },
    "integer": {
      "schema": {
        "type": "integer"
      },
      "description": "Whole JSON number; numeric strings and fractional values are rejected.",
      "validExamples": [
        0,
        1,
        -1
      ],
      "invalidExamples": [
        1.2,
        "1",
        true
      ]
    },
    "int32": {
      "schema": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Signed 32-bit whole number.",
      "validExamples": [
        -2147483648,
        2147483647
      ],
      "invalidExamples": [
        -2147483649,
        2147483648,
        1.2
      ]
    },
    "int64": {
      "schema": {
        "type": "integer",
        "format": "int64"
      },
      "description": "Signed 64-bit whole number, checked without floating-point rounding.",
      "validExamples": [
        -9223372036854775808,
        9223372036854775807
      ],
      "invalidExamples": [
        -9223372036854775809,
        9223372036854775808,
        "9223372036854775807"
      ]
    },
    "number": {
      "schema": {
        "type": "number"
      },
      "description": "Finite JSON number, either whole or fractional.",
      "validExamples": [
        0,
        10.25,
        -1.5
      ],
      "invalidExamples": [
        "10.25",
        true,
        "NaN"
      ]
    },
    "float": {
      "schema": {
        "type": "number",
        "format": "float"
      },
      "description": "Finite JSON number within float32 magnitude; whole numbers are valid too.",
      "validExamples": [
        0,
        1.25,
        -3.4e+38
      ],
      "invalidExamples": [
        3.5e+38,
        "1.25",
        "Infinity"
      ]
    },
    "double": {
      "schema": {
        "type": "number",
        "format": "double"
      },
      "description": "Finite JSON number within float64 magnitude.",
      "validExamples": [
        0,
        1.25,
        1.7e+308
      ],
      "invalidExamples": [
        "1.25",
        true,
        "NaN"
      ]
    },
    "decimal": {
      "schema": {
        "type": "number",
        "format": "double"
      },
      "description": "Decimal-valued JSON number using float64 validation; use a numeric string if exact decimal precision is required.",
      "validExamples": [
        1,
        19.95
      ],
      "invalidExamples": [
        "19.95",
        false
      ]
    },
    "boolean": {
      "schema": {
        "type": "boolean"
      },
      "description": "Only the JSON literals true and false.",
      "validExamples": [
        true,
        false
      ],
      "invalidExamples": [
        0,
        1,
        "true",
        "false"
      ]
    },
    "object": {
      "schema": {
        "type": "object",
        "properties": {}
      },
      "description": "JSON object. Child fields are validated through properties.",
      "validExamples": [
        {},
        {
          "name": "demo"
        }
      ],
      "invalidExamples": [
        [],
        "object",
        1
      ]
    },
    "array": {
      "schema": {
        "type": "array",
        "items": {}
      },
      "description": "JSON array. Item schemas define the accepted element types.",
      "validExamples": [
        [],
        [
          1,
          2
        ]
      ],
      "invalidExamples": [
        {},
        "array"
      ]
    },
    "null": {
      "schema": {
        "nullable": true,
        "enum": [
          null
        ]
      },
      "description": "Only JSON null. Add nullable:true to another type to permit both.",
      "validExamples": [
        null
      ],
      "invalidExamples": [
        "null",
        0,
        false,
        {}
      ]
    },
    "date": {
      "schema": {
        "type": "string",
        "format": "date"
      },
      "description": "YYYY-MM-DD",
      "validExamples": [
        "2024-02-29",
        "2026-09-30"
      ],
      "invalidExamples": [
        "2025-02-29",
        "2026-02-30",
        "2026-9-3"
      ]
    },
    "date-time": {
      "schema": {
        "type": "string",
        "format": "date-time"
      },
      "description": "RFC3339 timestamp with timezone",
      "validExamples": [
        "2026-09-30T09:15:30Z",
        "2026-09-30T14:45:30.123+05:30"
      ],
      "invalidExamples": [
        "2026-09-30T09:15:30",
        "2026-02-30T09:15:30Z",
        "2026-09-30T25:15:30Z"
      ]
    },
    "time": {
      "schema": {
        "type": "string",
        "format": "time"
      },
      "description": "HH:MM:SS, 24-hour clock",
      "validExamples": [
        "09:15:30",
        "23:59:59"
      ],
      "invalidExamples": [
        "24:00:00",
        "9:15:30"
      ]
    },
    "date-ddmmyyyy": {
      "schema": {
        "type": "string",
        "format": "date-ddmmyyyy"
      },
      "description": "DDMMYYYY",
      "validExamples": [
        "30092026",
        "29022024"
      ],
      "invalidExamples": [
        "31022026",
        "29022025",
        "2026-09-30"
      ]
    },
    "date-ddmmmyy": {
      "schema": {
        "type": "string",
        "format": "date-ddmmmyy"
      },
      "description": "DDMMMYY; uppercase month abbreviation",
      "validExamples": [
        "07APR26"
      ],
      "invalidExamples": [
        "31FEB26",
        "7APR26",
        "07apr26"
      ]
    },
    "date-dd-mm-yyyy": {
      "schema": {
        "type": "string",
        "format": "date-dd-mm-yyyy"
      },
      "description": "DD-MM-YYYY",
      "validExamples": [
        "30-09-2026"
      ],
      "invalidExamples": [
        "31-02-2026",
        "2026-09-30"
      ]
    },
    "date-dd-mmm-yyyy": {
      "schema": {
        "type": "string",
        "format": "date-dd-mmm-yyyy"
      },
      "description": "DD-MMM-YYYY; uppercase month abbreviation",
      "validExamples": [
        "30-SEP-2026"
      ],
      "invalidExamples": [
        "31-FEB-2026",
        "30-sep-2026"
      ]
    },
    "date-time-dmy": {
      "schema": {
        "type": "string",
        "format": "date-time-dmy"
      },
      "description": "HH:MM:SS DD-MM-YYYY",
      "validExamples": [
        "10:33:12 06-04-2026"
      ],
      "invalidExamples": [
        "25:33:12 06-04-2026",
        "10:33:12 31-02-2026"
      ]
    },
    "email": {
      "schema": {
        "type": "string",
        "format": "email"
      },
      "description": "Email address without display names",
      "validExamples": [
        "client@example.com"
      ],
      "invalidExamples": [
        "invalid",
        "Name <client@example.com>"
      ]
    },
    "uri": {
      "schema": {
        "type": "string",
        "format": "uri"
      },
      "description": "Absolute URI including a scheme",
      "validExamples": [
        "https://example.com/path",
        "urn:example:demo"
      ],
      "invalidExamples": [
        "/relative",
        "not a url"
      ]
    },
    "uuid": {
      "schema": {
        "type": "string",
        "format": "uuid"
      },
      "description": "UUID in canonical 8-4-4-4-12 hexadecimal form",
      "validExamples": [
        "123e4567-e89b-12d3-a456-426614174000"
      ],
      "invalidExamples": [
        "bad-id",
        "1234567890"
      ]
    },
    "ipv4": {
      "schema": {
        "type": "string",
        "format": "ipv4"
      },
      "description": "IPv4 address",
      "validExamples": [
        "192.0.2.1"
      ],
      "invalidExamples": [
        "256.0.0.1",
        "::1"
      ]
    },
    "ipv6": {
      "schema": {
        "type": "string",
        "format": "ipv6"
      },
      "description": "IPv6 address",
      "validExamples": [
        "2001:db8::1"
      ],
      "invalidExamples": [
        "192.0.2.1",
        "invalid"
      ]
    },
    "byte": {
      "schema": {
        "type": "string",
        "format": "byte"
      },
      "description": "Standard base64-encoded string",
      "validExamples": [
        "ZGVtbw==",
        ""
      ],
      "invalidExamples": [
        "***",
        "not-base64"
      ]
    },
    "numeric-string": {
      "schema": {
        "type": "string",
        "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
      },
      "description": "A decimal value encoded as JSON text; no grouping separators.",
      "validExamples": [
        "0",
        "12.50",
        "-1.5"
      ],
      "invalidExamples": [
        "text",
        "01",
        "1,000",
        10
      ]
    },
    "any": {
      "schema": {
        "nullable": true
      },
      "description": "Explicitly unconstrained JSON value. Used only when the source does not define a type.",
      "validExamples": [
        null,
        1,
        "text",
        [],
        {}
      ],
      "invalidExamples": []
    },
    "date-time-dd-mm-yyyy": {
      "schema": {
        "type": "string",
        "format": "date-time-dd-mm-yyyy"
      },
      "description": "Calendar date and local time in DD-MM-YYYY HH:mm:ss format.",
      "validExamples": [
        "29-02-2024 09:30:00"
      ],
      "invalidExamples": [
        "31-02-2024 09:30:00",
        "29-02-2024 25:00:00",
        "2024-02-29T09:30:00Z"
      ]
    }
  },
  "constraints": {
    "required": "List of mandatory object properties",
    "nullable": "Allow null in addition to the declared type",
    "enum": "Restrict to listed values",
    "minimum/maximum": "Numeric bounds",
    "exclusiveMinimum/exclusiveMaximum": "Make numeric bounds exclusive",
    "multipleOf": "Numeric step",
    "minLength/maxLength": "String length limits",
    "pattern": "String regular expression",
    "minItems/maxItems": "Array length limits",
    "uniqueItems": "Reject duplicate array elements",
    "properties/items": "Nested object and array schemas",
    "additionalProperties": "Allow, forbid, or validate extra object fields",
    "anyOf/oneOf/allOf/not": "Schema composition"
  }
}
