URL Oluşturma

Varlık URL'leri Oluşturma

GET /api/{tenantId}/url/generate

mindzieStudio sayfalarına ve varlıklara doğrudan URL'ler oluşturun. Bu API, projeler, panolar, incelemeler, not defterleri, bloklar ve diğer varlıklara gitmek için düzgün biçimlendirilmiş URL'ler oluşturur.

Kimlik Doğrulama

Bearer token kimlik doğrulaması gerektirir:

Authorization: Bearer {api_key}

İstek

GET /api/{tenantId}/url/generate?type={urlType}&entityId={id}&parentId={parentId}
Authorization: Bearer {token}

Yol Parametreleri

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

Sorgu Parametreleri

Parametre Tür Zorunlu Açıklama
type String Evet Oluşturulacak URL türü (aşağıdaki URL Türlerine bakınız)
entityId GUID Koşullu Varlığa özgü sayfalar için varlık kimliği
parentId GUID Koşullu Üst kimlik (türe bağlı olarak projectId veya notebookId)
baseUrl String Hayır Temel URL üzerine yazma (istek kaynağı varsayılan)

URL Türleri

Liste Sayfaları

Bu URL türleri liste/index sayfalarına doğrudan URL'ler döner:

Tür parentId Gerekli Oluşturulan URL Deseni
projects Hayır /projects?tenantId={tenantId}
apps Hayır /apps?tenantId={tenantId}
investigations Evet (projectId) /investigations?projectId={parentId}
dashboards-list Evet (projectId) /dashboards?projectId={parentId}
datasets Evet (projectId) /manage-datasets?projectId={parentId}
actions Evet (projectId) /actions?projectId={parentId}
bpmn Evet (projectId) /bpmn-editor?projectId={parentId}

Varlık Sayfaları

Bu URL türleri, belirli varlıklara yönlendiren /navigate URL'leri döner:

Tür entityId parentId Açıklama
dashboard dashboardId - Tek panoya görüntüleme
analysis notebookId - Not defteri / analiz sayfası
block blockId notebookId Not defteri sayfasındaki belirli blok
enrichment enrichmentNotebookId projectId (opsiyonel) Zenginleştirme not defteri

Yanıt

Yanıt Yapısı

{
  "url": "https://your-instance.mindziestudio.com/projects?tenantId=...",
  "entityType": "projects",
  "entityId": null,
  "tenantId": "660e8400-e29b-41d4-a716-446655440000"
}

Yanıt Alanları

Alan Tür Açıklama
url String İstenen sayfa veya varlık için tam nitelikli URL
entityType String Oluşturulan URL türü (type parametresi ile eşleşir)
entityId GUID veya null Varlığa özgü URL oluşturulduysa varlık kimliği
tenantId GUID İstek sırasında kullanılan kiracı ID'si

Örnekler

Liste Sayfaları

Projeler Listesi URL'sini Al

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=projects"

Yanıt:

{
  "url": "https://host/projects?tenantId=660e8400-e29b-41d4-a716-446655440000",
  "entityType": "projects",
  "entityId": null,
  "tenantId": "660e8400-e29b-41d4-a716-446655440000"
}

Bir Proje İçin İncelemeleri Al

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=investigations&parentId={projectId}"

Yanıt:

{
  "url": "https://host/investigations?projectId=770e8400-e29b-41d4-a716-446655440001",
  "entityType": "investigations",
  "entityId": null,
  "tenantId": "660e8400-e29b-41d4-a716-446655440000"
}

Bir Proje İçin Panolar Listesini Al

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=dashboards-list&parentId={projectId}"

Varlık Sayfaları

Bir Pano İçin Doğrudan Bağlantı

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=dashboard&entityId={dashboardId}"

Yanıt:

{
  "url": "https://host/navigate?type=dashboard&id=880e8400-e29b-41d4-a716-446655440002",
  "entityType": "dashboard",
  "entityId": "880e8400-e29b-41d4-a716-446655440002",
  "tenantId": "660e8400-e29b-41d4-a716-446655440000"
}

Bir Not Defteri / Analize Doğrudan Bağlantı

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=analysis&entityId={notebookId}"

Belirli Bir Bloka Doğrudan Bağlantı

curl -H "Authorization: Bearer {api_key}" \
  "https://host/api/{tenantId}/url/generate?type=block&entityId={blockId}&parentId={notebookId}"

Yanıt:

{
  "url": "https://host/navigate?type=block&id=990e8400-e29b-41d4-a716-446655440003&notebookId=aa0e8400-e29b-41d4-a716-446655440004",
  "entityType": "block",
  "entityId": "990e8400-e29b-41d4-a716-446655440003",
  "tenantId": "660e8400-e29b-41d4-a716-446655440000"
}

