Gestion du Tableau de Bord
Lister et Récupérer les Tableaux de Bord
Accédez aux tableaux de bord qui contiennent des panneaux de visualisation pour les insights de fouille de processus, les KPI et les analyses. Les tableaux de bord sont des conteneurs pour afficher vos résultats analytiques de manière organisée et partageable.
Test de Connectivité
Ping Non Autorisé
GET /api/{tenantId}/{projectId}/dashboard/unauthorized-ping
Point de terminaison de test qui ne nécessite pas d'authentification. Utilisez-le pour vérifier que l'API Dashboard est accessible.
Réponse
Ping Successful
Ping Authentifié
GET /api/{tenantId}/{projectId}/dashboard/ping
Point de terminaison de ping authentifié pour vérifier l'accès à l'API pour un locataire et un projet spécifiques.
Réponse (200 OK)
Ping Successful (tenant id: {tenantId})
Réponse (401 Unauthorized)
{error message describing authorization failure}
Lister Tous les Tableaux de Bord
GET /api/{tenantId}/{projectId}/dashboard
Récupère une liste paginée de tous les tableaux de bord dans le projet spécifié. Chaque tableau de bord inclut les métadonnées, le nombre de panneaux et une URL partageable.
Paramètres de Chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant du locataire |
projectId |
GUID | Oui | Identifiant du projet |
Paramètres de Requête
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
page |
entier | 1 | Numéro de la page pour la pagination |
pageSize |
entier | 50 | Nombre d'éléments par page (max recommandé : 100) |
Réponse (200 OK)
{
"dashboards": [
{
"dashboardId": "880e8400-e29b-41d4-a716-446655440000",
"projectId": "660e8400-e29b-41d4-a716-446655440000",
"name": "Process Overview Dashboard",
"description": "Tableau de bord principal affichant les métriques clés du processus",
"panelCount": 8,
"url": "https://your-instance.com/dashboard/880e8400-e29b-41d4-a716-446655440000",
"dateCreated": "2024-01-15T10:30:00Z",
"dateModified": "2024-01-20T14:45:00Z",
"createdBy": "user@example.com",
"modifiedBy": "user@example.com"
}
],
"totalCount": 25,
"page": 1,
"pageSize": 50
}
Champs de la Réponse
| Champ | Type | Description |
|---|---|---|
dashboards |
tableau | Liste d'objets tableau de bord |
totalCount |
entier | Nombre total de tableaux de bord |
page |
entier | Numéro de la page courante |
pageSize |
entier | Nombre d'éléments par page |
Champs de l'Objet Tableau de Bord
| Champ | Type | Description |
|---|---|---|
dashboardId |
GUID | Identifiant unique du tableau de bord |
projectId |
GUID | Projet auquel appartient ce tableau de bord |
name |
chaîne | Nom affiché du tableau de bord |
description |
chaîne | Description du tableau de bord |
panelCount |
entier | Nombre de panneaux dans le tableau de bord |
url |
chaîne | URL partageable du tableau de bord |
dateCreated |
datetime | Date de création du tableau de bord |
dateModified |
datetime | Date de dernière modification du tableau de bord |
createdBy |
chaîne | Utilisateur ayant créé le tableau de bord |
modifiedBy |
chaîne | Utilisateur ayant modifié le tableau de bord en dernier |
Obtenir les Détails d'un Tableau de Bord
GET /api/{tenantId}/{projectId}/dashboard/{dashboardId}
Récupère des informations complètes sur un tableau de bord spécifique, incluant les métadonnées, le nombre de panneaux et une URL partageable.
Paramètres de Chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant du locataire |
projectId |
GUID | Oui | Identifiant du projet |
dashboardId |
GUID | Oui | Identifiant du tableau de bord |
Réponse (200 OK)
{
"dashboardId": "880e8400-e29b-41d4-a716-446655440000",
"projectId": "660e8400-e29b-41d4-a716-446655440000",
"name": "Process Overview Dashboard",
"description": "Tableau de bord principal affichant les métriques clés du processus et les indicateurs de performance",
"panelCount": 8,
"url": "https://your-instance.com/dashboard/880e8400-e29b-41d4-a716-446655440000",
"dateCreated": "2024-01-15T10:30:00Z",
"dateModified": "2024-01-20T14:45:00Z",
"createdBy": "user@example.com",
"modifiedBy": "user@example.com"
}
Réponses d'Erreur
Non trouvé (404) :
{
"Error": "Tableau de bord introuvable",
"DashboardId": "880e8400-e29b-41d4-a716-446655440000"
}
Création de Tableaux de Bord
La création de tableaux de bord est gérée via l'interface mindzieStudio car elle nécessite un contexte d'investigation et des relations avec les notebooks. Voir Présentation du Tableau de Bord pour plus de détails.
Exemples d'Implémentation
cURL
# Tester la connectivité (pas d'authentification)
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dashboard/unauthorized-ping"
# Tester la connectivité (authentifié)
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dashboard/ping" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Lister tous les tableaux de bord
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dashboard?page=1&pageSize=50" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Obtenir un tableau de bord spécifique
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dashboard/880e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
JavaScript/Node.js
const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';
class DashboardManager {
constructor(token) {
this.headers = {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
};
}
async getAllDashboards(page = 1, pageSize = 50) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dashboard?page=${page}&pageSize=${pageSize}`;
const response = await fetch(url, { headers: this.headers });
return await response.json();
}
async getDashboard(dashboardId) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dashboard/${dashboardId}`;
const response = await fetch(url, { headers: this.headers });
if (response.ok) {
return await response.json();
} else if (response.status === 404) {
throw new Error('Tableau de bord introuvable');
} else {
throw new Error(`Échec de récupération du tableau de bord : ${response.status}`);
}
}
async listAllDashboards() {
const allDashboards = [];
let page = 1;
while (true) {
const result = await this.getAllDashboards(page);
allDashboards.push(...result.dashboards);
if (allDashboards.length >= result.totalCount) {
break;
}
page++;
}
return allDashboards;
}
}
// Utilisation
const manager = new DashboardManager('your-auth-token');
// Obtenir tous les tableaux de bord
const result = await manager.getAllDashboards();
console.log(`Nombre de tableaux de bord trouvés : ${result.totalCount}`);
result.dashboards.forEach(d => {
console.log(`- ${d.name} : ${d.panelCount} panneaux`);
console.log(` URL : ${d.url}`);
});
Python
import requests
TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'
class DashboardManager:
def __init__(self, token):
self.headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
def get_all_dashboards(self, page=1, page_size=50):
"""Obtenir la liste paginée des tableaux de bord."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dashboard'
params = {'page': page, 'pageSize': page_size}
response = requests.get(url, headers=self.headers, params=params)
return response.json()
def get_dashboard(self, dashboard_id):
"""Obtenir les détails d'un tableau de bord."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dashboard/{dashboard_id}'
response = requests.get(url, headers=self.headers)
if response.ok:
return response.json()
elif response.status_code == 404:
raise Exception('Tableau de bord introuvable')
else:
raise Exception(f'Échec de récupération du tableau de bord : {response.status_code}')
def list_all_dashboards(self):
"""Obtenir tous les tableaux de bord (gestion de la pagination)."""
all_dashboards = []
page = 1
while True:
result = self.get_all_dashboards(page=page)
all_dashboards.extend(result['dashboards'])
if len(all_dashboards) >= result['totalCount']:
break
page += 1
return all_dashboards
# Utilisation
manager = DashboardManager('your-auth-token')
# Obtenir tous les tableaux de bord
dashboards = manager.get_all_dashboards()
print(f"Total des tableaux de bord : {dashboards['totalCount']}")
for dashboard in dashboards['dashboards']:
print(f"\nTableau de bord : {dashboard['name']}")
print(f" Panneaux : {dashboard['panelCount']}")
print(f" URL : {dashboard['url']}")
C#
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
public class DashboardListReturn
{
public List<DashboardReturn> Dashboards { get; set; }
public int TotalCount { get; set; }
public int Page { get; set; }
public int PageSize { get; set; }
}
public class DashboardReturn
{
public Guid DashboardId { get; set; }
public Guid ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int PanelCount { get; set; }
public string Url { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public string CreatedBy { get; set; }
public string ModifiedBy { get; set; }
}
public class DashboardApiClient
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
private readonly Guid _tenantId;
private readonly Guid _projectId;
public DashboardApiClient(string baseUrl, Guid tenantId, Guid projectId, string accessToken)
{
_baseUrl = baseUrl;
_tenantId = tenantId;
_projectId = projectId;
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
}
public async Task<DashboardListReturn> GetAllDashboardsAsync(int page = 1, int pageSize = 50)
{
var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/dashboard?page={page}&pageSize={pageSize}";
var response = await _httpClient.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<DashboardListReturn>(json,
new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
}
throw new Exception($"Échec de récupération des tableaux de bord : {response.StatusCode}");
}
public async Task<DashboardReturn> GetDashboardAsync(Guid dashboardId)
{
var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/dashboard/{dashboardId}";
var response = await _httpClient.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<DashboardReturn>(json,
new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
}
else if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
{
throw new Exception($"Tableau de bord {dashboardId} introuvable");
}
throw new Exception($"Échec de récupération du tableau de bord : {response.StatusCode}");
}
}