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}`);