Phase de testCet environnement est en test de pré-lancement — toutes les données seront réinitialisées au lancement.
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 (Authorization: Bearer mck_…) ; projets invités : token de partage

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.

Authentification ​

Chaque requête à l'API mock runtime d'un projet de ton compte porte une clé API. Les requêtes sans clé valide sont refusées, quel que soit le réglage de partage de l'aperçu du projet — un lien de partage ouvre la page d'aperçu, pas l'API.

Clés API ​

Tu crées les clés dans l'application sous Compte → Clés API, pour le projet actif. Les clés API sont incluses à partir du forfait Professional. Chaque clé :

  • Appartient à un seul projet et ne répond que pour ce projet
  • N'est affichée en entier qu'une seule fois, à sa création — conserve-la comme un mot de passe
  • Peut avoir une date d'expiration et être révoquée à tout moment
  • A un scope : Runtime interroge les données mock, Full atteint aussi l'API de gestion ; une clé Management ne peut pas interroger le runtime

Envoie la clé comme bearer token :

bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Authorization: Bearer mck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name price } total } }"}'

L'en-tête X-API-Key: mck_your_api_key fonctionne aussi.

Garde la clé hors du code navigateur

Une clé API est un secret. Appelle l'API mock depuis du code côté serveur, depuis ta CI ou via un proxy de serveur de développement qui ajoute l'en-tête (étape 4 du flux d'intégration ci-dessous) — ne livre jamais la clé dans un bundle frontend.

Projets invités ​

Un projet invité (sans compte) n'a pas de clés API. Son endpoint accepte le token de partage du projet — celui de son lien de partage d'aperçu — en paramètre de requête :

bash
curl -X POST "https://api.mockomat.com/mock/my-guest-project/graphql?token=<share-token>" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name } total } }"}'

Les requêtes invitées sont décomptées du quota quotidien de la session invitée.

Tokens d'acteur (optionnels) ​

Les tokens d'acteur distinguent les consommateurs d'une même clé API, afin de pouvoir plafonner l'utilisation simultanée d'une clé. Ils sont optionnels — une requête avec la seule clé API est servie.

  1. Demander un token avec ta clé API :
bash
curl -X POST https://api.mockomat.com/runtime/actors \
  -H "Authorization: Bearer mck_your_api_key"

Réponse :

json
{
  "actorToken": "act_abc123...",
  "expiresInSeconds": 900,
  "maxActors": 1,
  "currentActors": 1
}
  1. L'envoyer avec tes requêtes runtime :
bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Authorization: Bearer mck_your_api_key" \
  -H "X-Actor-Token: act_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name price } total } }"}'
  1. Expiration par inactivité — un token expire après 15 minutes sans requête ; chaque requête le prolonge. Tant que tous les emplacements d'acteur d'une clé sont occupés, un nouvel acteur reçoit 429 MAX_ACTIVE_ACTORS_REACHED avec un en-tête Retry-After.
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(page: 1, pageSize: 20) {
    items {
      id
      name
      price
      category {
        id
        name
      }
    }
    total
    page
    pageSize
  }
}

Requête de détail ​

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

Requête avec filtrage ​

Les arguments sont des paramètres que l'opération définit dans la conception API (ici minPrice sur price avec gte, category avec eq) ; voir le Runtime pour les opérateurs, la recherche et la pagination.

graphql
query {
  products(minPrice: 10, category: "electronics", pageSize: 50) {
    items {
      id
      name
      price
    }
    total
  }
}

Requête triée et paginée ​

graphql
query {
  products(sortField: "price", sortDirection: ASC, page: 2, pageSize: 20) {
    items {
      id
      name
      price
    }
    total
    page
    pageSize
  }
}

Requête avec relations imbriquées ​

graphql
query {
  customers(pageSize: 10) {
    items {
      id
      firstName
      lastName
      orders {
        id
        totalAmount
        createdAt
      }
    }
    total
  }
}

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 ta suite de tests, ton backend-for-frontend ou d'autres consommateurs à l'endpoint mock. Garde l'endpoint et la clé API dans la configuration, pour pouvoir basculer entre Mockomat et ton vrai backend.

