Build Status

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.


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

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 {

Finally, create your first model model/main.smithy:

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.


This library is licensed under the Apache 2.0 License.