{"id":31556993,"url":"https://github.com/fimbul-works/gdschema","last_synced_at":"2026-05-19T07:33:27.109Z","repository":{"id":317830857,"uuid":"1065035466","full_name":"fimbul-works/gdschema","owner":"fimbul-works","description":"A full JSON Schema Draft-7 validation plugin for Godot 4.3+. Enables schema validation, API contract enforcement, and configuration verification.","archived":false,"fork":false,"pushed_at":"2025-10-19T08:02:19.000Z","size":951,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-19T18:59:19.755Z","etag":null,"topics":["gdextension","godot","godot-addon","json-schema","json-schema-validator","validation"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fimbul-works.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-27T00:35:31.000Z","updated_at":"2025-10-19T14:30:39.000Z","dependencies_parsed_at":"2025-10-03T11:21:27.155Z","dependency_job_id":null,"html_url":"https://github.com/fimbul-works/gdschema","commit_stats":null,"previous_names":["fimbul-works/gdschema"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/fimbul-works/gdschema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgdschema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgdschema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgdschema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgdschema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fimbul-works","download_url":"https://codeload.github.com/fimbul-works/gdschema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgdschema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33206320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:16:55.748Z","status":"ssl_error","status_checked_at":"2026-05-19T07:16:54.366Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gdextension","godot","godot-addon","json-schema","json-schema-validator","validation"],"created_at":"2025-10-04T23:21:04.371Z","updated_at":"2026-05-19T07:33:27.103Z","avatar_url":"https://github.com/fimbul-works.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GDSchema\n\nThis is the **C++ GDExtension implementation** of the GDSchema plugin. It provides a full [JSON Schema Draft-7](https://json-schema.org/) validation plugin for Godot 4.3 and later.\n\n## Version History\n\n- **1.3.0** (Current) - Improved meta-schema handling, added `get_id`, `get_title`, `get_description`, and `get_comment` methods to the `Schema class`, and the `Schema.get_schema_from_registry` static method\n- **1.2.2** - Added support for Android (arm64, x86_64) platforms\n- **1.2.1** - Updated documentation\n- **1.2.0** - Added `Schema.load_json` and `Schema.load_json_file` methods, and fixed schema meta validation\n- **1.1.0** - Enabled storing custom data in `ValidationContext`, and support for external implementations of the `\"default\"` keyword\n- **1.0.0** - Initial public release\n\n## Quick Start\n\n```gdscript\nvar schema = Schema.build_schema({\n    \"type\": \"object\",\n    \"properties\": {\n        \"username\": {\"type\": \"string\", \"minLength\": 3},\n        \"age\": {\"type\": \"integer\", \"minimum\": 0}\n    },\n    \"required\": [\"username\"]\n})\n\n# Valid data\nvar result = schema.validate({\n    \"username\": \"alice\",\n    \"age\": 25\n})\nprint(result.is_valid())  # true\n\n# Invalid data\nresult = schema.validate({\n    \"username\": \"ab\",\n    \"age\": -5\n})\n\nif result.has_errors():\n    print(result.get_summary())\n    # Schema validation failed with 2 error(s):\n    #   [1] At '/username': String length 2 is less than minimum 3 (minLength)\n    #   [2] At '/age': Value -5 is less than minimum 0 (minimum)\n```\n\n📌 **For full usage details and API documentation, see the plugin README:**\n📂 [`project/addons/GDSchema/README.md`](project/addons/GDSchema/README.md)\n\n## Features\n\n- 📏 **Full JSON Schema Draft-7**: All validation keywords supported, including `type`, `minimum`, `maxLength`, `pattern`, `required`, `enum`, and logical composition (`allOf`, `oneOf`, `anyOf`, `not`)\n- 🗂️ **Schema Registry**: Schemas with `$id` are auto-registered and can be referenced across documents with `$ref`\n- 🔍 **Rich Validation Errors**: Detailed error messages with JSON Pointer paths, violated constraints, and invalid values\n- 🧩 **Editor Integration**: Navigate schema trees, retrieve child nodes, and inspect definitions for editor auto-complete and tooling\n- 🛡️ **Thread-Safe and Lazy**: Schemas compile lazily with caching for performance and thread safety\n- ✅ **Comprehensive Results**: Validation returns a `SchemaValidationResult` with all errors collected at once\n\n## Installation \u0026 Setup\n\nGDSchema is available on the [Godot Asset Library](https://godotengine.org/asset-library/asset/4383). Be sure to enable the plugin in your project settings after installing.\n\n### Building From Source\n\nAlternatively you can build the binaries yourself. For the [latest versions of macOS](#supported-platforms) this may be necessary.\n\n#### Prerequisites\n- **Git** (for cloning and submodules)\n- **Python 3.x** (for SCons build system)\n- **C++ compiler** with C++17 support:\n  - **Windows**: Visual Studio 2022 with C++ workload\n  - **Linux/macOS**: GCC 9+ or Clang 10+\n- **SCons** build system (`pip install scons`)\n- **Android**: JDK version 20 and NDK version 23.2.8568313\n\n#### Step 1: Clone the Repository\n```bash\n# Clone with submodules\ngit clone --recursive https://github.com/fimbul-works/GDSchema\n\n# Or if already cloned, initialize submodules\ngit submodule update --init --recursive\n```\n\n#### Step 2: Build the Extension\n```bash\n# Debug build\nscons target=template_debug\n\n# Release build\nscons target=template_release\n\n# Specify platform (default is platform-dependent)\nscons platform=windows target=template_release\nscons platform=linux target=template_release\n```\n\n#### Build Options\n- `platform`: Target (`windows`, `linux`, `macos`, `android`, etc.)\n- `target`: Build type (`template_debug`, `template_release`)\n- `arch`: CPU architecture (`x86_32`, `x86_64`, `arm64`, etc.)\n- `dev_build`: Enable extra debugging (`yes`/`no`)\n- `use_llvm`: Use Clang/LLVM compiler (`yes`/`no`)\n- `verbose`: Verbose build output (`yes`/`no`)\n\n---\n\n## Supported Platforms\n\n- **Windows**: ✅ Prebuilt binaries available for **x86 64-bit** architecture.\n- **Linux**: ✅ Prebuilt binaries available for **x86 64-bit** architecture.\n- **macOS**: ⚠️ Prebuilt binaries available for **universal** architecture.\n  - **Note**: Some macOS configurations (particularly newer versions with stricter Gatekeeper policies) may prevent loading of GDExtensions generally, not just this plugin. If the extension fails to load, try building from source or test with other GDExtensions to determine if this is a system-wide issue.\n- **Android**: ✅ Prebuilt binaries available for **ARM 64-bit** and **x86 64-bit** architectures.\n\n---\n\n## Contributing\n\n### Development Guidelines\n\n1. **Follow Godot's API design patterns.**\n4. **Thread safety**: No global state; ensure **safe multithreading**.\n5. **Write tests**: Every new feature should have **test coverage**. See [the test suite](project/tests/) in the project folder.\n6. **Document your changes**: All public APIs **must be documented**.\n\n---\n\n## **License**\n\nMIT License (see [LICENSE](LICENSE) file for details).\n\n---\n\n**Built with ✅ by [FimbulWorks](https://github.com/fimbul-works)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffimbul-works%2Fgdschema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffimbul-works%2Fgdschema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffimbul-works%2Fgdschema/lists"}