{
  "name": "DescribeTable",
  "plane": "control",
  "terraformEligible": true,
  "protocol": {
    "kind": "cloudJson",
    "target": "CloudTables.DescribeTable",
    "service": "tables"
  },
  "requestBody": "typed",
  "responseBody": "typed",
  "requestSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "properties": {
      "tableName": {
        "type": "string"
      }
    },
    "required": [
      "tableName"
    ],
    "title": "DescribeTableRequest",
    "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"
      },
      "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": {
      "table": {
        "$ref": "#/definitions/TableDescription"
      }
    },
    "required": [
      "table"
    ],
    "title": "DescribeTableResponse",
    "type": "object"
  }
}
