Guide de démarrage rapide

Démarrez en quelques minutes

Suivez ce guide étape par étape pour effectuer vos premiers appels API réussis vers mindzieStudio et commencer à intégrer les fonctionnalités de process mining dans vos applications.

Prérequis

  • Identifiants API : Jeton d'accès, ID du locataire (tenant) et ID du projet
  • URL de base : Point d’accès API de votre instance mindzie
  • Accès HTTPS : Connexion sécurisée à votre instance mindzie
  • Environnement de développement : Langage de programmation et client HTTP de votre choix

Vous n’avez pas d’identifiants ? Consultez le Guide d’authentification pour apprendre comment obtenir vos identifiants d’accès API.

Étape 1 : Tester la connectivité basique

Commencez par tester la connectivité basique pour vérifier que votre instance mindzie est accessible :

curl -X GET "https://your-mindzie-instance.com/api/Action/ping"

Réponse attendue :

{
  "status": "ok",
  "timestamp": "2024-01-15T10:30:00Z",
  "version": "1.0.0"
}

Étape 2 : Vérifier l’authentification

Testez vos identifiants d’authentification avec le point de terminaison ping authentifié :

curl -X GET "https://your-mindzie-instance.com/api/Action/ping/authenticated" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-Id: YOUR_TENANT_GUID" \
  -H "X-Project-Id: YOUR_PROJECT_GUID" \
  -H "Content-Type: application/json"

Réponse attendue :

{
  "status": "authenticated",
  "timestamp": "2024-01-15T10:30:00Z",
  "tenantId": "12345678-1234-1234-1234-123456789012",
  "projectId": "87654321-4321-4321-4321-210987654321",
  "userId": "user@company.com",
  "permissions": ["read", "write", "admin"]
}

Étape 3 : Votre premier appel API

Faisons un appel pratique à l’API pour récupérer l’historique des actions :

curl -X GET "https://your-mindzie-instance.com/api/Action/history?limit=5" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-Id: YOUR_TENANT_GUID" \
  -H "X-Project-Id: YOUR_PROJECT_GUID" \
  -H "Content-Type: application/json"

Réponse exemple :

