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¬ebookId=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.
Navigation par assistant IA
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é) |