Skip to content

Intégrateurs

Cette section s'adresse aux développeurs qui connectent les workflows Mockomat à des systèmes d'ingénierie plus larges. Que tu construises un frontend qui consomme une API mock Mockomat, automatises la validation de modèle en CI/CD, ou intègres Mockomat dans le pipeline de développement de ton équipe, cette page couvre les patterns et pratiques dont tu as besoin.

Aperçu des endpoints API

Mockomat expose deux surfaces API distinctes :

APIEndpointObjectifAuthentification
API de gestionGET /graphqlCRUD de projets, configuration de modèle, gestion des utilisateursJWT (basé sur la session)
API Mock RuntimePOST /mock/{slug}/graphqlInterroger les données mock, tester le comportement de domaineClé API + Token d'acteur (Business+) ou public (Free/Quick)

L'API de gestion est utilisée par l'application web Mockomat et les outils d'administration. L'API mock runtime est ce que tes applications consomment comme backend mock.

Patterns d'authentification

Les exigences d'authentification dépendent de ton forfait et du type d'endpoint.

Endpoints publics (Quick et Free)

Les endpoints publics ne nécessitent aucune authentification. Tout client HTTP peut envoyer des requêtes :

bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(limit: 10) { id name price } }"}'

Les endpoints publics sont limités en débit par adresse IP pour prévenir les abus.

Endpoints privés (Business et Enterprise)

Les endpoints privés nécessitent deux en-têtes d'authentification :

En-têteValeurObjectif
AuthorizationBearer <API_KEY>Identifie le projet et autorise l'accès
X-Actor-Token<ACTOR_TOKEN>Identifie le consommateur pour le suivi de concurrence

Authentification par clé API

Les clés API sont émises par projet dans le workspace Mockomat. Chaque clé :

  • Est scopée à un seul projet
  • Peut être renouvelée sans affecter les autres clés
  • A ses propres limites de concurrence et de débit
  • Peut être révoquée à tout moment

Workflow des tokens d'acteur

Les tokens d'acteur gèrent les consommateurs API concurrents. Le workflow :

  1. Demander un token — appelle l'endpoint des acteurs avec ta clé API :
bash
curl -X POST https://api.mockomat.com/runtime/actors \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json"

Réponse :

json
{
  "actorToken": "act_abc123...",
  "expiresInSeconds": 900,
  "maxActors": 5,
  "currentActors": 2
}
  1. Utiliser le token — inclus-le dans toutes les requêtes runtime suivantes :
bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Authorization: Bearer <API_KEY>" \
  -H "X-Actor-Token: act_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(limit: 10) { id name price } }"}'
  1. Expiration du token — les tokens d'acteur ont un timeout d'inactivité configurable (15 minutes par défaut). Chaque requête renouvelle le timeout. Si le token expire, demands-en un nouveau.
Screenshot int-01-authenticationScreenshot int-01-authentication
int-01-authenticationMissing

Point d'entrée d'intégration avec configuration de l'authentification et du contexte.

Patterns de requêtes

Requête de liste basique

graphql
query {
  products(offset: 0, limit: 20) {
    id
    name
    price
    category {
      id
      name
    }
  }
}

Requête de détail

graphql
query {
  product(id: "abc-123") {
    id
    name
    price
    description
    category {
      id
      name
    }
  }
}

Requête avec filtrage

graphql
query {
  products(
    filter: {
      filterGroup: {
        operator: AND
        items: [
          { attribute: "price", operator: GE, value: "10" }
          { attribute: "category", operator: EQ, value: "electronics" }
        ]
      }
    }
    limit: 50
  ) {
    id
    name
    price
  }
}

Requête triée et paginée

graphql
query {
  products(
    sort: { field: "price", direction: ASC }
    offset: 20
    limit: 20
  ) {
    id
    name
    price
  }
}

Requête avec relations imbriquées

graphql
query {
  customers(limit: 10) {
    id
    firstName
    lastName
    orders {
      id
      totalAmount
      createdAt
      items {
        id
        productName
        quantity
        unitPrice
      }
    }
  }
}

Flux d'intégration recommandé

1. Définir un périmètre de domaine stable

Avant d'intégrer, identifie quelles entités et requêtes ton application va consommer. N'intègre pas contre un modèle qui change encore fréquemment — attends que la structure principale soit stable.

2. Verrouiller le nommage et les contrats de champs

Traite le schéma GraphQL comme un contrat. Une fois que ton application dépend de noms de requêtes et de structures de champs spécifiques, les changements de ces noms casseront l'intégration. Utilise la vue de conception API dans Mockomat pour finaliser les noms de requêtes avant de connecter les consommateurs.

3. Valider le comportement runtime

Exécute des requêtes complètes via la prévisualisation runtime et vérifie :

  • Les types de champs correspondent à ce que ton application attend
  • L'imbrication des relations fonctionne correctement
  • Les filtres retournent les sous-ensembles attendus
  • La pagination produit des transitions de page propres

4. Intégrer les systèmes consommateurs

Connecte ton application frontend, suite de tests ou autres consommateurs à l'endpoint mock. Utilise des variables d'environnement ou des fichiers de configuration pour basculer entre les endpoints Mockomat et les vrais backends :

typescript
// environment.ts
export const environment = {
  apiUrl: 'https://api.mockomat.com/mock/my-project/graphql',
  // Basculer vers le vrai backend quand prêt :
  // apiUrl: 'https://api.myapp.com/graphql',
};

