# Story Schema

<figure><img src="https://550862792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnrOPyf3TwLa8A58CVIna%2Fuploads%2FWhpxcfXMbUMZqguixe62%2Frpgchain-code.png?alt=media&#x26;token=79a5b28b-a73b-443e-b11a-01599af3c881" alt=""><figcaption></figcaption></figure>

Below is the full schema description for a story (note that QuestBoard looks at certain meta properties that might not be defined in the schema below)

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Quest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "system": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "image": {
      "type": "string",
      "description": "Path to the quest image"
    },
    "flags": {
      "type": "array",
      "description": "Flags indicating special conditions in the quest",
      "items": {
        "type": "string"
      }
    },
    "checks": {
      "type": "array",
      "description": "Checks for specific conditions based on flags",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier"
          },
          "flag": {
            "type": "string",
            "description": "Flag required for the check to return success"
          },
          "success": {
            "type": "string",
            "description": "Action to take if successful"
          },
          "fail": {
            "type": "string",
            "description": "Action to take if fail"
          }
        },
        "required": ["key", "flag", "success", "fail"]
      }
    },
    "rolls": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier"
          },
          "dc": {
            "type": ["string", "number"],
            "description": "Static DC for the roll (optional)"
          },
          "label": {
            "type": "string",
            "description": "Label describing the roll action"
          },
          "success": {
            "type": "string",
            "description": "Action to take if the roll is successful"
          },
          "fail": {
            "type": "string",
            "description": "Action to take if the roll fails"
          },
          "meta": {
            "type": "object",
            "additionalProperties": {
              "type": ["string", "number", "boolean", "object", "array", "null"]
            }
          }
        },
        "required": ["key", "label", "success", "fail"]
      }
    },
    "pages": {
      "type": "array",
      "description": "List of pages in the quest",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier for the page"
          },
          "image": {
            "type": "string",
            "description": "Path to the page's image"
          },
          "bodies": {
            "type": "array",
            "description": "Array of body text strings for the page",
            "items": {
              "type": "string",
              "description": "Content text for the page"
            }
          },
          "options": {
            "type": "array",
            "description": "List of options available on the page",
            "items": {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "description": "Action identifier for the option"
                },
                "labels": {
                  "type": "array",
                  "description": "Array of text labels for the option",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": ["action", "labels"]
            }
          },
          "randomizeOptions": {
            "type": "boolean",
            "description": "Randomize the order of the options"
          },
          "meta": {
            "type": "object",
            "additionalProperties": {
              "type": ["string", "number", "boolean", "object", "array", "null"]
            }
          }
        },
        "required": ["key", "bodies"]
      }
    },
    "meta": {
        "type": "object",
        "additionalProperties": {
        "type": ["string", "number", "boolean", "object", "array", "null"]
      }
    }
  },
  "required": ["name", "description", "image", "pages"],
  "additionalProperties": false
}

```