{
  "actions": [
    {
      "actionId": "87654321-4321-4321-4321-210987654321",
      "actionType": "analyze",
      "status": "completed",
      "startTime": "2024-01-15T10:30:00Z",
      "endTime": "2024-01-15T10:32:15Z",
      "duration": 135,
      "userId": "user@company.com"
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "totalItems": 1,
    "itemsPerPage": 5
  }
}

Exemples spécifiques aux langages

JavaScript

Utilisez fetch API ou axios pour les applications web modernes et les serveurs Node.js.

Python

Utilisez la bibliothèque requests pour les flux de travail en data science et l’automatisation backend.

C#/.NET

Utilisez HttpClient pour les applications d’entreprise et les microservices.

Exemple JavaScript

Exemple complet utilisant JavaScript moderne et fetch API :

// Configuration
const API_CONFIG = {
  baseURL: 'https://your-mindzie-instance.com/api',
  token: 'YOUR_ACCESS_TOKEN',
  tenantId: 'YOUR_TENANT_GUID',
  projectId: 'YOUR_PROJECT_GUID'
};

// Fonction utilitaire pour les appels API
async function callMindzieAPI(endpoint, options = {}) {
  const url = `${API_CONFIG.baseURL}${endpoint}`;

  const defaultHeaders = {
    'Authorization': `Bearer ${API_CONFIG.token}`,
    'X-Tenant-Id': API_CONFIG.tenantId,
    'X-Project-Id': API_CONFIG.projectId,
    'Content-Type': 'application/json'
  };

  try {
    const response = await fetch(url, {
      ...options,
      headers: { ...defaultHeaders, ...options.headers }
    });

    if (!response.ok) {
      throw new Error(`HTTP ${response.status}: ${response.statusText}`);
    }

    return await response.json();
  } catch (error) {
    console.error('Échec de l’appel API :', error);
    throw error;
  }
}

// Exemple d’utilisation
async function quickStartExample() {
  try {
    // 1. Tester la connectivité
    console.log('Test de la connectivité...');
    const pingResult = await callMindzieAPI('/Action/ping');
    console.log('Ping réussi:', pingResult);

    // 2. Tester l’authentification
    console.log('Test de l’authentification...');
    const authResult = await callMindzieAPI('/Action/ping/authenticated');
    console.log('Authentification réussie:', authResult);

    // 3. Récupérer l’historique des actions
    console.log('Récupération de l’historique des actions...');
    const history = await callMindzieAPI('/Action/history?limit=5');
    console.log('Historique des actions:', history);

    console.log('Démarrage rapide terminé avec succès !');
    return history;
  } catch (error) {
    console.error('Échec du démarrage rapide :', error);
    throw error;
  }
}

// Exécuter l’exemple
quickStartExample();

Exemple Python

Exemple complet utilisant la bibliothèque Python requests :

import requests
import json
from typing import Dict, Any

class MindzieQuickStart:
    def __init__(self, base_url: str, token: str, tenant_id: str, project_id: str):
        self.base_url = base_url.rstrip('/')
        self.headers = {
            'Authorization': f'Bearer {token}',
            'X-Tenant-Id': tenant_id,
            'X-Project-Id': project_id,
            'Content-Type': 'application/json'
        }

    def call_api(self, endpoint: str, method: str = 'GET', **kwargs) -> Dict[str, Any]:
        """Effectuer un appel API vers mindzie"""
        url = f"{self.base_url}{endpoint}"

        try:
            response = requests.request(
                method=method,
                url=url,
                headers=self.headers,
                **kwargs
            )
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"Échec de l’appel API : {e}")
            raise

    def run_quick_start(self):
        """Exécuter la séquence de démarrage rapide"""
        print("Démarrage du Quick Start mindzie API...")

        try:
            # 1. Tester la connectivité
            print("1. Test de la connectivité...")
            ping_result = requests.get(f"{self.base_url}/api/Action/ping")
            ping_result.raise_for_status()
            print(f"   Connectivité OK : {ping_result.json()}")

            # 2. Tester l’authentification
            print("2. Test de l’authentification...")
            auth_result = self.call_api('/api/Action/ping/authenticated')
            print(f"   Authentification OK : {auth_result['status']}")

            # 3. Récupérer l’historique des actions
            print("3. Récupération de l’historique des actions...")
            history = self.call_api('/api/Action/history?limit=5')
            print(f"   {len(history['actions'])} actions récupérées")

            print("Démarrage rapide terminé avec succès !")
            return history

        except Exception as e:
            print(f"Échec du démarrage rapide : {e}")
            raise

# Exemple d’utilisation
if __name__ == "__main__":
    # Configurez vos identifiants
    quick_start = MindzieQuickStart(
        base_url='https://your-mindzie-instance.com/api',
        token='YOUR_ACCESS_TOKEN',
        tenant_id='YOUR_TENANT_GUID',
        project_id='YOUR_PROJECT_GUID'
    )

    # Exécutez le démarrage rapide
    result = quick_start.run_quick_start()
    print(f"Résultat final : {json.dumps(result, indent=2)}")

Exemple C#/.NET

Exemple complet utilisant HttpClient en C# :

using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

public class MindzieQuickStart
{
    private readonly HttpClient _httpClient;
    private readonly string _baseUrl;

    public MindzieQuickStart(string baseUrl, string token, string tenantId, string projectId)
    {
        _baseUrl = baseUrl.TrimEnd('/');

        _httpClient = new HttpClient();
        _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
        _httpClient.DefaultRequestHeaders.Add("X-Tenant-Id", tenantId);
        _httpClient.DefaultRequestHeaders.Add("X-Project-Id", projectId);
    }