JavaScript Örneği

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

  async generateUrl(type, options = {}) {
    const params = new URLSearchParams({ type });

    if (options.entityId) {
      params.append('entityId', options.entityId);
    }
    if (options.parentId) {
      params.append('parentId', options.parentId);
    }
    if (options.baseUrl) {
      params.append('baseUrl', options.baseUrl);
    }

    const response = await fetch(
      `${this.baseUrl}/api/${this.tenantId}/url/generate?${params}`,
      { headers: this.headers }
    );

    if (!response.ok) {
      throw new Error(`URL oluşturulamadı: ${response.status}`);
    }

    return response.json();
  }

  // Kullanım kolaylığı metotları
  async getProjectsUrl() {
    return this.generateUrl('projects');
  }

  async getInvestigationsUrl(projectId) {
    return this.generateUrl('investigations', { parentId: projectId });
  }

  async getDashboardUrl(dashboardId) {
    return this.generateUrl('dashboard', { entityId: dashboardId });
  }

  async getBlockUrl(blockId, notebookId) {
    return this.generateUrl('block', {
      entityId: blockId,
      parentId: notebookId
    });
  }
}

// Kullanım
const urlGen = new UrlGenerator(
  'https://your-instance.mindziestudio.com',
  'tenant-guid',
  'your-api-token'
);

// Projeler listesi için URL al
const projectsUrl = await urlGen.getProjectsUrl();
console.log('Projeler URL:', projectsUrl.url);

// Belirli bir pano için URL al
const dashboardUrl = await urlGen.getDashboardUrl('dashboard-guid');
console.log('Pano URL:', dashboardUrl.url);

// Belirli bir blok için URL al
const blockUrl = await urlGen.getBlockUrl('block-guid', 'notebook-guid');
console.log('Blok URL:', blockUrl.url);

Python Örneği

import requests
from typing import Optional, Dict, Any

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

    def generate_url(
        self,
        url_type: str,
        entity_id: Optional[str] = None,
        parent_id: Optional[str] = None,
        base_url_override: Optional[str] = None
    ) -> Dict[str, Any]:
        """Belirtilen tür ve varlık için URL oluşturur"""
        params = {'type': url_type}

        if entity_id:
            params['entityId'] = entity_id
        if parent_id:
            params['parentId'] = parent_id
        if base_url_override:
            params['baseUrl'] = base_url_override

        url = f"{self.base_url}/api/{self.tenant_id}/url/generate"
        response = requests.get(url, params=params, headers=self.headers)
        response.raise_for_status()
        return response.json()

    # Liste sayfaları için kolay kullanım metotları
    def get_projects_url(self) -> str:
        return self.generate_url('projects')['url']

    def get_investigations_url(self, project_id: str) -> str:
        return self.generate_url('investigations', parent_id=project_id)['url']

    def get_dashboards_list_url(self, project_id: str) -> str:
        return self.generate_url('dashboards-list', parent_id=project_id)['url']

    def get_datasets_url(self, project_id: str) -> str:
        return self.generate_url('datasets', parent_id=project_id)['url']

    def get_actions_url(self, project_id: str) -> str:
        return self.generate_url('actions', parent_id=project_id)['url']

    # Varlık sayfaları için kolay kullanım metotları
    def get_dashboard_url(self, dashboard_id: str) -> str:
        return self.generate_url('dashboard', entity_id=dashboard_id)['url']

    def get_analysis_url(self, notebook_id: str) -> str:
        return self.generate_url('analysis', entity_id=notebook_id)['url']

    def get_block_url(self, block_id: str, notebook_id: str) -> str:
        return self.generate_url('block', entity_id=block_id, parent_id=notebook_id)['url']

    def get_enrichment_url(self, enrichment_id: str, project_id: Optional[str] = None) -> str:
        return self.generate_url('enrichment', entity_id=enrichment_id, parent_id=project_id)['url']


# Kullanım
url_gen = UrlGenerator(
    'https://your-instance.mindziestudio.com',
    'tenant-guid',
    'your-api-token'
)

# Çeşitli URL'leri al
projects_url = url_gen.get_projects_url()
print(f"Projeler: {projects_url}")

investigations_url = url_gen.get_investigations_url('project-guid')
print(f"İncelemeler: {investigations_url}")

dashboard_url = url_gen.get_dashboard_url('dashboard-guid')
print(f"Pano: {dashboard_url}")

block_url = url_gen.get_block_url('block-guid', 'notebook-guid')
print(f"Blok: {block_url}")

MCP Sunucu Entegrasyonu

AI kodlama asistanları MCP sunucusunu kullanarak URL'ler oluşturabilir:

mindzie_generate_url type="dashboard" entityId="{dashboardId}"

Tam dokümantasyon için MCP Sunucu Entegrasyonu sayfasına bakınız.

Kullanım Senaryoları

Bağlantı Paylaşımı

Belirli panolar, incelemeler veya analiz blokları için paylaşılabilir URL'ler oluşturun.

Entegrasyon İş Akışları

Dış sistemlerde mindzieStudio içinde derin bağlantılayan navigasyon linkleri oluşturun.

AI Asistan Navigasyonu

AI araçlarının uygulamadaki belirli sayfaları oluşturup açmasını sağlayın.

Otomatik Raporlama

Otomatik raporlarda ilgili pano veya analizlere doğrudan bağlantılar dahil edin.

Hata Yönetimi

Durum Kodu Açıklama
200 Başarılı - URL oluşturuldu
400 Hatalı İstek - Geçersiz tür veya eksik zorunlu parametreler
401 Yetkisiz - Geçersiz veya eksik kimlik doğrulama tokenı
404 Bulunamadı - Varlık bulunamadı (varlığa özgü URL için)