API Reference: Organizations
API reference for organization management and user administration endpoints.
warning
Deleting a dataset will permanently remove all associated datatables and data. This action cannot be undone.
Usage:
# Get the presigned URL with required parameters
URL=$(curl -s -H "X-API-Key: your-api-key" \
"https://api.processmind.com/v1/tenant/{tenantId}/datatables/{datatableId}/uploads/presigned-url?datasetid={datasetId}&filename=data.csv&filesize=1024&filelastmodified=1704067200000")
# Upload the file
curl -X PUT --upload-file "data.csv" -H "Content-Type: text/csv" "$URL" info
Presigned URLs expire after a limited time. Use the URL promptly after obtaining it. If the upload fails, request a new presigned URL.
Usage:
# Get the download URL
RESPONSE=$(curl -s -H "X-API-Key: your-api-key" \
"https://api.processmind.com/v1/tenant/{tenantId}/datatables/{dataTableId}/download")
# Extract URL and download the file
DOWNLOAD_URL=$(echo $RESPONSE | jq -r '.downloadUrl')
curl -o "data.csv" "$DOWNLOAD_URL" info
For uploaded datatables, the original file format is preserved (CSV, Parquet, ORC, JSONL, or Excel). For simulation results, the file is always CSV format.
Usage:
# Get delta presigned URL
RESPONSE=$(curl -s -H "X-API-Key: your-api-key" \
"https://api.processmind.com/v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/presigned-url?delta=true&filename=delta.csv&filesize=1024&filelastmodified=1704067200000")
# Upload the delta file
UPLOAD_URL=$(echo $RESPONSE | jq -r '.PreSignedUploadUrl')
curl -X PUT --upload-file "delta.csv" -H "Content-Type: text/csv" "$UPLOAD_URL" info
The datatable must already have initial data loaded before delta uploads can be used. The delta file must use the same format as the original upload (for example, CSV delta for CSV original, Parquet delta for Parquet original) and have the same column structure. Excel and XES files are not supported for delta uploads.
info
After uploading through the presigned URL, ProcessMind automatically processes the delta and combines it with the original data. Poll GET /datatables/{dataTableId} until hasDataLoaded is true to know when processing is done.
Datasets are collections of related datatables that belong together logically.
Endpoint: GET /v1/tenant/{tenantId}/datasets
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| limit | integer | query | No | Maximum number of items to return |
| offset | integer | query | No | Number of items to skip |
Response (200):
List of datasets
[
{
"id": "00000000-0000-0000-0000-000000000000",
"treeParentId": "00000000-0000-0000-0000-000000000000",
"treeNodeType": "Dataset",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"dataTableId": "00000000-0000-0000-0000-000000000000"
}
] Errors:
Endpoint: POST /v1/tenant/{tenantId}/datasets
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
Request Body:
{
"displayName": "string",
"treeParentId": "00000000-0000-0000-0000-000000000000",
"treeNodeType": "Dataset"
} | Field | Type | Required | Description |
|---|---|---|---|
| displayName | string | Yes | Dataset name shown in the data tree Max length: 128 |
| treeParentId | string | No | Parent folder id (null = top level) Format: uuid |
| treeNodeType | Dataset | TreeGroup | No | Dataset or folder Allowed values: Dataset, TreeGroupDefault: Dataset |
Response (201):
Created dataset
{
"id": "00000000-0000-0000-0000-000000000000",
"treeParentId": "00000000-0000-0000-0000-000000000000",
"treeNodeType": "Dataset",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"dataTableId": "00000000-0000-0000-0000-000000000000"
} | Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Format: uuid |
| treeParentId | string | Yes | Format: uuid |
| treeNodeType | Dataset | TreeGroup | Yes | Allowed values: Dataset, TreeGroupDefault: Dataset |
| displayName | string | Yes | Default: ""Max length: 128 |
| createdAt | string | Yes | Format: date-time |
| updatedAt | string | Yes | Format: date-time |
| dataTableId | string | Yes | Format: uuid |
Errors:
Endpoint: GET /v1/tenant/{tenantId}/datasets/{datasetId}
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| datasetId | string | path | Yes | Format: uuid |
Response (200):
Dataset
{
"id": "00000000-0000-0000-0000-000000000000",
"treeParentId": "00000000-0000-0000-0000-000000000000",
"treeNodeType": "Dataset",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"dataTableId": "00000000-0000-0000-0000-000000000000"
} | Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Format: uuid |
| treeParentId | string | Yes | Format: uuid |
| treeNodeType | Dataset | TreeGroup | Yes | Allowed values: Dataset, TreeGroupDefault: Dataset |
| displayName | string | Yes | Default: ""Max length: 128 |
| createdAt | string | Yes | Format: date-time |
| updatedAt | string | Yes | Format: date-time |
| dataTableId | string | Yes | Format: uuid |
Errors:
Endpoint: DELETE /v1/tenant/{tenantId}/datasets/{datasetId}
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| datasetId | string | path | Yes | Format: uuid |
Response (200):
Dataset deleted
{
"success": true,
"message": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| success | boolean | Yes | |
| message | string | Yes |
Errors:
Endpoint: GET /v1/tenant/{tenantId}/datasets/{datasetId}/datatables
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| datasetId | string | path | Yes | Format: uuid |
| limit | integer | query | No | Maximum number of items to return |
| offset | integer | query | No | Number of items to skip |
Response (200):
List of datatables in the dataset
[
{
"id": "00000000-0000-0000-0000-000000000000",
"datasetId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"hasDataLoaded": true,
"filterExpression": "string",
"metaInfo": {
"type": "nodata"
}
}
] Errors:
Endpoint: POST /v1/tenant/{tenantId}/datasets/{datasetId}/datatables
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| datasetId | string | path | Yes | Format: uuid |
Request Body:
{
"displayName": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| displayName | string | Yes | Datatable name Max length: 128 |
Response (201):
Created datatable
{
"id": "00000000-0000-0000-0000-000000000000",
"datasetId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"hasDataLoaded": true,
"filterExpression": "string",
"metaInfo": {
"type": "nodata"
}
} | Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Format: uuid |
| datasetId | string | Yes | Format: uuid |
| displayName | string | Yes | Default: ""Max length: 128 |
| createdAt | string | Yes | Format: date-time |
| updatedAt | string | Yes | Format: date-time |
| hasDataLoaded | boolean | Yes | Default: false |
| filterExpression | string | Yes | Max length: 4096 |
| metaInfo | object | object | object | object | Yes |
Errors:
Datatables store the actual event log data used for process mining.
Endpoint: GET /v1/tenant/{tenantId}/datatables
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| limit | integer | query | No | Maximum number of items to return |
| offset | integer | query | No | Number of items to skip |
Response (200):
List of datatables
[
{
"id": "00000000-0000-0000-0000-000000000000",
"datasetId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"hasDataLoaded": true,
"filterExpression": "string",
"metaInfo": {
"type": "nodata"
}
}
] Errors:
Endpoint: GET /v1/tenant/{tenantId}/datatables/{dataTableId}
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Response (200):
Datatable
{
"id": "00000000-0000-0000-0000-000000000000",
"datasetId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"hasDataLoaded": true,
"filterExpression": "string",
"metaInfo": {
"type": "nodata"
}
} | Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Format: uuid |
| datasetId | string | Yes | Format: uuid |
| displayName | string | Yes | Default: ""Max length: 128 |
| createdAt | string | Yes | Format: date-time |
| updatedAt | string | Yes | Format: date-time |
| hasDataLoaded | boolean | Yes | Default: false |
| filterExpression | string | Yes | Max length: 4096 |
| metaInfo | object | object | object | object | Yes |
Errors:
Endpoint: PUT /v1/tenant/{tenantId}/datatables/{dataTableId}
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Request Body:
{
"displayName": "string",
"filterExpression": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| displayName | string | No | Datatable name Max length: 128 |
| filterExpression | string | No | Filter expression applied to the data Max length: 4096 |
Response (200):
Updated datatable
{
"id": "00000000-0000-0000-0000-000000000000",
"datasetId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"updatedAt": "2024-03-15T16:30:00Z",
"hasDataLoaded": true,
"filterExpression": "string",
"metaInfo": {
"type": "nodata"
}
} | Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Format: uuid |
| datasetId | string | Yes | Format: uuid |
| displayName | string | Yes | Default: ""Max length: 128 |
| createdAt | string | Yes | Format: date-time |
| updatedAt | string | Yes | Format: date-time |
| hasDataLoaded | boolean | Yes | Default: false |
| filterExpression | string | Yes | Max length: 4096 |
| metaInfo | object | object | object | object | Yes |
Errors:
Endpoint: GET /v1/tenant/{tenantId}/datatables/{dataTableId}/download
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Response (200):
Download URL
{
"downloadUrl": "string",
"expiresInSeconds": 0
} | Field | Type | Required | Description |
|---|---|---|---|
| downloadUrl | string | Yes | |
| expiresInSeconds | number | Yes |
Errors:
Requires the uploadData scope on the API key.
Endpoint: POST /v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/multipart/abort
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Request Body:
{
"uploadId": "string",
"uploadHandle": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| uploadId | string | Yes | |
| uploadHandle | string | Yes | Opaque handle returned by the initiate step |
Response (200):
Aborted
{
"message": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| message | string | Yes |
Errors:
Requires the uploadData scope on the API key. Assembles the uploaded parts (using their ETags) and triggers event log processing.
Endpoint: POST /v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/multipart/complete
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Request Body:
{
"uploadId": "string",
"uploadHandle": "string",
"parts": [
{
"partNumber": 0,
"eTag": "string"
}
]
} | Field | Type | Required | Description |
|---|---|---|---|
| uploadId | string | Yes | |
| uploadHandle | string | Yes | Opaque handle returned by the initiate step |
| parts | object[] | Yes |
Response (200):
Completed ({ completed: true })
{
"message": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| message | string | Yes |
Errors:
Requires the uploadData scope on the API key. Returns an uploadId and an opaque uploadHandle to pass to the subsequent parts, complete and abort calls. Suitable for large files.
Endpoint: POST /v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/multipart/initiate
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Request Body:
{
"fileName": "string",
"fileSize": 0,
"fileLastModified": 0,
"partCount": 0,
"delta": true,
"datasetId": "00000000-0000-0000-0000-000000000000",
"modelId": "00000000-0000-0000-0000-000000000000"
} | Field | Type | Required | Description |
|---|---|---|---|
| fileName | string | Yes | |
| fileSize | number | Yes | |
| fileLastModified | number | Yes | |
| partCount | number | No | Number of parts to presign (default 10) |
| delta | boolean | No | Whether this is a delta (incremental) upload |
| datasetId | string | No | Format: uuid |
| modelId | string | No | Format: uuid |
Response (200):
Initiated upload
{
"uploadId": "string",
"uploadHandle": "string",
"partCount": 0,
"partSizeBytes": 0
} | Field | Type | Required | Description |
|---|---|---|---|
| uploadId | string | No | |
| uploadHandle | string | No | Opaque handle for the parts/complete/abort steps |
| partCount | number | No | |
| partSizeBytes | number | No |
Errors:
Requires the uploadData scope on the API key. Returns one presigned PUT URL per requested part number.
Endpoint: POST /v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/multipart/parts
Auth: Tenant-scoped API key · write scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
Request Body:
{
"uploadId": "string",
"uploadHandle": "string",
"partNumbers": [
0
]
} | Field | Type | Required | Description |
|---|---|---|---|
| uploadId | string | Yes | |
| uploadHandle | string | Yes | Opaque handle returned by the initiate step |
| partNumbers | number[] | Yes |
Response (200):
Part presigned URLs ({ uploadId, parts: [{ partNumber, url }] })
{
"message": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| message | string | Yes |
Errors:
Requires the uploadData scope on the API key (independent of read/write). The declared filesize (bytes) is checked against the platform’s maximum upload size; the actual object size is re-verified when the file lands.
Endpoint: GET /v1/tenant/{tenantId}/datatables/{dataTableId}/uploads/presigned-url
Auth: Tenant-scoped API key · read scope
Parameters:
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | Yes | Format: uuid |
| dataTableId | string | path | Yes | Format: uuid |
| filename | string | query | Yes | |
| filesize | string | query | Yes | File size in bytes (checked against the platform’s maximum upload size) |
| filelastmodified | string | query | Yes | |
| datasetid | string | query | No | Required for full (non-delta) uploads |
| modelid | string | query | No | Format: uuid |
| delta | true | false | query | No | Allowed values: true, false |
| partnumber | string | query | No | |
| validforseconds | integer | query | No | Presigned URL lifetime in seconds (1–3600, default 3600) |
Response (200):
Presigned URL
{
"PreSignedUploadUrl": "string"
} | Field | Type | Required | Description |
|---|---|---|---|
| PreSignedUploadUrl | string | Yes | Presigned S3 PUT URL (valid ~1h) |
Errors:
Get instant access with no credit card and no waiting. Turn the way your organization works into clear, connected process designs.
Build your process architecture, define ownership and controls, and align roles and responsibilities across every level.
Start your free trial and create one reliable foundation for governing, managing, and continuously improving your processes.
We use cookies to improve your experience, personalize content, and analyze traffic. Anonymous page measurement happens without them; analytics consent adds an identifier that links your visits. By clicking "Accept All," you consent to our use of cookies.