Execution historyFilter, Inspect, Debug
A comprehensive execution log with server-side infinite scrolling, cascading filters, time range presets, and encrypted debug data inspection for every execution.
Comprehensive Execution Log server-side infinite scrolling
An AG Grid with server-side pagination (50 rows per cache block, max 10 blocks) showing integration name, API, endpoint, color-coded status, execution start, smart duration format, and creation date.

- AG Grid columns: Integration, API, Endpoint, Status, Execution Start, Execution Time, Created
- Server-side infinite scrolling: 50 rows per cache block, max 10 blocks
- Smart duration format: "5ms", "2s 300ms", "1m 30s", "2h 15m 45s"
- Color-coded status badges: green SUCCESS, red FAILURE, amber TIMEOUT
Multi-Dimensional Filtering cascading dropdowns and time ranges
Filter by API name, endpoint (dynamically populated based on selected API), status, time range presets, or custom date ranges. Filter options are fetched from the server on mount.

- Toolbar filters: API name, Endpoint (cascading), Status, Time range, Custom dates
- Time range presets: Last 5 minutes, Last hour, Last day, Last week
- Custom From and To datetime-local inputs
- Cascading behavior: changing API validates and clears endpoint if invalid
- Filter options fetched from server via /histories/filter-options endpoint
Execution Detail Inspection click any row
Click any history row to open a detail modal showing integration, API, endpoint, status badge, execution start and stop times, execution time in milliseconds, and creation date.

- Detail modal (480px) with full execution metadata
- Fields: Integration, API, Endpoint (monospace), Status badge
- Execution Start, Execution Stop, Execution Time (ms), Created
- View button to load encrypted debug data
Encrypted Debug Data inspect execution payloads
Load encrypted debug data asynchronously for any execution. Data is decrypted server-side and displayed as pretty-printed JSON with scrolling, loading states, and empty state handling.

- Debug data modal (800px) loads asynchronously via getDebugData(id)
- Encrypted debug data decrypted server-side for display
- Pretty-printed JSON with scrollable container (max-h-60vh)
- Loading spinner and empty state for executions without debug data