Soruşturma Yönetimi

mindzieStudio projeleri kapsamında soruşturmaları yönetin. Not defterleri içeren soruşturmalar oluşturun, alın, güncelleyin ve silin; ayrıca süreç madenciliği analiz iş akışlarını tanımlayın.

Bağlantı Testi

Yetkisiz Ping

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

Kimlik doğrulaması gerektirmeyen test uç noktası. Ağ bağlantısını doğrulamak için kullanın.

Yanıt

Ping Successful

Kimlik Doğrulamalı Ping

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

Belirli bir kiracı ve proje için API erişimini doğrulayan kimlik doğrulamalı ping uç noktası.

Yanıt (200 OK)

Ping Successful (tenant id: {tenantId})

Tüm Soruşturmaları Listele

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

Belirtilen projedeki tüm soruşturmaların sayfalı listesini alır.

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı

Sorgu Parametreleri

Parametre Tür Varsayılan Açıklama
page integer 1 Sayfa numarası (sayfalama için)
pageSize integer 50 Sayfa başına öğe sayısı (önerilen maksimum: 100)

Yanıt (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
}

Soruşturma Nesnesi Alanları

Alan Tür Açıklama
investigationId GUID Soruşturmanın benzersiz tanımlayıcısı
projectId GUID Bu soruşturmanın ait olduğu proje
investigationName string Soruşturmanın görüntüleme adı
investigationDescription string Soruşturmanın açıklaması
datasetId GUID Bu soruşturmanın analiz ettiği veri seti
dateCreated datetime Soruşturmanın oluşturulma zamanı
dateModified datetime Soruşturmanın son değiştirilme zamanı
createdBy GUID Soruşturmayı oluşturan kullanıcı
modifiedBy GUID Soruşturmada son değişiklik yapan kullanıcı
investigationOrder decimal Proje içindeki görüntüleme sırası
isUsedForOperationCenter boolean Gerçek zamanlı izleme için kullanılıp kullanılmadığı
investigationFolderId GUID Organizasyon için isteğe bağlı klasör
notebookCount integer Soruşturmada bulunan not defteri sayısı

Soruşturma Detaylarını Al

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

Belirli bir soruşturmanın detaylı bilgisini getirir.

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı
investigationId GUID Evet Soruşturma tanımlayıcısı

Yanıt (200 OK)

Liste yanıtındaki soruşturma nesnesi ile aynı yapıda.

Hata Yanıtları

Bulunamadı (404):

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

Soruşturma Oluştur

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

Mevcut bir veri setine bağlı yeni bir soruşturma oluşturur. Ana bir not defteri otomatik olarak oluşturulur.

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı

İstek Gövdesi

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

İstek Alanları

Alan Tür Zorunlu Açıklama
investigationName string Evet Soruşturma adı
investigationDescription string Hayır Soruşturmanın açıklaması
datasetId GUID Evet Analizi yapılacak veri seti
isUsedForOperationCenter boolean Hayır Gerçek zamanlı izleme için etkinleştir (varsayılan: false)

Yanıt (201 Created)

Oluşturulan soruşturma nesnesini döner (Get Investigation ile aynı yapı).

Hata Yanıtları

Kötü İstek (400):

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

Soruşturmayı Güncelle

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

Mevcut bir soruşturmanın özelliklerini günceller. Tüm alanlar isteğe bağlıdır.

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı
investigationId GUID Evet Soruşturma tanımlayıcısı

İstek Gövdesi

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

İstek Alanları

Alan Tür Zorunlu Açıklama
investigationName string Hayır Yeni soruşturma adı
investigationDescription string Hayır Yeni açıklama
isUsedForOperationCenter boolean Hayır Operasyon merkezini etkinleştir/devre dışı bırak

Yanıt (200 OK)

Güncellenmiş soruşturma nesnesini döner.

Hata Yanıtları

Bulunamadı (404):

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

Soruşturmayı Sil

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

Bir soruşturmayı ve İLGİLİ TÜM not defterlerini kalıcı olarak siler.

UYARI: Bu GERİ ALINAMAYAN YIKICI bir işlemdir.

Kademeli Silme İçeriği

  • Soruşturmaki tüm not defterleri
  • Tüm blok yapılandırmaları
  • Tüm yürütme geçmişi
  • Tüm analiz sonuçları

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı
investigationId GUID Evet Soruşturma tanımlayıcısı

Yanıt (204 No Content)

Başarılı silme işleminde yanıt gövdesi yoktur.

Hata Yanıtları

Bulunamadı (404):

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

Uygulama Örnekleri

cURL

# Tüm soruşturmaları listele
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"

# Soruşturma detaylarını al
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"

# Yeni bir soruşturma oluştur
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"
  }'

# Soruşturmaları güncelle
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"
  }'

# Soruşturmayı sil (DİKKAT: Geri alınamaz!)
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):
        """Projede tüm soruşturmaları listele."""
        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):
        """Soruşturma detaylarını al."""
        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):
        """Yeni bir soruşturma oluştur."""
        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):
        """Mevcut bir soruşturmayı güncelle."""
        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):
        """Soruşturmayı sil (DİKKAT: Geri alınamaz!)."""
        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

# Kullanım
manager = InvestigationManager('your-auth-token')

# Tüm soruşturmaları listele
result = manager.list_investigations()
print(f"Toplam soruşturma: {result['totalCount']}")

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

# Yeni soruşturma oluştur
new_inv = manager.create_investigation(
    name='API Test Investigation',
    dataset_id='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
    description='API üzerinden oluşturuldu'
)
print(f"Oluşturuldu: {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(`Başarısız: ${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(`Başarısız: ${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(`Başarısız: ${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(`Başarısız: ${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(`Başarısız: ${response.status}`);
    return null; // 204 No Content
  }
}

// Kullanım
const manager = new InvestigationManager('your-auth-token');

const investigations = await manager.listInvestigations();
console.log(`${investigations.totalCount} soruşturma bulundu`);

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

// Yeni soruşturma oluştur
const newInv = await manager.createInvestigation(
  'API Test Investigation',
  'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
  'API üzerinden oluşturuldu'
);
console.log(`Oluşturuldu: ${newInv.investigationId}`);