Collections Screens
This page documents every screen under /analyst/collections: the list, the detail page, all four
sub-pages (Files, API Logs, Chain of Custody, Sign Off), and the New Collection wizard. Together
they cover the full lifecycle of a forensic collection from creation through delivery.
Collections list
Route: /analyst/collections
The list loads up to 100 collections (capped to keep the page fast), ordered by priority then creation date. Collections are grouped into four sections, each with a coloured status dot and a count; empty sections are hidden:
| Section | Dot | Statuses |
|---|---|---|
| Active Collections | blue (pulsing) | pending, validating_creds, queued, in_progress, paused |
| Needs Review | yellow | completed, partial, reviewing |
| Completed | green | signed_off, delivered |
| Errors & Cancelled | red | error, cancelled |
If there are no collections at all, an empty-state card is shown instead of the sections.
Header actions
- Kill N active? — only appears when there are active collections. Cancels all of them at once
(POSTs to
/api/collections/cancel-all). This is a bulk-cancel; use with care. - Upload Credential — opens the credential upload form.
- New Collection — opens the New Collection wizard.
Collection card
Each card shows the platform name, a status badge, a priority pill, the last 8 characters of the
collection ID (monospace), the customer company, the creation date, and the case reference if set.
For in_progress or queued collections a progress bar is shown (completed/total endpoints plus
files collected). The View button opens the detail page.
Collection detail page
Route: /analyst/collections/{id}
The hub for a single collection. The layout is: header, full-width status cards, then a two-column body (details on the left, actions + activity timeline on the right).
Header
- Back to Collections link
- Title: "{Platform} Collection", with the customer company and case reference beneath
- Right side badges: a purple Test Collection pill (if it is an analyst test), a priority pill, and the status badge
Conditional status cards
These appear at the top depending on the collection's state:
- Live Progress card — shown while the collection is active (
pending/validating_creds/queued/in_progress/paused). Polls the server and updates endpoint/file/byte counts live. - Delivery Progress — shown when
signed_off; polls until the collection flips todelivered. - Paused notice (yellow) — shown when
paused; states how many endpoints completed before the pause and when it was paused. - Error card (red) — shown whenever an
errorMessageis set. Displays the message and error count. If the collection issigned_off, this card also carries a Retry ZIP button (re-attempts ZIP packaging/delivery).
Left column — details
A stack of cards:
- Assigned Analyst — a dropdown to assign/reassign the collection (see below).
- Progress Statistics — endpoints completed/total, files collected, data size in MB. Shows a progress bar and a pulsing "In Progress" pill while active.
- Customer — company, contact name, email. For test collections this becomes a "Test Collection" card.
- Connector — platform name and version.
- Credential — credential type (e.g. "OAuth 2.0", "API Key") and a validation-status pill (valid / invalid / other).
- Dates — created, started, paused, completed (whichever apply).
- On-Behalf-Of Action (blue) — only if an analyst initiated the collection on a customer's behalf; names that analyst.
- Business Context — the free-text context entered at creation.
- Scope Configuration — a JSON dump of the scope filters, only shown if a non-empty scope was set.
Assigned Analyst dropdown
Loads the list of analysts on mount. Selecting a name (or Unassigned) immediately PATCHes the assignment and shows a toast; admins are tagged with an "Admin" pill. On error the selection reverts.
Right column — actions
A wrap of buttons whose availability depends on status:
| Button | When it shows | What it does |
|---|---|---|
| View Files (N) | always | Opens the Files sub-page |
| API Logs | always | Opens the API Logs sub-page |
| Chain of Custody | always | Opens the Chain of Custody sub-page |
| Sign Off | completed/partial/reviewing, and not a test collection | Opens the Sign Off page |
| Pause Collection | in_progress | Pauses after the current endpoint (confirmation dialog) |
| Resume Collection | paused | Resumes from where it left off (confirmation dialog) |
| Cancel Collection | active statuses | Cancels the collection |
| Rerun Collection | terminal statuses (completed/partial/error/cancelled) | Creates a new collection with the same configuration and starts it; the original is untouched |
| ZIP Password | delivered | Opens the ZIP password dialog |
| Download Collection | delivered with a signed URL | Downloads the delivered ZIP via the SAS URL |
Pause / Resume dialogs
Both are confirmation dialogs. Pause notes that progress is saved and can be resumed; Resume notes it continues processing remaining endpoints. Both show a spinner while the request is in flight and refresh the page on success.
Rerun dialog
Confirms before creating the rerun. The new collection's business context is suffixed with "(rerun)". If the original was an on-behalf-of collection, the rerun carries the reason "Rerun of previous collection".
ZIP password dialog
Fetches the ZIP password on open. The value is masked by default with a show/hide eye toggle and a copy-to-clipboard button. The password is cleared from the dialog when you close it (security), and retrieving it is logged for audit. Share it securely with the customer.
Activity Timeline
Below the action buttons. Shows chain-of-custody and API-call events newest-first, paged 10 at a time. While the collection is active it polls for new events. For the full, detailed event log use the dedicated Chain of Custody sub-page.
Files sub-page
Route: /analyst/collections/{id}/files
Four stat cards at the top: Total Files, Total Size, Hash Validated (count of files whose
SHA-256 was verified), and Errors (files in error status). Below is a searchable table of every
collected file with its filename, size, MIME type, SHA-256 hash, validation status, status, and
collection time. A search query parameter pre-filters the table.
API Logs sub-page
Route: /analyst/collections/{id}/logs
The complete forensic record of every HTTP request made during collection. Four stat cards: Total Requests, Avg Latency, Data Transferred, and Errors (4xx/5xx).
The table loads 50 rows per page and supports filtering by response code and endpoint category. Each log row carries the full forensic detail captured per request — request method/URL, sanitized headers, request/response body hashes, source and destination IPs, DNS resolution, TLS certificate fingerprint, a per-phase latency breakdown (DNS / TCP / TLS / TTFB / download / total), retry attempt, pagination cursor, and how many files that call produced.
Chain of Custody sub-page
Route: /analyst/collections/{id}/chain-of-custody
The legally significant audit trail. Four stat cards: Total Events, Unique Actors, State Changes, and Errors.
Below is a vertical timeline, newest first. Each event has a colour-coded icon by event type (collection created, credentials validated, started, paused, resumed, completed, analyst assigned/ reviewed/signed off, ZIP created, SAS URL generated, customer notified, delivered, archived, error, credentials revoked, cancelled). Each entry shows:
- The event label and an actor icon by actor type (system, analyst, customer, automated/worker)
- The actor's name and IP address (if recorded)
- The timestamp
- A state transition (previous → new), when the event changed the collection's status
- A Details block expanding any structured event data
System actors render as "System"; automated worker events render as "Worker Process".
Sign Off page
Route: /analyst/collections/{id}/sign-off
Where an analyst formally approves a collection for delivery. Only reachable for completed,
partial, or reviewing collections that are not test collections. If the collection is already
signed_off or delivered, you're redirected back to the detail page. If it's in any other state,
a "Cannot Sign Off" warning is shown.
Review checklist
Four items, each with a description and a live stat pulled from the collection. All four must be checked before sign-off is enabled:
| Item | Stat shown |
|---|---|
| Files Collected | N files collected |
| Hashes Verified | verified / total verified |
| API Logs Reviewed | N API calls logged |
| Chain of Custody Complete | N events recorded |
Checked items turn green. An amber reminder shows until all are confirmed.
Notes and signature
- Analyst Notes — an optional free-text field for observations.
- Analyst Signature — a signature pad (draw with mouse or touch). A Clear button resets it.
Submitting
The Sign Off Collection button is disabled until all checklist items are ticked. On submit, the
form also requires a non-empty signature. Validation failures raise an alert; success shows a toast
("queued for delivery") and returns you to the detail page. After sign-off the collection moves
toward delivered.
New Collection wizard
Route: /analyst/collections/new
A six-step stepper for creating a collection. Analysts create collections on behalf of a customer by default. Navigation is via the Back / Next buttons at the bottom; Next is disabled until the current step's requirements are met.
| Step | Name | What you do | Required to continue |
|---|---|---|---|
| 1 | Customer | Toggle "Create on behalf of customer" (on by default) and pick the customer. A yellow notice explains the customer will be emailed and the action recorded in chain of custody. | A customer must be selected (when on-behalf-of is on) |
| 2 | Connector | Pick the platform from a grid. If the connector has unpublished changes in local storage, an amber warning notes the collection will use the published version. | A connector must be selected |
| 3 | Credentials | Choose from the customer's stored credentials for that connector. If none exist, a prompt links to the credential upload form. | A credential must be selected |
| 4 | Scope | Optional filters: date range, users, channels, file types, plus any connector-specific runtime parameters. | Any required runtime parameters must be filled |
| 5 | Details | Case reference, business context, priority, and — for on-behalf-of — a reason (minimum 10 characters, included in the customer email). | — |
| 6 | Review | Summary of everything, with the on-behalf-of and unpublished-change warnings repeated. | — |
Submitting POSTs to /api/collections, shows a success toast, and navigates to the new collection's
detail page. Selecting a different customer in step 1 resets the connector and credential choices;
selecting a different connector resets the credential choice.