Datasets
APIs related to datasets, which are logical collections of files(data).
📄️ Get user registered datasets
Returns a paginated list of datasets the caller owns or has viewer access to. Supports two listing backends: OpenSearch (default where configured) and DynamoDB. The OpenSearch path supports cursor-based pagination via next_cursor; the DynamoDB path uses offset-based pagination. Caller must have a valid role_id.
📄️ Registers a new dataset
Creates a new dataset with initial metadata. Supports three dataset types: internal, external (references existing S3 data), and view (SQL-based DWH view). Caller must have editor or owner access on the target domain. Duplicate DatasetName within the same domain returns IPV-1018.
📄️ Get user system datasets
Returns a list of system datasets
📄️ Update system datasets
Update the partitions in athena table for system datasets
📄️ Get list of domains and descriptions
Returns a list of domains
📄️ Create domain
User creates new domain
📄️ Get domain details given name
Returns a domain details
📄️ Update a domain or manage its external schemas
Omit action to update the domain description or display name using the request body. Use action=create-external-schema or action=drop-external-schema to manage the domain's Redshift external schemas. For these actions, request-body fields are ignored, but API Gateway still requires a JSON request body. Callers must send an empty object ({}) rather than omitting the body.
📄️ deletes the domain
deletes the domain
📄️ Generate a presigned URL for dataset file upload
Generates an S3 presigned URL for uploading a file to the specified dataset.
📄️ Generate a presigned URL for sample schema file upload
Generates an S3 presigned URL for uploading a sample schema file to a dataset in `pending` registration status.
📄️ Get dataset details
Returns full metadata for a single dataset. The caller must have at least read-only access on the dataset (via direct sharing, tag-based access, or domain-level access); otherwise AUTH-1011 is returned.
📄️ Trigger an adhoc operation on a dataset
Triggers an adhoc background operation on a dataset. The caller must have at least editor access on the dataset.
📄️ Complete dataset registration
Completes the registration of a dataset by creating its backend infrastructure (Glue table, Redshift table, DynamoDB table, or Iceberg/Hudi/DeltaLake table) based on TargetLocation.
📄️ Delete the dataset
Deletes a dataset. The caller must be the dataset owner.
📄️ Get dataset data
Returns paginated row-level data for an internal dataset. The caller must have at least read-only access. Only datasets with DatasetType 'internal' are supported (external/view returns IPV-1041).
📄️ Status of dataset file loads (failed/completed/processing)
Returns file-load status for the dataset, bucketed by LoadStatus.
📄️ Get list of files for a dataset
Returns a paginated list of dataset file metadata for the dataset.
📄️ Upload file to dataset from query result
Starts asynchronous upload of Athena query results into the dataset (Step Functions). Body requires QueryId and FileName. Caller must be owner or editor. Query output size and dataset FileType constraints apply (e.g. ~500MB limit; unsupported types rejected).
📄️ Manage dataset files (delete, restore, tag, archive restore)
Performs bulk file operations. Operation values include delete, restore, permanent_delete, restore_from_archive, grant, revoke, update_tags. Caller must be owner or editor. Iceberg/Hudi/DeltaLake and many external targets block these ops (GE-1106 / DS-*). For grant/revoke set query action=tag_files. TruncateDataset is only valid with permanent_delete. Some ops are async (SF); Message indicates the accepted action.
📄️ Analytics of a file
Returns analytics/profiling for a dataset file plus optional transformed_file_url (presigned or N/A). Query filename is required. analytics.Status may be Unavailable when profiling is not ready. Caller needs dataset access.
📄️ List ML models applicable to a dataset file
Returns ML models the caller can access that are compatible with the given dataset file. Caller must be owner or editor of the dataset (else AUTH-1002). For DWH targets with a supported file type, models are filtered by InputSchema match against DatasetSchema; otherwise models whose SupportedFileFormats include the dataset FileType are returned. Optional projectionExpression limits returned model fields (comma-separated attribute names). Safe to retry (read-only).
📄️ Generate labels for dataset files
Starts AI label generation for up to 10 files in an unstructured (S3) dataset that is active and fully registered. Requires editor access. Runs in the background - poll the GET operation for results. Files must already be loaded and end in a lowercase .pdf or .txt. A file is only rejected when labelling has already completed for it, so one that failed or is still running can be resubmitted.
📄️ Get generated labels for a dataset file
Returns the generated labels for a single file and the current state of label generation. Status is reported as pending when labels have never been requested for the file.
📄️ Approve or reject generated labels
Records an approve or reject decision for labels generated on a file. Requires editor access. Only labels already generated for the file may be listed, and a decision cannot be reversed once made. Approved labels are added to the dataset keywords.
📄️ Trigger AI summarization for dataset files
Starts asynchronous AI summarization for one or more successfully loaded text/pdf files in an s3-target dataset. Caller must have editor or owner access. Datasets AI service must be enabled (else AI-1004). Sets SummaryGenerationStatus to summarizing and starts the AI operations step function. Success Message is 'Successfully triggered AI operation: 'summarize' on the dataset.' Not idempotent while files are already summarizing/summarized (IPV-1020).
📄️ Get AI-generated summary for a dataset file
Returns SummaryGenerationStatus and SummaryMetadata for a single dataset file. Required query file-name (else IPV-1020). File must exist in the dataset files table (else IPV-1002). Datasets AI service must be enabled (else AI-1004). Safe to retry (read-only).
📄️ Approve or reject an AI-generated file summary
Approves or rejects (and optionally edits) the AI-generated summary for a dataset file. Caller must be editor or owner. Required query file-name and body Summary + ApprovalStatus (approved|rejected). Fails with IPV-1020 if no summary exists or ApprovalStatus is already APPROVED/REJECTED. API success Message is 'Successfully updated labels.' (shared message with the labels PUT path).
📄️ List model run statuses for a dataset
Returns ML model run status records for the dataset. Caller must have access to the dataset (else AUTH-1002). Filtering:
📄️ Run an ML model on a dataset file
Invokes an ML model run for a selected file (or file set) on the dataset. Caller must have access to the model and owner/editor on the dataset (else AUTH-1002). For OutputType DatasetData, TargetDatasetId is required and must be an active dataset the caller can write to. Body FileName may be a single path or list depending on DatasetProcessingMode. On success starts the invoke-model step function and returns Message 'success' with ModelRunId and FileName. Not idempotent: each call creates a new ModelRunId.
📄️ Presigned url for file download
Returns a download/preview payload for one file. Query filename is required. action=attachment (default) returns presigned url; action=preview returns inline data for supported types or preview URL. Read-only callers on s3 targets may be checked via TBAC (AUTH-1031). Some archived/skip-LZ/framework states are rejected (DS-1070, GE-1106).
📄️ Trigger multi-file ZIP download
Starts asynchronous ZIP batch job(s) for multiple files. Query action=multiple-files is required. Select files via body Files, and/or query limit (latest N completed files, 1-250), and/or body DateRange. Email notification is sent when ZIP(s) are ready. Caller needs download access (including TBAC where applicable).
📄️ Check user access for dataset files
Returns per-file access flags for the supplied file keys. When the dataset is not TBAC-enabled, all requested files return true. When TBAC-enabled, flags reflect FileLevelTags vs caller tags. Body Files is required (max 30). Caller needs any dataset access.
📄️ Sync partitions from source for lf and s3athena datasets
Triggers an asynchronous partition sync from the dataset S3 source via Step Functions. Supported only for TargetLocation lf or s3athena. Not supported for views, Iceberg tables, or Delta Lake tables (GE-1106: 'sync partitions is/are not supported for {views| <target> datasets|deltalake/iceberg datasets}'). External datasets without partition keys return DS-1054. Internal datasets default the partition key to upload_date when none are defined. On success an email notification with more details is sent when the sync completes. No request body.
📄️ Batch update dataset metadata
Triggers asynchronous bulk update of dataset metadata. The caller must be owner or editor of each dataset. Processing happens via a Step Functions state machine in batches of 50 datasets. On completion, an email notification with a PDF report is sent. Use the operation query parameter to target lifecycle policy updates or deletes instead of general metadata updates. There is no dataset count limit for general metadata updates. Lifecycle operations (update_lifecycle_policy, delete_lifecycle_policy) are limited to 100 datasets per request.
📄️ Update dataset metadata
Updates dataset metadata for a caller who is an owner or editor. Omit the operation query parameter for a normal metadata update (Message 'Successfully updated metadata', optionally suffixed with a partition-repair notice). For DatasetType=view, success Message is 'Dataset updates are in progress'.
📄️ Export DynamoDB dataset to S3
Triggers asynchronous DynamoDB PITR export to S3 via Step Functions. API path supports DynamoDB datasets only (Iceberg/s3athena exports are schedule-driven). No request body. Caller needs datasets.manage role permission; code does not enforce an additional owner-only check. Email notification is sent when export completes.
📄️ Get dataset analytics summary
Returns the analytics summary and a presigned S3 URL for the dataset's profiling report. The caller must have at least read-only access on the dataset.
📄️ Gets list of data classifications
Returns the full list of data classifications available in the system. No pagination — all classifications are returned in a single response. Any authenticated user can access this endpoint.
📄️ Create data classification
Creates a new data classification.DataClassificationName must not contain whitespace and must be unique. DisplayName defaults to DataClassificationName if omitted. Description defaults to '-' if not provided.
📄️ Gets data classification item
Returns a single data classification by name, including a list of datasets that reference it. The Resources.Datasets array is only present when at least one dataset uses this classification. Use projectionExpression to limit fields returned from the classification item; the Resources lookup is always appended afterward.
📄️ Update data classification
Updates an existing data classification. Both Description and DisplayName are optional — only provided fields are updated. LastModifiedTime and LastModifiedBy are always set automatically. {id} represents the DataClassificationName of the classification to update.
📄️ Delete the data classification item
Deletes a data classification by name. The caller must have dataclassifications.fullaccess permission. Deletion is blocked when one or more datasets still reference this classification — remove the classification from those datasets first.
📄️ Gets datareloads history of a dataset
Returns all data-reload run records for the dataset as { 'datareloads': [ ... ] }, ordered newest first (scan_index_forward=false). Caller needs any dataset access (owner, editor, or read-only). No pagination — the full history list is returned in one response.
📄️ Trigger dataset file reload or reprocess
Starts an asynchronous reload of selected files, or reprocess when action=reprocess. Caller must be owner or editor.
📄️ Delete pending dataset reload files
Synchronously deletes pending reload files for the dataset. Caller must be owner or editor. Body Files must reference pending files.
📄️ Search files metadata in a dataset
Searches OpenSearch metadata for files under a dataset and returns a paginated file list with presigned download URLs. Caller must have access to the dataset via role_id. Dataset must exist, be active, and have completed registration.
📄️ Lists all the resources that are dependent on dataset
Returns resources that depend on the dataset (views, jobs, ETL, dashboards, etc.), grouped by ResourceType. Caller needs any access on the dataset via role_id. Not paginated — response is the full dependency set (DependentResources may be an empty array). There is no limit, offset, or nextToken.
📄️ Batch delete datasets
Triggers asynchronous bulk deletion of datasets via a Step Functions state machine. Caller must have owner access on each dataset for it to be deleted. Datasets where the caller is not the owner are skipped (not deleted). The DatasetIds list must be non-empty. Deletion is processed asynchronously — an email notification with a PDF report is sent upon completion showing per-dataset results (delete-triggered, delete-success, or delete-failed with reason).
📄️ Get batch delete datasets status
Returns the deletion status for datasets previously submitted via PUT /datasets/batch-delete. Pass one or more DatasetId query parameters to check their status. For each DatasetId, the response includes a Status derived from the dataset's current registration state.
📄️ Delete lifecycle policy of dataset
Starts asynchronous deletion of the dataset S3 lifecycle policy via Step Functions. No request body. Caller needs datasets.manage role permission and any access on the dataset. Unsupported for some target locations and external datasets; rejected if policy missing or already transitioning.
📄️ Get file data load statistics
Returns recent dataload execution counts and current SQS queue depths for each target location (S3, S3Athena, Redshift, Lakeformation, Dynamodb). Redshift statistics are only present when a DWH dataload queue is configured in the environment. RecentExecutions values are comma-separated strings in the format '{count},{timestamp}'. CurrentMessagesInQueue values are approximate integer counts of messages waiting in each target's SQS queue.
📄️ Retrieve data load throttling and Glue file processing settings
Returns the current data load throttling and Glue file processing settings for the environment. Both settings indicate whether the respective feature is currently enabled or disabled.
📄️ Update data load throttling and Glue file processing settings
Updates the data load throttling and optional Glue file processing settings for the environment. DataLoadThrottling is required and accepts 'enable' or 'disable'.
📄️ Refresh a materialized dataset view
Triggers an asynchronous refresh of a materialized DWH view dataset. Sets RefreshStatus to refresh_in_progress and invokes the create/update view Lambda asynchronously. Caller must have editor or owner access on the dataset (via role_id). Dataset must be DatasetType=view, ViewType=materialized, and IsActive=yes. No request body. Not idempotent while a refresh is already in progress (DWH-1018).
📄️ Get user Lake Formation data permissions on a dataset
Returns fine-grained Lake Formation column/row permissions for the path userid on the dataset. LF (TargetLocation=lf) datasets only (else IPV-1058). Response is UserDataPermissions with TablePermissions[] and DataFilterPermissions[]. Each permission entry includes Columns, ColumnCondition (Include|Exclude), and for data filters optional Rows and Name. Dataset must exist, be active, and registration completed; path userid must have access to the dataset. Query params limit/offset/sortby/sortorder/projectionExpression are accepted by API Gateway but not applied by the handler (full permission set returned). Safe to retry (read-only).
📄️ Update user Lake Formation data permissions on a dataset
Updates fine-grained Lake Formation data permissions for the path userid on an LF dataset. Request body is UserDataPermissions (TablePermissions / DataFilterPermissions). On success the Message is 'User data permissions updated successfully'. LF-only (else IPV-1058). Note: handler wiring for this PUT is light today; the documented success Message matches the intended update path.
📄️ List Lake Formation data filters (or TBAC column access) on a dataset
Returns Lake Formation data-cell filters for the dataset when is_tbac is omitted/false. Caller must have access to the dataset. Owners/editors see all filters; read-only callers only see filters whose EffectiveTags grant them access. Not supported when the dataset is TBAC-enabled (unless is_tbac=true, which returns TBAC column-tag access instead of LF filters).
📄️ Create a Lake Formation data filter on a dataset
Creates a Lake Formation data-cells filter and starts the async data-permission grant workflow (Step Functions). Caller (role_id) must be owner or editor of the dataset. Not supported for TBAC-enabled datasets. Name must not contain whitespace; Lake Formation filter name is derived as {Domain}_{DatasetName}_{Name} (truncated to 255). Not idempotent: recreating an existing filter name fails in Lake Formation (DS-1079).
📄️ Update TBAC column-level tags on a dataset
Updates Lake Formation column tags for a TBAC-enabled dataset. Requires is_tbac=true. Dataset must be TBAC-enabled and RegistrationStatus completed. Tags must already have table-level access on the dataset. Column AccessType changes are limited to read-only and restrict.
📄️ Update an existing Lake Formation data filter
Replaces AuthorizedTags (EffectiveTags) and updates Columns/Rows on an existing Lake Formation data filter identified by path dfname, then starts the async grant/revoke workflow.
📄️ Delete a Lake Formation data filter on a dataset
Starts async deletion of the data filter identified by dfname (revokes grants and removes the Lake Formation filter). Caller must be owner or editor. Not supported for TBAC-enabled datasets. dfname must exist for the dataset or IPV-1046 is returned. AUTH-1011 if the caller lacks access.
📄️ Trigger Iceberg/Hudi/DeltaLake dataload for pending files
Starts an asynchronous Iceberg/Hudi/DeltaLake dataload for pending Landing Zone files on the dataset. Handler is fileUploadS3LZTrigger.
📄️ Delete pending Iceberg/Hudi/DeltaLake Landing Zone files
Synchronously deletes pending Landing Zone objects and file-loads metadata for an Iceberg/Hudi/DeltaLake dataset. Handler is icebergDataloads.
📄️ List Iceberg table optimizers for a dataset
Retrieves AWS Glue table optimizer configuration and status for an Iceberg-only dataset (IsIcebergTable=true). Not supported for IcebergCatalog=s3tables (GE-1010). Manages Glue table optimizers of types compaction, retention, and orphan-file-deletion.
📄️ Create an Iceberg Glue table optimizer
Creates and configures an AWS Glue Iceberg table optimizer for the dataset. Iceberg-only (IsIcebergTable=true); not supported for IcebergCatalog=s3tables (GE-1010). type query param is required and must be one of compaction | retention | orphan-file-deletion.
📄️ Update an Iceberg Glue table optimizer
Updates configuration of an existing AWS Glue Iceberg table optimizer. Iceberg-only; not supported for IcebergCatalog=s3tables (GE-1010). type query param is required (compaction | retention | orphan-file-deletion). Body is Enabled plus optional Configuration (same shape as POST). If the optimizer does not exist, Glue EntityNotFoundException is surfaced as 'Optimizer not found. Use POST to create.'
📄️ Delete an Iceberg Glue table optimizer
Deletes an AWS Glue Iceberg table optimizer for the dataset. Iceberg-only; not supported for IcebergCatalog=s3tables (GE-1010). type query param is required (compaction | retention | orphan-file-deletion). When no optimizer types remain for the dataset, the server cleans up the optimizer role S3 inline policy partition for that dataset.
📄️ List Iceberg Glue table optimizer runs
Returns run history for a specific AWS Glue Iceberg table optimizer. Iceberg-only; not supported for IcebergCatalog=s3tables (GE-1010). type query param is required (compaction | retention | orphan-file-deletion). Optional maxResults caps how many runs are returned after paginating Glue list_table_optimizer_runs. Response body is {'TableOptimizerRuns': [...]} with EventType, timestamps, and type-specific metrics when present.
📄️ Add users as Data Stewards of a dataset
Adds users as Data Stewards of a dataset. Only owners/editors can add stewards, and only users who already have Owner or Editor access on the dataset (direct access, not Dataset Level Access alone) can be made stewards. Request body is #/components/requestBodies/AddOrRemoveStewardsRequestBody with required non-empty DataStewards. Example: {'DataStewards': ['alice@example.com', 'bob@example.com']}.
📄️ Remove users from Data Stewards of a dataset
Removes users from Data Stewards of a dataset. Only owners/editors can remove stewards. Request body is #/components/requestBodies/AddOrRemoveStewardsRequestBody with required non-empty DataStewards. Example: {'DataStewards': ['alice@example.com', 'bob@example.com']}.