{
"$schema": "http://json-schema.org/draft-04/schema#",
"$id": "https://example.com/product.schema.json",
"title": "Form",
"description": "A form",
"type": "object",
"required": ["form_type", "start_year", "end_year", "sections"],
"properties": {
"form_type": {
"description": "",
"type": "string"
},
"start_year": {
"type": "integer"
"end_year": {
"sections": {
"patternProperties": {
"[a-z_]+": {
"description": "Section Name",
"label": {
"subsections": {
"description": "SubSection Name",
"required": ["label"],
"pages": {
"^(?!(depends_on))[a-z_]+$": {
"description": "Page Name",
"required": ["header", "questions"],
"header": {
"description": {
"questions": {
"description": "Question Name",
"required": ["header", "type"],
"type": {
"check_answer_label": {
"type": "string",
"optional": "true"
}
"additionalProperties": {
"hint_text": {
"optional": "true",
"answer_options": {
"type": "object"
"conditional_for": {
"inferred_answers": {
"description": "fields that get inferred based on the value of the current field",
"inferred_check_answers_value": {
"description": "value that gets displayed in the check answers for this field if the given condition is met",
"condition": {
"value": {
"minProperties": 1
"depends_on": {
"minProperties": 2