Documentation API

L'API Diamy vous permet d'intégrer nos fonctionnalités de téléphonie WebRTC dans vos applications et services. Cette documentation vous guidera à travers les différentes ressources et méthodes disponibles.

API REST

Notre API REST vous permet d'accéder à toutes les fonctionnalités de Diamy de manière programmatique.

  • Gestion des appels et des conférences
  • Accès à l'annuaire et aux contacts
  • Messagerie vocale et instantanée
  • Statistiques et rapports

Webhooks

Les webhooks vous permettent de recevoir des notifications en temps réel lorsque des événements se produisent dans votre système Diamy.

  • Notifications d'appels entrants et sortants
  • Événements de messagerie vocale
  • Mises à jour de statut de présence
  • Alertes système

Authentification

L'API Diamy utilise OAuth 2.0 pour l'authentification. Vous devez obtenir un jeton d'accès avant de pouvoir effectuer des requêtes.

Obtenir des identifiants

  1. Connectez-vous à votre console d'administration Diamy et accédez à Paramètres > API > Applications
  2. Cliquez sur Créer une application
  3. Remplissez les informations requises (nom, description, URL de redirection)
  4. Sélectionnez les étendues (scopes) nécessaires pour votre application
  5. Cliquez sur Créer
  6. Notez le Client ID et le Client Secret qui seront générés

Obtenir un jeton d'accès

curl -X POST "https://api.diamy.fr/v2/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

Réponse

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "calls:read calls:write contacts:read"
}

Utiliser le jeton d'accès

Incluez le jeton d'accès dans l'en-tête Authorization de vos requêtes API :

curl -X GET "https://api.diamy.fr/v2/calls/recent" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Ressources disponibles

Appels

Gérez les appels entrants et sortants, consultez l'historique et les statistiques.

  • Récupérer l'historique des appels
  • Initier un appel
  • Transférer un appel
  • Mettre fin à un appel
  • Obtenir des statistiques d'appels

Contacts

Accédez et gérez votre annuaire de contacts et groupes.

  • Lister les contacts
  • Créer un contact
  • Mettre à jour un contact
  • Supprimer un contact
  • Gérer les groupes de contacts

Messagerie vocale

Gérez les messages vocaux, les annonces et les paramètres.

  • Récupérer les messages vocaux
  • Marquer un message comme lu
  • Télécharger un message vocal
  • Supprimer un message vocal
  • Configurer les paramètres de messagerie

Utilisateurs

Gérez les utilisateurs, les permissions et les préférences.

  • Lister les utilisateurs
  • Créer un utilisateur
  • Mettre à jour un utilisateur
  • Désactiver un utilisateur
  • Gérer les permissions

Exemple d'utilisation

Voici un exemple complet d'utilisation de l'API pour récupérer la liste des appels récents :

// Fonction pour obtenir un jeton d'accès
const getAccessToken = async () => {
  const params = new URLSearchParams();
  params.append('grant_type', 'client_credentials');
  params.append('client_id', 'YOUR_CLIENT_ID');
  params.append('client_secret', 'YOUR_CLIENT_SECRET');

  const response = await fetch('https://api.diamy.fr/v2/oauth/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: params
  });

  const data = await response.json();
  return data.access_token;
};

// Fonction pour récupérer les appels récents
const getRecentCalls = async () => {
  try {
    // Obtenir le jeton d'accès
    const accessToken = await getAccessToken();

    // Faire la requête pour récupérer les appels récents
    const response = await fetch('https://api.diamy.fr/v2/calls/recent?limit=10', {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${accessToken}`,
        'Content-Type': 'application/json'
      }
    });

    const data = await response.json();
    
    if (data.status === 'success') {
      // Traiter les données des appels
      console.log('Appels récents:', data.data.calls);
      
      // Exemple : Afficher la durée totale des appels
      const totalDuration = data.data.calls.reduce((total, call) => total + call.duration, 0);
      console.log(`Durée totale des appels: ${totalDuration} secondes`);
      
      return data.data.calls;
    } else {
      console.error('Erreur:', data.message);
    }
  } catch (error) {
    console.error('Erreur lors de la récupération des appels:', error);
  }
};

// Exécuter la fonction
getRecentCalls();

Gestion des erreurs

L'API Diamy utilise les codes de statut HTTP standard pour indiquer le succès ou l'échec d'une requête. En cas d'erreur, la réponse inclut un message descriptif et un code d'erreur.

Code HTTPDescriptionExemple
200 OKLa requête a réussi{ "status": "success", "data": { ... } }
400 Bad RequestLa requête est mal formée ou contient des paramètres invalides{ "status": "error", "code": "invalid_parameter", "message": "Le paramètre 'limit' doit être un nombre" }
401 UnauthorizedAuthentification requise ou invalide{ "status": "error", "code": "unauthorized", "message": "Jeton d'accès invalide ou expiré" }
403 ForbiddenAccès refusé à la ressource demandée{ "status": "error", "code": "forbidden", "message": "Vous n'avez pas les permissions nécessaires" }
404 Not FoundLa ressource demandée n'existe pas{ "status": "error", "code": "not_found", "message": "Contact introuvable" }
429 Too Many RequestsLimite de taux dépassée{ "status": "error", "code": "rate_limit_exceeded", "message": "Limite de taux dépassée. Réessayez dans 60 secondes" }
500 Internal Server ErrorErreur interne du serveur{ "status": "error", "code": "server_error", "message": "Une erreur interne s'est produite" }

Limites et quotas

Pour garantir la stabilité et la disponibilité de notre API, nous appliquons des limites de taux. Ces limites varient en fonction de votre plan d'abonnement.

PlanLimite de requêtesPériode
Starter100 requêtesPar minute
Pro500 requêtesPar minute
Enterprise2000 requêtesPar minute

Si vous dépassez ces limites, vous recevrez une réponse avec le code d'état HTTP 429 (Too Many Requests). L'en-tête Retry-After indiquera le nombre de secondes à attendre avant de réessayer.

Bonnes pratiques

Optimisation des performances

  • Utilisez la pagination pour les requêtes qui retournent de grandes quantités de données
  • Spécifiez les champs exacts dont vous avez besoin avec le paramètre fields
  • Mettez en cache les réponses qui ne changent pas fréquemment
  • Utilisez des connexions persistantes pour réduire la latence
  • Compressez les données avec gzip pour réduire la bande passante

Sécurité

  • Stockez les jetons d'accès de manière sécurisée
  • Renouvelez régulièrement vos jetons d'accès
  • Utilisez uniquement les étendues (scopes) nécessaires pour votre application
  • Validez toutes les entrées utilisateur avant de les envoyer à l'API
  • Implémentez une journalisation des appels API pour la détection des anomalies

Ressources supplémentaires

SDK et bibliothèques

Nous proposons des SDK officiels pour faciliter l'intégration de l'API Diamy dans vos applications.

Outils de développement

Accélérez votre développement avec nos outils et ressources.

Support

Besoin d'aide avec l'API ? Nous sommes là pour vous.