{"id":30910236,"url":"https://github.com/alexmond/spring-boot-config-json-schema","last_synced_at":"2026-04-20T10:33:13.635Z","repository":{"id":307610524,"uuid":"1030096084","full_name":"alexmond/spring-boot-config-json-schema","owner":"alexmond","description":"A Spring Boot starter that auto-generates JSON Schema for application.yaml or application.properties from @ConfigurationProperties. Simplifies configuration documentation and validation, with support for IDE autocompletion (e.g., IntelliJ, VS Code) and CI/CD pipelines.","archived":false,"fork":false,"pushed_at":"2026-03-14T02:36:39.000Z","size":997,"stargazers_count":4,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:33:57.342Z","etag":null,"topics":["java","json-schema","spring-boot","spring-boot-starter"],"latest_commit_sha":null,"homepage":"https://www.alexmond.org/spring-boot-config-json-schema-starter/current/index.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexmond.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.adoc","contributing":"CONTRIBUTING.adoc","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-08-01T04:51:44.000Z","updated_at":"2026-03-12T21:23:24.000Z","dependencies_parsed_at":"2025-08-01T07:45:49.078Z","dependency_job_id":"b66b089c-c885-41ee-a027-ce7174bb93ee","html_url":"https://github.com/alexmond/spring-boot-config-json-schema","commit_stats":null,"previous_names":["alexmond/spring-boot-config-json-schema"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/alexmond/spring-boot-config-json-schema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmond%2Fspring-boot-config-json-schema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmond%2Fspring-boot-config-json-schema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmond%2Fspring-boot-config-json-schema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmond%2Fspring-boot-config-json-schema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexmond","download_url":"https://codeload.github.com/alexmond/spring-boot-config-json-schema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmond%2Fspring-boot-config-json-schema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32043065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["java","json-schema","spring-boot","spring-boot-starter"],"created_at":"2025-09-09T17:03:21.337Z","updated_at":"2026-04-20T10:33:13.628Z","avatar_url":"https://github.com/alexmond.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":":version: 3.5.10.1\n= Spring Boot Config JSON Schema Generator\n:toc:\n\nimage:https://img.shields.io/maven-central/v/org.alexmond/spring-boot-config-json-schema-starter.svg?label=Maven%20Central[Maven Central,link=https://search.maven.org/artifact/org.alexmond/spring-boot-config-json-schema-starter]\nimage:https://img.shields.io/badge/License-Apache%202.0-blue.svg[License,link=LICENSE]\nimage:https://img.shields.io/github/actions/workflow/status/alexmond/spring-boot-config-json-schema/maven.yml[Build Status,link=https://github.com/alexmond/spring-boot-config-json-schema/actions]\nimage:https://codecov.io/gh/alexmond/spring-boot-config-json-schema/graph/badge.svg?token=C4IEMB36WJ[codecov,link=https://codecov.io/gh/alexmond/spring-boot-config-json-schema]\n\n== Spring Boot Config JSON Schema Generator\n\nA Spring Boot starter library that automatically generates JSON Schema documentation for your application's configuration properties.\nIt simplifies the process of documenting and validating configuration by generating JSON Schema from your Spring Boot configuration classes.\n\nFor detailed documentation, please visit our link:https://www.alexmond.org/spring-boot-config-json-schema-starter/current/index.html[full documentation].\n\nA good article on this subject: link:https://themightyprogrammer.dev/article/2ways-spring-configuration[Spring Boot Config Documentation, Two Ways With IntelliJ IDEA]\n\n[[quick-start]]\n== Quick Start\n\n[[maven-dependencies]]\n=== Maven Dependencies\n\n==== For Testing\n\nAdd the following dependency to your `pom.xml` when using the generator in tests:\n\n[source,xml,subs=+attributes]\n----\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.alexmond\u003c/groupId\u003e\n    \u003cartifactId\u003espring-boot-config-json-schema-starter\u003c/artifactId\u003e\n    \u003cversion\u003e{version}\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n----\n\n[source,java]\n----\n\n@SpringBootTest\n@Slf4j\nclass SampleJsonSchemaGeneratorTests {\n\n    @Autowired\n    private JsonSchemaService jsonSchemaService;\n\n    @Test\n    void generateJsonSchema() {\n\n        var jsonConfigSchemaJson = jsonSchemaService.generateFullSchemaJson();\n        var jsonConfigSchemaYaml = jsonSchemaService.generateFullSchemaYaml();\n        log.info(\"Writing json schema\");\n        Files.writeString(Paths.get(\"config-schema.json\"), jsonConfigSchemaJson, StandardCharsets.UTF_8);\n\n        log.info(\"Writing yaml schema\");\n        Files.writeString(Paths.get(\"config-schema.yaml\"), jsonConfigSchemaYaml, StandardCharsets.UTF_8);\n    }\n\n}\n----\n\n[[for-production-rest-or-actuator]]\n=== For Production (REST or Actuator)\n\n==== REST API Endpoint\n\nTo expose the JSON schema via a REST endpoint (similar to Swagger API docs), add the following dependency to your\n`pom.xml`:\n\n[source,xml,subs=+attributes]\n----\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.alexmond\u003c/groupId\u003e\n    \u003cartifactId\u003espring-boot-config-json-schema-starter\u003c/artifactId\u003e\n    \u003cversion\u003e{version}\u003c/version\u003e\n\u003c/dependency\u003e\n----\n\nThen create a REST controller:\n\n[source,java]\n----\n\n@RestController\n@Slf4j\npublic class GenerateJsonSchema {\n\n    @Autowired\n    private JsonSchemaService jsonSchemaService;\n\n    @GetMapping(\"/config-schema\")\n    public String getConfigSchema() {\n        return jsonSchemaService.generateFullSchemaJson();\n    }\n\n    @GetMapping(\"/config-schema.yaml\")\n    public String getConfigSchemaYaml() {\n        return jsonSchemaService.generateFullSchemaYaml();\n    }\n\n}\n----\n\n==== Actuator Endpoint\n\nTo expose the JSON schema via an Actuator endpoint, add the following dependency to your\n`pom.xml`:\n\n[source,xml,subs=+attributes]\n----\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.alexmond\u003c/groupId\u003e\n    \u003cartifactId\u003espring-boot-config-json-schema-starter\u003c/artifactId\u003e\n    \u003cversion\u003e{version}\u003c/version\u003e\n\u003c/dependency\u003e\n----\n\nThen create Actuator endpoint:\n\n[source,java]\n----\n\n@Component\n@Endpoint(id = \"config-schema\")\n@RequiredArgsConstructor\npublic class ConfigSchemaEndpoint {\n\n    private final JsonSchemaService jsonSchemaService;\n\n    @ReadOperation\n    public String schema() {\n        return jsonSchemaService.generateFullSchemaJson();\n    }\n}\n----\n\n[source,java]\n----\n\n@Component\n@Endpoint(id = \"config-schema.yaml\")\n@RequiredArgsConstructor\npublic class ConfigSchemaYamlEndpoint {\n\n    private final JsonSchemaService jsonSchemaService;\n\n    @ReadOperation\n    public String schema() {\n        return jsonSchemaService.generateFullSchemaYaml();\n    }\n}\n----\n\nConfigure in `application.yaml`:\n\n[source,yaml]\n----\nmanagement:\n  endpoints:\n    web:\n      exposure:\n        include: config-schema\n----\n\n[[changelog]]\n== Changelog\n\ninclude::CHANGELOG.adoc[]\n\n[[contributing]]\n== Contributing\n\nContributions welcome!\nSee link:CONTRIBUTING.adoc[CONTRIBUTING] for guidelines.\nOpen issues for bugs or feature requests ( e.g., IDE enhancements, validation support).\n\n[[license]]\n== License\n\nLicensed under link:LICENSE[Apache 2.0 License].\n\n'''\n\n⭐ Star this repo if you find it useful!\nShare feedback via [issues](https://github.com/alexmond/spring-boot-config-json-schema/issues).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmond%2Fspring-boot-config-json-schema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexmond%2Fspring-boot-config-json-schema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmond%2Fspring-boot-config-json-schema/lists"}