diff --git a/src/schemas/json/ctfd.json b/src/schemas/json/ctfd.json index 26958ce6bc2..898159dfd0e 100644 --- a/src/schemas/json/ctfd.json +++ b/src/schemas/json/ctfd.json @@ -25,6 +25,10 @@ "type": "integer", "description": "Maximum size (number of players) in a team." }, + "password_min_length": { + "type": "integer", + "description": "Minimal length of passwords." + }, "num_teams": { "type": "integer", "description": "The total number of teams allowed." @@ -37,7 +41,7 @@ "type": "string", "description": "Whether to allow teams to be disbanded or not. Could be inactive_only or disabled." }, - "incorrect_submissions_per_minutes": { + "incorrect_submissions_per_minute": { "type": "integer", "description": "Maximum number of invalid submissions per minute (per user/team). We suggest you use it as part of an anti-brute-force strategy (rate limiting)." }, @@ -90,6 +94,44 @@ "required": ["name", "description"], "description": "Appearance of the CTFd." }, + "Challenges": { + "properties": { + "view_self_submissions": { + "type": "boolean", + "description": "Whether a player can see itw own previous submissions." + }, + "max_attempts_behavior": { + "type": "string", + "enum": ["lockout", "timeout"], + "description": "The behavior to adopt in case a player reached the submission rate limiting.", + "default": "lockout" + }, + "max_attempts_timeout": { + "type": "integer", + "description": "The duration of the submission rate limit for further submissions." + }, + "hints_free_public_access": { + "type": "boolean", + "description": "Control whether users must be logged in to see free hints." + }, + "challenge_ratings": { + "type": "string", + "enum": ["public", "private", "disabled"], + "description": "Who can see and submit challenge ratings.", + "default": "public" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "view_self_submissions", + "max_attempts_behavior", + "max_attempts_timeout", + "hints_free_public_access", + "challenge_ratings" + ], + "description": "Challenge-related configurations." + }, "Config": { "properties": { "appearance": { @@ -101,6 +143,9 @@ "accounts": { "$ref": "#/$defs/Accounts" }, + "challenges": { + "$ref": "#/$defs/Challenges" + }, "pages": { "$ref": "#/$defs/Pages" }, @@ -133,6 +178,12 @@ "enum": ["users", "teams"], "description": "The mode of your CTFd, either users or teams.", "default": "users" + }, + "uploads": { + "items": { + "$ref": "#/$defs/Upload" + }, + "type": "array" } }, "additionalProperties": false, @@ -397,6 +448,10 @@ "shares": { "type": "boolean", "description": "Whether to enable users share they solved a challenge or not." + }, + "template": { + "$ref": "#/$defs/File", + "description": "A template for social shares." } }, "additionalProperties": false, @@ -461,6 +516,21 @@ "additionalProperties": false, "type": "object", "description": "Time settings of the CTF." + }, + "Upload": { + "properties": { + "file": { + "$ref": "#/$defs/File" + }, + "location": { + "type": "string", + "description": "Where to upload it.\nThis enables to use a file at a static location in, e.g., custom pages." + } + }, + "additionalProperties": false, + "type": "object", + "required": ["file", "location"], + "description": "Upload defines a file or content to upload as per the setup." } } }