{
  "name": "UpdateTable",
  "plane": "control",
  "terraformEligible": true,
  "protocol": {
    "kind": "cloudJson",
    "target": "CloudTables.UpdateTable",
    "service": "tables"
  },
  "requestBody": "typed",
  "responseBody": "typed",
  "requestSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "definitions": {
      "AttributeDefinition": {
        "additionalProperties": false,
        "properties": {
          "attributeName": {
            "type": "string"
          },
          "attributeType": {
            "type": "string"
          }
        },
        "required": [
          "attributeName",
          "attributeType"
        ],
        "type": "object"
      },
      "GlobalSecondaryIndex": {
        "additionalProperties": false,
        "properties": {
          "indexName": {
            "type": "string"
          },
          "keySchema": {
            "items": {
              "$ref": "#/definitions/KeySchemaElement"
            },
            "type": "array"
          },
          "projection": {
            "$ref": "#/definitions/Projection"
          },
          "provisionedThroughput": {
            "anyOf": [
              {
                "$ref": "#/definitions/ProvisionedThroughput"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "indexName",
          "keySchema",
          "projection"
        ],
        "type": "object"
      },
      "GsiDeleteRequest": {
        "additionalProperties": false,
        "properties": {
          "indexName": {
            "type": "string"
          }
        },
        "required": [
          "indexName"
        ],
        "type": "object"
      },
      "GsiUpdateRequest": {
        "additionalProperties": false,
        "properties": {
          "create": {
            "anyOf": [
              {
                "$ref": "#/definitions/GlobalSecondaryIndex"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "delete": {
            "anyOf": [
              {
                "$ref": "#/definitions/GsiDeleteRequest"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "KeySchemaElement": {
        "additionalProperties": false,
        "properties": {
          "attributeName": {
            "type": "string"
          },
          "keyType": {
            "type": "string"
          }
        },
        "required": [
          "attributeName",
          "keyType"
        ],
        "type": "object"
      },
      "Projection": {
        "additionalProperties": false,
        "properties": {
          "nonKeyAttributes": {
            "default": null,
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "projectionType": {
            "type": "string"
          }
        },
        "required": [
          "projectionType"
        ],
        "type": "object"
      },
      "ProvisionedThroughput": {
        "additionalProperties": false,
        "properties": {
          "readCapacityUnits": {
            "default": 0,
            "format": "int64",
            "type": "integer"
          },
          "writeCapacityUnits": {
            "default": 0,
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StreamSpecification": {
        "additionalProperties": false,
        "properties": {
          "streamEnabled": {
            "type": "boolean"
          },
          "streamViewType": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "streamEnabled"
        ],
        "type": "object"
      }
    },
    "properties": {
      "attributeDefinitions": {
        "default": null,
        "items": {
          "$ref": "#/definitions/AttributeDefinition"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "globalSecondaryIndexUpdates": {
        "default": null,
        "items": {
          "$ref": "#/definitions/GsiUpdateRequest"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "provisionedThroughput": {
        "anyOf": [
          {
            "$ref": "#/definitions/ProvisionedThroughput"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "sseSpecification": {
        "default": null
      },
      "streamSpecification": {
        "anyOf": [
          {
            "$ref": "#/definitions/StreamSpecification"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "tableName": {
        "type": "string"
      },
      "tags": {
        "default": null
      }
    },
    "required": [
      "tableName"
    ],
    "title": "UpdateTableRequest",
    "type": "object"
  },
  "responseSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
      "AttributeDefinition": {
        "additionalProperties": false,
        "properties": {
          "attributeName": {
            "type": "string"
          },
          "attributeType": {
            "type": "string"
          }
        },
        "required": [
          "attributeName",
          "attributeType"
        ],
        "type": "object"
      },
      "GlobalSecondaryIndexDescription": {
        "properties": {
          "indexName": {
            "type": "string"
          },
          "indexStatus": {
            "type": "string"
          },
          "keySchema": {
            "items": {
              "$ref": "#/definitions/KeySchemaElement"
            },
            "type": "array"
          },
          "projection": {
            "$ref": "#/definitions/Projection"
          }
        },
        "required": [
          "indexName",
          "indexStatus",
          "keySchema",
          "projection"
        ],
        "type": "object"
      },
      "IgnoredField": {
        "properties": {
          "detail": {
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "status": {
            "$ref": "#/definitions/IgnoredStatus"
          }
        },
        "required": [
          "path",
          "reason",
          "status"
        ],
        "type": "object"
      },
      "IgnoredStatus": {
        "enum": [
          "ignored",
          "approximated",
          "coerced"
        ],
        "type": "string"
      },
      "KeySchemaElement": {
        "additionalProperties": false,
        "properties": {
          "attributeName": {
            "type": "string"
          },
          "keyType": {
            "type": "string"
          }
        },
        "required": [
          "attributeName",
          "keyType"
        ],
        "type": "object"
      },
      "Projection": {
        "additionalProperties": false,
        "properties": {
          "nonKeyAttributes": {
            "default": null,
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "projectionType": {
            "type": "string"
          }
        },
        "required": [
          "projectionType"
        ],
        "type": "object"
      },
      "StreamSpecification": {
        "additionalProperties": false,
        "properties": {
          "streamEnabled": {
            "type": "boolean"
          },
          "streamViewType": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "streamEnabled"
        ],
        "type": "object"
      },
      "TableDescription": {
        "properties": {
          "attributeDefinitions": {
            "items": {
              "$ref": "#/definitions/AttributeDefinition"
            },
            "type": "array"
          },
          "creationDateTime": {
            "format": "double",
            "type": "number"
          },
          "globalSecondaryIndexes": {
            "items": {
              "$ref": "#/definitions/GlobalSecondaryIndexDescription"
            },
            "type": "array"
          },
          "itemCount": {
            "format": "int64",
            "type": "integer"
          },
          "keySchema": {
            "items": {
              "$ref": "#/definitions/KeySchemaElement"
            },
            "type": "array"
          },
          "streamSpecification": {
            "$ref": "#/definitions/StreamSpecification"
          },
          "tableName": {
            "type": "string"
          },
          "tableSizeBytes": {
            "format": "int64",
            "type": "integer"
          },
          "tableStatus": {
            "type": "string"
          }
        },
        "required": [
          "attributeDefinitions",
          "creationDateTime",
          "globalSecondaryIndexes",
          "itemCount",
          "keySchema",
          "streamSpecification",
          "tableName",
          "tableSizeBytes",
          "tableStatus"
        ],
        "type": "object"
      }
    },
    "properties": {
      "ignoredFields": {
        "items": {
          "$ref": "#/definitions/IgnoredField"
        },
        "type": "array"
      },
      "tableDescription": {
        "$ref": "#/definitions/TableDescription"
      }
    },
    "required": [
      "tableDescription"
    ],
    "title": "TableMutationResponse",
    "type": "object"
  }
}
