Proje Yönetimi

mindzieStudio kiracıları içinde projeleri yönetin. Veri setleri, araştırmalar, panolar ve analiz iş akışları içeren projeleri oluşturun, alın, güncelleyin ve silin.

Bağlantı Testi

Yetkisiz Ping

GET /api/{tenantId}/project/unauthorized-ping

Kimlik doğrulama 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}/project/ping

Belirli bir kiracı için API erişimini doğrulamak amacıyla kimlik doğrulamalı ping uç noktası.

Yanıt (200 OK)

Ping Successful (tenant id: {tenantId})

Tüm Projeleri Listele

GET /api/{tenantId}/project

Belirtilen kiracı içinde kimlik doğrulanmış kullanıcının erişimine sahip olduğu tüm projelerin sayfalı listesini getirir.

Yol Parametreleri

Parametre Tip Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı

Sorgu Parametreleri

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

Yanıt (200 OK)

{
  "projects": [
    {
      "projectId": "87654321-4321-4321-4321-210987654321",
      "tenantId": "12345678-1234-1234-1234-123456789012",
      "projectName": "Purchase Order Analysis",
      "projectDescription": "Process mining analysis of P2P workflow",
      "dateCreated": "2024-01-15T10:30:00Z",
      "dateModified": "2024-01-20T14:45:00Z",
      "createdBy": "user@example.com",
      "modifiedBy": "user@example.com",
      "isActive": true,
      "datasetCount": 3,
      "investigationCount": 5,
      "dashboardCount": 2,
      "userCount": 8
    }
  ],
  "totalCount": 15,
  "page": 1,
  "pageSize": 50
}

Proje Nesnesi Alanları

Alan Tip Açıklama
projectId GUID Projenin benzersiz tanımlayıcısı
tenantId GUID Projenin ait olduğu kiracı
projectName string Projenin görüntü adı
projectDescription string Proje açıklaması
dateCreated datetime Projenin oluşturulma zamanı
dateModified datetime Projenin son değiştirilme zamanı
createdBy string Projeyi oluşturan kullanıcı
modifiedBy string Projeyi son değiştiren kullanıcı
isActive boolean Projenin aktif olup olmadığı
datasetCount integer Projedeki veri seti sayısı
investigationCount integer Araştırma sayısı
dashboardCount integer Pano sayısı
userCount integer Erişimi olan kullanıcı sayısı

Proje Detaylarını Getir

GET /api/{tenantId}/project/{projectId}

Belirli bir proje için detaylı bilgileri getirir.

Yol Parametreleri

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

Yanıt (200 OK)

Liste yanıtındaki proje nesnesi ile aynı yapıda.

Hata Yanıtları

Bulunamadı (404):

{
  "error": "Project not found with ID '{projectId}'. The project may have been deleted or the ID is incorrect.",
  "projectId": "87654321-4321-4321-4321-210987654321"
}

Proje Özetini Getir

GET /api/{tenantId}/project/{projectId}/summary

Projeye ait toplanmış istatistikler ve ana metrikleri getirir.

Yanıt (200 OK)

{
  "projectId": "87654321-4321-4321-4321-210987654321",
  "projectName": "Purchase Order Analysis",
  "projectDescription": "Process mining analysis of P2P workflow",
  "dateCreated": "2024-01-15T10:30:00Z",
  "dateModified": "2024-01-20T14:45:00Z",
  "statistics": {
    "totalDatasets": 3,
    "totalInvestigations": 5,
    "totalDashboards": 2,
    "totalNotebooks": 12,
    "totalUsers": 8
  }
}

Proje Oluştur

POST /api/{tenantId}/project

Belirtilen kiracı içinde yeni bir proje oluşturur.

İstek Gövdesi

{
  "projectName": "New Analysis Project",
  "projectDescription": "Process mining analysis for procurement workflow"
}

İstek Alanları

Alan Tip Zorunlu Açıklama
projectName string Evet Proje adı (maksimum 255 karakter)
projectDescription string Hayır Açıklama (maksimum 1000 karakter)

Yanıt (201 Created)

Oluşturulan proje nesnesini döner (Proje Getir ile aynı yapıda).

Hata Yanıtları

Kötü İstek (400):

{
  "error": "Validation failed",
  "validationErrors": ["Project name is required"]
}

Projeyi Güncelle

PUT /api/{tenantId}/project/{projectId}

Mevcut bir projenin özelliklerini günceller.

Yol Parametreleri

Parametre Tip Açıklama
tenantId GUID Kiracı tanımlayıcısı
projectId GUID Proje tanımlayıcısı

İstek Gövdesi

