UNPKG

@labex-labs/schema

Version:

JSON Schema definitions for LabEx lab and course configurations

264 lines (263 loc) 6.43 kB
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "LabEx course.json schema", "type": "object", "required": [ "name", "description", "meta", "cover", "level", "alias", "tags", "skill_tree", "priority", "type", "fee_type", "is_orderly", "hidden", "show_step_name", "intro" ], "properties": { "name": { "type": "string", "description": "English title of the course, Use Title Case" }, "description": { "type": "string", "description": "Brief English description of the course" }, "meta": { "type": "object", "required": ["title", "description", "keywords"], "properties": { "title": { "type": "string", "description": "English SEO title of the course" }, "description": { "type": "string", "description": "English SEO description of the course" }, "keywords": { "type": "string", "description": "English SEO keywords of the course, separated by commas" } } }, "cover": { "type": "string", "description": "URL of the course cover image" }, "level": { "type": "string", "enum": ["Beginner", "Intermediate", "Advanced"], "description": "Difficulty level of the course" }, "alias": { "type": "array", "items": { "type": "string", "pattern": "^[a-z-0-9]+$", "description": "URL alias (lowercase letters, hyphens, and numbers only)" }, "description": "List of URL aliases for the course" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of technology tags" }, "skill_tree": { "type": "string", "enum": [ "rust", "go", "sklearn", "mysql", "git", "pygame", "cpp", "sql", "opencv", "alibabacloud", "python", "pandas", "javascript", "linux", "algorithm", "ml", "tkinter", "matplotlib", "css", "shell", "java", "html", "flask", "react", "ansible", "jquery", "django", "c", "docker", "jenkins", "numpy", "kubernetes", "hadoop", "cybersecurity", "mongodb", "redis", "postgresql", "web-development", "nmap", "wireshark", "hydra", "kali", "sqlite" ], "description": "Associated skill tree identifier" }, "priority": { "type": "integer", "description": "Course priority/order in listings" }, "type": { "type": "string", "enum": ["normal", "project"], "description": "Course type" }, "fee_type": { "type": "string", "enum": ["free", "pro"], "description": "Fee type" }, "lab_coins": { "type": "integer", "description": "Cost in lab coins" }, "is_orderly": { "type": "boolean", "default": false, "description": "Whether labs must be completed in order" }, "hidden": { "type": "boolean", "default": false, "description": "Whether to hide in the list" }, "has_cert": { "type": "boolean", "default": false, "description": "Whether course offers certification" }, "show_step_name": { "type": "boolean", "default": false, "description": "Whether to show step names" }, "intro": { "type": "string", "description": "Path to introduction content Markdown file" }, "labs": { "type": "array", "items": { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "pattern": "^[\\w-]+/[\\w-]+:[\\w/-]+$", "description": "Path to the lab in format 'organization/repository:path/to/lab'" } } } }, "stages": { "type": "array", "items": { "type": "object", "required": ["name", "labs"], "properties": { "name": { "type": "string", "description": "Name of the stage" }, "labs": { "type": "array", "items": { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "pattern": "^[\\w-]+/[\\w-]+:[\\w/-]+$", "description": "Path to the lab in format 'organization/repository:path/to/lab'" } } } } } } }, "i18n": { "type": "array", "items": { "type": "object", "required": ["lang", "name", "description", "meta", "cover", "intro"], "properties": { "lang": { "type": "string", "enum": ["zh", "es", "fr", "de", "ja", "ru", "ko", "pt"], "description": "Language code" }, "name": { "type": "string", "description": "Localized course name" }, "description": { "type": "string", "description": "Localized course description" }, "meta": { "type": "object", "required": ["title", "description", "keywords"], "properties": { "title": { "type": "string", "description": "Localized SEO title" }, "description": { "type": "string", "description": "Localized SEO description" }, "keywords": { "type": "string", "description": "Localized SEO keywords" } } }, "cover": { "type": "string", "description": "URL of localized course cover image" }, "intro": { "type": "string", "description": "Path to localized introduction content file" } } } } }, "oneOf": [ { "required": ["labs"] }, { "required": ["stages"] } ] }