Bloktype Ontdekking

Gecentraliseerd Bloktypen Endpoint

GET /api/tenant/{tenantId}/project/{projectId}/block/types/all

Ontdek alle beschikbare bloktypes (filters, calculators en verrijkingen) in één enkele API-aanroep. Dit gecentraliseerde endpoint is de aanbevolen manier om volledige informatie te verkrijgen over alle analysemogelijkheden beschikbaar in mindzieStudio.

Waarom het Gecentraliseerde Endpoint Gebruiken?

Het gecentraliseerde endpoint biedt verschillende voordelen ten opzichte van het opvragen van individuele categorie-endpoints:

  • Enkele Aanvraag: Ontvang alle bloktypes in één API-aanroep in plaats van meerdere verzoeken
  • Volledige Metadata: Inclusief verrijkingen die niet beschikbaar zijn via categorie-specifieke endpoints
  • Gegroepeerde Response: Resultaten zijn geordend per blokcategorie voor eenvoudige verwerking
  • Rijke Metadata: Elk bloktype bevat documentatie-URL's, gebruiksaanwijzingen en gerelateerde blokken
  • AI-integratie: Geoptimaliseerd voor AI-programmeerassistenten en MCP-server integratie

Aanvraag

GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Authorization: Bearer {token}

Padparameters

Parameter Type Verplicht Omschrijving
tenantId GUID Ja De tenant-identificatie
projectId GUID Ja De project-identificatie

Response

Response-structuur

{
  "BlockTypes": [...],
  "Categories": ["Attribute Filters", "Time Filters", "Calculators", ...],
  "TotalCount": 45,
  "ByBlockCategory": {
    "Filter": [...],
    "Calculator": [...],
    "Enrichment": [...]
  }
}

Response-velden

Veld Type Omschrijving
BlockTypes Array Alle bloktypes met volledige metadata
Categories Array Lijst van alle unieke categorieën
TotalCount Integer Totaal aantal beschikbare bloktypes
ByBlockCategory Object Bloktypes gegroepeerd per Filter/Calculator/Verrijking

Bloktype-object

Elk bloktype in de BlockTypes array bevat:

Veld Type Omschrijving
OperatorName String Unieke identificatie van het bloktype (bijv. "CaseAttributeFilter")
DisplayName String Menselijk leesbare naam die in de UI wordt getoond
Description String Korte beschrijving van wat het blok doet
Category String Functionele categorie (bijv. "Attribute Filters", "Time Filters")
BlockType String Topniveau classificatie: "Filter", "Calculator" of "Enrichment"
DocumentationUrl String URL naar de documentatiepagina voor dit bloktype
UsageFrequency String Hoe vaak dit bloktype wordt gebruikt ("High", "Medium", "Low")
ExcludeFromOrFilter Boolean Of dit filter gebruikt kan worden in OR-combinaties
AutoTitleEnabled Boolean Of automatische titelgeneratie ondersteund wordt
SupportedDisplayTypes Array Ondersteunde visualisatietypes voor resultaten
UsageNotes String Aanvullende richtlijnen voor het gebruik van dit bloktype
RelatedBlocks Array Lijst van gerelateerde bloktypes
CommonUseCases Array Typische scenario's waarin dit bloktype nuttig is

Voorbeeld Response

{
  "BlockTypes": [
    {
      "OperatorName": "CaseAttributeFilter",
      "DisplayName": "Case Attribute Filter",
      "Description": "Filter cases op basis van attribuutwaarden zoals klanttype, regio of prioriteitsniveau",
      "Category": "Attribute Filters",
      "BlockType": "Filter",
      "DocumentationUrl": "/mindzie_studio/filters/case-attribute-filter",
      "UsageFrequency": "High",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["table", "chart"],
      "UsageNotes": "Ondersteunt exacte match, bevat en regex patronen",
      "RelatedBlocks": ["EventAttributeFilter", "CaseIdFilter"],
      "CommonUseCases": [
        "Filteren op klantsegment",
        "Focus op specifieke regio's",
        "Analyseer cases met hoge prioriteit"
      ]
    },
    {
      "OperatorName": "CaseDurationCalculator",
      "DisplayName": "Case Duration Calculator",
      "Description": "Bereken de totale duur van cases van begin tot eind",
      "Category": "Time Calculators",
      "BlockType": "Calculator",
      "DocumentationUrl": "/mindzie_studio/calculators/case-duration-calculator",
      "UsageFrequency": "High",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["histogram", "table", "boxplot"],
      "UsageNotes": "Duur wordt berekend in de tijdseenheid die in het project is ingesteld",
      "RelatedBlocks": ["ActivityDurationCalculator", "WaitTimeCalculator"],
      "CommonUseCases": [
        "Analyseer doorlooptijden van cases",
        "Identificeer langzaam lopende cases",
        "Vergelijk proces efficiëntie"
      ]
    },
    {
      "OperatorName": "CaseStageCalculator",
      "DisplayName": "Case Stage Calculator",
      "Description": "Ken fase-labels toe aan cases op basis van activiteitspatronen en regels",
      "Category": "Stage Analysis",
      "BlockType": "Enrichment",
      "DocumentationUrl": "/mindzie_studio/enrichments/case-stage-calculator",
      "UsageFrequency": "Medium",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["sankey", "table"],
      "UsageNotes": "Vereist dat fase-definities zijn geconfigureerd",
      "RelatedBlocks": ["CaseStatusEnrichment", "MilestoneDetector"],
      "CommonUseCases": [
        "Volg de voortgang van cases door fases",
        "Identificeer knelpunten in fases",
        "Monitor faseovergangen"
      ]
    }
  ],
  "Categories": [
    "Attribute Filters",
    "Time Filters",
    "Activity Filters",
    "Time Calculators",
    "Count Calculators",
    "Stage Analysis",
    "Data Enrichment"
  ],
  "TotalCount": 45,
  "ByBlockCategory": {
    "Filter": [
      { "OperatorName": "CaseAttributeFilter", "DisplayName": "Case Attribute Filter", ... },
      { "OperatorName": "DateRangeFilter", "DisplayName": "Date Range Filter", ... }
    ],
    "Calculator": [
      { "OperatorName": "CaseDurationCalculator", "DisplayName": "Case Duration Calculator", ... }
    ],
    "Enrichment": [
      { "OperatorName": "CaseStageCalculator", "DisplayName": "Case Stage Calculator", ... }
    ]
  }
}

