diff --git a/scm-webapp/build.gradle b/scm-webapp/build.gradle index 721345f911..1372d18780 100644 --- a/scm-webapp/build.gradle +++ b/scm-webapp/build.gradle @@ -136,7 +136,10 @@ dependencies { war { from 'build/war' from project.configurations.assets - dependsOn 'copy-core-plugins' + into('WEB-INF/classes/META-INF/scm') { + from('build/openapi') + } + dependsOn 'copy-core-plugins', 'resolve' } artifacts { @@ -161,9 +164,28 @@ serve { dependsOn 'dev-war' } +resolve { + outputFileName = 'openapi' + outputFormat = 'JSONANDYAML' + prettyPrint = 'TRUE' + classpath = sourceSets.main.runtimeClasspath + resourcePackages = ['sonia.scm.api.v2.resources'] + outputDir = file('build/openapi') + openApiFile = file('build/tmp/openapi.yml') +} + +task prepareOpenAPI(type: Copy) { + from 'src/main/doc/openapi.yml' + into 'build/tmp' + expand(version: project.version) +} + +tasks.getByName("resolve").configure { + dependsOn 'prepareOpenAPI' +} + /** WTF??? - @@ -182,55 +204,8 @@ fix java.lang.NoClassDefFoundError org/w3c/dom/ElementTraversal xml-apis 1.4.01 - - - - - sonia.scm.plugins - scm-git-plugin - 2.13.0-SNAPSHOT - tests - test - - - - sonia.scm.plugins - scm-git-plugin - 2.13.0-SNAPSHOT - test - - - - sonia.scm.plugins - scm-hg-plugin - 2.13.0-SNAPSHOT - tests - test - - - - sonia.scm.plugins - scm-hg-plugin - 2.13.0-SNAPSHOT - test - - - - sonia.scm.plugins - scm-svn-plugin - 2.13.0-SNAPSHOT - tests - test - - - - sonia.scm.plugins - scm-svn-plugin - 2.13.0-SNAPSHOT - test - - **/ + test { useJUnitPlatform() // TODO integration tests diff --git a/scm-webapp/src/main/doc/openapi.md b/scm-webapp/src/main/doc/openapi.md deleted file mode 100644 index 4f5fa57955..0000000000 --- a/scm-webapp/src/main/doc/openapi.md +++ /dev/null @@ -1,15 +0,0 @@ -The following REST documentation describes all public endpoints of your SCM-Manager instance. -You can try the endpoints with or without authentication right on the swagger surface provided by the OpenAPI-Plugin. - -For authenticated requests please login to the SCM-Manager. You can also use the "Authorize" button and insert your preferred authentication method. -For basic authentication simply use your SCM-Manager credentials. If you want to use the bearer token authentication, you can generate an -valid token using the authentication endpoint and copy the response body. - -SCM-Manager defines a modern ["Level 3"-REST API](https://martinfowler.com/articles/richardsonMaturityModel.html). -Using the HATEOAS architecture for REST allows us to provide discoverable and self explanatory endpoint definitions. -The responses are build using the [HAL JSON format](http://stateless.co/hal_specification.html). -HAL makes the API human-friendly and simplifies the communication between the frontend and the server using links and embedded resources. - -We highly suggest using HAL links when creating new functions for SCM-Manager since they are consistent and are only -appended to the response when user has the necessary permissions. The links and embedded resources can also be used by plugins, which can -define new resources or enrich existing ones. diff --git a/scm-webapp/src/main/doc/openapi.yml b/scm-webapp/src/main/doc/openapi.yml new file mode 100644 index 0000000000..693ff7b165 --- /dev/null +++ b/scm-webapp/src/main/doc/openapi.yml @@ -0,0 +1,30 @@ +openapi: 3.0.1 +info: + title: SCM-Manager REST-API + description: | + The following REST documentation describes all public endpoints of your SCM-Manager instance. + You can try the endpoints with or without authentication right on the swagger surface provided by the OpenAPI-Plugin. + + For authenticated requests please login to the SCM-Manager. You can also use the "Authorize" button and insert your preferred authentication method. + For basic authentication simply use your SCM-Manager credentials. If you want to use the bearer token authentication, you can generate an + valid token using the authentication endpoint and copy the response body. + + SCM-Manager defines a modern ["Level 3"-REST API](https://martinfowler.com/articles/richardsonMaturityModel.html). + Using the HATEOAS architecture for REST allows us to provide discoverable and self explanatory endpoint definitions. + The responses are build using the [HAL JSON format](http://stateless.co/hal_specification.html). + HAL makes the API human-friendly and simplifies the communication between the frontend and the server using links and embedded resources. + + We highly suggest using HAL links when creating new functions for SCM-Manager since they are consistent and are only + appended to the response when user has the necessary permissions. The links and embedded resources can also be used by plugins, which can + define new resources or enrich existing ones. + contact: + name: SCM-Manager + url: https://scm-manager.org + email: scmmanager@googlegroups.com + license: + name: MIT + url: https://github.com/scm-manager/scm-manager/blob/develop/LICENSE.txt + version: ${version} +servers: + - url: http://localhost:8081/scm/api + description: local endpoint url