{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/TableName",
  "/properties/DatabaseName",
  "/properties/Type",
  "/properties/CatalogId"
 ],
 "definitions": {
  "IcebergConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Location": {
     "type": "string"
    },
    "OrphanFileRetentionPeriodInDays": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "IcebergRetentionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "CleanExpiredFiles": {
     "type": "boolean"
    },
    "NumberOfSnapshotsToRetain": {
     "type": "integer"
    },
    "SnapshotRetentionPeriodInDays": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "OrphanFileDeletionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "IcebergConfiguration": {
     "$ref": "#/definitions/IcebergConfiguration"
    }
   },
   "type": "object"
  },
  "RetentionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "IcebergConfiguration": {
     "$ref": "#/definitions/IcebergRetentionConfiguration"
    }
   },
   "type": "object"
  },
  "TableOptimizerConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Enabled": {
     "type": "boolean"
    },
    "OrphanFileDeletionConfiguration": {
     "$ref": "#/definitions/OrphanFileDeletionConfiguration"
    },
    "RetentionConfiguration": {
     "$ref": "#/definitions/RetentionConfiguration"
    },
    "RoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "VpcConfiguration": {
     "$ref": "#/definitions/VpcConfiguration"
    }
   },
   "required": [
    "Enabled",
    "RoleArn"
   ],
   "type": "object"
  },
  "VpcConfiguration": {
   "additionalProperties": false,
   "properties": {
    "GlueConnectionName": {
     "type": "string"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "CatalogId": {
   "type": "string"
  },
  "DatabaseName": {
   "type": "string"
  },
  "Id": {
   "type": "string"
  },
  "TableName": {
   "type": "string"
  },
  "TableOptimizerConfiguration": {
   "$ref": "#/definitions/TableOptimizerConfiguration"
  },
  "Type": {
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Id"
 ],
 "required": [
  "TableName",
  "Type",
  "DatabaseName",
  "TableOptimizerConfiguration",
  "CatalogId"
 ],
 "typeName": "AWS::Glue::TableOptimizer"
}
