Smithy · Schema
Smithy Shape
A Smithy IDL shape definition - the core building block of Smithy API models
Code GenerationIDLSDKAPI DesignInterface Definition LanguageToolchain
Properties
| Name | Type | Description |
|---|---|---|
| type | string | The Smithy shape type |
| traits | object | Traits applied to this shape, keyed by trait shape ID |
| members | object | Member shapes (for structure, union, enum, intEnum) |
| member | object | The member shape (for list, set) |
| key | object | The key member shape (for map) |
| value | object | The value member shape (for map) |
| input | object | The input shape reference (for operation) |
| output | object | The output shape reference (for operation) |
| errors | array | Error shape references (for operation) |
| version | string | The version of the service (for service shape) |
| operations | array | Operations in a service or resource |
| resources | array | Resources in a service |
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://smithy.io/schemas/shape",
"title": "Smithy Shape",
"description": "A Smithy IDL shape definition - the core building block of Smithy API models",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The Smithy shape type",
"enum": [
"blob",
"boolean",
"string",
"byte",
"short",
"integer",
"long",
"float",
"double",
"bigInteger",
"bigDecimal",
"timestamp",
"document",
"list",
"map",
"structure",
"union",
"enum",
"intEnum",
"service",
"resource",
"operation"
]
},
"traits": {
"type": "object",
"description": "Traits applied to this shape, keyed by trait shape ID",
"additionalProperties": true
},
"members": {
"type": "object",
"description": "Member shapes (for structure, union, enum, intEnum)",
"additionalProperties": {
"$ref": "#/definitions/MemberShape"
}
},
"member": {
"description": "The member shape (for list, set)",
"$ref": "#/definitions/MemberShape"
},
"key": {
"description": "The key member shape (for map)",
"$ref": "#/definitions/MemberShape"
},
"value": {
"description": "The value member shape (for map)",
"$ref": "#/definitions/MemberShape"
},
"input": {
"description": "The input shape reference (for operation)",
"$ref": "#/definitions/ShapeRef"
},
"output": {
"description": "The output shape reference (for operation)",
"$ref": "#/definitions/ShapeRef"
},
"errors": {
"type": "array",
"description": "Error shape references (for operation)",
"items": {
"$ref": "#/definitions/ShapeRef"
}
},
"version": {
"type": "string",
"description": "The version of the service (for service shape)"
},
"operations": {
"type": "array",
"description": "Operations in a service or resource",
"items": {
"$ref": "#/definitions/ShapeRef"
}
},
"resources": {
"type": "array",
"description": "Resources in a service",
"items": {
"$ref": "#/definitions/ShapeRef"
}
}
},
"definitions": {
"MemberShape": {
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "The shape ID that this member targets"
},
"traits": {
"type": "object",
"description": "Traits applied to this member"
}
},
"required": ["target"]
},
"ShapeRef": {
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "The shape ID being referenced"
}
},
"required": ["target"]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/smithy-shape"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.