Class detail panel
The right-hand pane of the Class Browser — five tabs covering identity with meta badges, properties bucketed by role, the full Rs* relationship graph, DN/REST shortcuts with live examples, and operational fault and event codes.
When you click a class in the Class Browser's left list, the right-hand pane fills with everything Fabrik knows about it — pulled from Neo4j as a single round-trip and laid out across five tabs. The tabs are designed for an ACI engineer's actual workflow:
- Glance for the basics on a class you're considering.
- Drill into properties when designing a query filter.
- Follow relationships when troubleshooting how objects wire up.
- Copy DN templates when reaching for the REST API directly.
- Cross-reference fault and event codes when correlating Time Machine snapshots with live APIC logs.
The pane remembers which tab you opened last (per browser, persisted to localStorage), so the next time you open the Browser it takes you back to the same view.
At-a-glance header
Every tab shares the same header at the top:
- Class name in a large monospace font (
fvAEPg). - Cisco label below it when one exists ("Application Endpoint Group").
- Package chip (
fv). - Meta badges — colour-coded chips reflecting MIM flags. Multiple can stack:
| Badge | Tone | Meaning |
|---|---|---|
deprecated | Red | Cisco has marked this class for removal. Avoid in new queries; OK to read in legacy ones. |
abstract | Amber | No direct instances exist — only concrete subclasses. Querying it usually returns 0 rows. |
root | Blue | Context root. Can be queried without a parent DN — fvTenant, polUni, fabricInst. |
hidden | Grey | MIM internal. Filter chip hides these by default; they only appear when hide hidden is off. |
Both deprecated and abstract get a one-line banner below the header explaining what the flag means in practice — so a novice doesn't pick one without knowing.
Overview tab
The default view. Three blocks, in this order:
- Description — Cisco's prose for the class. Long descriptions collapse to three lines with a Show more toggle.
- Contained by — A breadcrumb of immediate parents. Each parent is a clickable chip; clicking drills into that class's detail without leaving the dialog.
- Child classes — The classes this one contains, split into:
- Structural children — the useful ones. EPGs under a tenant, subnets under a BD, interfaces under a node.
- Monitoring & stats children — collapsed behind a Show monitoring classes toggle. Anything matching the unified pattern (
stats,ag15min,ag1h,ag5min,fault,health,trend,threshold,event,record,mon,count). Popular classes likefvAEPghave hundreds of these — the toggle keeps the list scannable.
The monitoring regex lives in one place (frontend/src/lib/classFilters.ts) and is shared with the search filter chip — so when you toggle monitoring/stats off in search, the same set of classes is what gets revealed under Show monitoring classes here.
Properties tab
Every queryable property the class declares, bucketed by role so you can see at a glance which fields you'd actually set in a config:
| Bucket | What it means |
|---|---|
| Naming (DN keys) | Properties that form part of the DN — e.g. name on fvTenant. Required at create time, immutable thereafter. |
| Required on create | mandatory + createOnly. You must supply these on POST; you can't change them later. |
| Configurable | Writable any time. Most policy fields land here. |
| Operational (read-only) | Runtime state. APIC sets these; you read them. |
| Deprecated | Cisco has marked them for removal. Avoid in new queries. |
A search box at the top of the tab filters across name, label, and baseType. Each property row shows:
- Name in monospace.
- Type (
baseTypelikestring:Basic,int,enum). - Default value if Cisco published one.
- Enum values as inline chips (first 8 shown; rest summarised as
+N). - Validator summary when present — length range, regex pattern.
- Copy button that puts
propertyName=on the clipboard so you can paste it into a filter.
Properties marked secure get a small secure badge — these are credential-bearing fields APIC redacts on read.
The properties endpoint filters out CHILD_ACTION, RN, childAction, and monPolDn — they're internal, never useful as query filters.
Relationships tab
The graph view of who connects to whom. Three sub-blocks, plus the containment summary repeated from Overview so you have the full picture in one place.
- Inherits from — Direct super-classes (one level). Click any chip to drill into the parent's detail.
- Points to (Rs* outbound) — Classes this one references via
Rs*helper objects. ForfvAEPgthis includes:fvBDviafvRsBd— the bridge domain the EPG binds tovzBrCPviafvRsCons/fvRsProv— contracts consumed and providedvnsLDevCtxviafvRsProv— service graph references- … and several more
Each row shows the destination class name, the
Rs*class that wires it, the destination's package, and a clickable chip to drill into the destination.
- Referenced by (Rs* inbound) — The reverse view: every class that points at this one.
For
fvBDyou'll seefvRsBd(EPGs binding to this BD),l3extRsEctx(L3 outs binding their VRF), and dozens more — the most leverage-y view in the panel for "what wires up to my object?"
These are the same relationsTo and relationsFrom that the search bar's reference targets (read-only) toggle uses — the detail panel just shows them inline without needing a toggle, because here the user has already picked the class deliberately.
DN & REST tab
Everything you need to reach this object from the APIC REST API.
- DN template — Either the canonical
dnFormats[0]from Cisco or a synthesised parent-RN/this-RN chain. Copy button on the right. Example forfvBD:uni/tn-{tenant}/BD-{name}. - Live example — The same template with friendly placeholder values substituted (
{tnName}→TenantName,{epgName}→EPGName, etc.). Shown when it differs from the raw template. Example:uni/tn-prod/BD-web-bd. - REST · managed object —
/api/mo/<dn>.json, the URL you'd hit to read or write a specific instance. - REST · class query —
/api/class/<className>.json, fabric-wide list of every instance. - RN format — When the local RN differs from the template, shown for completeness.
- Identified by — Properties that act as the DN keys (often the same set as Naming on the Properties tab).
- Open in Cisco DevNet docs — Direct link to the pubhub page for this class, useful when you want to read Cisco's official prose.
The DevNet link uses the version key of the MIM you've loaded. If you switch versions (Settings → MIM Management), the link updates to the new release's documentation.
DN search in the search bar (typing uni/tn- or /BD-) is powered by the same dnFormats arrays this tab displays. Senior experts who think in DN paths first and class names second can fluently jump back and forth between the two surfaces.
Faults tab
Operational metadata that helps you correlate Time Machine snapshots and live APIC events with the class:
- Faults — every
Fxxxxcode Cisco can raise on this class, with its type and target. The IDs match what you see infaultInstrecords and in the APIC fault console. - Events —
Exxxxcodes used in audit / event records. - Statistics — counter classes related via
HAS_STAT. ForeqptIngrTotalPktsand friends, these are the targets you'd join into for performance investigation. Long lists collapse with a Show all toggle.
Drilling between classes
Most chips in the panel are interactive. Clicking a parent, child, super-class, relation target, or stat target loads that class's detail without closing the Browser. A back button appears at the top to return to the previous class — useful when you've wandered into vzBrCP to check a contract and want to come back to fvAEPg.
The drilldown stack is unbounded — you can chase fvAEPg → fvRsBd → fvBD → fvSubnet → fvCtx and back-button five steps to land where you started.
Copy semantics
Every copy button shows a checkmark for two seconds after a successful copy. The hook (useCopyToClipboard) falls back to a hidden textarea + execCommand('copy') on browsers where the modern clipboard API isn't available, so older Safari and non-secure contexts still work.
Performance
The detail endpoint runs seven Neo4j queries in parallel:
parents— direct CONTAINS-parentschildren— direct CONTAINS-children (paginated; 50 by default, up to 1,000)superClassesDetail— inheritance chain, one levelrelationsTo/relationsFrom— Rs* outbound and inboundstatRelations— HAS_STAT targetsfaults/events— operational codes (parsed off the Class node JSON)properties— full property bundle with flags and enum values
The result is returned as a single JSON document. Every query is cached at the service layer for 30 minutes; the second time you open a class the response comes back in under 50 ms.
If you switch APIC versions (re-import the MIM), all caches invalidate automatically because the cache key includes the MIM version.
Troubleshooting
- A tab is empty for a class that should have data — check the import history on Settings → MIM Management. If the class has
sourceVersionset to a version different from the requested one, it came from the fallback chain and may have minor metadata differences from Cisco's authoritative copy for your release. - No DN template, just an RN — the class is abstract or a root object (
top:Root,polUni). It doesn't have a meaningful DN on its own; it only appears as an ancestor segment in other DNs. Theabstractorrootbadge in the header confirms this. - Properties tab shows fewer rows than Cisco's docs — Fabrik filters out
CHILD_ACTION,RN,childAction, andmonPolDnbecause they're internal. They're never useful as query filters; the docs page lists them for completeness. - Relationships tab shows "Points to" but my search-bar reference-targets toggle is empty — the toggle only fires when the dialog was opened in child mode. Open another Class Node, drop a Child Class, and the toggle becomes available.
- Banner says deprecated but I need to use this class — go ahead. The warning is soft; Confirm still works. The banner is a nudge, not a block. Reference-only classes (different banner, amber, in child mode) are blocked because adding them would produce a wrong query.
Search and navigation
Two search modes, six layered tools, and a fully keyboard-driven flow — find any of 17,500+ ACI classes in two keystrokes, or browse a whole package when you don't remember the name.
Favorites, recents, and trending
Star the classes you use, attach notes that make them findable by intent, work with backend-synced recents that follow you across devices, see what your team is using via Trending, and tune the detail panel — all the personal-library features in one place.