Multiplayer Collaborative Canvas  ·  View 09 of 23  ·  Structure

Integration Surface

Four interfaces, three kinds of caller, and three dependencies the platform cannot fake.

Editable source SVG draw.io All views
Callers Editor clients web, desktop Viewer clients mobile, link Machines plugins, export Platform interfaces Canvas platform APIs session · sharing · assets Dependencies Entra ID OIDC Web PubSub Blob & scanning pre-signed editor socket viewer group batch ops token check group publish assets Integration Surface — Who Calls In, What It Calls Out External / third party Application we own Interface / broker Data store synchronous Four interfaces behind one surface: session, sharing, assets, history. Omitted to keep the view readable: the asynchronous search feed and the metadata-only analytics export, both shown in views 01 and 10. v 1.0 · owner Platform Architecture · date 2026-10

Decisions

  • The session API is the only stateful interface; sharing, assets and history are ordinary request/response services, which is what lets them scale and fail independently.
  • The plugin host is a first-class caller with its own quota and capability, because a bulk change to 400 layers is a legitimate use that looks exactly like an attack.
  • Asset bytes never enter an API: the asset service issues a short-lived pre-signed URL and the client talks to storage directly (ADR-13).

Dependencies that must be survivable

  • Entra ID is on the admission path. Its loss stops new sessions and must not stop open ones — hence in-band token renewal and the cached capability grace window.
  • Web PubSub carries presence and viewers. Its loss degrades the experience and must never block an acknowledgement.
  • Malware scanning is asynchronous by construction: an unscanned asset is referenced and not served.

Omitted

  • The asynchronous search feed and the metadata-only analytics export, both drawn in views 01 and 10, are left off this page to keep the fan readable.