EronHennessey / smithy

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

Home Page:https://awslabs.github.io/smithy/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

https://awslabs.github.io/smithy/

License:Apache License 2.0


Languages

Language:Java 99.3%Language:Kotlin 0.6%Language:Shell 0.1%