{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://paperoom.yunusemrevurgun.com/api/schema.json",
  "title": "Paperoom local generator request v1",
  "description": "Pass to generate() in /assets/api.mjs. This is not an HTTP endpoint; it runs on the caller’s device. For every tool except the original four, layout(result) returns vector pages and toSVG(page) draws them.",
  "type": "object",
  "required": [
    "tool"
  ],
  "additionalProperties": false,
  "properties": {
    "tool": {
      "enum": [
        "bingo",
        "tombala",
        "word-search",
        "cards",
        "alquerque",
        "battleship",
        "bulls-and-cows",
        "checkers",
        "crossword",
        "dice-scores",
        "dominoes",
        "dots-and-boxes",
        "exquisite-corpse",
        "fortune-teller",
        "gomoku",
        "goose",
        "hangman",
        "hex",
        "letter-grid",
        "loteria",
        "ludo",
        "mancala",
        "maze",
        "memory",
        "nine-mens-morris",
        "nonogram",
        "paper-dice",
        "paper-soccer",
        "raffle-tickets",
        "royal-ur",
        "scavenger-hunt",
        "score-sheets",
        "secret-code",
        "snakes-and-ladders",
        "stop",
        "sudoku",
        "telephone",
        "tic-tac-toe",
        "word-scramble",
        "xiangqi"
      ]
    },
    "language": {
      "enum": [
        "en",
        "es",
        "ar",
        "pt",
        "zh",
        "fr"
      ],
      "default": "en"
    },
    "seed": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "default": "paperoom"
    },
    "settings": {
      "type": "object"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "tool": {
            "const": "bingo"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "text": {
                "type": "string",
                "maxLength": 12000
              },
              "mode": {
                "enum": [
                  "words",
                  "75"
                ]
              },
              "size": {
                "type": "integer",
                "minimum": 3,
                "maximum": 5
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "free": {
                "type": "boolean"
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ]
              },
              "layout": {
                "enum": [
                  1,
                  2,
                  4
                ]
              },
              "large": {
                "type": "boolean"
              },
              "ink": {
                "type": "boolean"
              },
              "includeHost": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "tombala"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ]
              },
              "layout": {
                "enum": [
                  1,
                  2,
                  4
                ]
              },
              "large": {
                "type": "boolean"
              },
              "ink": {
                "type": "boolean"
              },
              "includeHost": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "word-search"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "text": {
                "type": "string",
                "maxLength": 12000
              },
              "size": {
                "type": "integer",
                "minimum": 8,
                "maximum": 18
              },
              "difficulty": {
                "enum": [
                  "easy",
                  "medium",
                  "hard"
                ]
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ]
              },
              "large": {
                "type": "boolean"
              },
              "ink": {
                "type": "boolean"
              },
              "includeKey": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "cards"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "text": {
                "type": "string",
                "maxLength": 12000
              },
              "randomize": {
                "type": "boolean"
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ]
              },
              "layout": {
                "enum": [
                  6,
                  9,
                  12
                ]
              },
              "large": {
                "type": "boolean"
              },
              "ink": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "alquerque"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "pieces": {
                "type": "boolean",
                "default": true
              },
              "showSetup": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "battleship"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  8,
                  10,
                  12
                ],
                "default": 10
              },
              "fleet": {
                "enum": [
                  "compact",
                  "classic",
                  "grand"
                ],
                "default": "classic"
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8,
                "default": 2
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "placeFleet": {
                "type": "boolean",
                "default": false
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "bulls-and-cows"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "digits": {
                "enum": [
                  3,
                  4,
                  5
                ],
                "default": 4
              },
              "rows": {
                "enum": [
                  8,
                  10,
                  12
                ],
                "default": 10
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 2
              },
              "soloSecret": {
                "type": "boolean",
                "default": false
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "checkers"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "variant": {
                "enum": [
                  "checkers",
                  "international",
                  "chess"
                ],
                "default": "checkers"
              },
              "coords": {
                "type": "boolean",
                "default": true
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "crossword"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 4000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "wordBank": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "dice-scores"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "variant": {
                "enum": [
                  "generala",
                  "yams",
                  "yacht",
                  "ten-thousand"
                ]
              },
              "players": {
                "type": "integer",
                "minimum": 2,
                "maximum": 8,
                "default": 4
              },
              "games": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "dominoes"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "mode": {
                "enum": [
                  "classic",
                  "words"
                ],
                "default": "classic"
              },
              "set": {
                "enum": [
                  "six",
                  "nine"
                ],
                "default": "six"
              },
              "text": {
                "type": "string",
                "maxLength": 6000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "dots-and-boxes"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "dots": {
                "enum": [
                  4,
                  5,
                  6,
                  8,
                  10
                ],
                "default": 6
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24,
                "default": 4
              },
              "perPage": {
                "enum": [
                  1,
                  2,
                  4,
                  6
                ],
                "default": 4
              },
              "bonus": {
                "enum": [
                  0,
                  2,
                  4,
                  6
                ],
                "default": 0
              },
              "scoreTable": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "exquisite-corpse"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "mode": {
                "enum": [
                  "drawing",
                  "story"
                ],
                "default": "drawing"
              },
              "sections": {
                "enum": [
                  3,
                  4,
                  5
                ],
                "default": 4
              },
              "prompts": {
                "type": "boolean",
                "default": false
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "fortune-teller"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "colors": {
                "type": "string",
                "maxLength": 400,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "fortunes": {
                "type": "string",
                "maxLength": 2000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 6,
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "gomoku"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "board": {
                "enum": [
                  "gomoku15",
                  "go9",
                  "go13",
                  "go19"
                ],
                "default": "gomoku15"
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "coordinates": {
                "type": "boolean",
                "default": true
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "goose"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "mode": {
                "enum": [
                  "classic",
                  "custom"
                ],
                "default": "classic"
              },
              "text": {
                "type": "string",
                "maxLength": 6000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "hangman"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 12000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "letters": {
                "type": "integer",
                "minimum": 3,
                "maximum": 12,
                "default": 6
              },
              "rounds": {
                "enum": [
                  1,
                  2,
                  4,
                  6
                ],
                "default": 4
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              },
              "figure": {
                "enum": [
                  "snowman",
                  "classic",
                  "flower"
                ],
                "default": "snowman"
              },
              "alphabet": {
                "type": "boolean",
                "default": true
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "hex"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  7,
                  9,
                  11,
                  13
                ],
                "default": 11
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "coordinates": {
                "type": "boolean",
                "default": true
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "letter-grid"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  4,
                  5,
                  6
                ],
                "default": 4
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12,
                "default": 4
              },
              "perPage": {
                "enum": [
                  1,
                  2,
                  4
                ],
                "default": 2
              },
              "minLength": {
                "enum": [
                  3,
                  4
                ],
                "default": 3
              },
              "scoring": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "loteria"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 4000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60,
                "default": 8
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 2
              },
              "deck": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "ludo"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "safe": {
                "type": "boolean",
                "default": true
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "mancala"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "variant": {
                "enum": [
                  "oware",
                  "kalah",
                  "congkak"
                ],
                "default": "oware"
              },
              "boards": {
                "enum": [
                  1,
                  2
                ],
                "default": 2
              },
              "seeds": {
                "type": "boolean",
                "default": false
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "maze"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  "small",
                  "medium",
                  "large",
                  "huge"
                ],
                "default": "medium"
              },
              "style": {
                "enum": [
                  "winding",
                  "branching"
                ],
                "default": "winding"
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12,
                "default": 2
              },
              "perPage": {
                "enum": [
                  1,
                  2,
                  4
                ],
                "default": 1
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "memory"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 6000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "perPage": {
                "enum": [
                  12,
                  16,
                  20
                ],
                "default": 16
              },
              "backs": {
                "type": "boolean",
                "default": true
              },
              "shuffle": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "nine-mens-morris"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "variant": {
                "enum": [
                  "three",
                  "six",
                  "nine",
                  "twelve"
                ],
                "default": "nine"
              },
              "boards": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "nonogram"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  5,
                  10,
                  15
                ],
                "default": 10
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8,
                "default": 2
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "paper-dice"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "mode": {
                "enum": [
                  "pips",
                  "numbers",
                  "custom"
                ],
                "default": "pips"
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24,
                "default": 2
              },
              "size": {
                "enum": [
                  "small",
                  "medium",
                  "large"
                ],
                "default": "medium"
              },
              "text": {
                "type": "string",
                "maxLength": 3000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "paper-soccer"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "field": {
                "enum": [
                  "small",
                  "standard",
                  "large"
                ],
                "default": "standard"
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "raffle-tickets"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "prize": {
                "type": "string",
                "maxLength": 60
              },
              "details": {
                "type": "string",
                "maxLength": 80
              },
              "start": {
                "type": "integer",
                "minimum": 1,
                "maximum": 99999,
                "default": 1
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 50
              },
              "perPage": {
                "enum": [
                  8,
                  10
                ],
                "default": 10
              },
              "stubs": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "royal-ur"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "path": {
                "type": "boolean",
                "default": true
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "scavenger-hunt"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 6000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "mode": {
                "enum": [
                  "check",
                  "draw"
                ],
                "default": "check"
              },
              "columns": {
                "enum": [
                  1,
                  2
                ],
                "default": 2
              },
              "copies": {
                "type": "integer",
                "minimum": 1,
                "maximum": 30,
                "default": 1
              },
              "shuffle": {
                "type": "boolean",
                "default": false
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "score-sheets"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "preset": {
                "enum": [
                  "custom",
                  "truco",
                  "truco-paulista",
                  "baloot",
                  "tarneeb",
                  "belote",
                  "mahjong",
                  "rummy"
                ],
                "default": "custom"
              },
              "players": {
                "type": "integer",
                "minimum": 2,
                "maximum": 8,
                "default": 4
              },
              "names": {
                "type": "string",
                "maxLength": 12000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "rows": {
                "type": "integer",
                "minimum": 8,
                "maximum": 30,
                "default": 16
              },
              "target": {
                "type": "string",
                "maxLength": 12
              },
              "perPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "secret-code"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 4000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "mode": {
                "enum": [
                  "numbers",
                  "symbols"
                ],
                "default": "numbers"
              },
              "hints": {
                "enum": [
                  0,
                  1,
                  2,
                  3,
                  4
                ],
                "default": 2
              },
              "perPage": {
                "enum": [
                  1,
                  2,
                  3
                ],
                "default": 2
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "snakes-and-ladders"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  8,
                  10
                ],
                "default": 10
              },
              "ladders": {
                "type": "integer",
                "minimum": 2,
                "maximum": 12,
                "default": 8
              },
              "snakes": {
                "type": "integer",
                "minimum": 2,
                "maximum": 12,
                "default": 8
              },
              "pieces": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "stop"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "categories": {
                "type": "string",
                "maxLength": 12000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "rounds": {
                "type": "integer",
                "minimum": 4,
                "maximum": 14,
                "default": 8
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20,
                "default": 4
              },
              "letters": {
                "type": "boolean",
                "default": false
              },
              "sheetsPerPage": {
                "enum": [
                  1,
                  2
                ],
                "default": 1
              },
              "totals": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "sudoku"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "size": {
                "enum": [
                  4,
                  6,
                  9
                ],
                "default": 9
              },
              "difficulty": {
                "enum": [
                  "easy",
                  "medium",
                  "hard"
                ],
                "default": "easy"
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24,
                "default": 4
              },
              "perPage": {
                "enum": [
                  1,
                  2,
                  4,
                  6
                ],
                "default": 4
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "telephone"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "players": {
                "type": "integer",
                "minimum": 4,
                "maximum": 12,
                "default": 8
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12,
                "default": 4
              },
              "layout": {
                "enum": [
                  "slips",
                  "strip"
                ],
                "default": "slips"
              },
              "prompts": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "tic-tac-toe"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "variant": {
                "enum": [
                  "classic",
                  "big",
                  "ultimate"
                ],
                "default": "classic"
              },
              "perPage": {
                "enum": [
                  4,
                  6,
                  9,
                  12
                ],
                "default": 9
              },
              "pages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 1
              },
              "tally": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "word-scramble"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "maxLength": 4000,
                "description": "Newline-separated Unicode lines; localized default when omitted."
              },
              "showHints": {
                "type": "boolean",
                "default": true
              },
              "boxes": {
                "type": "boolean",
                "default": true
              },
              "nameLine": {
                "type": "boolean",
                "default": false
              },
              "includeKey": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "tool": {
            "const": "xiangqi"
          }
        }
      },
      "then": {
        "properties": {
          "settings": {
            "additionalProperties": false,
            "properties": {
              "title": {
                "type": "string",
                "maxLength": 60
              },
              "paper": {
                "enum": [
                  "a4",
                  "letter"
                ],
                "default": "a4"
              },
              "ink": {
                "type": "boolean",
                "default": false
              },
              "large": {
                "type": "boolean",
                "default": false
              },
              "pieces": {
                "type": "boolean",
                "default": true
              },
              "legend": {
                "type": "boolean",
                "default": true
              },
              "boards": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4,
                "default": 1
              }
            }
          }
        }
      }
    }
  ]
}
