Skip to content

Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.

License

Notifications You must be signed in to change notification settings

smithy-lang/smithy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Chase Coalwellsrchase
Chase Coalwell
and
May 7, 2021
c6e54b9 · May 7, 2021
Apr 29, 2021
Feb 23, 2021
May 6, 2021
Jan 22, 2021
Feb 22, 2021
Mar 11, 2021
Nov 20, 2020
Apr 8, 2021
Apr 6, 2021
May 6, 2021
Apr 19, 2021
Apr 8, 2021
Mar 4, 2021
Dec 14, 2020
Mar 12, 2021
Nov 11, 2020
Mar 12, 2021
Apr 19, 2021
Apr 26, 2021
Oct 21, 2020
Mar 15, 2021
Feb 5, 2021
Mar 3, 2021
Feb 10, 2021
Aug 31, 2020
May 7, 2021
Mar 23, 2019
Jan 8, 2021
May 12, 2020
Mar 23, 2019
Apr 22, 2020
May 6, 2021
May 7, 2021
Apr 13, 2021
Mar 24, 2019
Jan 22, 2021
Jan 22, 2021
May 6, 2020
Nov 19, 2020

Repository files navigation

Smithy

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.

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.5.3")
}

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.

License

This library is licensed under the Apache 2.0 License.

About

Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published