← Files AWS CoreARCHIVED FILE
skills/aws-sdk-js-v3-usage/references/schemas.md
1.67 KB · Oct 6, 2026 · 18:04 UTC
# Schemas Reference (v3.953.0+)
Schemas are runtime objects that describe the data structures of modeled shapes. Used internally by the SDK for serialization/deserialization, and available for runtime validation or serialization to non-default formats. Not needed for basic SDK usage.
Each exported interface has a corresponding schema suffixed with `$`:
```ts
import { type PutBucketAclRequest, PutBucketAclRequest$ } from "@aws-sdk/client-s3";
```
## Use case 1: Runtime validation
```ts
import { NormalizedSchema } from "@smithy/core/schema";
const $ = NormalizedSchema.of(PutBucketAclRequest$);
// Use $.isStringSchema(), $.isStructSchema(), $.structIterator(), etc.
// to walk the schema and validate an object at runtime.
```
Useful when accepting unknown user input. Note: schemas do not include required-field or numeric-range constraints (by design — the SDK favors server-side validation).
## Use case 2: Serialization to non-default formats
```ts
import { JsonCodec } from "@aws-sdk/core/protocols";
import { PutItemInput$ } from "@aws-sdk/client-dynamodb";
const codec = new JsonCodec({ timestampFormat: { useTrait: true, default: 7 }, jsonName: false });
const serializer = codec.createSerializer();
serializer.write(PutItemInput$, myData);
const json = serializer.flush(); // serialize DynamoDB input to JSON string
const deserializer = codec.createDeserializer();
const result = await deserializer.read(PutItemInput$, json);
```
A schema is required (rather than dynamic heuristics) because serialized representations can be ambiguous — e.g. a number could be a timestamp, a base64 string could be a `Uint8Array`. CBOR is also supported via `CborCodec` from `@smithy/core/cbor`.
SHA-256: d3a6bf3541da8de31e1e944aacbf5367d3a8da900e3a777f5b2e557b17634f49