    public async Task<T> CallApiAsync<T>(string endpoint)
    {
        try
        {
            var response = await _httpClient.GetAsync($"{_baseUrl}{endpoint}");
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();
            return JsonSerializer.Deserialize<T>(content, new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true
            });
        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine($"Échec de l’appel API : {ex.Message}");
            throw;
        }
    }

    public async Task RunQuickStartAsync()
    {
        Console.WriteLine("Démarrage du Quick Start mindzie API...");

        try
        {
            // 1. Tester la connectivité
            Console.WriteLine("1. Test de la connectivité...");
            using var pingClient = new HttpClient();
            var pingResponse = await pingClient.GetAsync($"{_baseUrl}/api/Action/ping");
            pingResponse.EnsureSuccessStatusCode();
            Console.WriteLine("   Connectivité OK");

            // 2. Tester l’authentification
            Console.WriteLine("2. Test de l’authentification...");
            var authResult = await CallApiAsync<AuthResponse>("/api/Action/ping/authenticated");
            Console.WriteLine($"   Authentification OK : {authResult.Status}");

            // 3. Récupérer l’historique des actions
            Console.WriteLine("3. Récupération de l’historique des actions...");
            var history = await CallApiAsync<ActionHistoryResponse>("/api/Action/history?limit=5");
            Console.WriteLine($"   {history.Actions.Length} actions récupérées");

            Console.WriteLine("Démarrage rapide terminé avec succès !");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Échec du démarrage rapide : {ex.Message}");
            throw;
        }
    }

    public void Dispose()
    {
        _httpClient?.Dispose();
    }
}

// Modèles de données
public class AuthResponse
{
    public string Status { get; set; }
    public string TenantId { get; set; }
    public string ProjectId { get; set; }
    public string UserId { get; set; }
}

public class ActionHistoryResponse
{
    public ActionItem[] Actions { get; set; }
    public PaginationInfo Pagination { get; set; }
}

public class ActionItem
{
    public string ActionId { get; set; }
    public string ActionType { get; set; }
    public string Status { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime? EndTime { get; set; }
}

public class PaginationInfo
{
    public int CurrentPage { get; set; }
    public int TotalPages { get; set; }
    public int TotalItems { get; set; }
}

// Utilisation
class Program
{
    static async Task Main(string[] args)
    {
        var quickStart = new MindzieQuickStart(
            "https://your-mindzie-instance.com/api",
            "YOUR_ACCESS_TOKEN",
            "YOUR_TENANT_GUID",
            "YOUR_PROJECT_GUID"
        );

        try
        {
            await quickStart.RunQuickStartAsync();
        }
        finally
        {
            quickStart.Dispose();
        }
    }
}

Problèmes courants et solutions

Échecs d’authentification

  • 401 Non autorisé : Vérifiez que votre jeton d’accès est correct et non expiré
  • 403 Interdit : Vérifiez les IDs de locataire/projet et les permissions utilisateur
  • 400 Requête incorrecte : Assurez-vous que tous les en-têtes requis sont inclus

Problèmes de connexion

  • Timeout réseau : Vérifiez les paramètres de pare-feu et la connectivité réseau
  • Erreurs SSL/TLS : Vérifiez la validité du certificat et la configuration HTTPS
  • Résolution DNS : Confirmez que l’URL de l’instance mindzie est correcte

Limitation du taux (rate limiting)

  • 429 Trop de requêtes : Implémentez une logique de retry avec backoff exponentiel
  • Surveillez les limites : Consultez les en-têtes de réponse pour les informations sur les limites
  • Optimisez les requêtes : Utilisez la pagination et le filtrage pour réduire le nombre d’appels API

Étapes suivantes

Félicitations ! Vous avez réussi le démarrage rapide mindzieAPI. Explorez les Actions API ou Blocks API pour commencer à construire des intégrations puissantes.