{
  "projectName": "Updated Project Name",
  "projectDescription": "Updated description",
  "isActive": true
}

İstek Alanları

Alan Tip Zorunlu Açıklama
projectName string Evet Yeni proje adı
projectDescription string Hayır Yeni açıklama
isActive boolean Hayır Projeyi etkinleştir/kapama

Yanıt (200 OK)

Güncellenmiş proje nesnesini döner.


Projeyi Sil

DELETE /api/{tenantId}/project/{projectId}

Bir projeyi ve İLGİLİ TÜM verileri kalıcı olarak siler.

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

Kaskad Silme İçeriği

  • Projedeki tüm veri setleri
  • Tüm araştırmalar ve not defterleri
  • Tüm panolar
  • Tüm kullanıcı izinleri
  • Tüm blob depolama dosyaları (olay kayıtları, ekler)

Yol Parametreleri

Parametre Tip Açıklama
tenantId GUID Kiracı tanımlayıcısı
projectId GUID Proje tanımlayıcısı

Yanıt (200 OK)

{
  "message": "Project deleted successfully",
  "projectId": "87654321-4321-4321-4321-210987654321"
}

Uygulama Örnekleri

cURL

# Tüm projeleri listele
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Proje detaylarını al
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project/87654321-4321-4321-4321-210987654321" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Yeni proje oluştur
curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "projectName": "Q4 Analysis",
    "projectDescription": "Quarterly procurement analysis"
  }'

# Projeyi güncelle
curl -X PUT "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project/87654321-4321-4321-4321-210987654321" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "projectName": "Q4 Analysis - Final",
    "projectDescription": "Updated description"
  }'

# Projeyi sil (DİKKAT: Geri alınamaz!)
curl -X DELETE "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project/87654321-4321-4321-4321-210987654321" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Python

import requests

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

class ProjectManager:
    def __init__(self, token):
        self.headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }

    def list_projects(self, page=1, page_size=50):
        """Kiracıdaki tüm projeleri listele."""
        url = f'{BASE_URL}/api/{TENANT_ID}/project'
        params = {'page': page, 'pageSize': page_size}
        response = requests.get(url, headers=self.headers, params=params)
        response.raise_for_status()
        return response.json()

    def get_project(self, project_id):
        """Proje detaylarını al."""
        url = f'{BASE_URL}/api/{TENANT_ID}/project/{project_id}'
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def create_project(self, name, description=''):
        """Yeni proje oluştur."""
        url = f'{BASE_URL}/api/{TENANT_ID}/project'
        payload = {
            'projectName': name,
            'projectDescription': description
        }
        response = requests.post(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def update_project(self, project_id, name=None, description=None, is_active=None):
        """Mevcut projeyi güncelle."""
        url = f'{BASE_URL}/api/{TENANT_ID}/project/{project_id}'
        payload = {}
        if name:
            payload['projectName'] = name
        if description is not None:
            payload['projectDescription'] = description
        if is_active is not None:
            payload['isActive'] = is_active
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def delete_project(self, project_id):
        """Projeyi sil (DİKKAT: Geri alınamaz!)."""
        url = f'{BASE_URL}/api/{TENANT_ID}/project/{project_id}'
        response = requests.delete(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

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

# Tüm projeleri listele
result = manager.list_projects()
print(f"Toplam projeler: {result['totalCount']}")

for project in result['projects']:
    print(f"- {project['projectName']}: {project['datasetCount']} veri seti")

# Yeni proje oluştur
new_project = manager.create_project(
    name='API Test Projesi',
    description='API üzerinden oluşturuldu'
)
print(f"Oluşturuldu: {new_project['projectId']}")

JavaScript/Node.js

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

class ProjectManager {
  constructor(token) {
    this.headers = {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    };
  }

  async listProjects(page = 1, pageSize = 50) {
    const url = `${BASE_URL}/api/${TENANT_ID}/project?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 getProject(projectId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/project/${projectId}`;
    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 createProject(name, description = '') {
    const url = `${BASE_URL}/api/${TENANT_ID}/project`;
    const response = await fetch(url, {
      method: 'POST',
      headers: this.headers,
      body: JSON.stringify({ projectName: name, projectDescription: description })
    });
    if (!response.ok) throw new Error(`Başarısız: ${response.status}`);
    return await response.json();
  }

  async deleteProject(projectId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/project/${projectId}`;
    const response = await fetch(url, {
      method: 'DELETE',
      headers: this.headers
    });
    if (!response.ok) throw new Error(`Başarısız: ${response.status}`);
    return await response.json();
  }
}

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

const projects = await manager.listProjects();
console.log(`${projects.totalCount} proje bulundu`);