Protocol status
This page is the source of truth for protocol maturity and conformance. The individual protocol pages describe behavior without repeating status labels or test totals.
Current status
Section titled “Current status”| Protocol | Stage | Client conformance | Server conformance |
|---|---|---|---|
restJson1 | Preview | Requests 142/142 (100%) Responses 108/108 (100%) | Requests 132/132 (100%) Responses 92/92 (100%) Malformed 655/655 (100%) |
simpleRestJson | Preview | Requests 23/23 (100%) Responses 20/20 (100%) | Requests 23/23 (100%) Responses 20/20 (100%) |
rpcv2Cbor | Preview | Requests 29/29 (100%) Responses 43/43 (100%) | Requests 37/37 (100%) Responses 27/27 (100%) |
rpcv2Json | Preview | Requests 34/34 (100%) Responses 39/39 (100%) | Requests 35/35 (100%) Responses 33/33 (100%) |
grpc | Experimental | End-to-end examples | End-to-end examples |
awsJson1_1 | Early preview | Requests 57/57 (100%) Responses 62/62 (100%) | Client only |
awsJson1_0 | Early preview | Runtime support, no conformance project | Client only |
awsQuery | Preview | Requests 38/38 (100%) Responses 39/39 (100%) | Client only |
ec2Query | Preview | Requests 30/30 (100%) Responses 29/29 (100%) | Client only |
restXml | Preview | Requests 109/109 (100%) Responses 84/84 (100%) | Client only |
Endpoint rules
Section titled “Endpoint rules”Generated endpoint resolvers
run the official @endpointTests cases. Each case resolves its parameters
directly, and each of its operation inputs through the operation’s parameter
bindings.
| Fixtures | Cases | Operation inputs |
|---|---|---|
| Rules engine standard library | 95/95 (100%) | 16/16 (100%) |
aws.* functions | 37/37 (100%) | None |
| DynamoDB | 548/548 (100%) | 267/267 (100%) |
| Lambda | 71/71 (100%) | None |
| S3 | 393/393 (100%) | 215/215 (100%) |
| S3 Control | 134/134 (100%) | 187/187 (100%) |
| STS | 69/69 (100%) | 18/18 (100%) |
How the numbers are counted
Section titled “How the numbers are counted”Each fraction is:
passing executable official cases / official cases applicable to that surfaceClient and server totals are separate because Smithy test cases declare an
appliesTo direction. A server-only case does not enter the client denominator,
and a client-only case does not enter the server denominator.
Cases listed in a conformance project’s known-gap set remain in the denominator but not the numerator. Local regression fixtures run in the suites but do not count as official conformance.
Coverage notes
Section titled “Coverage notes”- restJson1 passes every applicable official request, response, modeled-error, and malformed-request case on both generated surfaces.
- The restJson1 server passes all 655 applicable
httpMalformedRequestTests. These cases verify structured responses for requests that cannot be deserialized or validated. - Auxiliary fixture services without a generated handler are excluded from the restJson1 server denominator. Local response regression cases are also excluded from the official totals.
- simpleRestJson passes every case in Alloy’s protocol suite on both generated surfaces.
- rpcv2Cbor passes every applicable official request and response case on both generated surfaces.
- rpcv2Json passes every applicable official request and response case on both generated surfaces. The official suite has no event-stream cases; JSON event streams are covered by unit tests.
- AWS Query, EC2 Query, and restXml pass every applicable official client request and response case.
- AWS JSON 1.1 passes every applicable official client request and response case.
AwsJson10Protocolhas runtime support but no separate conformance project. - The endpoint rules fixtures are the
smithy-rules-engine-testsmodels, theaws.*function test models ofsmithy-aws-endpoints, and the published models of five AWS services chosen for their built-ins and auth scheme properties. - gRPC is not part of Smithy’s HTTP protocol test suite. Its codec and transport tests cover complex messages, numeric encodings, collections, oneofs, documents, errors, trailers, and all three streaming modes. Grpc.Net interoperability is demonstrated by runnable examples but is not yet an automated cross-implementation test matrix.
See Validation for malformed request behavior.
Maturity labels
Section titled “Maturity labels”- Stable every applicable official conformance case passes on every generated surface, and the generated API changes only with care for existing users.
- Preview useful end-to-end support with meaningful conformance coverage. Some protocol features or convenience APIs are still incomplete, and the generated API can still change.
- Early preview a narrower verified slice. Check the conformance totals and known limitations before adopting it.
- Experimental the API and supported model surface can still change.
Reproducing the report
Section titled “Reproducing the report”Each conformance project has a
ConformanceRateTests.ReportConformanceRate test. Run it after just codegen
and copy the emitted totals to this page.
The fixtures come from the pinned Smithy and Alloy protocol-test model JARs. The upstream restJson1 sources are in the Smithy repository.