Skip to content
/ smithy Public
forked from smithy-lang/smithy

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

normj/smithy

This branch is 1 commit ahead of, 679 commits behind smithy-lang/smithy:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fb515a9 · May 2, 2023
Apr 24, 2023
Apr 4, 2023
Mar 17, 2023
May 2, 2023
Feb 8, 2022
Feb 16, 2023
Nov 15, 2022
Apr 1, 2023
Mar 3, 2023
Apr 6, 2023
Apr 25, 2023
Feb 15, 2023
Mar 27, 2023
Apr 7, 2023
Mar 17, 2023
Mar 22, 2023
Jan 19, 2022
Mar 3, 2023
Apr 17, 2023
Apr 27, 2023
Aug 10, 2022
Mar 3, 2023
Aug 10, 2022
Apr 6, 2023
Apr 19, 2023
Dec 14, 2022
Feb 15, 2023
Apr 25, 2023
Apr 25, 2023
Mar 23, 2019
Jan 3, 2023
Mar 23, 2022
Mar 23, 2019
Oct 27, 2021
Nov 15, 2022
Apr 25, 2023
Dec 24, 2022
Apr 14, 2023
Oct 19, 2021
Jan 22, 2021
Nov 18, 2022
Aug 18, 2022

Repository files navigation

Smithy 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.

$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.

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 83.8%
  • Smithy 16.1%
  • Other 0.1%