smithy
smithy copied to clipboard
Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
Smithy
Smithy defines and generates clients, services, and documentation for any protocol.
Smithy IDL
Smithy models define a service as a collection of resources, operations, and shapes.
$version: "2"
namespace example.weather
service Weather {
version: "2006-03-01"
resources: [City]
operations: [GetCurrentTime]
}
resource City {
identifiers: { cityId: CityId }
read: GetCity
list: ListCities
resources: [Forecast]
}
// See the full example at https://awslabs.github.io/smithy/quickstart.html#complete-example
Find out more about modeling a service with Smithy in the Quick Start guide.
Building Smithy models
The Smithy Gradle Plugin is the best way to get started with building a
Smithy model. First, create a smithy-build.json
file:
{
"version": "1.0"
}
Then, apply the Smithy Gradle Plugin in your build.gradle.kts
file and run
gradle build
:
plugins {
id("software.amazon.smithy").version("0.6.0")
}
Finally, create your first model model/main.smithy
:
$version: "2"
namespace com.example
service ExampleService {
version: "2020-05-27"
}
Find out more about building artifacts of your Smithy model in the Building Smithy Models guide. For more examples, see the examples directory of the Smithy Gradle Plugin repository.
License
This library is licensed under the Apache 2.0 License.