{
  "openapi": "3.1.0",
  "info": {
    "title": "Dynoxide",
    "version": "1.0.0",
    "summary": "The DynamoDB-compatible API a local Dynoxide serves.",
    "description": "Dynoxide is a DynamoDB emulator. It speaks DynamoDB's own wire protocol, so this describes the DynamoDB API as Dynoxide implements it rather than an API of its own: point any AWS SDK at the endpoint and only the endpoint changes.\n\n**How the protocol works.** Every request is `POST /` with `Content-Type: application/x-amz-json-1.0`, and the operation is named in the `X-Amz-Target` header as `DynamoDB_20120810.<Operation>`. Nothing is carried in the path. OpenAPI has no way to spell that, so each operation is given a pseudo-path of `/#DynamoDB_20120810.<Operation>`, which is the convention AWS's own generated descriptions use. Send the request to `/` and set the header.\n\n**Credentials.** SigV4 material is required and is not verified. Dynoxide checks the same things DynamoDB checks about the material's shape, and returns the same errors when parts are missing, so an unsigned request is rejected with `MissingAuthenticationTokenException`. It never verifies the signature itself, so any non-empty access key and secret work. Every AWS SDK signs by default, which is why pointing one at the endpoint is all that is needed.\n\n**Scope.** These are the 28 DynamoDB operations with a meaningful local equivalent. The other 39 are cloud-infrastructure features (backup and restore, global tables, Kinesis, import and export, reserved capacity, contributor insights, resource policies, table replicas) and calling one returns `UnknownOperationException`. See https://dynoxide.dev/docs/compatibility for what is implemented and where it knowingly differs.\n\n**Surfaces.** The same engine runs as this HTTP server, as an embedded Rust or iOS library, as an MCP server for coding agents, and in the browser via WebAssembly. `x-dynoxide-surfaces` on each operation says which builds route it: the WebAssembly build implements a subset.\n\n**Not a production database.** Dynoxide is for local development, testing and CI. It does not emulate capacity metering, throttling, replication or IAM. Behaviour is verified against real AWS by a public conformance suite; see https://dynoxide.dev/docs/conformance.",
    "license": {
      "name": "MIT OR Apache-2.0",
      "identifier": "MIT OR Apache-2.0"
    },
    "contact": {
      "name": "Dynoxide",
      "url": "https://dynoxide.dev"
    }
  },
  "externalDocs": {
    "description": "Dynoxide documentation",
    "url": "https://dynoxide.dev/docs"
  },
  "servers": [
    {
      "url": "http://localhost:{port}",
      "description": "A Dynoxide you are running. Start one with `npx dynoxide`, `brew install nubo-db/tap/dynoxide`, or `docker run --rm -p 8000:8000 ghcr.io/nubo-db/dynoxide`. There is no hosted Dynoxide: the server runs on your own machine or in your own CI job.",
      "variables": {
        "port": {
          "default": "8000",
          "description": "The port Dynoxide is listening on."
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Tables",
      "description": "Creating, changing, describing and dropping tables and their indexes."
    },
    {
      "name": "Items",
      "description": "Single-item reads and writes."
    },
    {
      "name": "Queries",
      "description": "Reading many items, from a table or a secondary index."
    },
    {
      "name": "Batch",
      "description": "Reading and writing many items in one call, without transactional guarantees."
    },
    {
      "name": "Transactions",
      "description": "All-or-nothing reads and writes."
    },
    {
      "name": "Vector search",
      "description": "Nearest-neighbour search over a vector index."
    },
    {
      "name": "PartiQL",
      "description": "The SQL-compatible query surface."
    },
    {
      "name": "Time To Live",
      "description": "Item expiry."
    },
    {
      "name": "Streams",
      "description": "Reading the change stream. Dynoxide reports a single shard."
    },
    {
      "name": "Tags",
      "description": "Resource tagging."
    }
  ],
  "security": [
    {
      "sigv4Header": []
    },
    {
      "sigv4Query": []
    }
  ],
  "paths": {
    "/#DynamoDB_20120810.CreateTable": {
      "post": {
        "operationId": "CreateTable",
        "summary": "Create a table.",
        "description": "Creates a table, with any global or local secondary indexes and any vector indexes it should carry. A vector index declared here is searchable at once, unlike one added later through UpdateTable. A table carrying a vector index has to be PAY_PER_REQUEST.",
        "tags": [
          "Tables"
        ],
        "x-amz-target": "DynamoDB_20120810.CreateTable",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.CreateTable"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "CreateTableInput",
                "description": "Create a table.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to create."
                  },
                  "KeySchema": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeySchemaElement"
                    },
                    "description": "The table's partition key, and sort key if it has one."
                  },
                  "AttributeDefinitions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AttributeDefinition"
                    },
                    "description": "Types for every keyed attribute."
                  },
                  "BillingMode": {
                    "type": "string",
                    "description": "How the table bills.",
                    "enum": [
                      "PROVISIONED",
                      "PAY_PER_REQUEST"
                    ]
                  },
                  "ProvisionedThroughput": {
                    "$ref": "#/components/schemas/ProvisionedThroughput"
                  },
                  "OnDemandThroughput": {
                    "$ref": "#/components/schemas/OnDemandThroughput"
                  },
                  "GlobalSecondaryIndexes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/GlobalSecondaryIndex"
                    },
                    "description": "GSIs to create with the table."
                  },
                  "LocalSecondaryIndexes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/LocalSecondaryIndex"
                    },
                    "description": "LSIs to create with the table."
                  },
                  "VectorIndexes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/VectorIndex"
                    },
                    "description": "Vector indexes to create with the table."
                  },
                  "StreamSpecification": {
                    "$ref": "#/components/schemas/StreamSpecification"
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Tag"
                    },
                    "description": "Tags to attach."
                  },
                  "TableClass": {
                    "type": "string",
                    "description": "The table class.",
                    "enum": [
                      "STANDARD",
                      "STANDARD_INFREQUENT_ACCESS"
                    ]
                  },
                  "DeletionProtectionEnabled": {
                    "type": "boolean",
                    "description": "Whether the table should refuse DeleteTable."
                  }
                },
                "required": [
                  "TableName",
                  "KeySchema",
                  "AttributeDefinitions"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CreateTable succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "CreateTableOutput",
                  "description": "The result of CreateTable.",
                  "properties": {
                    "TableDescription": {
                      "$ref": "#/components/schemas/TableDescription"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.DeleteTable": {
      "post": {
        "operationId": "DeleteTable",
        "summary": "Delete a table.",
        "description": "Deletes a table and everything in it. Refused while a vector index on the table is still creating.",
        "tags": [
          "Tables"
        ],
        "x-amz-target": "DynamoDB_20120810.DeleteTable",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.DeleteTable"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "DeleteTableInput",
                "description": "Delete a table.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to delete."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DeleteTable succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "DeleteTableOutput",
                  "description": "The result of DeleteTable.",
                  "properties": {
                    "TableDescription": {
                      "$ref": "#/components/schemas/TableDescription"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.DescribeTable": {
      "post": {
        "operationId": "DescribeTable",
        "summary": "Describe a table.",
        "description": "Returns a table's key schema, indexes, status and counts. Vector indexes are reported alongside the GSIs.",
        "tags": [
          "Tables"
        ],
        "x-amz-target": "DynamoDB_20120810.DescribeTable",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.DescribeTable"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "DescribeTableInput",
                "description": "Describe a table.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to describe."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DescribeTable succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "DescribeTableOutput",
                  "description": "The result of DescribeTable.",
                  "properties": {
                    "Table": {
                      "$ref": "#/components/schemas/TableDescription"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.ListTables": {
      "post": {
        "operationId": "ListTables",
        "summary": "List table names.",
        "description": "Returns the names of the tables in the database, paginated.",
        "tags": [
          "Tables"
        ],
        "x-amz-target": "DynamoDB_20120810.ListTables",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.ListTables"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ListTablesInput",
                "description": "List table names.",
                "properties": {
                  "ExclusiveStartTableName": {
                    "type": "string",
                    "description": "Resume after this table name."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "How many names to return.",
                    "minimum": 1,
                    "maximum": 100
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ListTables succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ListTablesOutput",
                  "description": "The result of ListTables.",
                  "properties": {
                    "TableNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The table names."
                    },
                    "LastEvaluatedTableName": {
                      "type": "string",
                      "description": "Pass as ExclusiveStartTableName to get the next page."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.UpdateTable": {
      "post": {
        "operationId": "UpdateTable",
        "summary": "Change a table's settings or indexes.",
        "description": "Changes billing mode, throughput, table class, deletion protection or the stream specification, and adds or removes GSIs and vector indexes. A GSI added here is backfilled from the base table. A vector index added here walks a creation lifecycle and is not searchable the moment it reports ACTIVE.",
        "tags": [
          "Tables"
        ],
        "x-amz-target": "DynamoDB_20120810.UpdateTable",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.UpdateTable"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "UpdateTableInput",
                "description": "Change a table's settings or indexes.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to change."
                  },
                  "AttributeDefinitions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AttributeDefinition"
                    },
                    "description": "Types for any newly keyed attributes."
                  },
                  "BillingMode": {
                    "type": "string",
                    "description": "How the table bills.",
                    "enum": [
                      "PROVISIONED",
                      "PAY_PER_REQUEST"
                    ]
                  },
                  "ProvisionedThroughput": {
                    "$ref": "#/components/schemas/ProvisionedThroughput"
                  },
                  "OnDemandThroughput": {
                    "$ref": "#/components/schemas/OnDemandThroughput"
                  },
                  "GlobalSecondaryIndexUpdates": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "One GSI change. Exactly one member is set.",
                      "properties": {
                        "Create": {
                          "$ref": "#/components/schemas/GlobalSecondaryIndex"
                        },
                        "Update": {
                          "type": "object",
                          "properties": {
                            "IndexName": {
                              "type": "string",
                              "description": "The index to change."
                            },
                            "ProvisionedThroughput": {
                              "$ref": "#/components/schemas/ProvisionedThroughput"
                            },
                            "OnDemandThroughput": {
                              "$ref": "#/components/schemas/OnDemandThroughput"
                            }
                          },
                          "required": [
                            "IndexName"
                          ]
                        },
                        "Delete": {
                          "type": "object",
                          "properties": {
                            "IndexName": {
                              "type": "string",
                              "description": "The index to drop."
                            }
                          },
                          "required": [
                            "IndexName"
                          ]
                        }
                      },
                      "minProperties": 1,
                      "maxProperties": 1
                    },
                    "description": "GSIs to add, change or drop."
                  },
                  "VectorIndexUpdates": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "One vector index change. Exactly one member is set.",
                      "properties": {
                        "Create": {
                          "$ref": "#/components/schemas/VectorIndex"
                        },
                        "Delete": {
                          "type": "object",
                          "properties": {
                            "IndexName": {
                              "type": "string",
                              "description": "The index to drop."
                            }
                          },
                          "required": [
                            "IndexName"
                          ]
                        }
                      },
                      "minProperties": 1,
                      "maxProperties": 1
                    },
                    "description": "Vector indexes to add or drop. Only one index can be creating on a table at a time."
                  },
                  "StreamSpecification": {
                    "$ref": "#/components/schemas/StreamSpecification"
                  },
                  "TableClass": {
                    "type": "string",
                    "description": "The table class.",
                    "enum": [
                      "STANDARD",
                      "STANDARD_INFREQUENT_ACCESS"
                    ]
                  },
                  "DeletionProtectionEnabled": {
                    "type": "boolean",
                    "description": "Whether the table should refuse DeleteTable."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "UpdateTable succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "UpdateTableOutput",
                  "description": "The result of UpdateTable.",
                  "properties": {
                    "TableDescription": {
                      "$ref": "#/components/schemas/TableDescription"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.PutItem": {
      "post": {
        "operationId": "PutItem",
        "summary": "Write an item.",
        "description": "Writes an item, replacing any item with the same primary key.",
        "tags": [
          "Items"
        ],
        "x-amz-target": "DynamoDB_20120810.PutItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.PutItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "PutItemInput",
                "description": "Write an item.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to write to."
                  },
                  "Item": {
                    "$ref": "#/components/schemas/AttributeMap"
                  },
                  "ConditionExpression": {
                    "type": "string",
                    "description": "A condition that must hold for the write to land."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "ReturnValues": {
                    "type": "string",
                    "description": "Which version of the item to return.",
                    "enum": [
                      "NONE",
                      "ALL_OLD",
                      "UPDATED_OLD",
                      "ALL_NEW",
                      "UPDATED_NEW"
                    ]
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnItemCollectionMetrics": {
                    "type": "string",
                    "description": "Whether to report item collection metrics.",
                    "enum": [
                      "SIZE",
                      "NONE"
                    ]
                  },
                  "ReturnValuesOnConditionCheckFailure": {
                    "type": "string",
                    "description": "Whether a failed condition returns the item that caused it.",
                    "enum": [
                      "ALL_OLD",
                      "NONE"
                    ]
                  },
                  "Expected": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy conditions. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "ConditionalOperator": {
                    "type": "string",
                    "description": "Legacy AND/OR joiner. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName",
                  "Item"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PutItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "PutItemOutput",
                  "description": "The result of PutItem.",
                  "properties": {
                    "Attributes": {
                      "$ref": "#/components/schemas/AttributeMap"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    },
                    "ItemCollectionMetrics": {
                      "$ref": "#/components/schemas/ItemCollectionMetrics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.GetItem": {
      "post": {
        "operationId": "GetItem",
        "summary": "Read one item by key.",
        "description": "Returns a single item by primary key, or an empty response when there is none.",
        "tags": [
          "Items"
        ],
        "x-amz-target": "DynamoDB_20120810.GetItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.GetItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "GetItemInput",
                "description": "Read one item by key.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to read from."
                  },
                  "Key": {
                    "$ref": "#/components/schemas/Key"
                  },
                  "ProjectionExpression": {
                    "type": "string",
                    "description": "Which attributes to return."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ConsistentRead": {
                    "type": "boolean",
                    "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "AttributesToGet": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Legacy attribute list. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName",
                  "Key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "GetItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "GetItemOutput",
                  "description": "The result of GetItem.",
                  "properties": {
                    "Item": {
                      "$ref": "#/components/schemas/AttributeMap"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.UpdateItem": {
      "post": {
        "operationId": "UpdateItem",
        "summary": "Change an item.",
        "description": "Applies an update expression to an item, creating it when it does not exist. SET supports if_not_exists, list_append and arbitrary-precision arithmetic; REMOVE, ADD and DELETE all work.",
        "tags": [
          "Items"
        ],
        "x-amz-target": "DynamoDB_20120810.UpdateItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.UpdateItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "UpdateItemInput",
                "description": "Change an item.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to write to."
                  },
                  "Key": {
                    "$ref": "#/components/schemas/Key"
                  },
                  "UpdateExpression": {
                    "type": "string",
                    "description": "What to change."
                  },
                  "ConditionExpression": {
                    "type": "string",
                    "description": "A condition that must hold for the update to land."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "ReturnValues": {
                    "type": "string",
                    "description": "Which version of the item to return.",
                    "enum": [
                      "NONE",
                      "ALL_OLD",
                      "UPDATED_OLD",
                      "ALL_NEW",
                      "UPDATED_NEW"
                    ]
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnItemCollectionMetrics": {
                    "type": "string",
                    "description": "Whether to report item collection metrics.",
                    "enum": [
                      "SIZE",
                      "NONE"
                    ]
                  },
                  "ReturnValuesOnConditionCheckFailure": {
                    "type": "string",
                    "description": "Whether a failed condition returns the item that caused it.",
                    "enum": [
                      "ALL_OLD",
                      "NONE"
                    ]
                  },
                  "AttributeUpdates": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy per-attribute updates. Partially supported: PUT, ADD and DELETE actions are applied, but only when UpdateExpression is absent."
                  },
                  "Expected": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy conditions. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "ConditionalOperator": {
                    "type": "string",
                    "description": "Legacy AND/OR joiner. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName",
                  "Key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "UpdateItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "UpdateItemOutput",
                  "description": "The result of UpdateItem.",
                  "properties": {
                    "Attributes": {
                      "$ref": "#/components/schemas/AttributeMap"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    },
                    "ItemCollectionMetrics": {
                      "$ref": "#/components/schemas/ItemCollectionMetrics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.DeleteItem": {
      "post": {
        "operationId": "DeleteItem",
        "summary": "Delete an item.",
        "description": "Deletes an item by primary key.",
        "tags": [
          "Items"
        ],
        "x-amz-target": "DynamoDB_20120810.DeleteItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.DeleteItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "DeleteItemInput",
                "description": "Delete an item.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to delete from."
                  },
                  "Key": {
                    "$ref": "#/components/schemas/Key"
                  },
                  "ConditionExpression": {
                    "type": "string",
                    "description": "A condition that must hold for the delete to land."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "ReturnValues": {
                    "type": "string",
                    "description": "Which version of the item to return.",
                    "enum": [
                      "NONE",
                      "ALL_OLD",
                      "UPDATED_OLD",
                      "ALL_NEW",
                      "UPDATED_NEW"
                    ]
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnItemCollectionMetrics": {
                    "type": "string",
                    "description": "Whether to report item collection metrics.",
                    "enum": [
                      "SIZE",
                      "NONE"
                    ]
                  },
                  "ReturnValuesOnConditionCheckFailure": {
                    "type": "string",
                    "description": "Whether a failed condition returns the item that caused it.",
                    "enum": [
                      "ALL_OLD",
                      "NONE"
                    ]
                  },
                  "Expected": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy conditions. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "ConditionalOperator": {
                    "type": "string",
                    "description": "Legacy AND/OR joiner. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName",
                  "Key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DeleteItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "DeleteItemOutput",
                  "description": "The result of DeleteItem.",
                  "properties": {
                    "Attributes": {
                      "$ref": "#/components/schemas/AttributeMap"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    },
                    "ItemCollectionMetrics": {
                      "$ref": "#/components/schemas/ItemCollectionMetrics"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.Query": {
      "post": {
        "operationId": "Query",
        "summary": "Read items by key condition.",
        "description": "Reads items sharing a partition key, optionally narrowed by a sort key condition, from the table or from a secondary index.",
        "tags": [
          "Queries"
        ],
        "x-amz-target": "DynamoDB_20120810.Query",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.Query"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "QueryInput",
                "description": "Read items by key condition.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to read from."
                  },
                  "IndexName": {
                    "type": "string",
                    "description": "Read from this index instead of the base table."
                  },
                  "KeyConditionExpression": {
                    "type": "string",
                    "description": "Partition key equality, plus an optional sort key comparison, BETWEEN or begins_with."
                  },
                  "FilterExpression": {
                    "type": "string",
                    "description": "Applied after the read, so it lowers the count but not the cost."
                  },
                  "ProjectionExpression": {
                    "type": "string",
                    "description": "Which attributes to return."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "ScanIndexForward": {
                    "type": "boolean",
                    "description": "Sort key order. True is ascending, and is the default."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "Stop after this many items are read.",
                    "minimum": 1
                  },
                  "ExclusiveStartKey": {
                    "$ref": "#/components/schemas/Key"
                  },
                  "ConsistentRead": {
                    "type": "boolean",
                    "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
                  },
                  "Select": {
                    "type": "string",
                    "description": "Which attributes to return.",
                    "enum": [
                      "ALL_ATTRIBUTES",
                      "ALL_PROJECTED_ATTRIBUTES",
                      "SPECIFIC_ATTRIBUTES",
                      "COUNT"
                    ]
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "KeyConditions": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy key conditions. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "QueryFilter": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy filter. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "AttributesToGet": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Legacy attribute list. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "ConditionalOperator": {
                    "type": "string",
                    "description": "Legacy AND/OR joiner. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Query succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "QueryOutput",
                  "description": "The result of Query.",
                  "properties": {
                    "Items": {
                      "$ref": "#/components/schemas/ItemList"
                    },
                    "Count": {
                      "type": "integer",
                      "description": "How many items were returned."
                    },
                    "ScannedCount": {
                      "type": "integer",
                      "description": "How many items were read before the filter."
                    },
                    "LastEvaluatedKey": {
                      "$ref": "#/components/schemas/Key"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.Scan": {
      "post": {
        "operationId": "Scan",
        "summary": "Read every item in a table or index.",
        "description": "Walks a whole table or index, optionally in parallel segments.",
        "tags": [
          "Queries"
        ],
        "x-amz-target": "DynamoDB_20120810.Scan",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.Scan"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ScanInput",
                "description": "Read every item in a table or index.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to read from."
                  },
                  "IndexName": {
                    "type": "string",
                    "description": "Read from this index instead of the base table."
                  },
                  "FilterExpression": {
                    "type": "string",
                    "description": "Applied after the read, so it lowers the count but not the cost."
                  },
                  "ProjectionExpression": {
                    "type": "string",
                    "description": "Which attributes to return."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "Stop after this many items are read.",
                    "minimum": 1
                  },
                  "ExclusiveStartKey": {
                    "$ref": "#/components/schemas/Key"
                  },
                  "ConsistentRead": {
                    "type": "boolean",
                    "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
                  },
                  "Select": {
                    "type": "string",
                    "description": "Which attributes to return.",
                    "enum": [
                      "ALL_ATTRIBUTES",
                      "ALL_PROJECTED_ATTRIBUTES",
                      "SPECIFIC_ATTRIBUTES",
                      "COUNT"
                    ]
                  },
                  "Segment": {
                    "type": "integer",
                    "description": "Which segment this worker is reading.",
                    "minimum": 0
                  },
                  "TotalSegments": {
                    "type": "integer",
                    "description": "How many segments the scan is split into.",
                    "minimum": 1
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ScanFilter": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    },
                    "description": "Legacy filter. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "AttributesToGet": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Legacy attribute list. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  },
                  "ConditionalOperator": {
                    "type": "string",
                    "description": "Legacy AND/OR joiner. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Scan succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ScanOutput",
                  "description": "The result of Scan.",
                  "properties": {
                    "Items": {
                      "$ref": "#/components/schemas/ItemList"
                    },
                    "Count": {
                      "type": "integer",
                      "description": "How many items were returned."
                    },
                    "ScannedCount": {
                      "type": "integer",
                      "description": "How many items were read before the filter."
                    },
                    "LastEvaluatedKey": {
                      "$ref": "#/components/schemas/Key"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.BatchGetItem": {
      "post": {
        "operationId": "BatchGetItem",
        "summary": "Read up to 100 items across tables.",
        "description": "Reads many items by key, from one table or several, in a single call.",
        "tags": [
          "Batch"
        ],
        "x-amz-target": "DynamoDB_20120810.BatchGetItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.BatchGetItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "BatchGetItemInput",
                "description": "Read up to 100 items across tables.",
                "properties": {
                  "RequestItems": {
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/KeysAndAttributes"
                    },
                    "description": "Keys to read, keyed by table name."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "RequestItems"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "BatchGetItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "BatchGetItemOutput",
                  "description": "The result of BatchGetItem.",
                  "properties": {
                    "Responses": {
                      "type": "object",
                      "additionalProperties": {
                        "$ref": "#/components/schemas/ItemList"
                      },
                      "description": "Items found, keyed by table name."
                    },
                    "UnprocessedKeys": {
                      "type": "object",
                      "additionalProperties": {
                        "$ref": "#/components/schemas/KeysAndAttributes"
                      },
                      "description": "Keys not read, to retry."
                    },
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.BatchWriteItem": {
      "post": {
        "operationId": "BatchWriteItem",
        "summary": "Write or delete up to 25 items across tables.",
        "description": "Puts and deletes many items in a single call. Not a transaction: individual writes can be left unprocessed.",
        "tags": [
          "Batch"
        ],
        "x-amz-target": "DynamoDB_20120810.BatchWriteItem",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.BatchWriteItem"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "BatchWriteItemInput",
                "description": "Write or delete up to 25 items across tables.",
                "properties": {
                  "RequestItems": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WriteRequest"
                      }
                    },
                    "description": "Writes to apply, keyed by table name."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnItemCollectionMetrics": {
                    "type": "string",
                    "description": "Whether to report item collection metrics.",
                    "enum": [
                      "SIZE",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "RequestItems"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "BatchWriteItem succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "BatchWriteItemOutput",
                  "description": "The result of BatchWriteItem.",
                  "properties": {
                    "UnprocessedItems": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/WriteRequest"
                        }
                      },
                      "description": "Writes not applied, to retry."
                    },
                    "ItemCollectionMetrics": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/ItemCollectionMetrics"
                        }
                      },
                      "description": "Metrics, keyed by table name."
                    },
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.TransactGetItems": {
      "post": {
        "operationId": "TransactGetItems",
        "summary": "Read up to 100 items atomically.",
        "description": "Reads several items as one consistent snapshot.",
        "tags": [
          "Transactions"
        ],
        "x-amz-target": "DynamoDB_20120810.TransactGetItems",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.TransactGetItems"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "TransactGetItemsInput",
                "description": "Read up to 100 items atomically.",
                "properties": {
                  "TransactItems": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/TransactGetItem"
                    },
                    "description": "The reads to perform."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "TransactItems"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "TransactGetItems succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "TransactGetItemsOutput",
                  "description": "The result of TransactGetItems.",
                  "properties": {
                    "Responses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Item": {
                            "$ref": "#/components/schemas/AttributeMap"
                          }
                        }
                      },
                      "description": "One entry per request item, in order, empty where nothing was found."
                    },
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.TransactWriteItems": {
      "post": {
        "operationId": "TransactWriteItems",
        "summary": "Write up to 100 items atomically.",
        "description": "Applies puts, updates, deletes and condition checks as one all-or-nothing transaction. A failure returns TransactionCanceledException with a reason per action.",
        "tags": [
          "Transactions"
        ],
        "x-amz-target": "DynamoDB_20120810.TransactWriteItems",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.TransactWriteItems"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "TransactWriteItemsInput",
                "description": "Write up to 100 items atomically.",
                "properties": {
                  "TransactItems": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/TransactWriteItem"
                    },
                    "description": "The actions to apply."
                  },
                  "ClientRequestToken": {
                    "type": "string",
                    "description": "Idempotency token."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnItemCollectionMetrics": {
                    "type": "string",
                    "description": "Whether to report item collection metrics.",
                    "enum": [
                      "SIZE",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "TransactItems"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "TransactWriteItems succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "TransactWriteItemsOutput",
                  "description": "The result of TransactWriteItems.",
                  "properties": {
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    },
                    "ItemCollectionMetrics": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/ItemCollectionMetrics"
                        }
                      },
                      "description": "Metrics, keyed by table name."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.SearchVectors": {
      "post": {
        "operationId": "SearchVectors",
        "summary": "Find the nearest vectors in a vector index.",
        "description": "Returns the TopK entries closest to a query vector. Dynoxide compares against every entry in the index, so the result is the true top-k rather than the approximation AWS returns, and ties are broken by primary key rather than arbitrarily. Both differences can make a test pass here and fail against AWS.",
        "tags": [
          "Vector search"
        ],
        "x-amz-target": "DynamoDB_20120810.SearchVectors",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.SearchVectors"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "SearchVectorsInput",
                "description": "Find the nearest vectors in a vector index.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table holding the index."
                  },
                  "IndexName": {
                    "type": "string",
                    "description": "The vector index to search."
                  },
                  "SearchVector": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AttributeValue"
                    },
                    "description": "The query vector, as attribute values. Its length has to match the index's Dimensions."
                  },
                  "TopK": {
                    "type": "integer",
                    "description": "How many nearest entries to return.",
                    "minimum": 1
                  },
                  "SearchConditionExpression": {
                    "type": "string",
                    "description": "Filters on the index's INLINE_FILTER attributes."
                  },
                  "ProjectionExpression": {
                    "type": "string",
                    "description": "Which attributes to return. The vector attribute is left out unless this names it and the index projects it."
                  },
                  "ExpressionAttributeNames": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
                  },
                  "ExpressionAttributeValues": {
                    "$ref": "#/components/schemas/ExpressionAttributeValues"
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "TableName",
                  "IndexName",
                  "SearchVector",
                  "TopK"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "SearchVectors succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "SearchVectorsOutput",
                  "description": "The result of SearchVectors.",
                  "properties": {
                    "SearchResults": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SearchResult"
                      },
                      "description": "The nearest entries, closest first."
                    },
                    "ConsumedCapacity": {
                      "type": "object",
                      "description": "What the search cost. VectorSearchRequestBytes is Dynoxide's own deterministic figure, not AWS's: real DynamoDB does not reproduce its own number between identical calls, so there is nothing to match.",
                      "properties": {
                        "VectorSearchRequestBytes": {
                          "type": "number",
                          "description": "Bytes scanned, held to a 1KB floor."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.ExecuteStatement": {
      "post": {
        "operationId": "ExecuteStatement",
        "summary": "Run one PartiQL statement.",
        "description": "Runs a single PartiQL SELECT, INSERT, UPDATE or DELETE, with RETURNING supported on the write forms.",
        "tags": [
          "PartiQL"
        ],
        "x-amz-target": "DynamoDB_20120810.ExecuteStatement",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.ExecuteStatement"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ExecuteStatementInput",
                "description": "Run one PartiQL statement.",
                "properties": {
                  "Statement": {
                    "type": "string",
                    "description": "The PartiQL statement."
                  },
                  "Parameters": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AttributeValue"
                    },
                    "description": "Values for the statement's `?` placeholders."
                  },
                  "ConsistentRead": {
                    "type": "boolean",
                    "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
                  },
                  "NextToken": {
                    "type": "string",
                    "description": "Resume from a previous response's NextToken."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "Stop after this many items are read.",
                    "minimum": 1
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  },
                  "ReturnValuesOnConditionCheckFailure": {
                    "type": "string",
                    "description": "Whether a failed condition returns the item that caused it.",
                    "enum": [
                      "ALL_OLD",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "Statement"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ExecuteStatement succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ExecuteStatementOutput",
                  "description": "The result of ExecuteStatement.",
                  "properties": {
                    "Items": {
                      "$ref": "#/components/schemas/ItemList"
                    },
                    "NextToken": {
                      "type": "string",
                      "description": "Pass back to read the next page."
                    },
                    "LastEvaluatedKey": {
                      "$ref": "#/components/schemas/Key"
                    },
                    "ConsumedCapacity": {
                      "$ref": "#/components/schemas/ConsumedCapacity"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.ExecuteTransaction": {
      "post": {
        "operationId": "ExecuteTransaction",
        "summary": "Run PartiQL statements atomically.",
        "description": "Runs several PartiQL statements as one all-or-nothing transaction.",
        "tags": [
          "PartiQL"
        ],
        "x-amz-target": "DynamoDB_20120810.ExecuteTransaction",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.ExecuteTransaction"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ExecuteTransactionInput",
                "description": "Run PartiQL statements atomically.",
                "properties": {
                  "TransactStatements": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ParameterisedStatement"
                    },
                    "description": "The statements to run."
                  },
                  "ClientRequestToken": {
                    "type": "string",
                    "description": "Idempotency token."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "TransactStatements"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ExecuteTransaction succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ExecuteTransactionOutput",
                  "description": "The result of ExecuteTransaction.",
                  "properties": {
                    "Responses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Item": {
                            "$ref": "#/components/schemas/AttributeMap"
                          }
                        }
                      },
                      "description": "One entry per statement, in order."
                    },
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.BatchExecuteStatement": {
      "post": {
        "operationId": "BatchExecuteStatement",
        "summary": "Run up to 25 PartiQL statements.",
        "description": "Runs several PartiQL statements in one call. Not a transaction: each statement reports its own error.",
        "tags": [
          "PartiQL"
        ],
        "x-amz-target": "DynamoDB_20120810.BatchExecuteStatement",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp",
          "wasm-browser"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.BatchExecuteStatement"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "BatchExecuteStatementInput",
                "description": "Run up to 25 PartiQL statements.",
                "properties": {
                  "Statements": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ParameterisedStatement"
                    },
                    "description": "The statements to run."
                  },
                  "ReturnConsumedCapacity": {
                    "type": "string",
                    "description": "Whether to report consumed capacity, and at what granularity.",
                    "enum": [
                      "INDEXES",
                      "TOTAL",
                      "NONE"
                    ]
                  }
                },
                "required": [
                  "Statements"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "BatchExecuteStatement succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "BatchExecuteStatementOutput",
                  "description": "The result of BatchExecuteStatement.",
                  "properties": {
                    "Responses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "One statement's outcome.",
                        "properties": {
                          "Item": {
                            "$ref": "#/components/schemas/AttributeMap"
                          },
                          "Error": {
                            "type": "object",
                            "properties": {
                              "Code": {
                                "type": "string",
                                "description": "The error code."
                              },
                              "Message": {
                                "type": "string",
                                "description": "The detail."
                              },
                              "Item": {
                                "$ref": "#/components/schemas/AttributeMap"
                              }
                            },
                            "description": "Set when this statement failed."
                          },
                          "TableName": {
                            "type": "string",
                            "description": "The table the statement touched."
                          }
                        }
                      },
                      "description": "One entry per statement, in order."
                    },
                    "ConsumedCapacity": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ConsumedCapacity"
                      },
                      "description": "Capacity spent, per table."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.UpdateTimeToLive": {
      "post": {
        "operationId": "UpdateTimeToLive",
        "summary": "Turn TTL on or off.",
        "description": "Names the attribute holding an item's expiry, and whether expired items are swept.",
        "tags": [
          "Time To Live"
        ],
        "x-amz-target": "DynamoDB_20120810.UpdateTimeToLive",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.UpdateTimeToLive"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "UpdateTimeToLiveInput",
                "description": "Turn TTL on or off.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to change."
                  },
                  "TimeToLiveSpecification": {
                    "$ref": "#/components/schemas/TimeToLiveSpecification"
                  }
                },
                "required": [
                  "TableName",
                  "TimeToLiveSpecification"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "UpdateTimeToLive succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "UpdateTimeToLiveOutput",
                  "description": "The result of UpdateTimeToLive.",
                  "properties": {
                    "TimeToLiveSpecification": {
                      "$ref": "#/components/schemas/TimeToLiveSpecification"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.DescribeTimeToLive": {
      "post": {
        "operationId": "DescribeTimeToLive",
        "summary": "Report a table's TTL settings.",
        "description": "Returns whether TTL is on for a table, and which attribute carries the expiry.",
        "tags": [
          "Time To Live"
        ],
        "x-amz-target": "DynamoDB_20120810.DescribeTimeToLive",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.DescribeTimeToLive"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "DescribeTimeToLiveInput",
                "description": "Report a table's TTL settings.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "The table to describe."
                  }
                },
                "required": [
                  "TableName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DescribeTimeToLive succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "DescribeTimeToLiveOutput",
                  "description": "The result of DescribeTimeToLive.",
                  "properties": {
                    "TimeToLiveDescription": {
                      "type": "object",
                      "description": "The table's TTL state.",
                      "properties": {
                        "TimeToLiveStatus": {
                          "type": "string",
                          "description": "The TTL state.",
                          "enum": [
                            "ENABLING",
                            "DISABLING",
                            "ENABLED",
                            "DISABLED"
                          ]
                        },
                        "AttributeName": {
                          "type": "string",
                          "description": "The attribute holding the expiry."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.ListStreams": {
      "post": {
        "operationId": "ListStreams",
        "summary": "List streams.",
        "description": "Returns the streams on a table, or across the database when no table is named.",
        "tags": [
          "Streams"
        ],
        "x-amz-target": "DynamoDB_20120810.ListStreams",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.ListStreams"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ListStreamsInput",
                "description": "List streams.",
                "properties": {
                  "TableName": {
                    "type": "string",
                    "description": "Only list streams on this table."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "How many streams to return.",
                    "minimum": 1
                  },
                  "ExclusiveStartStreamArn": {
                    "type": "string",
                    "description": "Resume after this stream ARN."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ListStreams succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ListStreamsOutput",
                  "description": "The result of ListStreams.",
                  "properties": {
                    "Streams": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "StreamArn": {
                            "type": "string",
                            "description": "The stream ARN."
                          },
                          "TableName": {
                            "type": "string",
                            "description": "The table it belongs to."
                          },
                          "StreamLabel": {
                            "type": "string",
                            "description": "The stream label."
                          }
                        }
                      },
                      "description": "The streams found."
                    },
                    "LastEvaluatedStreamArn": {
                      "type": "string",
                      "description": "Pass as ExclusiveStartStreamArn to get the next page."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.DescribeStream": {
      "post": {
        "operationId": "DescribeStream",
        "summary": "Describe a stream and its shards.",
        "description": "Returns a stream's status and shards. Dynoxide reports a single shard, and accepts ExclusiveStartShardId and Limit without acting on them.",
        "tags": [
          "Streams"
        ],
        "x-amz-target": "DynamoDB_20120810.DescribeStream",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.DescribeStream"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "DescribeStreamInput",
                "description": "Describe a stream and its shards.",
                "properties": {
                  "StreamArn": {
                    "type": "string",
                    "description": "The stream to describe."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "Accepted and ignored: there is only ever one shard.",
                    "minimum": 1
                  },
                  "ExclusiveStartShardId": {
                    "type": "string",
                    "description": "Accepted and ignored: there is only ever one shard."
                  }
                },
                "required": [
                  "StreamArn"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DescribeStream succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "DescribeStreamOutput",
                  "description": "The result of DescribeStream.",
                  "properties": {
                    "StreamDescription": {
                      "$ref": "#/components/schemas/StreamDescription"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.GetShardIterator": {
      "post": {
        "operationId": "GetShardIterator",
        "summary": "Get a position to read a shard from.",
        "description": "Returns an iterator pointing at a position in a shard, to pass to GetRecords.",
        "tags": [
          "Streams"
        ],
        "x-amz-target": "DynamoDB_20120810.GetShardIterator",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.GetShardIterator"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "GetShardIteratorInput",
                "description": "Get a position to read a shard from.",
                "properties": {
                  "StreamArn": {
                    "type": "string",
                    "description": "The stream."
                  },
                  "ShardId": {
                    "type": "string",
                    "description": "The shard to read."
                  },
                  "ShardIteratorType": {
                    "type": "string",
                    "description": "Where in the shard to start.",
                    "enum": [
                      "TRIM_HORIZON",
                      "LATEST",
                      "AT_SEQUENCE_NUMBER",
                      "AFTER_SEQUENCE_NUMBER"
                    ]
                  },
                  "SequenceNumber": {
                    "type": "string",
                    "description": "Required for the AT_ and AFTER_ iterator types."
                  }
                },
                "required": [
                  "StreamArn",
                  "ShardId",
                  "ShardIteratorType"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "GetShardIterator succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "GetShardIteratorOutput",
                  "description": "The result of GetShardIterator.",
                  "properties": {
                    "ShardIterator": {
                      "type": "string",
                      "description": "Pass to GetRecords."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.GetRecords": {
      "post": {
        "operationId": "GetRecords",
        "summary": "Read stream records.",
        "description": "Reads a page of change records from a shard, and returns the iterator for the next page.",
        "tags": [
          "Streams"
        ],
        "x-amz-target": "DynamoDB_20120810.GetRecords",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.GetRecords"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "GetRecordsInput",
                "description": "Read stream records.",
                "properties": {
                  "ShardIterator": {
                    "type": "string",
                    "description": "The position to read from."
                  },
                  "Limit": {
                    "type": "integer",
                    "description": "How many records to return.",
                    "minimum": 1
                  }
                },
                "required": [
                  "ShardIterator"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "GetRecords succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "GetRecordsOutput",
                  "description": "The result of GetRecords.",
                  "properties": {
                    "Records": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/StreamRecord"
                      },
                      "description": "The change records."
                    },
                    "NextShardIterator": {
                      "type": "string",
                      "description": "Pass back to read on. Absent once the shard is closed."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.TagResource": {
      "post": {
        "operationId": "TagResource",
        "summary": "Tag a table.",
        "description": "Attaches tags to a table.",
        "tags": [
          "Tags"
        ],
        "x-amz-target": "DynamoDB_20120810.TagResource",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.TagResource"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "TagResourceInput",
                "description": "Tag a table.",
                "properties": {
                  "ResourceArn": {
                    "type": "string",
                    "description": "The table ARN."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Tag"
                    },
                    "description": "The tags to attach."
                  }
                },
                "required": [
                  "ResourceArn",
                  "Tags"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "TagResource succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "TagResourceOutput",
                  "description": "The result of TagResource.",
                  "properties": {}
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.UntagResource": {
      "post": {
        "operationId": "UntagResource",
        "summary": "Remove tags from a table.",
        "description": "Removes tags from a table by key.",
        "tags": [
          "Tags"
        ],
        "x-amz-target": "DynamoDB_20120810.UntagResource",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.UntagResource"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "UntagResourceInput",
                "description": "Remove tags from a table.",
                "properties": {
                  "ResourceArn": {
                    "type": "string",
                    "description": "The table ARN."
                  },
                  "TagKeys": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The tag keys to remove."
                  }
                },
                "required": [
                  "ResourceArn",
                  "TagKeys"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "UntagResource succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "UntagResourceOutput",
                  "description": "The result of UntagResource.",
                  "properties": {}
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/#DynamoDB_20120810.ListTagsOfResource": {
      "post": {
        "operationId": "ListTagsOfResource",
        "summary": "List a table's tags.",
        "description": "Returns the tags attached to a table.",
        "tags": [
          "Tags"
        ],
        "x-amz-target": "DynamoDB_20120810.ListTagsOfResource",
        "x-dynoxide-surfaces": [
          "http-server",
          "embedded-rust",
          "ios",
          "mcp"
        ],
        "parameters": [
          {
            "name": "X-Amz-Target",
            "in": "header",
            "required": true,
            "description": "Names the operation. This is what routes the request, not the path.",
            "schema": {
              "type": "string",
              "enum": [
                "DynamoDB_20120810.ListTagsOfResource"
              ]
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Always application/x-amz-json-1.0.",
            "schema": {
              "type": "string",
              "enum": [
                "application/x-amz-json-1.0"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-amz-json-1.0": {
              "schema": {
                "type": "object",
                "title": "ListTagsOfResourceInput",
                "description": "List a table's tags.",
                "properties": {
                  "ResourceArn": {
                    "type": "string",
                    "description": "The table ARN."
                  },
                  "NextToken": {
                    "type": "string",
                    "description": "Resume from a previous response's NextToken."
                  }
                },
                "required": [
                  "ResourceArn"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ListTagsOfResource succeeded.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "type": "object",
                  "title": "ListTagsOfResourceOutput",
                  "description": "The result of ListTagsOfResource.",
                  "properties": {
                    "Tags": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      },
                      "description": "The tags attached."
                    },
                    "NextToken": {
                      "type": "string",
                      "description": "Pass back to read the next page."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. `__type` carries the DynamoDB error code, for example ValidationException, ResourceNotFoundException, ResourceInUseException, ConditionalCheckFailedException or TransactionCanceledException.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError.",
            "content": {
              "application/x-amz-json-1.0": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AttributeValue": {
        "type": "object",
        "description": "A DynamoDB attribute value. Exactly one member is set, and the member name is the type tag.",
        "properties": {
          "S": {
            "type": "string",
            "description": "A string."
          },
          "N": {
            "type": "string",
            "description": "A number, carried as a string so precision survives the wire."
          },
          "B": {
            "type": "string",
            "description": "Binary data.",
            "format": "byte"
          },
          "SS": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A string set."
          },
          "NS": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A number set, each element a string."
          },
          "BS": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "byte"
            },
            "description": "A binary set."
          },
          "M": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AttributeValue"
            },
            "description": "A map of attribute values."
          },
          "L": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeValue"
            },
            "description": "A list of attribute values."
          },
          "NULL": {
            "type": "boolean",
            "description": "Set to true for a null value."
          },
          "BOOL": {
            "type": "boolean",
            "description": "A boolean."
          }
        },
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 1
      },
      "AttributeMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/AttributeValue"
        },
        "description": "Attribute names mapped to their values."
      },
      "Key": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/AttributeValue"
        },
        "description": "A primary key: the partition key attribute, plus the sort key attribute when the table has one."
      },
      "ItemList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AttributeMap"
        },
        "description": "A list of items."
      },
      "ExpressionAttributeValues": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/AttributeValue"
        },
        "description": "Substitutions for values in an expression, keyed by placeholder (`:value`). An entry that no expression uses is rejected."
      },
      "KeySchemaElement": {
        "type": "object",
        "description": "One element of a key schema.",
        "properties": {
          "AttributeName": {
            "type": "string",
            "description": "The attribute this element keys on."
          },
          "KeyType": {
            "type": "string",
            "description": "Whether the attribute is the partition key or the sort key.",
            "enum": [
              "HASH",
              "RANGE"
            ]
          }
        },
        "required": [
          "AttributeName",
          "KeyType"
        ]
      },
      "AttributeDefinition": {
        "type": "object",
        "description": "The type of an attribute used in a key schema or an index.",
        "properties": {
          "AttributeName": {
            "type": "string",
            "description": "The attribute name."
          },
          "AttributeType": {
            "type": "string",
            "description": "The scalar type.",
            "enum": [
              "S",
              "N",
              "B"
            ]
          }
        },
        "required": [
          "AttributeName",
          "AttributeType"
        ]
      },
      "Projection": {
        "type": "object",
        "description": "Which attributes an index carries.",
        "properties": {
          "ProjectionType": {
            "type": "string",
            "description": "How much of the item the index projects.",
            "enum": [
              "ALL",
              "KEYS_ONLY",
              "INCLUDE"
            ]
          },
          "NonKeyAttributes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Extra attributes projected when the type is INCLUDE."
          }
        }
      },
      "ProvisionedThroughput": {
        "type": "object",
        "description": "Capacity settings. Accepted and reported back, but Dynoxide does not meter or throttle on them.",
        "properties": {
          "ReadCapacityUnits": {
            "type": "integer",
            "description": "Provisioned read capacity."
          },
          "WriteCapacityUnits": {
            "type": "integer",
            "description": "Provisioned write capacity."
          }
        },
        "required": [
          "ReadCapacityUnits",
          "WriteCapacityUnits"
        ]
      },
      "OnDemandThroughput": {
        "type": "object",
        "description": "Per-table maximums under PAY_PER_REQUEST billing.",
        "properties": {
          "MaxReadRequestUnits": {
            "type": "integer",
            "description": "Maximum read request units."
          },
          "MaxWriteRequestUnits": {
            "type": "integer",
            "description": "Maximum write request units."
          }
        }
      },
      "GlobalSecondaryIndex": {
        "type": "object",
        "description": "A global secondary index to create.",
        "properties": {
          "IndexName": {
            "type": "string",
            "description": "The index name."
          },
          "KeySchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeySchemaElement"
            },
            "description": "The index key schema."
          },
          "Projection": {
            "$ref": "#/components/schemas/Projection"
          },
          "ProvisionedThroughput": {
            "$ref": "#/components/schemas/ProvisionedThroughput"
          },
          "OnDemandThroughput": {
            "$ref": "#/components/schemas/OnDemandThroughput"
          }
        },
        "required": [
          "IndexName",
          "KeySchema",
          "Projection"
        ]
      },
      "LocalSecondaryIndex": {
        "type": "object",
        "description": "A local secondary index to create. LSIs can only be declared at CreateTable.",
        "properties": {
          "IndexName": {
            "type": "string",
            "description": "The index name."
          },
          "KeySchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeySchemaElement"
            },
            "description": "The index key schema, sharing the table's partition key."
          },
          "Projection": {
            "$ref": "#/components/schemas/Projection"
          }
        },
        "required": [
          "IndexName",
          "KeySchema",
          "Projection"
        ]
      },
      "VectorAttributeDefinition": {
        "type": "object",
        "description": "The item attribute a vector index indexes.",
        "properties": {
          "AttributeName": {
            "type": "string",
            "description": "The attribute holding the vector, as a list of numbers."
          }
        },
        "required": [
          "AttributeName"
        ]
      },
      "SearchSchemaElement": {
        "type": "object",
        "description": "An attribute a vector search can be scoped or filtered by.",
        "properties": {
          "AttributeName": {
            "type": "string",
            "description": "The attribute name."
          },
          "SearchSchemaElementType": {
            "type": "string",
            "description": "HASH scopes a search to one partition. INLINE_FILTER makes the attribute available to SearchConditionExpression.",
            "enum": [
              "HASH",
              "INLINE_FILTER"
            ]
          }
        },
        "required": [
          "AttributeName",
          "SearchSchemaElementType"
        ]
      },
      "VectorIndex": {
        "type": "object",
        "description": "A vector index. The table has to be PAY_PER_REQUEST. Dynoxide searches it by exact brute-force KNN, so the top-k it returns is the true top-k, where AWS returns an approximation.",
        "properties": {
          "IndexName": {
            "type": "string",
            "description": "The index name."
          },
          "VectorAttribute": {
            "$ref": "#/components/schemas/VectorAttributeDefinition"
          },
          "SearchSchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchSchemaElement"
            },
            "description": "Attributes a search can scope or filter on."
          },
          "Projection": {
            "$ref": "#/components/schemas/Projection"
          },
          "Dimensions": {
            "type": "integer",
            "description": "How many elements each vector carries."
          },
          "DistanceFunction": {
            "type": "string",
            "description": "How closeness is scored. COSINE and EUCLIDEAN score as distances, where a self match is 0. DOT_PRODUCT scores as a similarity and can be negative.",
            "enum": [
              "COSINE",
              "EUCLIDEAN",
              "DOT_PRODUCT"
            ]
          }
        },
        "required": [
          "IndexName",
          "VectorAttribute",
          "Projection",
          "Dimensions",
          "DistanceFunction"
        ]
      },
      "StreamSpecification": {
        "type": "object",
        "description": "Whether the table has a stream, and what each record carries.",
        "properties": {
          "StreamEnabled": {
            "type": "boolean",
            "description": "Whether the stream is on."
          },
          "StreamViewType": {
            "type": "string",
            "description": "What each record carries.",
            "enum": [
              "NEW_IMAGE",
              "OLD_IMAGE",
              "NEW_AND_OLD_IMAGES",
              "KEYS_ONLY"
            ]
          }
        },
        "required": [
          "StreamEnabled"
        ]
      },
      "TimeToLiveSpecification": {
        "type": "object",
        "description": "Which attribute holds the expiry timestamp, and whether sweeping is on.",
        "properties": {
          "Enabled": {
            "type": "boolean",
            "description": "Whether TTL is on."
          },
          "AttributeName": {
            "type": "string",
            "description": "The attribute holding the expiry, as a Unix epoch time in seconds."
          }
        },
        "required": [
          "Enabled",
          "AttributeName"
        ]
      },
      "Tag": {
        "type": "object",
        "description": "A resource tag.",
        "properties": {
          "Key": {
            "type": "string",
            "description": "The tag key."
          },
          "Value": {
            "type": "string",
            "description": "The tag value."
          }
        },
        "required": [
          "Key",
          "Value"
        ]
      },
      "TableDescription": {
        "type": "object",
        "description": "The state of a table.",
        "properties": {
          "TableName": {
            "type": "string",
            "description": "The table name."
          },
          "TableStatus": {
            "type": "string",
            "description": "The table's lifecycle state.",
            "enum": [
              "CREATING",
              "UPDATING",
              "DELETING",
              "ACTIVE"
            ]
          },
          "TableArn": {
            "type": "string",
            "description": "The table ARN."
          },
          "TableId": {
            "type": "string",
            "description": "The table's unique identifier."
          },
          "CreationDateTime": {
            "type": "number",
            "description": "When the table was created, as a Unix epoch time in seconds."
          },
          "ItemCount": {
            "type": "integer",
            "description": "How many items the table holds."
          },
          "TableSizeBytes": {
            "type": "integer",
            "description": "The table's size in bytes."
          },
          "KeySchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeySchemaElement"
            },
            "description": "The table key schema."
          },
          "AttributeDefinitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeDefinition"
            },
            "description": "Types for the keyed attributes."
          },
          "BillingModeSummary": {
            "type": "object",
            "description": "The billing mode in force.",
            "properties": {
              "BillingMode": {
                "type": "string",
                "description": "The billing mode.",
                "enum": [
                  "PROVISIONED",
                  "PAY_PER_REQUEST"
                ]
              },
              "LastUpdateToPayPerRequestDateTime": {
                "type": "number",
                "description": "When it last changed."
              }
            }
          },
          "ProvisionedThroughput": {
            "$ref": "#/components/schemas/ProvisionedThroughput"
          },
          "OnDemandThroughput": {
            "$ref": "#/components/schemas/OnDemandThroughput"
          },
          "GlobalSecondaryIndexes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecondaryIndexDescription"
            },
            "description": "The table's GSIs."
          },
          "LocalSecondaryIndexes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecondaryIndexDescription"
            },
            "description": "The table's LSIs."
          },
          "VectorIndexes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VectorIndexDescription"
            },
            "description": "The table's vector indexes."
          },
          "StreamSpecification": {
            "$ref": "#/components/schemas/StreamSpecification"
          },
          "LatestStreamArn": {
            "type": "string",
            "description": "The ARN of the table's current stream."
          },
          "LatestStreamLabel": {
            "type": "string",
            "description": "The label of the table's current stream."
          },
          "TableClass": {
            "type": "string",
            "description": "The table class.",
            "enum": [
              "STANDARD",
              "STANDARD_INFREQUENT_ACCESS"
            ]
          },
          "DeletionProtectionEnabled": {
            "type": "boolean",
            "description": "Whether the table refuses DeleteTable."
          }
        }
      },
      "SecondaryIndexDescription": {
        "type": "object",
        "description": "The state of a secondary index.",
        "properties": {
          "IndexName": {
            "type": "string",
            "description": "The index name."
          },
          "IndexStatus": {
            "type": "string",
            "description": "The index's lifecycle state.",
            "enum": [
              "CREATING",
              "UPDATING",
              "DELETING",
              "ACTIVE"
            ]
          },
          "IndexArn": {
            "type": "string",
            "description": "The index ARN."
          },
          "KeySchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeySchemaElement"
            },
            "description": "The index key schema."
          },
          "Projection": {
            "$ref": "#/components/schemas/Projection"
          },
          "Backfilling": {
            "type": "boolean",
            "description": "Whether the index is still being backfilled from the base table."
          },
          "ItemCount": {
            "type": "integer",
            "description": "How many items the index holds."
          },
          "IndexSizeBytes": {
            "type": "integer",
            "description": "The index's size in bytes."
          },
          "ProvisionedThroughput": {
            "$ref": "#/components/schemas/ProvisionedThroughput"
          }
        }
      },
      "VectorIndexDescription": {
        "type": "object",
        "description": "The state of a vector index. An index added through UpdateTable reports ACTIVE some way before a search against it will answer, the same trap AWS has: poll by retrying the search rather than by waiting on this status.",
        "properties": {
          "IndexName": {
            "type": "string",
            "description": "The index name."
          },
          "IndexStatus": {
            "type": "string",
            "description": "The index's lifecycle state.",
            "enum": [
              "CREATING",
              "UPDATING",
              "DELETING",
              "ACTIVE"
            ]
          },
          "IndexArn": {
            "type": "string",
            "description": "The index ARN."
          },
          "VectorAttribute": {
            "$ref": "#/components/schemas/VectorAttributeDefinition"
          },
          "SearchSchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchSchemaElement"
            },
            "description": "Attributes a search can scope or filter on."
          },
          "Projection": {
            "$ref": "#/components/schemas/Projection"
          },
          "Dimensions": {
            "type": "integer",
            "description": "How many elements each vector carries."
          },
          "DistanceFunction": {
            "type": "string",
            "description": "How closeness is scored.",
            "enum": [
              "COSINE",
              "EUCLIDEAN",
              "DOT_PRODUCT"
            ]
          },
          "Backfilling": {
            "type": "boolean",
            "description": "Whether the index is still being backfilled from the base table."
          },
          "ItemCount": {
            "type": "integer",
            "description": "How many entries the index holds."
          },
          "IndexSizeBytes": {
            "type": "integer",
            "description": "The index's size in bytes."
          }
        }
      },
      "ConsumedCapacity": {
        "type": "object",
        "description": "What an operation cost, reported when ReturnConsumedCapacity asks for it.",
        "properties": {
          "TableName": {
            "type": "string",
            "description": "The table the capacity was spent on."
          },
          "CapacityUnits": {
            "type": "number",
            "description": "Total capacity units."
          },
          "ReadCapacityUnits": {
            "type": "number",
            "description": "Read capacity units."
          },
          "WriteCapacityUnits": {
            "type": "number",
            "description": "Write capacity units."
          },
          "Table": {
            "$ref": "#/components/schemas/Capacity"
          },
          "GlobalSecondaryIndexes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Capacity"
            },
            "description": "Per-GSI capacity, under INDEXES."
          },
          "LocalSecondaryIndexes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Capacity"
            },
            "description": "Per-LSI capacity, under INDEXES."
          },
          "VectorIndexes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/VectorCapacityDetail"
            },
            "description": "Per-vector-index capacity, under INDEXES. Billed in bytes on its own axis rather than in capacity units."
          }
        }
      },
      "Capacity": {
        "type": "object",
        "description": "Capacity spent on one table or index.",
        "properties": {
          "CapacityUnits": {
            "type": "number",
            "description": "Total capacity units."
          },
          "ReadCapacityUnits": {
            "type": "number",
            "description": "Read capacity units."
          },
          "WriteCapacityUnits": {
            "type": "number",
            "description": "Write capacity units."
          }
        }
      },
      "VectorCapacityDetail": {
        "type": "object",
        "description": "Bytes written to one vector index.",
        "properties": {
          "VectorWriteRequestBytes": {
            "type": "number",
            "description": "Bytes written. Captured from real DynamoDB and matches it."
          }
        }
      },
      "ItemCollectionMetrics": {
        "type": "object",
        "description": "The size of the item collection a write touched.",
        "properties": {
          "ItemCollectionKey": {
            "$ref": "#/components/schemas/AttributeMap"
          },
          "SizeEstimateRangeGB": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Lower and upper size estimate, in GB."
          }
        }
      },
      "KeysAndAttributes": {
        "type": "object",
        "description": "The keys to read from one table, and how to read them.",
        "properties": {
          "Keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Key"
            },
            "description": "The keys to fetch."
          },
          "ConsistentRead": {
            "type": "boolean",
            "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
          },
          "ProjectionExpression": {
            "type": "string",
            "description": "Which attributes to return."
          },
          "ExpressionAttributeNames": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
          },
          "AttributesToGet": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Legacy attribute list. Accepted for pre-2015 API compatibility and ignored: use the expression-based member instead."
          }
        },
        "required": [
          "Keys"
        ]
      },
      "WriteRequest": {
        "type": "object",
        "description": "One put or one delete inside a BatchWriteItem. Exactly one member is set.",
        "properties": {
          "PutRequest": {
            "type": "object",
            "properties": {
              "Item": {
                "$ref": "#/components/schemas/AttributeMap"
              }
            },
            "required": [
              "Item"
            ],
            "description": "An item to put."
          },
          "DeleteRequest": {
            "type": "object",
            "properties": {
              "Key": {
                "$ref": "#/components/schemas/Key"
              }
            },
            "required": [
              "Key"
            ],
            "description": "A key to delete."
          }
        },
        "minProperties": 1,
        "maxProperties": 1
      },
      "TransactGetItem": {
        "type": "object",
        "description": "One read inside a TransactGetItems.",
        "properties": {
          "Get": {
            "type": "object",
            "description": "The item to read.",
            "properties": {
              "TableName": {
                "type": "string",
                "description": "The table to read from."
              },
              "Key": {
                "$ref": "#/components/schemas/Key"
              },
              "ProjectionExpression": {
                "type": "string",
                "description": "Which attributes to return."
              },
              "ExpressionAttributeNames": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
              }
            },
            "required": [
              "TableName",
              "Key"
            ]
          }
        },
        "required": [
          "Get"
        ]
      },
      "TransactWriteItem": {
        "type": "object",
        "description": "One action inside a TransactWriteItems. Exactly one member is set. Dynoxide never raises TransactionConflictException or TransactionInProgressException, because a single process has no concurrent contention to raise them from.",
        "properties": {
          "ConditionCheck": {
            "type": "object",
            "description": "Assert a condition without writing.",
            "properties": {
              "TableName": {
                "type": "string",
                "description": "The table."
              },
              "Key": {
                "$ref": "#/components/schemas/Key"
              },
              "ConditionExpression": {
                "type": "string",
                "description": "The condition that must hold."
              },
              "ExpressionAttributeNames": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
              },
              "ExpressionAttributeValues": {
                "$ref": "#/components/schemas/ExpressionAttributeValues"
              },
              "ReturnValuesOnConditionCheckFailure": {
                "type": "string",
                "description": "Whether a failed condition returns the item that caused it.",
                "enum": [
                  "ALL_OLD",
                  "NONE"
                ]
              }
            },
            "required": [
              "TableName",
              "Key",
              "ConditionExpression"
            ]
          },
          "Put": {
            "type": "object",
            "description": "Write an item.",
            "properties": {
              "TableName": {
                "type": "string",
                "description": "The table."
              },
              "Item": {
                "$ref": "#/components/schemas/AttributeMap"
              },
              "ConditionExpression": {
                "type": "string",
                "description": "A condition that must hold for the write to land."
              },
              "ExpressionAttributeNames": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
              },
              "ExpressionAttributeValues": {
                "$ref": "#/components/schemas/ExpressionAttributeValues"
              },
              "ReturnValuesOnConditionCheckFailure": {
                "type": "string",
                "description": "Whether a failed condition returns the item that caused it.",
                "enum": [
                  "ALL_OLD",
                  "NONE"
                ]
              }
            },
            "required": [
              "TableName",
              "Item"
            ]
          },
          "Update": {
            "type": "object",
            "description": "Update an item.",
            "properties": {
              "TableName": {
                "type": "string",
                "description": "The table."
              },
              "Key": {
                "$ref": "#/components/schemas/Key"
              },
              "UpdateExpression": {
                "type": "string",
                "description": "What to change."
              },
              "ConditionExpression": {
                "type": "string",
                "description": "A condition that must hold for the update to land."
              },
              "ExpressionAttributeNames": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
              },
              "ExpressionAttributeValues": {
                "$ref": "#/components/schemas/ExpressionAttributeValues"
              },
              "ReturnValuesOnConditionCheckFailure": {
                "type": "string",
                "description": "Whether a failed condition returns the item that caused it.",
                "enum": [
                  "ALL_OLD",
                  "NONE"
                ]
              }
            },
            "required": [
              "TableName",
              "Key",
              "UpdateExpression"
            ]
          },
          "Delete": {
            "type": "object",
            "description": "Delete an item.",
            "properties": {
              "TableName": {
                "type": "string",
                "description": "The table."
              },
              "Key": {
                "$ref": "#/components/schemas/Key"
              },
              "ConditionExpression": {
                "type": "string",
                "description": "A condition that must hold for the delete to land."
              },
              "ExpressionAttributeNames": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Substitutions for reserved words and attribute names, keyed by placeholder (`#name`). An entry that no expression uses is rejected."
              },
              "ExpressionAttributeValues": {
                "$ref": "#/components/schemas/ExpressionAttributeValues"
              },
              "ReturnValuesOnConditionCheckFailure": {
                "type": "string",
                "description": "Whether a failed condition returns the item that caused it.",
                "enum": [
                  "ALL_OLD",
                  "NONE"
                ]
              }
            },
            "required": [
              "TableName",
              "Key"
            ]
          }
        },
        "minProperties": 1,
        "maxProperties": 1
      },
      "ParameterisedStatement": {
        "type": "object",
        "description": "One PartiQL statement and its parameters.",
        "properties": {
          "Statement": {
            "type": "string",
            "description": "The PartiQL statement."
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeValue"
            },
            "description": "Values for the statement's `?` placeholders."
          },
          "ConsistentRead": {
            "type": "boolean",
            "description": "Accepted, and has no effect. SQLite is strongly consistent, so every read already is. An eventually consistent read cannot be reproduced locally."
          },
          "ReturnValuesOnConditionCheckFailure": {
            "type": "string",
            "description": "Whether a failed condition returns the item that caused it.",
            "enum": [
              "ALL_OLD",
              "NONE"
            ]
          }
        },
        "required": [
          "Statement"
        ]
      },
      "SearchResult": {
        "type": "object",
        "description": "One hit from a vector search.",
        "properties": {
          "Item": {
            "$ref": "#/components/schemas/AttributeMap"
          },
          "Score": {
            "type": "number",
            "description": "How close the entry is. COSINE and EUCLIDEAN score as distances, where a self match is 0. DOT_PRODUCT scores as a similarity and can be negative."
          }
        }
      },
      "StreamRecord": {
        "type": "object",
        "description": "One change captured by a stream.",
        "properties": {
          "eventID": {
            "type": "string",
            "description": "The record's identifier."
          },
          "eventName": {
            "type": "string",
            "description": "What happened to the item.",
            "enum": [
              "INSERT",
              "MODIFY",
              "REMOVE"
            ]
          },
          "eventVersion": {
            "type": "string",
            "description": "The record format version."
          },
          "eventSource": {
            "type": "string",
            "description": "Always aws:dynamodb."
          },
          "awsRegion": {
            "type": "string",
            "description": "The region the record claims."
          },
          "dynamodb": {
            "type": "object",
            "description": "The change itself.",
            "properties": {
              "Keys": {
                "$ref": "#/components/schemas/Key"
              },
              "NewImage": {
                "$ref": "#/components/schemas/AttributeMap"
              },
              "OldImage": {
                "$ref": "#/components/schemas/AttributeMap"
              },
              "SequenceNumber": {
                "type": "string",
                "description": "The record's position in the shard."
              },
              "SizeBytes": {
                "type": "integer",
                "description": "The record's size."
              },
              "StreamViewType": {
                "type": "string",
                "description": "What the record carries.",
                "enum": [
                  "NEW_IMAGE",
                  "OLD_IMAGE",
                  "NEW_AND_OLD_IMAGES",
                  "KEYS_ONLY"
                ]
              },
              "ApproximateCreationDateTime": {
                "type": "number",
                "description": "When the change happened."
              }
            }
          }
        }
      },
      "StreamDescription": {
        "type": "object",
        "description": "The shape of a stream. Dynoxide reports a single shard, so code that walks a multi-shard topology or handles shard splits has no local equivalent to exercise.",
        "properties": {
          "StreamArn": {
            "type": "string",
            "description": "The stream ARN."
          },
          "StreamLabel": {
            "type": "string",
            "description": "The stream label."
          },
          "StreamStatus": {
            "type": "string",
            "description": "The stream's state.",
            "enum": [
              "ENABLING",
              "ENABLED",
              "DISABLING",
              "DISABLED"
            ]
          },
          "StreamViewType": {
            "type": "string",
            "description": "What each record carries.",
            "enum": [
              "NEW_IMAGE",
              "OLD_IMAGE",
              "NEW_AND_OLD_IMAGES",
              "KEYS_ONLY"
            ]
          },
          "CreationRequestDateTime": {
            "type": "number",
            "description": "When the stream was requested."
          },
          "TableName": {
            "type": "string",
            "description": "The table the stream belongs to."
          },
          "KeySchema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeySchemaElement"
            },
            "description": "The table key schema."
          },
          "Shards": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "A shard. Dynoxide always reports exactly one.",
              "properties": {
                "ShardId": {
                  "type": "string",
                  "description": "The shard identifier."
                },
                "ParentShardId": {
                  "type": "string",
                  "description": "The shard this one split from."
                },
                "SequenceNumberRange": {
                  "type": "object",
                  "properties": {
                    "StartingSequenceNumber": {
                      "type": "string",
                      "description": "First sequence number in the shard."
                    },
                    "EndingSequenceNumber": {
                      "type": "string",
                      "description": "Last sequence number in the shard, when it is closed."
                    }
                  }
                }
              }
            },
            "description": "The stream's shards."
          }
        }
      },
      "Error": {
        "type": "object",
        "description": "A DynamoDB error. `__type` carries the `com.amazonaws.dynamodb.v20120810#` prefix, and the message text is matched to real DynamoDB wherever the conformance suite covers it.",
        "properties": {
          "__type": {
            "type": "string",
            "description": "The error code, prefixed. For example `com.amazonaws.dynamodb.v20120810#ResourceNotFoundException`."
          },
          "message": {
            "type": "string",
            "description": "The human-readable message."
          },
          "Item": {
            "$ref": "#/components/schemas/AttributeMap"
          },
          "CancellationReasons": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Code": {
                  "type": "string",
                  "description": "Why this action was cancelled."
                },
                "Message": {
                  "type": "string",
                  "description": "The detail."
                },
                "Item": {
                  "$ref": "#/components/schemas/AttributeMap"
                }
              }
            },
            "description": "Per-action reasons on a TransactionCanceledException."
          }
        },
        "required": [
          "__type",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "sigv4Header": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "AWS Signature Version 4 in the Authorization header. The header has to start with AWS4- and carry Credential, Signature and SignedHeaders, and the request needs an X-Amz-Date or Date header. The signature is never verified."
      },
      "sigv4Query": {
        "type": "apiKey",
        "in": "query",
        "name": "X-Amz-Signature",
        "description": "AWS Signature Version 4 in the query string, alongside X-Amz-Algorithm, X-Amz-Credential, X-Amz-SignedHeaders and X-Amz-Date. Sending this and the Authorization header together is rejected as ambiguous, the same as DynamoDB does. The signature is never verified."
      }
    }
  },
  "x-repository": "https://github.com/nubo-db/dynoxide",
  "x-generated-from": "https://github.com/nubo-db/dynoxide/blob/main/src/dynamo_ops.rs"
}
