A language for defining services and SDKs. Smithy is designed to work with any programming language, describe services running in any environment, and work with any kind of transport or serialization format. Smithy is extended through traits. Smithy's extensible meta-model can evolve and capture more information about services without breaking changes. Customizable API standards help to automatically ensure that APIs meet customer expectations. Validation rules can be shared and applied to all APIs in an organization.