JavaScript Voorbeeld

// Ontdek alle beschikbare bloktypes
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(`Ontdekken van bloktypes mislukt: ${response.status}`);
  }

  const data = await response.json();

  console.log(`Ontdekt ${data.TotalCount} bloktypes:`);
  console.log(`- Filters: ${data.ByBlockCategory.Filter.length}`);
  console.log(`- Calculators: ${data.ByBlockCategory.Calculator.length}`);
  console.log(`- Verrijkingen: ${data.ByBlockCategory.Enrichment.length}`);

  return data;
}

// Vind bloktypes per categorie
function getBlockTypesByCategory(allTypes, category) {
  return allTypes.BlockTypes.filter(bt => bt.Category === category);
}

// Vind bloktypes met hoog gebruik
function getHighUsageBlockTypes(allTypes) {
  return allTypes.BlockTypes.filter(bt => bt.UsageFrequency === 'High');
}

// Gebruik
const blockTypes = await discoverAllBlockTypes(tenantId, projectId, token);
const timeFilters = getBlockTypesByCategory(blockTypes, 'Time Filters');
const popular = getHighUsageBlockTypes(blockTypes);

Python Voorbeeld

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]:
        """Ontdek alle beschikbare bloktypes"""
        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]:
        """Haal alle filter-bloktypes op"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Filter', [])

    def get_calculators(self) -> List[Dict]:
        """Haal alle calculator-bloktypes op"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Calculator', [])

    def get_enrichments(self) -> List[Dict]:
        """Haal alle verrijking-bloktypes op"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Enrichment', [])

    def find_by_use_case(self, keyword: str) -> List[Dict]:
        """Vind bloktypes die overeenkomen met een gebruiksscenario keyword"""
        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

# Gebruik
discovery = BlockTypeDiscovery(
    'https://your-mindzie-instance.com',
    'tenant-guid',
    'project-guid',
    'your-auth-token'
)

# Ontdek alle bloktypes
all_types = discovery.discover_all()
print(f"Totaal bloktypes: {all_types['TotalCount']}")

# Haal bloktypes per categorie op
filters = discovery.get_filters()
calculators = discovery.get_calculators()
enrichments = discovery.get_enrichments()

# Vind bloktypes voor duur-analyse
duration_blocks = discovery.find_by_use_case('duration')

Categorie-specifieke Endpoints

Het gecentraliseerde endpoint wordt aanbevolen voor de meeste gebruiksscenario's. Echter, categorie-specifieke endpoints zijn nog steeds beschikbaar:

Endpoint Beschrijving
GET /block/types?category=filters Alleen filters
GET /block/types?category=calculators Alleen calculators
GET /block/types/{operatorName} Details van één bloktype
GET /block/types/{operatorName}/schema Configuratieschema voor een bloktype

MCP Server Integratie

AI-programmeerassistenten kunnen de mindzieAPI MCP-server gebruiken om programmatisch bloktypes te ontdekken:

mindzie_list_block_types category="unified"

Deze MCP-tool-aanroep retourneert dezelfde gecentraliseerde response, waardoor AI-tools eenvoudig alle beschikbare analysemogelijkheden kunnen begrijpen.

Zie MCP Server Integratie voor volledige documentatie.

Gebruiksscenario's

Dynamische UIs Bouwen

Gebruik het gecentraliseerde endpoint om selectie-menu's voor bloktypes te vullen met volledige informatie over elke optie.

AI-gedreven Analyse

AI-assistenten kunnen beschikbare analysemogelijkheden ontdekken en passende bloktypes voorstellen op basis van gebruikersdoelen.

Documentatiegeneratie

Genereer dynamische documentatie door te itereren over alle bloktypes en hun metadata.

Capaciteit Auditing

Som alle beschikbare analysemogelijkheden voor een project op om volledige dekking te waarborgen.