Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/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.
https://github.com/smithy-lang/smithy
smithy smithy-models
Last synced: 27 days ago
JSON representation
Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
- Host: GitHub
- URL: https://github.com/smithy-lang/smithy
- Owner: smithy-lang
- License: apache-2.0
- Created: 2019-03-22T21:38:10.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-10T21:19:29.000Z (about 1 month ago)
- Last Synced: 2024-10-12T09:29:32.471Z (29 days ago)
- Topics: smithy, smithy-models
- Language: Java
- Homepage: https://smithy.io
- Size: 130 MB
- Stars: 1,778
- Watchers: 28
- Forks: 211
- Open Issues: 66
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- jimsghstars - 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. (Java)
README
# Smithy
[![Build Status](https://github.com/smithy-lang/smithy/workflows/ci/badge.svg)](https://github.com/smithy-lang/smithy/actions/workflows/ci.yml)Smithy defines and generates clients, services, and documentation for
any protocol.* [Smithy Homepage][docs]
* [Specifications][specs]
* [Java API documentation][javadocs]
* [Smithy Gradle Plugin][Smithy Gradle Plugin]
* [Awesome Smithy][awesome-smithy]# Smithy IDL
Smithy models define a service as a collection of resources, operations, and
shapes.```smithy
$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][quickstart].# Building Smithy models
> [!IMPORTANT]
> Before you proceed, make sure you have the [Smithy CLI installed](https://smithy.io/2.0/guides/smithy-cli/cli_installation.html#cli-installation).The [Smithy CLI] is the easiest way to get started with building Smithy models. First, create a [`smithy-build.json`] file:
```json
{
"version": "1.0",
"sources": ["model"]
}
```Next, create your first model `model/main.smithy`:
```smithy
$version: "2"namespace com.example
service ExampleService {
version: "2020-05-27"
}
```Finally, run `smithy build` to build the model with the [Smithy CLI].
Find out more about building artifacts of your Smithy model in the [Building
Smithy Models][building] guide. For more examples, see the
[examples repository](https://github.com/smithy-lang/smithy-examples)# License
This library is licensed under the Apache 2.0 License.
[docs]: https://smithy.io/
[specs]: https://smithy.io/2.0/spec/
[javadocs]: https://smithy.io/javadoc/latest/
[quickstart]: https://smithy.io/2.0/quickstart.html
[Smithy Gradle Plugin]: https://github.com/awslabs/smithy-gradle-plugin/
[Smithy CLI]: https://smithy.io/2.0/guides/smithy-cli/index.html
[`smithy-build.json`]: https://smithy.io/2.0/guides/building-models/build-config.html#using-smithy-build-json
[building]: https://smithy.io/2.0/guides/building-models/index.html
[awesome-smithy]: https://github.com/smithy-lang/awesome-smithy