Skip to content

Challenge Schema

The Challenge Schema defines the structure of individual challenges.

Basic Structure

{
    "$schema": "https://raw.githubusercontent.com/durkinza/challenge-bundle-schema/main/challenge.schema.json",
    "name": "Challenge Name",
    "description": "Challenge description",
    "difficulty": "medium",
    "category": "web",
    "deployment": {
        "type": "standard",
        "standard": {
            "attachments": [
                {
                    "name": "here_is_your_flag",
                    "type": "text/plain",
                    "content": "Hello World, your flag is flag{flag}",
                },
            ]
        }
    },
    "customFlag":{
        "allowedCharacters": {
            "lowercase": true,
            "uppercase": true,
            "numbers": true,
            "specialCharacters": true,
        }
    },
    "hints": [
    {
        "id": 1,
        "title": "First Hint",
        "hint": "This is your first hint!"
    }
    ],
    "solutions": [
        "Here's how to solve this challenge..."
    ],
    "author": {
        "name": "Author Name",
        "email": "author.email@example.com"
    },
}

Required Fields

Field Type Description
name string The name of the challenge
description string A detailed description of the challenge
difficulty string The difficulty level of the challenge (easy, medium, hard)
category string The category of the challenge (web, crypto, forensics, etc.)
author object Information about the challenge author
flag object Configuration for the challenge flag

Optional Fields

Field Type Description
tags array Additional tags for categorizing the challenge
points number The point value of the challenge
timeLimit number Time limit for the challenge in minutes
deployment object Configuration for deploying the challenge
attachments array Files to be provided to the participants
solutions array Solution guides for the challenge