@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS Lake Formation
@version 2017-03-31
@auth AWS SigV4
@endpoints 55
@hint download_for_search
@toc AddLFTagsToResource(1), AssumeDecoratedRoleWithSAML(1), BatchGrantPermissions(1), BatchRevokePermissions(1), CancelTransaction(1), CommitTransaction(1), CreateDataCellsFilter(1), CreateLFTag(1), CreateLakeFormationIdentityCenterConfiguration(1), CreateLakeFormationOptIn(1), DeleteDataCellsFilter(1), DeleteLFTag(1), DeleteLakeFormationIdentityCenterConfiguration(1), DeleteLakeFormationOptIn(1), DeleteObjectsOnCancel(1), DeregisterResource(1), DescribeLakeFormationIdentityCenterConfiguration(1), DescribeResource(1), DescribeTransaction(1), ExtendTransaction(1), GetDataCellsFilter(1), GetDataLakePrincipal(1), GetDataLakeSettings(1), GetEffectivePermissionsForPath(1), GetLFTag(1), GetQueryState(1), GetQueryStatistics(1), GetResourceLFTags(1), GetTableObjects(1), GetTemporaryGluePartitionCredentials(1), GetTemporaryGlueTableCredentials(1), GetWorkUnitResults(1), GetWorkUnits(1), GrantPermissions(1), ListDataCellsFilter(1), ListLFTags(1), ListLakeFormationOptIns(1), ListPermissions(1), ListResources(1), ListTableStorageOptimizers(1), ListTransactions(1), PutDataLakeSettings(1), RegisterResource(1), RemoveLFTagsFromResource(1), RevokePermissions(1), SearchDatabasesByLFTags(1), SearchTablesByLFTags(1), StartQueryPlanning(1), StartTransaction(1), UpdateDataCellsFilter(1), UpdateLFTag(1), UpdateLakeFormationIdentityCenterConfiguration(1), UpdateResource(1), UpdateTableObjects(1), UpdateTableStorageOptimizer(1)

@group AddLFTagsToResource
@endpoint POST /AddLFTagsToResource
@required {Resource: Resource, LFTags: [LFTagPair]}
@optional {CatalogId: str}
@returns(200) {Failures: [LFTagError]?}

@endgroup

@group AssumeDecoratedRoleWithSAML
@endpoint POST /AssumeDecoratedRoleWithSAML
@required {SAMLAssertion: str, RoleArn: str, PrincipalArn: str}
@optional {DurationSeconds: int}
@returns(200) {AccessKeyId: str?, SecretAccessKey: str?, SessionToken: str?, Expiration: str(timestamp)?}

@endgroup

@group BatchGrantPermissions
@endpoint POST /BatchGrantPermissions
@required {Entries: [BatchPermissionsRequestEntry]}
@optional {CatalogId: str}
@returns(200) {Failures: [BatchPermissionsFailureEntry]?}

@endgroup

@group BatchRevokePermissions
@endpoint POST /BatchRevokePermissions
@required {Entries: [BatchPermissionsRequestEntry]}
@optional {CatalogId: str}
@returns(200) {Failures: [BatchPermissionsFailureEntry]?}

@endgroup

@group CancelTransaction
@endpoint POST /CancelTransaction
@required {TransactionId: str}

@endgroup

@group CommitTransaction
@endpoint POST /CommitTransaction
@required {TransactionId: str}
@returns(200) {TransactionStatus: str?}

@endgroup

@group CreateDataCellsFilter
@endpoint POST /CreateDataCellsFilter
@required {TableData: DataCellsFilter}

@endgroup

@group CreateLFTag
@endpoint POST /CreateLFTag
@required {TagKey: str, TagValues: [str]}
@optional {CatalogId: str}

@endgroup

@group CreateLakeFormationIdentityCenterConfiguration
@endpoint POST /CreateLakeFormationIdentityCenterConfiguration
@optional {CatalogId: str, InstanceArn: str, ExternalFiltering: ExternalFilteringConfiguration, ShareRecipients: [DataLakePrincipal]}
@returns(200) {ApplicationArn: str?}

@endgroup

@group CreateLakeFormationOptIn
@endpoint POST /CreateLakeFormationOptIn
@required {Principal: DataLakePrincipal, Resource: Resource}

@endgroup

