Untersuchungsverwaltung

Verwalten Sie Untersuchungen innerhalb von mindzieStudio-Projekten. Erstellen, abrufen, aktualisieren und löschen Sie Untersuchungen, die Notizbücher enthalten und Prozess-Mining-Analyse-Workflows definieren.

Verbindungstest

Unauthorisierter Ping

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

Test-Endpunkt, der keine Authentifizierung erfordert. Verwenden Sie diesen, um die Netzwerkverbindung zu überprüfen.

Antwort

Ping Successful

Authentifizierter Ping

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

Authentifizierter Ping-Endpunkt, um den API-Zugriff für einen bestimmten Mandanten und ein Projekt zu überprüfen.

Antwort (200 OK)

Ping Successful (tenant id: {tenantId})

Alle Untersuchungen auflisten

GET /api/{tenantId}/{projectId}/investigation

Ruft eine paginierte Liste aller Untersuchungen im angegebenen Projekt ab.

Pfadparameter

Parameter Typ Erforderlich Beschreibung
tenantId GUID Ja Der Mandantenbezeichner
projectId GUID Ja Der Projektbezeichner

Abfrageparameter

Parameter Typ Standard Beschreibung
page integer 1 Seitenzahl für die Paginierung
pageSize integer 50 Anzahl der Elemente pro Seite (max. empfohlen: 100)

Antwort (200 OK)

{
  "investigations": [
    {
      "investigationId": "11111111-2222-3333-4444-555555555555",
      "projectId": "87654321-4321-4321-4321-210987654321",
      "investigationName": "Order Analysis",
      "investigationDescription": "Process mining analysis of order workflow",
      "datasetId": "12345678-1234-1234-1234-123456789012",
      "dateCreated": "2024-01-15T10:30:00Z",
      "dateModified": "2024-01-20T14:45:00Z",
      "createdBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "modifiedBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "investigationOrder": 1.0,
      "isUsedForOperationCenter": false,
      "investigationFolderId": null,
      "notebookCount": 3
    }
  ],
  "totalCount": 5,
  "page": 1,
  "pageSize": 50
}

Felder des Untersuchungsobjekts

Feld Typ Beschreibung
investigationId GUID Eindeutige Kennung der Untersuchung
projectId GUID Projekt, zu dem die Untersuchung gehört
investigationName string Anzeigename der Untersuchung
investigationDescription string Beschreibung der Untersuchung
datasetId GUID Das Dataset, das von der Untersuchung analysiert wird
dateCreated datetime Erstellungsdatum der Untersuchung
dateModified datetime Datum der letzten Änderung der Untersuchung
createdBy GUID Benutzer, der die Untersuchung erstellt hat
modifiedBy GUID Benutzer, der die Untersuchung zuletzt geändert hat
investigationOrder decimal Anzeigereihenfolge innerhalb des Projekts
isUsedForOperationCenter boolean Ob für die Echtzeitüberwachung verwendet
investigationFolderId GUID Optionaler Ordner zur Organisation
notebookCount integer Anzahl der Notizbücher in der Untersuchung

Details einer Untersuchung abrufen

GET /api/{tenantId}/{projectId}/investigation/{investigationId}

Ruft detaillierte Informationen zu einer bestimmten Untersuchung ab.

Pfadparameter

Parameter Typ Erforderlich Beschreibung
tenantId GUID Ja Der Mandantenbezeichner
projectId GUID Ja Der Projektbezeichner
investigationId GUID Ja Die Untersuchung-ID

Antwort (200 OK)

Gleiche Struktur wie das Untersuchungsobjekt in der Listen-Antwort.

Fehlermeldungen

Nicht gefunden (404):

