Onderzoeksbeheer

Beheer onderzoeken binnen mindzieStudio-projecten. Maak, haal op, werk bij en verwijder onderzoeken die notitieboeken bevatten en definieer procesmining-analyseworkflows.

Connectiviteitstest

Niet-geauthenticeerde Ping

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

Testendpoint dat geen authenticatie vereist. Gebruik dit om netwerkconnectiviteit te verifiëren.

Respons

Ping Geslaagd

Geauthenticeerde Ping

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

Geauthenticeerd ping-endpoint om API-toegang voor een specifieke tenant en project te verifiëren.

Respons (200 OK)

Ping Geslaagd (tenant id: {tenantId})

Alle Onderzoeken Lijst

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

Haalt een gepagineerde lijst op van alle onderzoeken binnen het opgegeven project.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De projectidentificatie

Queryparameters

Parameter Type Standaard Beschrijving
page geheel getal 1 Paginanummer voor paginering
pageSize geheel getal 50 Aantal items per pagina (max aanbevolen: 100)

Respons (200 OK)

{
  "investigations": [
    {
      "investigationId": "11111111-2222-3333-4444-555555555555",
      "projectId": "87654321-4321-4321-4321-210987654321",
      "investigationName": "Order Analysis",
      "investigationDescription": "Procesmining-analyse van orderworkflow",
      "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
}

Onderzoeksobjectvelden

Veld Type Beschrijving
investigationId GUID Unieke identificatie van het onderzoek
projectId GUID Project waartoe dit onderzoek behoort
investigationName string Weergavenaam van het onderzoek
investigationDescription string Beschrijving van het onderzoek
datasetId GUID De dataset die dit onderzoek analyseert
dateCreated datetime Wanneer het onderzoek is aangemaakt
dateModified datetime Wanneer het onderzoek voor het laatst is gewijzigd
createdBy GUID Gebruiker die het onderzoek heeft aangemaakt
modifiedBy GUID Gebruiker die het onderzoek voor het laatst heeft gewijzigd
investigationOrder decimaal Weergavevolgorde binnen het project
isUsedForOperationCenter boolean Of het wordt gebruikt voor realtime monitoring
investigationFolderId GUID Optionele map voor organisatie
notebookCount geheel getal Aantal notitieboeken in het onderzoek

Details van Onderzoek Ophalen

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

Haalt gedetailleerde informatie op voor een specifiek onderzoek.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De projectidentificatie
investigationId GUID Ja De onderzoeksidentificatie

Respons (200 OK)

Zelfde structuur als het onderzoeksobject in de lijstrespons.

Foutresponsen

Niet gevonden (404):

{
  "error": "Onderzoek niet gevonden",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Onderzoek Aanmaken

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

Maakt een nieuw onderzoek aan dat gekoppeld is aan een bestaande dataset. Er wordt automatisch een hoofdnotitieboek gemaakt.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De projectidentificatie

Verzoekbody

{
  "investigationName": "Order Analysis",
  "investigationDescription": "Procesmining-analyse van orderworkflow",
  "datasetId": "12345678-1234-1234-1234-123456789012",
  "isUsedForOperationCenter": false
}

Verzoekvelden

Veld Type Vereist Beschrijving
investigationName string Ja Naam van het onderzoek
investigationDescription string Nee Beschrijving van het onderzoek
datasetId GUID Ja De te analyseren dataset
isUsedForOperationCenter boolean Nee Inschakelen voor realtime monitoring (standaard: false)

Respons (201 Created)

Geeft het aangemaakte onderzoeksobject terug (zelfde structuur als Get Investigation).

Foutresponsen

Ongeldig verzoek (400):

{
  "error": "Dataset niet gevonden met ID '12345678-1234-1234-1234-123456789012'"
}

Onderzoek Bijwerken

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

Werkt de eigenschappen van een bestaand onderzoek bij. Alle velden zijn optioneel.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De projectidentificatie
investigationId GUID Ja De onderzoeksidentificatie

Verzoekbody

{
  "investigationName": "Bijgewerkte Analyse Naam",
  "investigationDescription": "Bijgewerkte beschrijving",
  "isUsedForOperationCenter": true
}

Verzoekvelden

Veld Type Vereist Beschrijving
investigationName string Nee Nieuwe naam voor het onderzoek
investigationDescription string Nee Nieuwe beschrijving
isUsedForOperationCenter boolean Nee Inschakelen/uitschakelen operation center

Respons (200 OK)

Geeft het bijgewerkte onderzoeksobject terug.

Foutresponsen

Niet gevonden (404):

{
  "error": "Onderzoek niet gevonden",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Onderzoek Verwijderen

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

Verwijdert permanent een onderzoek en ALLE gekoppelde notitieboeken.

WAARSCHUWING: Dit is een DESTRUCTIEVE actie die NIET ongedaan kan worden gemaakt.

Cascade-verwijdering Omvat

  • Alle notitieboeken in het onderzoek
  • Alle blokconfiguraties
  • Alle uitvoeringsgeschiedenis
  • Alle analyseresultaten

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De projectidentificatie
investigationId GUID Ja De onderzoeksidentificatie

Respons (204 Geen Inhoud)

Geen response body bij succesvolle verwijdering.

Foutresponsen

Niet gevonden (404):

{
  "error": "Onderzoek niet gevonden",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Voorbeelden van Implementatie

cURL

# Alle onderzoeken lijst
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"

# Onderzoek details ophalen
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"

# Nieuw onderzoek aanmaken
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": "Kwartaalanalyse orders",
    "datasetId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
  }'

# Onderzoek bijwerken
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": "Bijgewerkte beschrijving"
  }'

# Onderzoek verwijderen (LET OP: Onomkeerbaar!)
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):
        """Lijst van alle onderzoeken in het project."""
        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):
        """Onderzoekdetails ophalen."""
        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):
        """Een nieuw onderzoek aanmaken."""
        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):
        """Een bestaand onderzoek bijwerken."""
        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):
        """Onderzoek verwijderen (LET OP: Onomkeerbaar!)."""
        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 Geen inhoud

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

# Alle onderzoeken lijst
result = manager.list_investigations()
print(f"Totaal aantal onderzoeken: {result['totalCount']}")

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

# Nieuw onderzoek aanmaken
new_inv = manager.create_investigation(
    name='API Test Onderzoek',
    dataset_id='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
    description='Aangemaakt via API'
)
print(f"Aangemaakt: {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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${response.status}`);
    return null; // 204 Geen Inhoud
  }
}

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

const investigations = await manager.listInvestigations();
console.log(`Gevonden ${investigations.totalCount} onderzoeken`);

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

// Nieuw onderzoek aanmaken
const newInv = await manager.createInvestigation(
  'API Test Onderzoek',
  'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
  'Aangemaakt via API'
);
console.log(`Aangemaakt: ${newInv.investigationId}`);