Une application frontend atteint l'API mock via le proxy de son serveur de développement, qui ajoute la clé côté serveur — la clé ne finit donc jamais dans le bundle :

typescript
// vite.config.ts — transmet /mock-api à Mockomat et ajoute la clé API
export default defineConfig({
  server: {
    proxy: {
      '/mock-api': {
        target: 'https://api.mockomat.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/mock-api/, '/mock/my-project'),
        headers: { Authorization: `Bearer ${process.env.MOCKOMAT_API_KEY}` },
      },
    },
  },
});

// environment.ts — l'application ne connaît que le chemin du proxy
export const environment = {
  apiUrl: '/mock-api/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: Smoke-check the mock API
    env:
      API_URL: https://api.mockomat.com/mock/my-project/graphql
      API_KEY: ${{ secrets.MOCKOMAT_API_KEY }}
    run: |
      # Fait échouer l'étape sur 401/403/404 : clé absente, révoquée ou d'un autre projet
      curl -sf "$API_URL" \
        -H "Authorization: Bearer $API_KEY" \
        -H "Content-Type: application/json" \
        -d '{"query":"{ products(page: 1, pageSize: 1) { items { id } total } }"}'

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 ​

Trois limites s'appliquent à l'API mock runtime :

PérimètreLimiteUne fois atteinte
Par adresse IP60 requêtes par minute429 TOO_MANY_REQUESTS — réessaie une minute plus tard
Par compteLe quota de requêtes de ton forfait (par jour ou par mois)429 TOO_MANY_REQUESTS jusqu'à la réinitialisation du quota
Par clé APIActeurs simultanés — seulement si tu envoies des tokens d'acteur429 MAX_ACTIVE_ACTORS_REACHED avec un en-tête Retry-After

Les projets invités sont décomptés du quota quotidien de la session invitée.

Gestion des erreurs ​

Une requête refusée répond avec un statut HTTP d'erreur et un corps JSON. Décide selon son code :

Statut HTTPCodeSignificationAction
400Bad RequestGraphQL invalide, opération inconnue ou désactivée, corps mal forméLire message ; corriger la requête ou le nom de l'opération
401UNAUTHENTICATEDAucune clé API envoyée (projet invité : token de partage absent ou erroné)Envoyer Authorization: Bearer mck_…
401API_KEY_INVALIDClé inconnue, révoquée ou suppriméeCréer une nouvelle clé
401API_KEY_EXPIREDLa date d'expiration de la clé est dépasséeCréer une nouvelle clé
401ACTOR_TOKEN_INVALIDX-Actor-Token mal forméDemander un token via /runtime/actors ou omettre l'en-tête
403API_KEY_SCOPE_INSUFFICIENTClé de gestion uniquementUtiliser une clé Runtime ou Full
404PROJECT_NOT_FOUNDSlug inconnu, ou projet auquel la clé n'appartient pas (sur /runtime/actors : le projet de la clé a été supprimé)Vérifier le slug ; utiliser une clé de ce projet
429TOO_MANY_REQUESTSLimite par IP ou quota du forfait atteintAttendre, puis réessayer
429MAX_ACTIVE_ACTORS_REACHEDTous les emplacements d'acteur de la clé sont occupésAttendre la durée Retry-After
429RATE_LIMIT_EXCEEDEDTrop de demandes de token d'acteur pour une clé (POST /runtime/actors)Attendre la durée Retry-After ; réutiliser un token tant qu'il est actif
503QUERY_TIMEOUTLa requête a duré trop longtempsRéessayer ; restreindre la requête

Format de réponse d'erreur ​

json
{
  "statusCode": 401,
  "code": "API_KEY_INVALID",
  "message": "API_KEY_INVALID",
  "path": "/mock/my-project/graphql",
  "timestamp": "2026-10-05T09:30:00.000Z"
}

Un 429 avec un en-tête Retry-After contient aussi retryAfter (en secondes) dans le corps. Une requête servie répond 200 avec un corps GraphQL ; les problèmes au niveau des données arrivent dans errors[] — par exemple, extensions.code NOT_READY signifie que la table n'est pas encore reliée à des données.

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.