Lab purpose and architecture
graph-call-dashboard isolates Graph integration experiments from the production mailbox engine. It helps developers inspect callback arrival, continuation behavior, normalized state, and provider edge cases. Prepare Graph application access before using it.
Push and pull
In push mode, the dashboard creates Graph subscriptions and receives /graphWebhook and /graphWebhook/lifecycle. It records client-state and notification-token checks and can decrypt rich notification content. Matching client state gates decryption. Token validation is diagnostic only. Invalid, unavailable, or absent tokens do not independently block decryption or all lifecycle updates. Calls and events remain available for inspection.
In pull mode, the dashboard supports mailbox-folder delta streams, folder-message delta streams, and Outlook master-category full pulls. Root, continue, and replay actions create executions. One execution follows its @odata.nextLink pages. For delta streams, it stores the final @odata.deltaLink for another round.
Outlook labels instead use STANDARD_PULL. Each run reads the complete paged catalog without retaining a continuation link. Its comparison parent is the latest successful full pull. Whole mailbox runs this label pull before folders and messages. Read-only labels need MailboxSettings.Read with administrator consent. Normalization and the differ show state and lineage.
These lab callbacks differ from production WebhookCatcher's paths and durable-processing contract. A lab event record is not a production mailbox projection.
Modules
| Path | Responsibility |
|---|---|
src/app | Pages and API routes |
src/components/dashboard | Users, subscriptions, webhook calls, diagnostics |
src/components/delta | Explorer and differ views |
src/server/graph | Client, directory, subscriptions, certificate/decryption |
src/server/webhooks | Ingress and token/client-state checks |
src/server/delta | Queries, paging, links, normalization |
prisma/schema.prisma | SQLite subscription, webhook, and delta state |
Graph calls reach webhook routes or delta API requests. Both paths record SQLite state. The dashboard reads that state to show requests, responses, and normalized differences.
Practical use
Use the lab to reproduce an integration problem with a small mailbox scope. Compare the raw response, normalized events, parent execution, and differ. Replay helps inspect a continuation again. It does not promise the provider will return an identical historical response.
See local setup and delta interpretation.