{
  "error": "Investigation not found",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Untersuchung erstellen

POST /api/{tenantId}/{projectId}/investigation

Erstellt eine neue Untersuchung, die mit einem bestehenden Dataset verknüpft ist. Ein Hauptnotizbuch wird automatisch erstellt.

Pfadparameter

Parameter Typ Erforderlich Beschreibung
tenantId GUID Ja Der Mandantenbezeichner
projectId GUID Ja Der Projektbezeichner

Request Body

{
  "investigationName": "Order Analysis",
  "investigationDescription": "Process mining analysis of order workflow",
  "datasetId": "12345678-1234-1234-1234-123456789012",
  "isUsedForOperationCenter": false
}

Request Felder

Feld Typ Erforderlich Beschreibung
investigationName string Ja Untersuchungsname
investigationDescription string Nein Beschreibung der Untersuchung
datasetId GUID Ja Zu analysierendes Dataset
isUsedForOperationCenter boolean Nein Aktivieren für Echtzeitüberwachung (Standard: false)

Antwort (201 Created)

Gibt das erstellte Untersuchungsobjekt zurück (gleiche Struktur wie Get Investigation).

Fehlermeldungen

Fehlerhafte Anfrage (400):

{
  "error": "Dataset not found with ID '12345678-1234-1234-1234-123456789012'"
}

Untersuchung aktualisieren

PUT /api/{tenantId}/{projectId}/investigation/{investigationId}

Aktualisiert die Eigenschaften einer bestehenden Untersuchung. Alle Felder sind optional.

Pfadparameter

Parameter Typ Erforderlich Beschreibung
tenantId GUID Ja Der Mandantenbezeichner
projectId GUID Ja Der Projektbezeichner
investigationId GUID Ja Die Untersuchung-ID

Request Body

{
  "investigationName": "Updated Analysis Name",
  "investigationDescription": "Updated description",
  "isUsedForOperationCenter": true
}

Request Felder

Feld Typ Erforderlich Beschreibung
investigationName string Nein Neuer Untersuchungsname
investigationDescription string Nein Neue Beschreibung
isUsedForOperationCenter boolean Nein Aktivieren/Deaktivieren des Operation Centers

Antwort (200 OK)

Gibt das aktualisierte Untersuchungsobjekt zurück.

Fehlermeldungen

Nicht gefunden (404):

{
  "error": "Investigation not found",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Untersuchung löschen

DELETE /api/{tenantId}/{projectId}/investigation/{investigationId}

Löscht eine Untersuchung und ALLE zugehörigen Notizbücher dauerhaft.

WARNUNG: Dies ist eine DESTRUKTIVE Aktion, die NICHT rückgängig gemacht werden kann.

Cascade-Löschung beinhaltet

  • Alle Notizbücher in der Untersuchung
  • Alle Block-Konfigurationen
  • Alle Ausführungsverläufe
  • Alle Analyseergebnisse

Pfadparameter

Parameter Typ Erforderlich Beschreibung
tenantId GUID Ja Der Mandantenbezeichner
projectId GUID Ja Der Projektbezeichner
investigationId GUID Ja Die Untersuchung-ID

Antwort (204 No Content)

Keine Antwort bei erfolgreicher Löschung.

Fehlermeldungen

Nicht gefunden (404):

{
  "error": "Investigation not found",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Implementierungsbeispiele

cURL

# Alle Untersuchungen auflisten
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Details einer Untersuchung abrufen
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation/11111111-2222-3333-4444-555555555555" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Neue Untersuchung erstellen
curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "investigationName": "Q4 Analysis",
    "investigationDescription": "Quarterly order analysis",
    "datasetId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
  }'

# Untersuchung aktualisieren
curl -X PUT "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation/11111111-2222-3333-4444-555555555555" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "investigationName": "Q4 Analysis - Final",
    "investigationDescription": "Updated description"
  }'

# Untersuchung löschen (VORSICHT: Unwiderruflich!)
curl -X DELETE "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation/11111111-2222-3333-4444-555555555555" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

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 InvestigationManager:
    def __init__(self, token):
        self.headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }

    def list_investigations(self, page=1, page_size=50):
        """Listet alle Untersuchungen im Projekt auf."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation'
        params = {'page': page, 'pageSize': page_size}
        response = requests.get(url, headers=self.headers, params=params)
        response.raise_for_status()
        return response.json()

    def get_investigation(self, investigation_id):
        """Ruft Details einer Untersuchung ab."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation/{investigation_id}'
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def create_investigation(self, name, dataset_id, description='', is_operation_center=False):
        """Erstellt eine neue Untersuchung."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation'
        payload = {
            'investigationName': name,
            'investigationDescription': description,
            'datasetId': dataset_id,
            'isUsedForOperationCenter': is_operation_center
        }
        response = requests.post(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def update_investigation(self, investigation_id, name=None, description=None, is_operation_center=None):
        """Aktualisiert eine bestehende Untersuchung."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation/{investigation_id}'
        payload = {}
        if name:
            payload['investigationName'] = name
        if description is not None:
            payload['investigationDescription'] = description
        if is_operation_center is not None:
            payload['isUsedForOperationCenter'] = is_operation_center
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def delete_investigation(self, investigation_id):
        """Löscht eine Untersuchung (VORSICHT: Unwiderruflich!)."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation/{investigation_id}'
        response = requests.delete(url, headers=self.headers)
        response.raise_for_status()
        return None  # 204 No Content

# Nutzung
manager = InvestigationManager('your-auth-token')

# Alle Untersuchungen auflisten
result = manager.list_investigations()
print(f"Gesamtanzahl der Untersuchungen: {result['totalCount']}")

for inv in result['investigations']:
    print(f"- {inv['investigationName']}: {inv['notebookCount']} Notizbücher")

# Neue Untersuchung erstellen
new_inv = manager.create_investigation(
    name='API Test Investigation',
    dataset_id='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
    description='Created via API'
)
print(f"Erstellt: {new_inv['investigationId']}")

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 InvestigationManager {
  constructor(token) {
    this.headers = {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    };
  }

  async listInvestigations(page = 1, pageSize = 50) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation?page=${page}&pageSize=${pageSize}`;
    const response = await fetch(url, { headers: this.headers });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async getInvestigation(investigationId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation/${investigationId}`;
    const response = await fetch(url, { headers: this.headers });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async createInvestigation(name, datasetId, description = '', isOperationCenter = false) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation`;
    const response = await fetch(url, {
      method: 'POST',
      headers: this.headers,
      body: JSON.stringify({
        investigationName: name,
        investigationDescription: description,
        datasetId: datasetId,
        isUsedForOperationCenter: isOperationCenter
      })
    });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async updateInvestigation(investigationId, updates) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation/${investigationId}`;
    const response = await fetch(url, {
      method: 'PUT',
      headers: this.headers,
      body: JSON.stringify(updates)
    });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async deleteInvestigation(investigationId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation/${investigationId}`;
    const response = await fetch(url, {
      method: 'DELETE',
      headers: this.headers
    });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return null; // 204 No Content
  }
}

// Nutzung
const manager = new InvestigationManager('your-auth-token');

const investigations = await manager.listInvestigations();
console.log(`Gefundene Untersuchungen: ${investigations.totalCount}`);

investigations.investigations.forEach(inv => {
  console.log(`- ${inv.investigationName}: ${inv.notebookCount} Notizbücher`);
});

// Neue Untersuchung erstellen
const newInv = await manager.createInvestigation(
  'API Test Investigation',
  'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
  'Created via API'
);
console.log(`Erstellt: ${newInv.investigationId}`);