Dataset Creatie

Nieuwe Datasets Aanmaken

Maak datasets aan vanuit CSV-bestanden, ZIP-pakketten of binaire bestanden. Elk formaat vereist specifieke kolommappingen voor proces mining analyse.

Connectiviteit Testen

Ongeautoriseerde Ping

GET /api/{tenantId}/{projectId}/dataset/unauthorized-ping

Testendpoint dat geen authenticatie vereist.

Respons

Ping Geslaagd

Geauthenticeerde Ping

GET /api/{tenantId}/{projectId}/dataset/ping

Geauthenticeerd ping-endpoint om API-toegang te verifiëren.

Respons (200 OK)

Ping Geslaagd (tenant id: {tenantId})

Alle Datasets Lijst

GET /api/{tenantId}/{projectId}/dataset

Haalt alle datasets op binnen het opgegeven project.

Respons (200 OK)

{
  "datasets": [
    {
      "datasetId": "550e8400-e29b-41d4-a716-446655440000",
      "datasetName": "Purchase Order Process",
      "datasetDescription": "Event log from SAP",
      "projectId": "660e8400-e29b-41d4-a716-446655440000",
      "caseIdColumnName": "CaseID",
      "activityColumnName": "Activity",
      "timeColumnName": "Timestamp",
      "resourceColumnName": "Resource",
      "beginTimeColumnName": null,
      "expectedOrderColumnName": null,
      "useDateOnlySorting": false,
      "useOnlyEventColumns": false,
      "dateCreated": "2024-01-15T10:30:00Z",
      "dateModified": "2024-01-15T14:45:00Z",
      "createdBy": "user@example.com",
      "modifiedBy": "user@example.com"
    }
  ]
}

Dataset Aanmaken vanuit CSV

POST /api/{tenantId}/{projectId}/dataset/csv

Maakt een nieuwe dataset aan op basis van een CSV-bestand upload met kolommappingen.

Verzoek (multipart/form-data)

Veld Type Vereist Beschrijving
file bestand Ja CSV-bestand om te uploaden (max 1GB)
datasetName string Ja Naam voor de nieuwe dataset
caseIdColumn string Ja Kolomnaam die case-ID's bevat
activityNameColumn string Ja Kolomnaam die activiteiten bevat
activityTimeColumn string Ja Kolomnaam die tijdstempels bevat
resourceColumn string Nee Kolomnaam die resource/uitvoerder bevat
startTimeColumn string Nee Kolomnaam voor activiteit starttijden
cultureInfo string Nee Cultuur voor parsing (standaard: "en-US")

Respons (200 OK)

{
  "datasetId": "550e8400-e29b-41d4-a716-446655440000",
  "caseCount": 5200,
  "eventCount": 150000,
  "invalidValueCount": 0,
  "skippedRowsCount": 0,
  "errors": [],
  "rowIssues": [],
  "statusCode": 200
}

Fout Respons (422 Unprocessable Entity)

{
  "errors": ["Kolom 'CaseID' niet gevonden in CSV-bestand"],
  "statusCode": 422
}

Dataset Aanmaken vanuit ZIP-pakket

POST /api/{tenantId}/{projectId}/dataset/package

Maakt een nieuwe dataset aan uit een ZIP-pakket dat databestanden bevat.

Verzoek (multipart/form-data)

Veld Type Vereist Beschrijving
file bestand Ja ZIP-pakket bestand (max 1GB)
datasetName string Ja Naam voor de nieuwe dataset
cultureInfo string Nee Cultuur voor parsing (standaard: "en-US")

Respons (200 OK)

{
  "datasetId": "550e8400-e29b-41d4-a716-446655440000",
  "caseCount": 5200,
  "eventCount": 150000,
  "invalidValueCount": 0,
  "skippedRowsCount": 0,
  "errors": [],
  "rowIssues": [],
  "statusCode": 200
}

Dataset Aanmaken vanuit Binary

POST /api/{tenantId}/{projectId}/dataset/binary

Maakt een nieuwe dataset aan uit een binaire bestand met kolommappingen.

Verzoek (multipart/form-data)

Veld Type Vereist Beschrijving
file bestand Ja Binaire bestand om te uploaden (max 1GB)
datasetName string Ja Naam voor de nieuwe dataset
caseIdColumn string Ja Kolomnaam die case-ID's bevat
activityNameColumn string Ja Kolomnaam die activiteiten bevat
activityTimeColumn string Ja Kolomnaam die tijdstempels bevat
resourceColumn string Nee Kolomnaam die resource/uitvoerder bevat
startTimeColumn string Nee Kolomnaam voor activiteit starttijden

Respons (200 OK)

Zelfde structuur als CSV creatie respons.

Implementatie Voorbeelden

cURL - CSV Upload

curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/csv" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@event_log.csv" \
  -F "datasetName=Purchase Orders" \
  -F "caseIdColumn=CaseID" \
  -F "activityNameColumn=Activity" \
  -F "activityTimeColumn=Timestamp" \
  -F "resourceColumn=User" \
  -F "cultureInfo=en-US"

cURL - ZIP Pakket Upload

curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/package" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@data_package.zip" \
  -F "datasetName=SAP Export" \
  -F "cultureInfo=en-US"

Python

import requests

TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'

class DatasetUploader:
    def __init__(self, token):
        self.headers = {'Authorization': f'Bearer {token}'}

    def create_from_csv(self, file_path, dataset_name, case_id_col, activity_col, time_col,
                        resource_col=None, start_time_col=None, culture='en-US'):
        """Maak dataset aan vanuit CSV-bestand."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/csv'

        with open(file_path, 'rb') as f:
            files = {'file': (file_path, f, 'text/csv')}
            data = {
                'datasetName': dataset_name,
                'caseIdColumn': case_id_col,
                'activityNameColumn': activity_col,
                'activityTimeColumn': time_col,
                'cultureInfo': culture
            }
            if resource_col:
                data['resourceColumn'] = resource_col
            if start_time_col:
                data['startTimeColumn'] = start_time_col

            response = requests.post(url, headers=self.headers, files=files, data=data)

        if response.ok:
            return response.json()
        else:
            raise Exception(f'Upload mislukt: {response.text}')

    def create_from_package(self, file_path, dataset_name, culture='en-US'):
        """Maak dataset aan vanuit ZIP-pakket."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/package'

        with open(file_path, 'rb') as f:
            files = {'file': (file_path, f, 'application/zip')}
            data = {
                'datasetName': dataset_name,
                'cultureInfo': culture
            }

            response = requests.post(url, headers=self.headers, files=files, data=data)

        if response.ok:
            return response.json()
        else:
            raise Exception(f'Upload mislukt: {response.text}')

    def list_datasets(self):
        """Lijst alle datasets in het project."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset'
        response = requests.get(url, headers=self.headers)
        return response.json()

# Gebruik
uploader = DatasetUploader('your-auth-token')

# Aanmaken vanuit CSV
result = uploader.create_from_csv(
    'event_log.csv',
    'Purchase Order Process',
    'CaseID',
    'Activity',
    'Timestamp',
    resource_col='User'
)
print(f"Dataset aangemaakt: {result['datasetId']}")
print(f"Cases: {result['caseCount']}, Events: {result['eventCount']}")

# Alle datasets lijst
datasets = uploader.list_datasets()
for ds in datasets['datasets']:
    print(f"- {ds['datasetName']} ({ds['datasetId']})")

JavaScript/Node.js

const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';

class DatasetUploader {
  constructor(token) {
    this.token = token;
  }

  async createFromCsv(file, datasetName, caseIdCol, activityCol, timeCol, options = {}) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset/csv`;

    const formData = new FormData();
    formData.append('file', file);
    formData.append('datasetName', datasetName);
    formData.append('caseIdColumn', caseIdCol);
    formData.append('activityNameColumn', activityCol);
    formData.append('activityTimeColumn', timeCol);
    formData.append('cultureInfo', options.culture || 'en-US');

    if (options.resourceColumn) {
      formData.append('resourceColumn', options.resourceColumn);
    }
    if (options.startTimeColumn) {
      formData.append('startTimeColumn', options.startTimeColumn);
    }

    const response = await fetch(url, {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${this.token}` },
      body: formData
    });

    if (response.ok) {
      return await response.json();
    } else {
      throw new Error(`Upload mislukt: ${await response.text()}`);
    }
  }

  async listDatasets() {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset`;
    const response = await fetch(url, {
      headers: { 'Authorization': `Bearer ${this.token}` }
    });
    return await response.json();
  }
}

// Gebruik (browser)
const uploader = new DatasetUploader('your-auth-token');
const fileInput = document.getElementById('csvFile');

fileInput.addEventListener('change', async (e) => {
  const file = e.target.files[0];

  const result = await uploader.createFromCsv(
    file,
    'Mijn Dataset',
    'CaseID',
    'Activity',
    'Timestamp',
    { resourceColumn: 'User' }
  );

  console.log(`Aangemaakt: ${result.datasetId}`);
  console.log(`Cases: ${result.caseCount}, Events: ${result.eventCount}`);
});

Respons Velden

Veld Type Beschrijving
datasetId GUID ID van de aangemaakte dataset
caseCount integer Aantal unieke geïmporteerde cases
eventCount integer Totaal aantal geïmporteerde events
invalidValueCount integer Aantal foutieve waarden tegengekomen
skippedRowsCount integer Aantal rijen overgeslagen vanwege fouten
errors array Lijst met foutmeldingen
rowIssues array Gedetailleerde informatie over rijniveau problemen
statusCode integer HTTP statuscode

Best Practices

  • Valideer Kolomnamen: Zorg dat kolomnamen exact overeenkomen (case-sensitive)
  • Controleer Cultuurinstellingen: Gebruik passende cultuur voor datum-/getalformaten
  • Omgaan met Grote Bestanden: Monitor upload voortgang bij bestanden tot 1GB
  • Bekijk Rij Problemen: Controleer rowIssues array voor data kwaliteitsproblemen
  • Unieke Dataset Namen: Dataset namen moeten uniek zijn binnen een project