Génération d'URL

Générer des URLs d'entités

GET /api/{tenantId}/url/generate

Générez des URLs directes vers les pages et entités mindzieStudio. Cette API crée des URLs correctement formatées pour naviguer vers des projets, tableaux de bord, investigations, notebooks, blocs et autres entités.

Authentification

Nécessite une authentification par token Bearer :

Authorization: Bearer {api_key}

Requête

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

Paramètres d'URL

Paramètre Type Obligatoire Description
tenantId GUID Oui L'identifiant du locataire

Paramètres de requête

Paramètre Type Obligatoire Description
type String Oui Le type d'URL à générer (voir Types d'URL ci-dessous)
entityId GUID Conditionnel ID de l'entité pour les pages spécifiques à une entité
parentId GUID Conditionnel ID parent (projectId ou notebookId selon le type)
baseUrl String Non URL de base à remplacer (par défaut origine de la requête)

Types d'URL

Pages de liste

Ces types d'URL retournent des URLs directes vers des pages de liste/index :

Type parentId requis Modèle d'URL généré
projects Non /projects?tenantId={tenantId}
apps Non /apps?tenantId={tenantId}
investigations Oui (projectId) /investigations?projectId={parentId}
dashboards-list Oui (projectId) /dashboards?projectId={parentId}
datasets Oui (projectId) /manage-datasets?projectId={parentId}
actions Oui (projectId) /actions?projectId={parentId}
bpmn Oui (projectId) /bpmn-editor?projectId={parentId}

Pages d'entité

Ces types d'URL retournent des URLs /navigate qui redirigent vers des entités spécifiques :

Type entityId parentId Description
dashboard dashboardId - Vue d'un tableau de bord unique
analysis notebookId - Page de notebook/analyse
block blockId notebookId Bloc spécifique sur une page notebook
enrichment enrichmentNotebookId projectId (optionnel) Notebook d'enrichissement

Réponse

Structure de la réponse

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

Champs de la réponse

Champ Type Description
url String L'URL complète vers la page ou l'entité demandée
entityType String Le type d'URL générée (correspond au paramètre type)
entityId GUID ou null L'ID de l'entité si une URL spécifique à une entité a été générée
tenantId GUID L'ID du locataire utilisé dans la requête

Exemples

Pages de liste

Obtenir l'URL de la liste des projets

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

Réponse :

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

Obtenir les investigations pour un projet

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

Réponse :

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

Obtenir la liste des tableaux de bord pour un projet

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

Pages d'entité

Lien direct vers un tableau de bord

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

Réponse :

{
  "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"
}

Lien direct vers un notebook/une analyse

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

Lien direct vers un bloc spécifique

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

Réponse :

{
  "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"
}

Exemple JavaScript

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(`Échec de la génération de l'URL : ${response.status}`);
    }

    return response.json();
  }

  // Méthodes pratiques
  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
    });
  }
}

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

// Obtenir l'URL vers la liste des projets
const projectsUrl = await urlGen.getProjectsUrl();
console.log('URL des projets :', projectsUrl.url);

// Obtenir l'URL vers un tableau de bord spécifique
const dashboardUrl = await urlGen.getDashboardUrl('dashboard-guid');
console.log('URL du tableau de bord :', dashboardUrl.url);

// Obtenir l'URL vers un bloc spécifique
const blockUrl = await urlGen.getBlockUrl('block-guid', 'notebook-guid');
console.log('URL du bloc :', blockUrl.url);

Exemple Python

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]:
        """Génère une URL pour le type et l'entité spécifiés"""
        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()

    # Méthodes pratiques pour les pages de liste
    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']

    # Méthodes pratiques pour les pages d'entité
    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']


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

# Obtenir différentes URLs
projects_url = url_gen.get_projects_url()
print(f"Projets : {projects_url}")

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

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

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

Intégration avec le serveur MCP

Les assistants de codage IA peuvent générer des URLs via le serveur MCP :

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

Voir Intégration avec le serveur MCP pour la documentation complète.

Cas d'utilisation

Partage de liens

Générez des URLs partageables vers des tableaux de bord, investigations ou blocs d'analyse spécifiques.

Flux de travail d'intégration

Créez des liens de navigation dans des systèmes externes qui pointent directement vers mindzieStudio.

Permettez aux outils IA de générer et ouvrir des pages spécifiques dans l'application.

Reporting automatisé

Incluez des liens directs vers des tableaux de bord ou analyses pertinents dans les rapports automatisés.

Gestion des erreurs

Code statut Description
200 Succès - URL générée
400 Requête incorrecte - type invalide ou paramètres requis manquants
401 Non autorisé - token d'authentification invalide ou manquant
404 Non trouvé - entité introuvable (pour les URLs spécifiques à une entité)