From the review call on Brett's Batch/Transaction designs, updated 2026-07-31 against the new Figma frames (330:461 Upload, 330:2 Actions, 330:720 Bundle JSON, 330:1141 Response) — the designs cover the agreed flow; this issue is the implementation.
Flow (per the frames)
- Upload — drop/browse a Bundle JSON file.
- Preflight (Actions) — request line (
POST [base] · Bundle·{type}·{n} entries), one row per entry with its HTTP method chip and target URL, collapsible body per row (chevrons in the design), Bundle JSON tab with the raw payload, Cancel / Upload another / Execute. Entry methods are display-only.
- Execute — POST to the server root.
- Response — per-action outcomes with the status badges,
Execute again / Back to bundle.
Implementation requirements beyond the mock
- Aggregate result summary (Steve, not in the mock): the Response page states how many resources were created / updated / failed, not just per-row badges.
- Batch-vs-transaction explainer: one line of copy in the preflight stating the semantics of what is about to run — transaction: all-or-nothing; batch: independent entries, failures don't stop the rest.
- Texts come from the real payload, not the mock: the bundle type shown is the uploaded bundle's
type (the mock mixes batch in the header with transaction in the JSON), and per-entry statuses render verbatim from the response bundle (201 Created, not the mock's 200 CREATED). Flagged to Brett as example-text nits; implementation is the source of truth.
- GET entries are in-scope: per the R4 spec, transaction processing explicitly includes "Process any GET or HEAD interactions" (step 4), and the server already supports them (
BundleMethod::Get).
Out of scope (decided 2026-07-31)
- Single-resource upload path and a dedicated expanded-accordion mock (Edson's suggestions — dropped).
- Import ($bulk-submit) and Export remain separate nav entries and separate work.
From the review call on Brett's Batch/Transaction designs, updated 2026-07-31 against the new Figma frames (
330:461Upload,330:2Actions,330:720Bundle JSON,330:1141Response) — the designs cover the agreed flow; this issue is the implementation.Flow (per the frames)
POST [base] · Bundle·{type}·{n} entries), one row per entry with its HTTP method chip and target URL, collapsible body per row (chevrons in the design),Bundle JSONtab with the raw payload, Cancel / Upload another / Execute. Entry methods are display-only.Execute again/Back to bundle.Implementation requirements beyond the mock
type(the mock mixesbatchin the header withtransactionin the JSON), and per-entry statuses render verbatim from the response bundle (201 Created, not the mock's200 CREATED). Flagged to Brett as example-text nits; implementation is the source of truth.BundleMethod::Get).Out of scope (decided 2026-07-31)