Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
Smithy is a developer preview; we will continue to provide updates with new features, integrations, and fixes.
Documentation for Smithy, including the specification, can be found in the online documentation.
Smithy models define a service as a collection of resources, operations, and shapes.
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.
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 {
java
id("software.amazon.smithy").version("0.2.0")
}
Find out more about building artifacts of your Smithy model in the Building Smithy Models guide.
This library is licensed under the Apache 2.0 License.