Blok Türü Keşfi
Birleştirilmiş Blok Türleri Uç Noktası
GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Tek bir API çağrısında mevcut tüm blok türlerini (filtreler, hesaplayıcılar ve zenginleştirmeler) keşfedin. Bu birleştirilmiş uç nokta, mindzieStudio'da bulunan tüm analiz yetenekleri hakkında eksiksiz bilgi almak için önerilen yöntemdir.
Neden Birleştirilmiş Uç Noktayı Kullanmalı?
Birleştirilmiş uç nokta, bireysel kategori uç noktalarını sorgulamaya kıyasla birçok avantaj sağlar:
- Tek Teklif: Birden fazla istek yerine tek API çağrısıyla tüm blok türlerini alın
- Eksiksiz Meta Veri: Kategoriye özgü uç noktalarla sunulmayan zenginleştirmeleri içerir
- Gruplandırılmış Yanıt: Sonuçlar blok kategorisine göre düzenlenir, kolay işleme için
- Zengin Meta Veri: Her blok türü dokümantasyon URL'leri, kullanım notları ve ilgili bloklar içerir
- AI Entegrasyonu: AI kodlama asistanları ve MCP sunucu entegrasyonu için optimize edilmiştir
İstek
GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Authorization: Bearer {token}
Yol Parametreleri
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
tenantId |
GUID | Evet | Kiracı tanımlayıcısı |
projectId |
GUID | Evet | Proje tanımlayıcısı |
Yanıt
Yanıt Yapısı
{
"BlockTypes": [...],
"Categories": ["Özellik Filtreleri", "Zaman Filtreleri", "Hesaplayıcılar", ...],
"TotalCount": 45,
"ByBlockCategory": {
"Filter": [...],
"Calculator": [...],
"Enrichment": [...]
}
}
Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
BlockTypes |
Dizi | Tüm blok türleri eksiksiz meta veri ile |
Categories |
Dizi | Tüm benzersiz kategorilerin listesi |
TotalCount |
Tam sayı | Mevcut toplam blok türü sayısı |
ByBlockCategory |
Nesne | Filtre/Hesaplayıcı/Zenginleştirme kategorilerine göre gruplandırılmış blok türleri |
Blok Türü Nesnesi
BlockTypes dizisindeki her blok türü şunları içerir:
| Alan | Tür | Açıklama |
|---|---|---|
OperatorName |
String | Blok türü için benzersiz tanımlayıcı (ör. "CaseAttributeFilter") |
DisplayName |
String | Kullanıcı arayüzünde gösterilen okunabilir ad |
Description |
String | Blokun ne yaptığına dair kısa açıklama |
Category |
String | İşlevsel kategori (ör. "Özellik Filtreleri", "Zaman Filtreleri") |
BlockType |
String | Üst düzey sınıflandırma: "Filter", "Calculator" veya "Enrichment" |
DocumentationUrl |
String | Bu blok türü için dokümantasyon sayfasının URL'si |
UsageFrequency |
String | Blok türünün kullanım sıklığı ("High", "Medium", "Low") |
ExcludeFromOrFilter |
Boolean | Bu filtrenin OR kombinasyonlarında kullanılıp kullanılmayacağı |
AutoTitleEnabled |
Boolean | Otomatik başlık oluşturma desteği olup olmadığı |
SupportedDisplayTypes |
Dizi | Sonuçlar için desteklenen görselleştirme türleri |
UsageNotes |
String | Bu blok türünü kullanırken ek rehberlik notları |
RelatedBlocks |
Dizi | İlgili blok türlerinin listesi |
CommonUseCases |
Dizi | Bu blok türünün tipik kullanım senaryoları |
Örnek Yanıt
{
"BlockTypes": [
{
"OperatorName": "CaseAttributeFilter",
"DisplayName": "Vaka Özellik Filtresi",
"Description": "Müşteri tipi, bölge veya öncelik seviyesi gibi özellik değerlerine göre vakaları filtreler",
"Category": "Özellik Filtreleri",
"BlockType": "Filter",
"DocumentationUrl": "/mindzie_studio/filters/case-attribute-filter",
"UsageFrequency": "High",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["table", "chart"],
"UsageNotes": "Tam eşleşme, içerir ve regex desenlerini destekler",
"RelatedBlocks": ["EventAttributeFilter", "CaseIdFilter"],
"CommonUseCases": [
"Müşteri segmentine göre filtreleme",
"Belirli bölgelere odaklanma",
"Yüksek öncelikli vakaları analiz etme"
]
},
{
"OperatorName": "CaseDurationCalculator",
"DisplayName": "Vaka Süresi Hesaplayıcısı",
"Description": "Vaka başlangıcından bitişine kadar toplam süreyi hesaplar",
"Category": "Zaman Hesaplayıcıları",
"BlockType": "Calculator",
"DocumentationUrl": "/mindzie_studio/calculators/case-duration-calculator",
"UsageFrequency": "High",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["histogram", "table", "boxplot"],
"UsageNotes": "Süre, projenin yapılandırılmış zaman biriminde hesaplanır",
"RelatedBlocks": ["ActivityDurationCalculator", "WaitTimeCalculator"],
"CommonUseCases": [
"Vaka döngü sürelerini analiz etme",
"Yavaş ilerleyen vakaları belirleme",
"Süreç verimliliğini karşılaştırma"
]
},
{
"OperatorName": "CaseStageCalculator",
"DisplayName": "Vaka Aşama Hesaplayıcısı",
"Description": "Vakalara etkinlik desenleri ve kurallara göre aşama etiketleri atar",
"Category": "Aşama Analizi",
"BlockType": "Enrichment",
"DocumentationUrl": "/mindzie_studio/enrichments/case-stage-calculator",
"UsageFrequency": "Medium",
"ExcludeFromOrFilter": false,
"AutoTitleEnabled": true,
"SupportedDisplayTypes": ["sankey", "table"],
"UsageNotes": "Aşama tanımlarının yapılandırılması gerekir",
"RelatedBlocks": ["CaseStatusEnrichment", "MilestoneDetector"],
"CommonUseCases": [
"Vakanın aşamalardaki ilerlemesini izleme",
"Tıkanma aşamalarını belirleme",
"Aşama geçişlerini izleme"
]
}
],
"Categories": [
"Özellik Filtreleri",
"Zaman Filtreleri",
"Etkinlik Filtreleri",
"Zaman Hesaplayıcıları",
"Sayım Hesaplayıcıları",
"Aşama Analizi",
"Veri Zenginleştirme"
],
"TotalCount": 45,
"ByBlockCategory": {
"Filter": [
{ "OperatorName": "CaseAttributeFilter", "DisplayName": "Vaka Özellik Filtresi", ... },
{ "OperatorName": "DateRangeFilter", "DisplayName": "Tarih Aralığı Filtresi", ... }
],
"Calculator": [
{ "OperatorName": "CaseDurationCalculator", "DisplayName": "Vaka Süresi Hesaplayıcısı", ... }
],
"Enrichment": [
{ "OperatorName": "CaseStageCalculator", "DisplayName": "Vaka Aşama Hesaplayıcısı", ... }
]
}
}
JavaScript Örneği
// Mevcut tüm blok türlerini keşfet
async function discoverAllBlockTypes(tenantId, projectId, token) {
const response = await fetch(
`/api/tenant/${tenantId}/project/${projectId}/block/types/all`,
{
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
);
if (!response.ok) {
throw new Error(`Blok türleri keşfedilemedi: ${response.status}`);
}
const data = await response.json();
console.log(`${data.TotalCount} blok türü keşfedildi:`);
console.log(`- Filtreler: ${data.ByBlockCategory.Filter.length}`);
console.log(`- Hesaplayıcılar: ${data.ByBlockCategory.Calculator.length}`);
console.log(`- Zenginleştirmeler: ${data.ByBlockCategory.Enrichment.length}`);
return data;
}
// Kategoriye göre blok türlerini bul
function getBlockTypesByCategory(allTypes, category) {
return allTypes.BlockTypes.filter(bt => bt.Category === category);
}
// Yüksek kullanımda olan blok türlerini bul
function getHighUsageBlockTypes(allTypes) {
return allTypes.BlockTypes.filter(bt => bt.UsageFrequency === 'High');
}
// Kullanım
const blockTypes = await discoverAllBlockTypes(tenantId, projectId, token);
const timeFilters = getBlockTypesByCategory(blockTypes, 'Zaman Filtreleri');
const popular = getHighUsageBlockTypes(blockTypes);
Python Örneği
import requests
from typing import Dict, List, Any
class BlockTypeDiscovery:
def __init__(self, base_url: str, tenant_id: str, project_id: str, token: str):
self.base_url = base_url
self.tenant_id = tenant_id
self.project_id = project_id
self.headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
def discover_all(self) -> Dict[str, Any]:
"""Mevcut tüm blok türlerini keşfet"""
url = f"{self.base_url}/api/tenant/{self.tenant_id}/project/{self.project_id}/block/types/all"
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def get_filters(self) -> List[Dict]:
"""Tüm filtre blok türlerini al"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Filter', [])
def get_calculators(self) -> List[Dict]:
"""Tüm hesaplayıcı blok türlerini al"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Calculator', [])
def get_enrichments(self) -> List[Dict]:
"""Tüm zenginleştirme blok türlerini al"""
data = self.discover_all()
return data.get('ByBlockCategory', {}).get('Enrichment', [])
def find_by_use_case(self, keyword: str) -> List[Dict]:
"""Kullanım senaryosu anahtar kelimesine uyan blok türlerini bul"""
data = self.discover_all()
results = []
for block_type in data['BlockTypes']:
use_cases = block_type.get('CommonUseCases', [])
if any(keyword.lower() in uc.lower() for uc in use_cases):
results.append(block_type)
return results
# Kullanım
discovery = BlockTypeDiscovery(
'https://your-mindzie-instance.com',
'tenant-guid',
'project-guid',
'your-auth-token'
)
# Tüm blok türlerini keşfet
all_types = discovery.discover_all()
print(f"Toplam blok türü: {all_types['TotalCount']}")
# Kategoriye göre blok türleri al
filters = discovery.get_filters()
calculators = discovery.get_calculators()
enrichments = discovery.get_enrichments()
# Süre analizi için blok türlerini bul
duration_blocks = discovery.find_by_use_case('duration')
Kategoriye Özel Uç Noktalar
Birleştirilmiş uç nokta çoğu kullanım için önerilir. Ancak kategoriye özel uç noktalar da mevcuttur:
| Uç Nokta | Açıklama |
|---|---|
GET /block/types?category=filters |
Sadece filtreler |
GET /block/types?category=calculators |
Sadece hesaplayıcılar |
GET /block/types/{operatorName} |
Tek blok türü detayları |
GET /block/types/{operatorName}/schema |
Bir blok türünün yapılandırma şeması |
MCP Sunucu Entegrasyonu
AI kodlama asistanları, mindzieAPI MCP sunucusunu kullanarak blok türlerini programlı olarak keşfedebilir:
mindzie_list_block_types category="unified"
Bu MCP araç çağrısı aynı birleştirilmiş yanıtı döner ve AI araçlarının tüm mevcut analiz yeteneklerini kolayca anlamasını sağlar.
Tam dokümantasyon için bakınız: MCP Sunucu Entegrasyonu.
Kullanım Senaryoları
Dinamik Arayüzler Oluşturma
Birleştirilmiş uç noktayı kullanarak, blok türü seçim menülerini her seçenek hakkında eksiksiz bilgiyle doldurun.
AI Destekli Analiz
AI asistanları mevcut analiz yeteneklerini keşfedebilir ve kullanıcı hedeflerine göre uygun blok türlerini önerebilir.
Dokümantasyon Oluşturma
Tüm blok türleri ve meta verileri üzerinde gezinerek dinamik dokümantasyon oluşturun.
Yetenek Denetimi
Bir proje için mevcut tüm analiz yeteneklerini listeleyerek tam kapsamlılık sağlayın.