Débogage API SDK Web

VérifiéSûr

Diagnostiquer les échecs HTTP/réseau/API dans le SDK Web mParticle via inspection systématique des requêtes et réponses.

Spar Skills Guide Bot
DeveloppementIntermédiaire
23/07/2026
Claude CodeCursorWindsurfCopilotCodex
#mparticle#api-debugging#web-sdk#http-errors#network-inspection

Recommandé pour

Synthèse automatique

Ce skill guide le diagnostic des échecs réseau et API du SDK Web mParticle, en couvrant les API Events, Identity et Config via l'inspection systématique des requêtes et réponses.

Points forts

  • Classe les pannes par catégorie précise (requête jamais envoyée, requête échouée, réponse incorrecte) avec les causes racines associées
  • S'appuie sur les vrais fichiers du SDK (apiClient.ts, identityApiClient.ts, configAPIClient.ts, batchUploader.ts) pour orienter l'investigation
  • Explique la divergence entre les tests fetch-mock et l'API réelle, souvent due à une dérive de contrat
  • Fournit une stratégie concrète : onglet Network, logs d'état du client, vérification des endpoints

Limites

  • Très spécifique au SDK Web mParticle, inutilisable pour d'autres bibliothèques ou SDK mobiles
  • Ne couvre pas les erreurs propres aux kits de destination au-delà d'une mention de filtrage
  • Suppose un accès au code source du SDK et à l'onglet Network du navigateur
Quand l'utiliser

À utiliser lorsqu'une requête HTTP ou un appel API du SDK Web mParticle échoue, renvoie une réponse inattendue ou reste bloqué.

Quand l'éviter

Ne pas l'utiliser pour déboguer des problèmes de rendu UI ou des erreurs sans rapport avec le réseau et les API du SDK.

Analyse de sécurité

Sûr
Score qualité88/100

The skill is a debugging guide and does not instruct destructive, exfiltrating, or obfuscated actions. It uses browser DevTools and console logging for legitimate diagnostics. The only notable concern is that it encourages logging potentially sensitive SDK state and identity payloads, which should be handled carefully.

Points d'attention
  • •Recommends logging internal SDK state such as `mpInstance._Store`, `identityRequest`, and batch queues, which may expose API keys/devTokens, MPIDs, and user identity data in console logs; redaction guidance would improve safety.
Comment cette analyse est faite

Exemples

Batch upload failing
Our mParticle Web SDK is logging 'batch upload failed' with a 500 from the events endpoint. Help me inspect the batch payload and figure out why the upload is rejected.
Identity callback never fires
The mParticle identify() callback never fires in production but works fine with fetch-mock in tests. Walk me through comparing the mock response to the real identity API DTO.
Config fetch returns 401
The config API call in our mParticle Web SDK returns 401 unauthorized on startup, so kits never initialize. Help me verify the devToken and workspace ID in the request.

name: debug-api description: Debug HTTP/network/API failures in mParticle Web SDK including fetch failed/fetch error/request failed/API call failed/endpoint not responding/401 unauthorized/403 forbidden/404 not found/500 internal server error/502 bad gateway/503 service unavailable/504 gateway timeout/network error/timeout/ETIMEDOUT/connection timeout/ECONNREFUSED/response format wrong/DTO mismatch/type mismatch in response/unexpected response/null response/undefined response/empty response/missing data/API contract changed/batch upload failed/identity API failed/config API failed/events API failed

API Debug Skill - Web SDK

Purpose

Diagnose network/API failures in the mParticle Web SDK through systematic request/response inspection and API client debugging.

Core Principles

  • Network tab is truth: Inspect actual requests, not assumptions
  • Mock vs real divergence: fetch-mock works but real API fails → contract drift
  • Batch timing matters: Events batched before upload (100 events or 30 seconds)
  • Three API systems: Events, Identity, and Config APIs have different shapes

Architecture Context

HTTP clients in src/apiClient.ts (Events), src/identityApiClient.ts (Identity), src/configAPIClient.ts (Config). Uses fetch API. Batch upload in src/batchUploader.ts. Tests use fetch-mock for HTTP mocking.

Failure Classification

Request never sent:

  • Network offline → browser blocking
  • Batch not full → waiting for 100 events or 30 second interval
  • API client not initialized → SDK init failed
  • Config disabled feature → server config blocking

Request fails:

  • 401 → Auth token invalid/expired
  • 403 → Workspace permissions issue
  • 404 → URL wrong (trailing slash, workspace ID, endpoint)
  • 500 → Backend error (check server logs)
  • Timeout → slow network/server hang
  • CORS → should not happen with mParticle APIs (same-origin or configured)

Response wrong:

  • DTO mismatch → backend changed contract
  • Null/undefined → optional fields missing
  • Type error → response shape unexpected
  • Empty response → valid but no data

SDK-specific issues:

  • Batch upload stuck → timer not advancing
  • Identity callback not fired → response parsing failed
  • Config not loading → initial config fetch failed
  • Events not forwarding → kits not initialized

Investigation Strategy

1. Network Inspection