@group DeleteDataCellsFilter
@endpoint POST /DeleteDataCellsFilter
@optional {TableCatalogId: str, DatabaseName: str, TableName: str, Name: str}

@endgroup

@group DeleteLFTag
@endpoint POST /DeleteLFTag
@required {TagKey: str}
@optional {CatalogId: str}

@endgroup

@group DeleteLakeFormationIdentityCenterConfiguration
@endpoint POST /DeleteLakeFormationIdentityCenterConfiguration
@optional {CatalogId: str}

@endgroup

@group DeleteLakeFormationOptIn
@endpoint POST /DeleteLakeFormationOptIn
@required {Principal: DataLakePrincipal, Resource: Resource}

@endgroup

@group DeleteObjectsOnCancel
@endpoint POST /DeleteObjectsOnCancel
@required {DatabaseName: str, TableName: str, TransactionId: str, Objects: [VirtualObject]}
@optional {CatalogId: str}

@endgroup

@group DeregisterResource
@endpoint POST /DeregisterResource
@required {ResourceArn: str}

@endgroup

@group DescribeLakeFormationIdentityCenterConfiguration
@endpoint POST /DescribeLakeFormationIdentityCenterConfiguration
@optional {CatalogId: str}
@returns(200) {CatalogId: str?, InstanceArn: str?, ApplicationArn: str?, ExternalFiltering: ExternalFilteringConfiguration?{Status: str, AuthorizedTargets: [str]}, ShareRecipients: [DataLakePrincipal]?, ResourceShare: str?}

@endgroup

@group DescribeResource
@endpoint POST /DescribeResource
@required {ResourceArn: str}
@returns(200) {ResourceInfo: ResourceInfo?{ResourceArn: str?, RoleArn: str?, LastModified: str(timestamp)?, WithFederation: bool?, HybridAccessEnabled: bool?}}

@endgroup

@group DescribeTransaction
@endpoint POST /DescribeTransaction
@required {TransactionId: str}
@returns(200) {TransactionDescription: TransactionDescription?{TransactionId: str?, TransactionStatus: str?, TransactionStartTime: str(timestamp)?, TransactionEndTime: str(timestamp)?}}

@endgroup

@group ExtendTransaction
@endpoint POST /ExtendTransaction
@optional {TransactionId: str}

@endgroup

@group GetDataCellsFilter
@endpoint POST /GetDataCellsFilter
@required {TableCatalogId: str, DatabaseName: str, TableName: str, Name: str}
@returns(200) {DataCellsFilter: DataCellsFilter?{TableCatalogId: str, DatabaseName: str, TableName: str, Name: str, RowFilter: RowFilter?{FilterExpression: str?, AllRowsWildcard: AllRowsWildcard?}, ColumnNames: [str]?, ColumnWildcard: ColumnWildcard?{ExcludedColumnNames: [str]?}, VersionId: str?}}

@endgroup

@group GetDataLakePrincipal
@endpoint POST /GetDataLakePrincipal
@returns(200) {Identity: str?}

@endgroup

@group GetDataLakeSettings
@endpoint POST /GetDataLakeSettings
@optional {CatalogId: str}
@returns(200) {DataLakeSettings: DataLakeSettings?{DataLakeAdmins: [DataLakePrincipal]?, ReadOnlyAdmins: [DataLakePrincipal]?, CreateDatabaseDefaultPermissions: [PrincipalPermissions]?, CreateTableDefaultPermissions: [PrincipalPermissions]?, Parameters: map<str,str>?, TrustedResourceOwners: [str]?, AllowExternalDataFiltering: bool?, AllowFullTableExternalDataAccess: bool?, ExternalDataFilteringAllowList: [DataLakePrincipal]?, AuthorizedSessionTagValueList: [str]?}}

@endgroup

@group GetEffectivePermissionsForPath
@endpoint POST /GetEffectivePermissionsForPath
@required {ResourceArn: str}
@optional {CatalogId: str, NextToken: str, MaxResults: int}
@returns(200) {Permissions: [PrincipalResourcePermissions]?, NextToken: str?}

@endgroup

@group GetLFTag
@endpoint POST /GetLFTag
@required {TagKey: str}
@optional {CatalogId: str}
@returns(200) {CatalogId: str?, TagKey: str?, TagValues: [str]?}

@endgroup

@group GetQueryState
@endpoint POST /GetQueryState
@required {QueryId: str}
@returns(200) {Error: str?, State: str}

@endgroup

@group GetQueryStatistics
@endpoint POST /GetQueryStatistics
@required {QueryId: str}
@returns(200) {ExecutionStatistics: ExecutionStatistics?{AverageExecutionTimeMillis: int(i64)?, DataScannedBytes: int(i64)?, WorkUnitsExecutedCount: int(i64)?}, PlanningStatistics: PlanningStatistics?{EstimatedDataToScanBytes: int(i64)?, PlanningTimeMillis: int(i64)?, QueueTimeMillis: int(i64)?, WorkUnitsGeneratedCount: int(i64)?}, QuerySubmissionTime: str(timestamp)?}

@endgroup

@group GetResourceLFTags
@endpoint POST /GetResourceLFTags
@required {Resource: Resource}
@optional {CatalogId: str, ShowAssignedLFTags: bool}
@returns(200) {LFTagOnDatabase: [LFTagPair]?, LFTagsOnTable: [LFTagPair]?, LFTagsOnColumns: [ColumnLFTag]?}

@endgroup

@group GetTableObjects
@endpoint POST /GetTableObjects
@required {DatabaseName: str, TableName: str}
@optional {CatalogId: str, TransactionId: str, QueryAsOfTime: str(timestamp), PartitionPredicate: str, MaxResults: int, NextToken: str}
@returns(200) {Objects: [PartitionObjects]?, NextToken: str?}

@endgroup

@group GetTemporaryGluePartitionCredentials
@endpoint POST /GetTemporaryGluePartitionCredentials
@required {TableArn: str, Partition: PartitionValueList}
@optional {Permissions: [str], DurationSeconds: int, AuditContext: AuditContext, SupportedPermissionTypes: [str]}
@returns(200) {AccessKeyId: str?, SecretAccessKey: str?, SessionToken: str?, Expiration: str(timestamp)?}

@endgroup

@group GetTemporaryGlueTableCredentials
@endpoint POST /GetTemporaryGlueTableCredentials
@required {TableArn: str}
@optional {Permissions: [str], DurationSeconds: int, AuditContext: AuditContext, SupportedPermissionTypes: [str], S3Path: str, QuerySessionContext: QuerySessionContext}
@returns(200) {AccessKeyId: str?, SecretAccessKey: str?, SessionToken: str?, Expiration: str(timestamp)?, VendedS3Path: [str]?}

@endgroup

@group GetWorkUnitResults
@endpoint POST /GetWorkUnitResults
@required {QueryId: str, WorkUnitId: int(i64), WorkUnitToken: str}
@returns(200) {ResultStream: bytes?}

@endgroup

@group GetWorkUnits
@endpoint POST /GetWorkUnits
@required {QueryId: str}
@optional {NextToken: str, PageSize: int}
@returns(200) {NextToken: str?, QueryId: str, WorkUnitRanges: [WorkUnitRange]}

@endgroup

@group GrantPermissions
@endpoint POST /GrantPermissions
@required {Principal: DataLakePrincipal, Resource: Resource, Permissions: [str]}
@optional {CatalogId: str, PermissionsWithGrantOption: [str]}

@endgroup

@group ListDataCellsFilter
@endpoint POST /ListDataCellsFilter
@optional {Table: TableResource, NextToken: str, MaxResults: int}
@returns(200) {DataCellsFilters: [DataCellsFilter]?, NextToken: str?}

@endgroup

@group ListLFTags
@endpoint POST /ListLFTags
@optional {CatalogId: str, ResourceShareType: str, MaxResults: int, NextToken: str}
@returns(200) {LFTags: [LFTagPair]?, NextToken: str?}

@endgroup

@group ListLakeFormationOptIns
@endpoint POST /ListLakeFormationOptIns
@optional {Principal: DataLakePrincipal, Resource: Resource, MaxResults: int, NextToken: str}
@returns(200) {LakeFormationOptInsInfoList: [LakeFormationOptInsInfo]?, NextToken: str?}

@endgroup

@group ListPermissions
@endpoint POST /ListPermissions
@optional {CatalogId: str, Principal: DataLakePrincipal, ResourceType: str, Resource: Resource, NextToken: str, MaxResults: int, IncludeRelated: str}
@returns(200) {PrincipalResourcePermissions: [PrincipalResourcePermissions]?, NextToken: str?}

@endgroup

@group ListResources
@endpoint POST /ListResources
@optional {FilterConditionList: [FilterCondition], MaxResults: int, NextToken: str}
@returns(200) {ResourceInfoList: [ResourceInfo]?, NextToken: str?}

@endgroup

@group ListTableStorageOptimizers
@endpoint POST /ListTableStorageOptimizers
@required {DatabaseName: str, TableName: str}
@optional {CatalogId: str, StorageOptimizerType: str, MaxResults: int, NextToken: str}
@returns(200) {StorageOptimizerList: [StorageOptimizer]?, NextToken: str?}

@endgroup

@group ListTransactions
@endpoint POST /ListTransactions
@optional {CatalogId: str, StatusFilter: str, MaxResults: int, NextToken: str}
@returns(200) {Transactions: [TransactionDescription]?, NextToken: str?}

@endgroup

@group PutDataLakeSettings
@endpoint POST /PutDataLakeSettings
@required {DataLakeSettings: DataLakeSettings}
@optional {CatalogId: str}

@endgroup

@group RegisterResource
@endpoint POST /RegisterResource
@required {ResourceArn: str}
@optional {UseServiceLinkedRole: bool, RoleArn: str, WithFederation: bool, HybridAccessEnabled: bool}

@endgroup

@group RemoveLFTagsFromResource
@endpoint POST /RemoveLFTagsFromResource
@required {Resource: Resource, LFTags: [LFTagPair]}
@optional {CatalogId: str}
@returns(200) {Failures: [LFTagError]?}

@endgroup

@group RevokePermissions
@endpoint POST /RevokePermissions
@required {Principal: DataLakePrincipal, Resource: Resource, Permissions: [str]}
@optional {CatalogId: str, PermissionsWithGrantOption: [str]}

@endgroup

@group SearchDatabasesByLFTags
@endpoint POST /SearchDatabasesByLFTags
@required {Expression: [LFTag]}
@optional {NextToken: str, MaxResults: int, CatalogId: str}
@returns(200) {NextToken: str?, DatabaseList: [TaggedDatabase]?}

@endgroup

@group SearchTablesByLFTags
@endpoint POST /SearchTablesByLFTags
@required {Expression: [LFTag]}
@optional {NextToken: str, MaxResults: int, CatalogId: str}
@returns(200) {NextToken: str?, TableList: [TaggedTable]?}

@endgroup

@group StartQueryPlanning
@endpoint POST /StartQueryPlanning
@required {QueryPlanningContext: QueryPlanningContext, QueryString: str}
@returns(200) {QueryId: str}

@endgroup

@group StartTransaction
@endpoint POST /StartTransaction
@optional {TransactionType: str}
@returns(200) {TransactionId: str?}

@endgroup

@group UpdateDataCellsFilter
@endpoint POST /UpdateDataCellsFilter
@required {TableData: DataCellsFilter}

@endgroup

@group UpdateLFTag
@endpoint POST /UpdateLFTag
@required {TagKey: str}
@optional {CatalogId: str, TagValuesToDelete: [str], TagValuesToAdd: [str]}

@endgroup

@group UpdateLakeFormationIdentityCenterConfiguration
@endpoint POST /UpdateLakeFormationIdentityCenterConfiguration
@optional {CatalogId: str, ShareRecipients: [DataLakePrincipal], ApplicationStatus: str, ExternalFiltering: ExternalFilteringConfiguration}

@endgroup

@group UpdateResource
@endpoint POST /UpdateResource
@required {RoleArn: str, ResourceArn: str}
@optional {WithFederation: bool, HybridAccessEnabled: bool}

@endgroup

@group UpdateTableObjects
@endpoint POST /UpdateTableObjects
@required {DatabaseName: str, TableName: str, WriteOperations: [WriteOperation]}
@optional {CatalogId: str, TransactionId: str}

@endgroup

@group UpdateTableStorageOptimizer
@endpoint POST /UpdateTableStorageOptimizer
@required {DatabaseName: str, TableName: str, StorageOptimizerConfig: map<str,map<str,str>>}
@optional {CatalogId: str}
@returns(200) {Result: str?}

@endgroup

@end
