
# Truncate Timeseries Index Endpoint

You can do a HTTP POST request to `/gms/operations?action=truncateTimeseriesAspect` endpoint to manage the size of a time series index by removing entries older than a certain timestamp, thereby truncating the table to only the entries needed, to save space. The `getIndexSizes` endpoint can be used to identify the largest indices. The output includes the index parameters needed for this function.

```
curl --location --request POST 'https://demo.datahub.com/api/gms/operations?action=truncateTimeseriesAspect' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
    "entityType": "YOUR_ENTITY_TYPE",
    "aspect": "YOUR_ASPECT_NAME",
    "endTimeMillis": 1000000000000
}'

curl --location --request POST 'https://demo.datahub.com/api/gms/operations?action=truncateTimeseriesAspect' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
    "entityType": "YOUR_ENTITY_TYPE",
    "aspect": "YOUR_ASPECT_NAME",
    "endTimeMillis": 1000000000000,
    "dryRun": false,
    "batchSize": 100,
    "timeoutSeconds": 3600
}'
```

The supported parameters are

- `entityType` - Required type of the entity to truncate the index of, for example, `dataset`.
- `aspect` - Required name of the aspect to truncate the index of, for example, `datasetusagestatistics`. A call to `getIndexSizes` shows the `entityType` and `aspect` parameters for each index along with its size.
- `endTimeMillis` - Required timestamp to truncate the index to. Entities with timestamps older than this time will be deleted.
- `dryRun` - Optional boolean to enable/disable dry run functionality. Default: true. In a dry run, the following information will be printed:

```
{"value":"Delete 0 out of 201 rows (0.00%). Reindexing the aspect without the deleted records. This was a dry run. Run with dryRun = false to execute."}
```

- `batchSize` - Optional integer to control the batch size for the deletion. Default: 10000
- `timeoutSeconds` - Optional integer to set a timeout for the delete operation. Default: No timeout set

The output to the call will be information about how many rows would be deleted and how to proceed for a dry run:

```
{"value":"Delete 0 out of 201 rows (0.00%). Reindexing the aspect without the deleted records. This was a dry run. Run with dryRun = false to execute."}
```

For a non-dry-run, the output will be the Task ID of the asynchronous delete operation. This task ID can be used to monitor the status of the operation.