Use browser DevTools Network tab:

  • Request URL (exact match with workspace ID)
  • Request headers (Content-Type, User-Agent)
  • Request payload (batch structure, identity request)
  • Response status (200/401/403/404/500)
  • Response body (success flags, error messages)
  • Timing (slow? timeout?)

2. API Client State

Log client state:

// In apiClient.ts
console.log({ url, payload, config: mpInstance._Store })

// In identityApiClient.ts
console.log({ identityRequest, callback })

// In batchUploader.ts
console.log({ batchSize, uploadInterval, queuedEvents })

3. Verify API Endpoints

Check endpoint construction:

  • Events: /v1/[workspace]/events
  • Identity: /v1/[workspace]/identify (or /login, /logout, /modify)
  • Config: /v1/[workspace]/config

Ensure workspace ID (devToken/apiKey) is correct.

4. fetch-mock vs Real API

If fetch-mock works but real fails:

  • Compare mock URL vs real endpoint
  • Check mock response shape vs real DTO
  • Verify auth headers match
  • Look for hardcoded test data

Common Root Causes

Auth failures:

  • API key (devToken) missing or wrong
  • API key passed incorrectly in request
  • Workspace disabled or suspended
  • Environment mismatch (dev key in production)

Events API issues:

  • Batch structure malformed
  • Event validation failed (data plan)
  • Consent state blocking events
  • Kit filtering rules blocking

Identity API issues:

  • Identity request validation failed
  • MPID not found (new user)
  • Identity callback error → silent failure
  • User identities malformed

Config API issues:

  • Config fetch failed → kits not initialized
  • Config cache stale → using old settings
  • Server-side config override → unexpected behavior

Batch upload issues:

  • Timer not advancing → events never sent
  • Batch size threshold not met → waiting for 100 events
  • Upload interval not met → waiting for 30 seconds
  • Network offline → queued but not sent

Obscure Debugging Vectors

  • Network throttling: Fast 3G reveals timeout issues
  • Disable cache: Force fresh requests to test caching theory
  • Copy as fetch: Right-click network request → replay in console
  • fetch-mock logging: Enable fetch-mock logging in tests
  • Batch queue inspection: Log mpInstance._Batch to see queued events
  • Identity MPID check: Verify MPID exists in localStorage
  • Config inspection: Check mpInstance._Store for loaded config
  • Session ID check: Verify session ID in event payload

Debugging Flow

  1. Reproduce failure, open network tab
  2. Identify request: sent? failed? wrong response?
  3. Check API key (devToken) in request
  4. Verify endpoint URL format (workspace ID, path)
  5. Compare fetch-mock handler vs real API response
  6. Log API client state before/after request
  7. Check batch queue status (if Events API)
  8. Test with network throttling enabled

Success Criteria

  • Request succeeds with correct response
  • Events uploaded to mParticle servers
  • Identity callbacks fire correctly
  • Config loaded and applied
  • Works across 3+ attempts (no fluke)
  • Screenshot: network tab + successful response

SDK-Specific API Patterns

Events API (/v1/[workspace]/events):

  • Batch of events in payload
  • Response indicates success/failure per event
  • Retry logic for failed uploads
  • Validate event structure before sending

Identity API (/v1/[workspace]/identify):

  • Single identity request
  • Callback with result (success/error)
  • MPID returned in response
  • User identities in request

Config API (/v1/[workspace]/config):

  • Fetched on SDK init
  • Contains kit configurations
  • Workspace settings
  • Feature flags

Common Headers:

Content-Type: application/json
User-Agent: mParticle web SDK

Test Debugging

fetch-mock configuration:

import fetchMock from 'fetch-mock/esm/client'

fetchMock.post('/v1/test-workspace/events', {
  status: 200,
  body: { Store: true }
})

Verify mock called:

expect(fetchMock.called('/v1/test-workspace/events')).toBe(true)

Check request payload:

const calls = fetchMock.calls('/v1/test-workspace/events')
console.log(JSON.parse(calls[0][1].body))

Self-Improvement

CRITICAL: Update with:

  • Events API contract changes
  • Identity API error patterns
  • Config API structure updates
  • Batch upload timing solutions
  • fetch-mock anti-patterns
  • Common SDK API failures

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/debug-api-in-web-sdk-mrx3xznw' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/debug-api-in-web-sdk-mrx3xznw/download' --output '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md.part' && mv '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md.part' '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && test -s '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/debug-api' && cp -R '.skill-downloads/debug-api-in-web-sdk-mrx3xznw' '.claude/skills/debug-api'

Cursor
test -f '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && test -s '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/debug-api' && cp -R '.skill-downloads/debug-api-in-web-sdk-mrx3xznw' '.cursor/skills/debug-api'

Codex
test -f '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && test -s '.skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/debug-api' && cp -R '.skill-downloads/debug-api-in-web-sdk-mrx3xznw' '.agents/skills/debug-api'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/debug-api-in-web-sdk-mrx3xznw'

openskills read 'debug-api-in-web-sdk-mrx3xznw'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/debug-api-in-web-sdk-mrx3xznw/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires