A simple gradle plugin to integrate SwaggerHub hosting of OpenAPI/Swagger definitions with a gradle build process, using the SwaggerHub API.
- Download/upload API definitions from/to SwaggerHub.
- Supports
json
andyaml
format for API definitions. - Authenticate with API key for restricted operations (e.g downloading a private API definition).
- Connects to SwaggerHub cloud by default or local SwaggerHub instance through optional configuration.
The pattern of usage is likely to depend on whether a code first or design first approach is followed.
- Code API implementation.
- Automatically generate API definition from implementation, e.g. via swagger-core annotations and swagger gradle plugin. See also swagger-core wiki
- Upload generated API definition to SwaggerHub with swaggerhub-gradle-plugin.
- Write API definition (e.g. in Swagger Editor or SwaggerHub).
- Download API definition with swaggerhub-gradle-plugin.
- Pass API definition to another Swagger tool e.g.
- swagger-codegen to generate API client and resource classes.
- swagger-inflector to automatically wire up the API definition to the implementation and provide out-of-the-box mocking.
plugins {
id "io.swagger.swaggerhub" version "1.1.0"
}
- Download a public API definition in json format from SwaggerHub and save to a local file.
swaggerhubDownload {
api 'PetStoreAPI'
owner 'swagger-hub'
version '1.0.0'
outputFile 'target/test/petStoreAPI.json'
}
Parameter | Description | Required | Default |
---|---|---|---|
api |
API name | true | - |
owner |
API owner | true | - |
version |
API version | true | - |
outputFile |
API definition is written to this file | true | - |
token |
SwaggerHub API key, required to access private definitions | false | - |
format |
API definition format, json or yaml |
false | json |
host |
URL of SwaggerHub API | false | api.swaggerhub.com |
protocol |
Protocol for SwaggerHub API,http or https |
false | https |
port |
Port to access SwaggerHub API | false | 443 |
oas |
Version of the OpenApi Specification the definition adheres to | false | 2.0 |
resolved |
Download a resolved version of the API definition | false | false |
onPremise |
Uses the API path suffix for on-premise SwaggerHub deployments | false | false |
onPremiseAPISuffix |
Custom API Suffix path for any future changes in SwaggerHub API pattern for on-premise deployments | false | /v1 |
- Upload an API definition in json format as a public API in SwaggerHub.
swaggerhubUpload {
api 'PetStoreAPI'
owner 'swagger-hub'
version '1.0.1-SNAPSHOT'
inputFile 'target/petStoreAPI.json'
token 'duMmyAPiKEy'
}
- Upload an API definition in json format (resolved via
swagger-gradle-plugin
) as a public API in SwaggerHub.
plugins {
...
id 'java'
id "io.swagger.core.v3.swagger-gradle-plugin" version '2.0.6'
id "io.swagger.swaggerhub" version "1.0.1"
}
...
resolve {
outputFileName = 'PetStoreAPI'
outputFormat = 'JSON'
prettyPrint = 'TRUE'
classpath = sourceSets.main.runtimeClasspath
resourcePackages = ['test.petstore']
outputPath = 'target'
}
swaggerhubUpload {
dependsOn resolve
api 'PetStoreAPI'
owner 'swagger-hub'
version '1.0.1-SNAPSHOT'
inputFile 'target/petStoreAPI.json'
token 'duMmyAPiKEy'
}
Parameter | Description | Required | Default |
---|---|---|---|
api |
API name | true | - |
owner |
API owner | true | - |
version |
API version | true | - |
inputFile |
Local file containing the API definition in json or yaml format | true | - |
token |
SwaggerHub API key | true | - |
format |
API definition format, json or yaml |
false | json |
isPrivate |
Defines whether the API should be private on SwaggerHub (using true requires a paid plan) |
false | false |
host |
URL of SwaggerHub API | false | api.swaggerhub.com |
protocol |
Protocol for SwaggerHub API,http or https |
false | https |
port |
Port to access SwaggerHub API | false | 443 |
onPremise |
Uses the API path suffix for on-premise SwaggerHub deployments | false | false |
onPremiseAPISuffix |
Custom API Suffix path for any future changes in SwaggerHub API pattern for on-premise deployments | false | /v1 |