{"id":14983124,"url":"https://github.com/itroadlabs/apicross","last_synced_at":"2025-10-29T21:30:42.248Z","repository":{"id":42123549,"uuid":"358706087","full_name":"itroadlabs/apicross","owner":"itroadlabs","description":"Toolkit to build SDK from OpenAPI v.3 specification","archived":false,"fork":false,"pushed_at":"2023-11-25T16:46:56.000Z","size":381,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-28T08:40:38.648Z","etag":null,"topics":["java","maven-plugin","openapi","spring-mvc"],"latest_commit_sha":null,"homepage":"","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/itroadlabs.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}},"created_at":"2021-04-16T19:57:33.000Z","updated_at":"2023-03-26T16:08:56.000Z","dependencies_parsed_at":"2023-11-17T18:50:56.207Z","dependency_job_id":null,"html_url":"https://github.com/itroadlabs/apicross","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itroadlabs%2Fapicross","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itroadlabs%2Fapicross/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itroadlabs%2Fapicross/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itroadlabs%2Fapicross/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itroadlabs","download_url":"https://codeload.github.com/itroadlabs/apicross/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219857296,"owners_count":16556070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","maven-plugin","openapi","spring-mvc"],"created_at":"2024-09-24T14:06:46.328Z","updated_at":"2025-10-29T21:30:36.755Z","avatar_url":"https://github.com/itroadlabs.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![Java CI with Maven](https://github.com/itroadlabs/apicross/actions/workflows/maven-oss-release.yml/badge.svg)\n\n# Purpose\nAPICROSS is a tool to generate source code from OpenAPI 3.0 API specification.\n\n# Features\n- Generates API Models with [Jackson](https://github.com/FasterXML/jackson) metadata and [JsonNullable Jackson module](https://github.com/OpenAPITools/jackson-databind-nullable) for [optional fields](docs/OptionalFields.md). \n  Supports following tricky OpenAPI models features:\n  * `additionalProperties` (See [here](docs/AdditionalProperties.md))\n  * `oneOf`, `allOf`  (See [here](docs/ComposedSchemas.md))\n  * `minProperties`, `maxProperties` and `required` properties [validation support](docs/MinMaxRequiredPropertiesValidation.md).  \n- Generates API Requests [Handlers](docs/APIHandler.md) (as interfaces for [Spring Web MVC](https://github.com/spring-projects/spring-framework/tree/main/spring-webmvc) controllers):\n  * Basic Spring Security [support](docs/SpringSecurityAuthentication.md)\n  * Query [parameters](docs/QueryParameters.md) objects\n  * `IRead*` interfaces to support Hexagonal architecture (See [here](docs/IReadInterfaces.md))\n- Files upload/download support (See [here](docs/HandlingFiles.md))\n- Customization:\n  * Customize API handler method names (See [here](docs/APIHandlerMethodName.md))\n  * Customize Java class property name for model fields \n  * Grouping operations into API Handlers  \n\n# Minimal Maven Plugin setup\n```xml\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eio.github.itroadlabs\u003c/groupId\u003e\n                \u003cartifactId\u003eapicross-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e${project.version}\u003c/version\u003e\n                \u003cexecutions\u003e\n                    \u003cexecution\u003e\n                        \u003cid\u003egenerate-api-classes\u003c/id\u003e\n                        \u003cphase\u003egenerate-sources\u003c/phase\u003e\n                        \u003cgoals\u003e\n                            \u003cgoal\u003egenerate-code\u003c/goal\u003e\n                        \u003c/goals\u003e\n                        \u003cconfiguration\u003e\n                            \u003cspecUrl\u003efile:///${project.basedir}/../api-specifications/api.yaml\u003c/specUrl\u003e\n                            \u003cgeneratorClassName\u003eio.github.itroadlabs.apicross.springmvc.SpringMvcCodeGenerator\u003c/generatorClassName\u003e\n                            \u003cgeneratorOptions implementation=\"io.github.itroadlabs.apicross.springmvc.SpringMvcCodeGeneratorOptions\"\u003e\n                                \u003capiHandlerPackage\u003ecom.myapp.web.handlers\u003c/apiHandlerPackage\u003e\n                                \u003capiModelPackage\u003ecom.myapp.web.models\u003c/apiModelPackage\u003e\n                                \u003cwriteSourcesTo\u003e${project.build.directory}/generated-sources/java\u003c/writeSourcesTo\u003e\n                            \u003c/generatorOptions\u003e\n                        \u003c/configuration\u003e\n                    \u003c/execution\u003e\n                \u003c/executions\u003e\n                \u003cdependencies\u003e\n                    \u003cdependency\u003e\n                        \u003cgroupId\u003eio.github.itroadlabs\u003c/groupId\u003e\n                        \u003cartifactId\u003eapicross-springmvc\u003c/artifactId\u003e\n                        \u003cversion\u003e${project.version}\u003c/version\u003e\n                    \u003c/dependency\u003e\n                \u003c/dependencies\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n```\n## Maven Plugin Configuration Options\n### Common options\n| Option             | Type | Description |\n|--------------------| ---- | --- |\n| writeSourcesTo     | String | Directory to write generated sources |\n| generateOnlyModels | boolean | Generated  only API models (if `true`) but not requests handlers. Default - `false` |\n| skipTags           | Set | Set of OpenAPI tags to be skipped from source code generation. Operations with such tags will be skipped within code generation |\n| generateOnlyTags   | Set | Set of OpenAPI tags to be included int source code generation. Only operations with such tags will be included into code generation | \n\n### Spring MVC generator options\n| Option                                     | Type | Description                                                                                                                                                                                                                                                                                                               |\n|--------------------------------------------| ---- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| apiHandlerPackage                          | String | Java package name for API handlers (Java interfaces for Spring MVC Controllers)                                                                                                                                                                                                                                           |\n| apiModelPackage                            | String | Java package name for API models (request/response)                                                                                                                                                                                                                                                                       |\n| modelClassNameSuffix                       | String | Suffix for API model Java class name                                                                                                                                                                                                                                                                                      |\n| modelClassNamePrefix                       | String | Prefix for API model Java class name                                                                                                                                                                                                                                                                                      |\n| requestsHandlerMethodNameResolverClassName | String | Class implementing `RequestsHandlerMethodNameResolver` interface to resolve API Handler class name. See details [here](docs/APIHandlerMethodName.md). Default is [DefaultRequestsHandlerMethodNameResolver](apicross-java/src/main/java/io/github/itroadlabs/apicross/java/DefaultRequestsHandlerMethodNameResolver.java) |\n| requestsHandlerTypeNameResolverClassName   | String | Class implementing `RequestsHandlerTypeNameResolver` interface to resolve API Handler method name. Default is [DefaultRequestsHandlerTypeNameResolver](apicross-java/src/main/java/io/github/itroadlabs/apicross/java/DefaultRequestsHandlerTypeNameResolver.java)                                                        |\n| propertyNameResolverClassName              | String | Class implementing `PropertyNameResolver` interface to resolve data model class property name. Default is [DefaultPropertyAndParameterNameResolver](apicross-java/src/main/java/io/github/itroadlabs/apicross/java/DefaultPropertyAndParameterNameResolver.java)                                                          |\n| parameterNameResolverClassName             | String | Class implementing `PropertyNameResolver` interface to resolve URI parameter name. Default is [DefaultPropertyAndParameterNameResolver](apicross-java/src/main/java/io/github/itroadlabs/apicross/java/DefaultPropertyAndParameterNameResolver.java)                                                                      |\n| dataModelsExternalTypesMap                 | Map | Defines replacement for data model schema by specified Java class. See details [here](docs/ExternalTypes.md)                                                                                                                                                                                                              |\n| dataModelsInterfacesMap                    | Map | Defines Java interface for class generated to represend specified schema. See details [here](docs/DataModelInterfaces.md)                                                                                                                                                                                                 |\n| queryObjectsInterfacesMap                  | Map | Java interfaces to be implemented for specified query object. See details [here](docs/QueryParameters.md)                                                                                                                                                                                                                 |\n| globalQueryObjectsInterfaces               | Set | Java interfaces to be implemented for all generated query opject classes. See details [here](docs/QueryParameters.md).                                                                                                                                                                                                    |\n| useJsonNullable                            | boolean | Generate Java classes for API models with `JsonNullable` class usage (`true`) or not (`false`). The default is `true`. [Feature description here](docs/OptionalFields.md)                                                                                                                                                 |\n| enableApicrossJavaBeanValidationSupport    | boolean | Enable option to add APICROSS custom annotation to the api model class to perform `required` fields validation. Default is `false`. See details [here](docs/MinMaxRequiredPropertiesValidation.md).                                                                                                                       |\n| enableDataModelReadInterfaces              | boolean | Enable generation for `IRead*` interfaces. Default is `false`.                                                                                                                                                                                                                                                            |\n| apiModelReadInterfacesPackage              | String | Java package name for `IRead*` interfaces                                                                                                                                                                                                                                                                                 |\n| enableSpringSecurityAuthPrincipal          | boolean | Enable for API Handlers methods Spring Security `Authorization` parameter                                                                                                                                                                                                                                                 |\n| alternativeTemplatesPath                   | List | Path to files with alternative templates. Please read about feature [here](docs/AlternativeTemplates.md)                                                                                                                                                                                                                  |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitroadlabs%2Fapicross","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitroadlabs%2Fapicross","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitroadlabs%2Fapicross/lists"}