{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/KmsKeyId",
  "/properties/ResourceIdentifier"
 ],
 "definitions": {
  "DocDbSettings": {
   "additionalProperties": false,
   "properties": {
    "DocsToInvestigate": {
     "type": "integer"
    },
    "ExtractDocId": {
     "type": "boolean"
    },
    "NestingLevel": {
     "type": "string"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "DynamoDbSettings": {
   "additionalProperties": false,
   "properties": {
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    }
   },
   "type": "object"
  },
  "ElasticsearchSettings": {
   "additionalProperties": false,
   "properties": {
    "EndpointUri": {
     "type": "string"
    },
    "ErrorRetryDuration": {
     "type": "integer"
    },
    "FullLoadErrorPercentage": {
     "type": "integer"
    },
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    }
   },
   "type": "object"
  },
  "GcpMySQLSettings": {
   "additionalProperties": false,
   "properties": {
    "AfterConnectScript": {
     "type": "string"
    },
    "CleanSourceMetadataOnMismatch": {
     "type": "boolean"
    },
    "DatabaseName": {
     "type": "string"
    },
    "EventsPollInterval": {
     "type": "integer"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "ParallelLoadThreads": {
     "type": "integer"
    },
    "Password": {
     "type": "string"
    },
    "Port": {
     "type": "integer"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "ServerName": {
     "type": "string"
    },
    "ServerTimezone": {
     "type": "string"
    },
    "Username": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "IbmDb2Settings": {
   "additionalProperties": false,
   "properties": {
    "CurrentLsn": {
     "type": "string"
    },
    "KeepCsvFiles": {
     "type": "boolean"
    },
    "LoadTimeout": {
     "type": "integer"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "MaxKBytesPerRead": {
     "type": "integer"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "SetDataCaptureChanges": {
     "type": "boolean"
    },
    "WriteBufferSize": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "KafkaSettings": {
   "additionalProperties": false,
   "properties": {
    "Broker": {
     "type": "string"
    },
    "IncludeControlDetails": {
     "type": "boolean"
    },
    "IncludeNullAndEmpty": {
     "type": "boolean"
    },
    "IncludePartitionValue": {
     "type": "boolean"
    },
    "IncludeTableAlterOperations": {
     "type": "boolean"
    },
    "IncludeTransactionDetails": {
     "type": "boolean"
    },
    "MessageFormat": {
     "type": "string"
    },
    "MessageMaxBytes": {
     "type": "integer"
    },
    "NoHexPrefix": {
     "type": "boolean"
    },
    "PartitionIncludeSchemaTable": {
     "type": "boolean"
    },
    "SaslPassword": {
     "type": "string"
    },
    "SaslUserName": {
     "type": "string"
    },
    "SecurityProtocol": {
     "type": "string"
    },
    "SslCaCertificateArn": {
     "type": "string"
    },
    "SslClientCertificateArn": {
     "type": "string"
    },
    "SslClientKeyArn": {
     "type": "string"
    },
    "SslClientKeyPassword": {
     "type": "string"
    },
    "Topic": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "KinesisSettings": {
   "additionalProperties": false,
   "properties": {
    "IncludeControlDetails": {
     "type": "boolean"
    },
    "IncludeNullAndEmpty": {
     "type": "boolean"
    },
    "IncludePartitionValue": {
     "type": "boolean"
    },
    "IncludeTableAlterOperations": {
     "type": "boolean"
    },
    "IncludeTransactionDetails": {
     "type": "boolean"
    },
    "MessageFormat": {
     "type": "string"
    },
    "NoHexPrefix": {
     "type": "boolean"
    },
    "PartitionIncludeSchemaTable": {
     "type": "boolean"
    },
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "StreamArn": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "MicrosoftSqlServerSettings": {
   "additionalProperties": false,
   "properties": {
    "BcpPacketSize": {
     "type": "integer"
    },
    "ControlTablesFileGroup": {
     "type": "string"
    },
    "DatabaseName": {
     "type": "string"
    },
    "ForceLobLookup": {
     "type": "boolean"
    },
    "Password": {
     "type": "string"
    },
    "Port": {
     "type": "integer"
    },
    "QuerySingleAlwaysOnNode": {
     "type": "boolean"
    },
    "ReadBackupOnly": {
     "type": "boolean"
    },
    "SafeguardPolicy": {
     "type": "string"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "ServerName": {
     "type": "string"
    },
    "TlogAccessMode": {
     "type": "string"
    },
    "TrimSpaceInChar": {
     "type": "boolean"
    },
    "UseBcpFullLoad": {
     "type": "boolean"
    },
    "UseThirdPartyBackupDevice": {
     "type": "boolean"
    },
    "Username": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "MongoDbSettings": {
   "additionalProperties": false,
   "properties": {
    "AuthMechanism": {
     "type": "string"
    },
    "AuthSource": {
     "type": "string"
    },
    "AuthType": {
     "type": "string"
    },
    "DatabaseName": {
     "type": "string"
    },
    "DocsToInvestigate": {
     "type": "string"
    },
    "ExtractDocId": {
     "type": "string"
    },
    "NestingLevel": {
     "type": "string"
    },
    "Password": {
     "type": "string"
    },
    "Port": {
     "type": "integer"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "ServerName": {
     "type": "string"
    },
    "Username": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "MySqlSettings": {
   "additionalProperties": false,
   "properties": {
    "AfterConnectScript": {
     "type": "string"
    },
    "CleanSourceMetadataOnMismatch": {
     "type": "boolean"
    },
    "EventsPollInterval": {
     "type": "integer"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "ParallelLoadThreads": {
     "type": "integer"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "ServerTimezone": {
     "type": "string"
    },
    "TargetDbType": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "NeptuneSettings": {
   "additionalProperties": false,
   "properties": {
    "ErrorRetryDuration": {
     "type": "integer"
    },
    "IamAuthEnabled": {
     "type": "boolean"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "MaxRetryCount": {
     "type": "integer"
    },
    "S3BucketFolder": {
     "type": "string"
    },
    "S3BucketName": {
     "format": "AWS::S3::Bucket.Name",
     "type": "string"
    },
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    }
   },
   "type": "object"
  },
  "OracleSettings": {
   "additionalProperties": false,
   "properties": {
    "AccessAlternateDirectly": {
     "type": "boolean"
    },
    "AddSupplementalLogging": {
     "type": "boolean"
    },
    "AdditionalArchivedLogDestId": {
     "type": "integer"
    },
    "AllowSelectNestedTables": {
     "type": "boolean"
    },
    "ArchivedLogDestId": {
     "type": "integer"
    },
    "ArchivedLogsOnly": {
     "type": "boolean"
    },
    "AsmPassword": {
     "type": "string"
    },
    "AsmServer": {
     "type": "string"
    },
    "AsmUser": {
     "type": "string"
    },
    "CharLengthSemantics": {
     "type": "string"
    },
    "DirectPathNoLog": {
     "type": "boolean"
    },
    "DirectPathParallelLoad": {
     "type": "boolean"
    },
    "EnableHomogenousTablespace": {
     "type": "boolean"
    },
    "ExtraArchivedLogDestIds": {
     "items": {
      "type": "integer"
     },
     "type": "array",
     "uniqueItems": false
    },
    "FailTasksOnLobTruncation": {
     "type": "boolean"
    },
    "NumberDatatypeScale": {
     "type": "integer"
    },
    "OraclePathPrefix": {
     "type": "string"
    },
    "ParallelAsmReadThreads": {
     "type": "integer"
    },
    "ReadAheadBlocks": {
     "type": "integer"
    },
    "ReadTableSpaceName": {
     "type": "boolean"
    },
    "ReplacePathPrefix": {
     "type": "boolean"
    },
    "RetryInterval": {
     "type": "integer"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerOracleAsmAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerOracleAsmSecretId": {
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "SecurityDbEncryption": {
     "type": "string"
    },
    "SecurityDbEncryptionName": {
     "type": "string"
    },
    "SpatialDataOptionToGeoJsonFunctionName": {
     "type": "string"
    },
    "StandbyDelayTime": {
     "type": "integer"
    },
    "UseAlternateFolderForOnline": {
     "type": "boolean"
    },
    "UseBFile": {
     "type": "boolean"
    },
    "UseDirectPathFullLoad": {
     "type": "boolean"
    },
    "UseLogminerReader": {
     "type": "boolean"
    },
    "UsePathPrefix": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "PostgreSqlSettings": {
   "additionalProperties": false,
   "properties": {
    "AfterConnectScript": {
     "type": "string"
    },
    "BabelfishDatabaseName": {
     "type": "string"
    },
    "CaptureDdls": {
     "type": "boolean"
    },
    "DatabaseMode": {
     "type": "string"
    },
    "DdlArtifactsSchema": {
     "type": "string"
    },
    "ExecuteTimeout": {
     "type": "integer"
    },
    "FailTasksOnLobTruncation": {
     "type": "boolean"
    },
    "HeartbeatEnable": {
     "type": "boolean"
    },
    "HeartbeatFrequency": {
     "type": "integer"
    },
    "HeartbeatSchema": {
     "type": "string"
    },
    "MapBooleanAsBoolean": {
     "type": "boolean"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "PluginName": {
     "type": "string"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "SlotName": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "RedisSettings": {
   "additionalProperties": false,
   "properties": {
    "AuthPassword": {
     "type": "string"
    },
    "AuthType": {
     "type": "string"
    },
    "AuthUserName": {
     "type": "string"
    },
    "Port": {
     "type": "number"
    },
    "ServerName": {
     "type": "string"
    },
    "SslCaCertificateArn": {
     "type": "string"
    },
    "SslSecurityProtocol": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "RedshiftSettings": {
   "additionalProperties": false,
   "properties": {
    "AcceptAnyDate": {
     "type": "boolean"
    },
    "AfterConnectScript": {
     "type": "string"
    },
    "BucketFolder": {
     "type": "string"
    },
    "BucketName": {
     "format": "AWS::S3::Bucket.Name",
     "type": "string"
    },
    "CaseSensitiveNames": {
     "type": "boolean"
    },
    "CompUpdate": {
     "type": "boolean"
    },
    "ConnectionTimeout": {
     "type": "integer"
    },
    "DateFormat": {
     "type": "string"
    },
    "EmptyAsNull": {
     "type": "boolean"
    },
    "EncryptionMode": {
     "type": "string"
    },
    "ExplicitIds": {
     "type": "boolean"
    },
    "FileTransferUploadStreams": {
     "type": "integer"
    },
    "LoadTimeout": {
     "type": "integer"
    },
    "MapBooleanAsBoolean": {
     "type": "boolean"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "RemoveQuotes": {
     "type": "boolean"
    },
    "ReplaceChars": {
     "type": "string"
    },
    "ReplaceInvalidChars": {
     "type": "string"
    },
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    },
    "ServerSideEncryptionKmsKeyId": {
     "type": "string"
    },
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "TimeFormat": {
     "type": "string"
    },
    "TrimBlanks": {
     "type": "boolean"
    },
    "TruncateColumns": {
     "type": "boolean"
    },
    "WriteBufferSize": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "S3Settings": {
   "additionalProperties": false,
   "properties": {
    "AddColumnName": {
     "type": "boolean"
    },
    "AddTrailingPaddingCharacter": {
     "type": "boolean"
    },
    "BucketFolder": {
     "type": "string"
    },
    "BucketName": {
     "format": "AWS::S3::Bucket.Name",
     "type": "string"
    },
    "CannedAclForObjects": {
     "type": "string"
    },
    "CdcInsertsAndUpdates": {
     "type": "boolean"
    },
    "CdcInsertsOnly": {
     "type": "boolean"
    },
    "CdcMaxBatchInterval": {
     "type": "integer"
    },
    "CdcMinFileSize": {
     "type": "integer"
    },
    "CdcPath": {
     "type": "string"
    },
    "CompressionType": {
     "type": "string"
    },
    "CsvDelimiter": {
     "type": "string"
    },
    "CsvNoSupValue": {
     "type": "string"
    },
    "CsvNullValue": {
     "type": "string"
    },
    "CsvRowDelimiter": {
     "type": "string"
    },
    "DataFormat": {
     "type": "string"
    },
    "DataPageSize": {
     "type": "integer"
    },
    "DatePartitionDelimiter": {
     "type": "string"
    },
    "DatePartitionEnabled": {
     "type": "boolean"
    },
    "DatePartitionSequence": {
     "type": "string"
    },
    "DatePartitionTimezone": {
     "type": "string"
    },
    "DictPageSizeLimit": {
     "type": "integer"
    },
    "EnableStatistics": {
     "type": "boolean"
    },
    "EncodingType": {
     "type": "string"
    },
    "EncryptionMode": {
     "type": "string"
    },
    "ExpectedBucketOwner": {
     "type": "string"
    },
    "ExternalTableDefinition": {
     "type": "string"
    },
    "GlueCatalogGeneration": {
     "type": "boolean"
    },
    "IgnoreHeaderRows": {
     "type": "integer"
    },
    "IncludeOpForFullLoad": {
     "type": "boolean"
    },
    "MaxFileSize": {
     "type": "integer"
    },
    "ParquetTimestampInMillisecond": {
     "type": "boolean"
    },
    "ParquetVersion": {
     "type": "string"
    },
    "PreserveTransactions": {
     "type": "boolean"
    },
    "Rfc4180": {
     "type": "boolean"
    },
    "RowGroupLength": {
     "type": "integer"
    },
    "ServerSideEncryptionKmsKeyId": {
     "type": "string"
    },
    "ServiceAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "TimestampColumnName": {
     "type": "string"
    },
    "UseCsvNoSupValue": {
     "type": "boolean"
    },
    "UseTaskStartTimeForFullLoadTimestamp": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "SybaseSettings": {
   "additionalProperties": false,
   "properties": {
    "SecretsManagerAccessRoleArn": {
     "format": "AWS::IAM::Role.Arn",
     "type": "string"
    },
    "SecretsManagerSecretId": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "type": "string"
    },
    "Value": {
     "type": "string"
    }
   },
   "required": [
    "Value",
    "Key"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "CertificateArn": {
   "type": "string"
  },
  "DatabaseName": {
   "type": "string"
  },
  "DocDbSettings": {
   "$ref": "#/definitions/DocDbSettings"
  },
  "DynamoDbSettings": {
   "$ref": "#/definitions/DynamoDbSettings"
  },
  "ElasticsearchSettings": {
   "$ref": "#/definitions/ElasticsearchSettings"
  },
  "EndpointIdentifier": {
   "type": "string"
  },
  "EndpointType": {
   "type": "string"
  },
  "EngineName": {
   "type": "string"
  },
  "ExternalId": {
   "type": "string"
  },
  "ExtraConnectionAttributes": {
   "type": "string"
  },
  "GcpMySQLSettings": {
   "$ref": "#/definitions/GcpMySQLSettings"
  },
  "IbmDb2Settings": {
   "$ref": "#/definitions/IbmDb2Settings"
  },
  "Id": {
   "type": "string"
  },
  "KafkaSettings": {
   "$ref": "#/definitions/KafkaSettings"
  },
  "KinesisSettings": {
   "$ref": "#/definitions/KinesisSettings"
  },
  "KmsKeyId": {
   "anyOf": [
    {
     "format": "AWS::KMS::Key.Arn"
    },
    {
     "format": "AWS::KMS::Key.Id"
    },
    {
     "format": "AWS::KMS::Alias.AliasName"
    }
   ],
   "type": "string"
  },
  "MicrosoftSqlServerSettings": {
   "$ref": "#/definitions/MicrosoftSqlServerSettings"
  },
  "MongoDbSettings": {
   "$ref": "#/definitions/MongoDbSettings"
  },
  "MySqlSettings": {
   "$ref": "#/definitions/MySqlSettings"
  },
  "NeptuneSettings": {
   "$ref": "#/definitions/NeptuneSettings"
  },
  "OracleSettings": {
   "$ref": "#/definitions/OracleSettings"
  },
  "Password": {
   "type": "string"
  },
  "Port": {
   "type": "integer"
  },
  "PostgreSqlSettings": {
   "$ref": "#/definitions/PostgreSqlSettings"
  },
  "RedisSettings": {
   "$ref": "#/definitions/RedisSettings"
  },
  "RedshiftSettings": {
   "$ref": "#/definitions/RedshiftSettings"
  },
  "ResourceIdentifier": {
   "type": "string"
  },
  "S3Settings": {
   "$ref": "#/definitions/S3Settings"
  },
  "ServerName": {
   "type": "string"
  },
  "SslMode": {
   "type": "string"
  },
  "SybaseSettings": {
   "$ref": "#/definitions/SybaseSettings"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "type": "array",
   "uniqueItems": false
  },
  "Username": {
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Id",
  "/properties/ExternalId"
 ],
 "required": [
  "EndpointType",
  "EngineName"
 ],
 "typeName": "AWS::DMS::Endpoint"
}