5. Promouvoir vers l'export/implémentation

Lorsque le contrat d'API mock est stable et que ton frontend fonctionne correctement contre celui-ci, utilise la fonctionnalité d'Export pour générer un backend de production qui implémente le même contrat.

Screenshot int-02-ci-cd-flowScreenshot int-02-ci-cd-flow
int-02-ci-cd-flowMissing

Pattern d'intégration CI/CD avec points de contrôle modèle et runtime.

CI/CD et automatisation

Les APIs mock Mockomat peuvent être intégrées dans ton pipeline CI/CD pour valider le comportement frontend contre un backend mock stable.

Patterns d'intégration pipeline

Validation de contrat — exécute des vérifications de comparaison de schéma lors des changements de modèle pour détecter les changements cassants avant qu'ils n'atteignent les consommateurs.

Tests d'intégration — pointe ta suite de tests d'intégration vers l'endpoint Mockomat pour vérifier le comportement frontend contre des données mock réalistes.

Validation de prévisualisation — avant de merger les changements de modèle, valide que le runtime produit les résultats attendus en interrogeant l'endpoint de prévisualisation de manière programmatique.

Exemple d'étapes de pipeline

yaml
# Exemple d'étape de pipeline CI
steps:
  - name: Run integration tests against mock API
    env:
      API_URL: https://api.mockomat.com/mock/my-project/graphql
      API_KEY: ${{ secrets.MOCKOMAT_API_KEY }}
    run: npm run test:integration

  - name: Validate schema contract
    run: |
      # Récupérer le schéma actuel et comparer à la baseline
      curl -s $API_URL -d '{"query":"{ __schema { types { name } } }"}' \
        -H "Authorization: Bearer $API_KEY" \
        -H "Content-Type: application/json" > current-schema.json
      diff baseline-schema.json current-schema.json

Versionnage des artefacts générés

Lors de l'utilisation de la fonctionnalité d'export, versionne le code backend généré aux côtés de ton application :

  • Commite le code généré dans une branche ou un dépôt dédié.
  • Tague les exports avec la version du modèle ou la date.
  • Inclus un changelog résumant les changements de modèle depuis le dernier export.
  • Révise les diffs du code généré avant de merger dans la branche principale.

Limitation de débit

Mockomat applique une limitation de débit à plusieurs niveaux pour garantir une utilisation équitable et la stabilité de la plateforme.

PérimètreFree/QuickBusinessEnterprise
Par IP60 req/minN/AN/A
Par clé APIN/ASelon le forfaitPersonnalisé
Par tenantN/AN/AConfigurable

Lorsqu'une limite de débit est atteinte, l'API retourne HTTP 429 (Too Many Requests) avec un en-tête Retry-After indiquant combien de temps attendre avant de réessayer.

Gestion des erreurs

Réponses d'erreur courantes et comment les gérer :

Statut HTTPCode d'erreurSignificationAction
400INVALID_QUERYErreur de syntaxe de requête GraphQLVérifier la syntaxe de la requête
401UNAUTHORIZEDClé API manquante ou invalideVérifier l'en-tête de la clé API
401SESSION_EXPIREDLe token d'acteur a expiréDemander un nouveau token d'acteur
403MAX_TENANT_SESSIONS_REACHEDLimite de sessions concurrentes atteinteAttendre qu'une session expire ou en libérer une
404PROJECT_NOT_FOUNDSlug de projet invalideVérifier l'URL de l'endpoint
429RATE_LIMITEDTrop de requêtesAttendre la durée indiquée par Retry-After
429MAX_ACTIVE_ACTORS_REACHEDLimite d'acteurs concurrents atteinteAttendre qu'un acteur expire

Format de réponse d'erreur

json
{
  "error": "MAX_ACTIVE_ACTORS_REACHED",
  "maxActors": 5,
  "currentActors": 5,
  "retryAfterSeconds": 342
}

Vérifie toujours le champ retryAfterSeconds lorsqu'il est disponible — il indique le temps d'attente minimum avant de réessayer.

Observabilité et diagnostics

Suis ces signaux clés à travers les environnements pour maintenir la fiabilité de l'intégration :

Métriques clés

  • Stabilité des requêtes — les réponses sont-elles structurées de manière cohérente ? Surveille les changements de schéma inattendus.
  • Dérive de la forme des réponses — les types de champs ou les niveaux d'imbrication changent-ils entre les mises à jour du modèle ?
  • Fiabilité des lookups de relations — les requêtes imbriquées se résolvent-elles systématiquement correctement ?
  • Patterns d'erreurs et de timeouts — certaines requêtes sont-elles systématiquement lentes ou en échec ?
  • Proximité des limites de débit — à quel point es-te proche d'atteindre les limites de requêtes ou de concurrence ?

Recommandations de surveillance

  • Journalise toutes les réponses API (ou au minimum les codes de statut et temps de réponse) dans ton application consommatrice.
  • Configure des alertes pour les réponses HTTP 429 et 401 — elles indiquent des problèmes de configuration ou de capacité.
  • Compare périodiquement les schémas de réponse à une baseline pour détecter les dérives non intentionnelles.
  • Surveille les patterns de renouvellement des tokens d'acteur pour optimiser ta stratégie de concurrence.
Screenshot int-03-observabilityScreenshot int-03-observability
int-03-observabilityMissing

Points de contrôle d'observabilité pour la fiabilité de l'intégration.