Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
See the codeSmithy defines and generates clients, services, and documentation for any protocol.
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://smithy.io/2.0/quickstart.html#complete-example
Find out more about modeling a service with Smithy in the Quick Start guide.
[!IMPORTANT]
Before you proceed, make sure you have the Smithy CLI installed.
The Smithy CLI is the easiest way to get started with building Smithy models. First, create a smithy-build.json file:
{
"version": "1.0",
"sources": ["model"]
}
Next, create your first model model/main.smithy:
$version: "2"
namespace com.example
service ExampleService {
version: "2020-05-27"
}
Finally, run smithy build to build the model with the Smithy CLI.
Find out more about building artifacts of your Smithy model in the Building Smithy Models guide. For more examples, see the examples repository
This library is licensed under the Apache 2.0 License.
(top 24 of 35)
1,171 followers · starred Jul 2025
267 followers · starred Apr 2021
98 followers · starred Apr 2023
203 followers · starred May 2021
Java
68.5%
Smithy
31.2%
Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
See the codeSmithy defines and generates clients, services, and documentation for any protocol.
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://smithy.io/2.0/quickstart.html#complete-example
Find out more about modeling a service with Smithy in the Quick Start guide.
[!IMPORTANT]
Before you proceed, make sure you have the Smithy CLI installed.
The Smithy CLI is the easiest way to get started with building Smithy models. First, create a smithy-build.json file:
{
"version": "1.0",
"sources": ["model"]
}
Next, create your first model model/main.smithy:
$version: "2"
namespace com.example
service ExampleService {
version: "2020-05-27"
}
Finally, run smithy build to build the model with the Smithy CLI.
Find out more about building artifacts of your Smithy model in the Building Smithy Models guide. For more examples, see the examples repository
This library is licensed under the Apache 2.0 License.
(top 24 of 35)
1,171 followers · starred Jul 2025
267 followers · starred Apr 2021
98 followers · starred Apr 2023
203 followers · starred May 2021
Java
68.5%
Smithy
31.2%