Skip to content
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. **Smithy is in early beta and not yet feature complete**

License

Notifications You must be signed in to change notification settings

hkittaka/smithy

 
 

Repository files navigation

Smithy

Build Status

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

NOTE: Smithy is a developer preview; we will continue to provide updates with new features, integrations, and fixes.

Modeling in Smithy

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

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. **Smithy is in early beta and not yet feature complete**

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.5%
  • Other 0.5%