Results
Read, search, drill into, paginate, and export APIC query results — JSON, table, and per-stage views for pipelines.
Once a query finishes, the results panel takes over. It has two jobs: show you what APIC returned, and let you do things with it — copy, download, search, drill into nested children, export to CSV or Excel. This page is the tour.
The header bar
Across the top of the results view, a compact stats pill summarises what you got:
- Object count — how many rows in the response. Derived from the response's
totalCountwhen present, or from the length ofimdata/ result array. - Response size — the JSON payload size in B / KB / MB. Useful when deciding whether to turn pagination on.
- Post-processor count — how many transformation nodes ran. Missing when there were none.
- Status — a green OK badge for successful runs.
A breadcrumb on the left lets you jump back to the canvas; a Pipeline · N stages badge appears for pipeline queries; a Test Mode badge appears for sandboxed runs that weren't logged to audit.
Just below the header, a one-line query path bar shows the exact REST URL APIC received, decoded for readability. Handy for copying into a curl command when you're reproducing a run outside Fabrik.
The four tabs
Depending on the query, the results view shows up to four tabs.
| Tab | Always shown | What it holds |
|---|---|---|
| Response | Yes | Raw JSON, rendered in a Monaco viewer with search. Pagination controls when enabled. |
| Table | Yes | SmartTable — the structured view, with sorting, filtering, drill-down, column customizer, and export. |
| Stages | Pipeline queries only | Per-stage results, each with its own row count and status. See Pipelines. |
| Post-Processing | When post-processors are on the canvas | Before/after view of each processor in the chain. |
Response — raw JSON
The Response tab is a Monaco-powered JSON viewer over the full APIC response (envelope included). Two things worth knowing:
- Searchable.
⌘F/Ctrl+Fopens in-viewer find. - Read-only. You can't edit the response. This is the APIC source of truth; changes belong in the query, not the output.
For very large payloads (tens of MB), Monaco may take a moment to render. The Table tab is usually a better fit at that scale.
Table — the structured view
SmartTable auto-generates columns from the rows it sees. For APIC responses it unwraps the { class: { attributes: {...} } } envelope and renders attributes as columns.
What you get
- Auto-detected columns. The most useful attributes show up by default. The rest are hidden but one click away in the Column Customizer.
- Sort per column. Click a header to sort ascending; click again for descending.
- Search. The toolbar's search input filters visible rows as you type. Matches across all visible columns.
- Nested cell expansion. When an attribute value is itself a dict or array, the cell renders a summary with an expand control so you can peek without leaving the table.
- Column customizer. Pick which attributes appear as columns and in which order. Your picks can be saved as a per-class table template — the next time you query that class, the saved layout is applied automatically.
Drill-down
Click a row and — if the drilled class has children in the MIM — the table swaps to show those children instead, keeping a breadcrumb at the top so you can navigate back. This works without re-querying APIC: SmartTable walks the raw response's nested children and re-presents them.
The drill-down only works when the raw APIC response includes nested children. Queries that flatten or strip the envelope lose that nesting. For deliberate multi-level queries, use a pipeline instead.
Export
The toolbar's Export menu offers two formats:
- CSV — plain rows, flat columns, no envelope. Uses the visible columns at the moment of export.
- Excel — an
.xlsxwith column headers preserved.
Export reflects whatever is currently on screen: filtered rows, custom column order, drill level. If you export then realize you needed a column that was hidden, unhide it first and export again.
Response actions
Two buttons sit at the top-right of the tab bar, available in every view:
- Copy JSON — copies the full raw response to the clipboard. The button briefly flashes green on success.
- Download — saves the raw response as
query-results-<timestamp>.json.
These work on the raw APIC response — pre-post-processing. If you want the post-processed version, export from the Table tab instead.
Pagination controls
When the Output node has pagination turned on, the Response tab grows a pair of page-picker bars (top and bottom). They show:
- Current page number and total pages.
- Page size.
- Prev / Next / First / Last buttons.
- A jump-to-page input for fast navigation.
Clicking a different page re-hits APIC for that slice — pagination is server-side, so the old rows are discarded and new ones arrive. The URL shown in the query path bar updates to reflect the new page=N.
Pagination is off by default. Turn it on from the Output node when the result set is large enough to matter (anything over a few thousand rows, roughly). See Node types for the interaction with Time Machine.
Post-Processing tab
When Post-Processors are on the canvas, a fourth tab shows the pipeline's before/after per step. Each step card shows:
- Processor type and config summary.
- Input row count → output row count.
- The first few rows of input and output, side-by-side, so you can see the effect.
- A paused indicator for processors that were skipped.
This is the fastest way to track down "why did my regex drop everything" — it shows the transformation step that did the dropping.
Stages tab (pipelines only)
For a pipeline query, the Stages tab lists each stage with:
- Stage index and class.
- Status (
success/failed). - Row count returned.
- Execution time in milliseconds.
- Injection mode (
filter_values,dn_scope, oriterate). - The stage's result set as a mini-table you can expand.
The main Response and Table tabs show the final stage's output (the pipeline's aggregated result). Use Stages to inspect intermediates.
Empty state
When no query has run yet in this session, the results view shows a "No results yet" message with a Go to Query Builder button. Hitting Run from the canvas switches you back here automatically once the response arrives.
For pipeline queries, while stages are still executing, the results panel shows the live Pipeline Progress tracker instead of the empty state — per-stage status ticks over in real time as each APIC call completes.
Troubleshooting
Results-panel surprises that come up often:
- "The object count on the header doesn't match the row count in the Table." The header reads APIC's
totalCount, which is the total matching objects on the fabric. The Table shows the returned slice, which is narrower when pagination is on. Turn pagination off to see everything, or navigate pages. - "The Table is empty but the Response has rows." The rows aren't objects with attributes — they're scalars or deeply nested. Switch to the Response tab to see the raw shape, or add a Post-Processor (Field Extract, DN Extract) to flatten them into tabular form.
- "Drill-down is greyed out." The row's raw data doesn't include nested children. Either the class has none, or a Post-Processor earlier in the chain stripped them. For multi-level traversal, build a pipeline.
- "Export CSV gave me the wrong columns." Export reflects what's visible right now. Open the Column Customizer, set the columns you want, then export again.
- "Monaco is slow to render." The response is too large for the JSON viewer. Switch to the Table tab, or turn on pagination to get a smaller page per request.
- "I don't see a Post-Processing tab." There are no Post-Processor nodes on the canvas. The tab appears only when at least one is present.
You've built, executed, and read results. The next page — Saving and sharing — is about keeping the graph around for next time.
Execution
What happens when you hit Run — how Fabrik turns the canvas graph into an APIC REST URL, picks a strategy, and streams results back through the post-processor chain.
Saving and sharing
Persist queries to the server, organise them by category and tags, mark them as templates, and share them with the rest of the team.