Skip to content

DOCS-13: Custom entity panel content - #361

Merged
jeff-matthews merged 2 commits into
release/v9.5.0from
DOCS-13-info-markdown
Jul 27, 2026
Merged

DOCS-13: Custom entity panel content#361
jeff-matthews merged 2 commits into
release/v9.5.0from
DOCS-13-info-markdown

Conversation

@jeff-matthews

@jeff-matthews jeff-matthews commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Purpose

This pull request (PR) documents an OpenGraph enhancement for v9.5.0.

Developers can use a new info object in the extension definition schema to control how content renders in the Entity panel for node and relationship kinds.

Note

This PR intends to add reference content only. I plan to add it to the draft extension development tutorial (#351) to showcase how this influences UI behavior).

Summary by CodeRabbit

  • Documentation
    • Added guidance for defining custom content in Entity panel accordion sections.
    • Documented section titles, ordering, Markdown content, identifiers, and behavior when no custom content is provided.
    • Updated node and relationship schema examples to show custom panel sections.

@jeff-matthews jeff-matthews self-assigned this Jul 27, 2026
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6cdb5fee-ba4c-4eb9-9406-70dbf56f86d7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

The graph definition guide now documents extension-defined custom Entity panel accordion sections through optional info objects on node and relationship kinds, and updates both inline and end-to-end schema examples.

Changes

Graph definition info documentation

Layer / File(s) Summary
Document the custom Entity panel contract
docs/opengraph/developer/graph-definition.mdx
Explains the info structure, required fields, section identifiers, ordering, rendering behavior, and node/relationship response fields.
Update graph definition examples
docs/opengraph/developer/graph-definition.mdx
Adds overview and abuse info sections to the main and end-to-end schema examples.

Estimated code review effort: 2 (Simple) | ~10 minutes

Poem

I’m a rabbit with docs in my paws,
Adding panels by accordion laws.
overview blooms bright,
abuse takes its place,
With tidy sections in the Entity space.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the docs change about custom Entity panel content via the new info object.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch DOCS-13-info-markdown

Comment @coderabbitai help to get the list of available commands.

@jeff-matthews jeff-matthews added opengraph Docs related to OpenGraph extension use and development v9.5.0 labels Jul 27, 2026
@jeff-matthews

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

| `info` key | Required | Stable section identifier. Must match `^[a-z0-9_-]{1,128}$`, which allows lowercase letters, numbers, hyphens, and underscores. |
| `title` | Required | Section title shown in the Entity panel accordion. |
| `position` | Required | Integer that controls section order. Lower values render first. Use `1` or greater. |
| `markdown.content` | Required | Markdown content rendered in the section body. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there constraints we want to document right now or a flavor of markdown we're supporting?

@jeff-matthews
jeff-matthews requested a review from craigw-SO July 27, 2026 16:36
- The `tag` namespace prefix is reserved in any letter case, including `tag`, `Tag`, and `TAG`. Do not use this prefix in an extension definition schema. If you do, BloodHound rejects the upload.
</Warning>

## Custom Entity panel content

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should be consistent with casing here, and throughout. I think Entity Panel is more correct, but open to suggestions.

For this specific case, either:

  1. Custom Entity Panel content
  2. Custom Entity Panel Content
  3. Custom entity panel content

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll normalize based on option 1.


## Custom Entity panel content

Use the `info` object to define custom Entity panel sections for node kinds and relationship kinds. When a user selects a node or relationship in Explore, BloodHound renders matching `info` entries as accordion sections in the Entity panel.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

matching info entries

is a little confusing.

might be more clear to say:

When ... selects ..., BloodHound renders an Entity Panel with the specified accordion sections as defined by the info entries.

| Field | Requirement | Description |
| --- | --- | --- |
| `info` key | Required | Stable section identifier. Must match `^[a-z0-9_-]{1,128}$`, which allows lowercase letters, numbers, hyphens, and underscores. |
| `title` | Required | Section title shown in the Entity panel accordion. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should clarify that it's the title displayed in the header of the accordion, not within the contents themselves.

in the ... accordion

is ambiguous.

| `position` | Required | Integer that controls section order. Lower values render first. Use `1` or greater. |
| `markdown.content` | Required | Markdown content rendered in the section body. |

For a single kind, BloodHound orders sections by `position`. If a node has multiple kinds and more than one kind defines `info` entries, BloodHound orders the sections by `position`, then `title`, and then the contributing node kind. Relationship panels use the same ordering behavior with the contributing relationship kind as the final tiebreaker.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not supporting multi-kind yet. That's an idea we had, but we're sticking to just the primary kind to start for simplicity's sake.


For a single kind, BloodHound orders sections by `position`. If a node has multiple kinds and more than one kind defines `info` entries, BloodHound orders the sections by `position`, then `title`, and then the contributing node kind. Relationship panels use the same ordering behavior with the contributing relationship kind as the final tiebreaker.

If no `info` entries are defined for the selected kind, BloodHound does not render extension-defined Entity panel sections.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should make it clear that all entity panels start with Object Information sections at the top (position 0) and lists all of a node's/edge's property, as it currently does. If info is omitted, this is still shown, there just isn't any additional panels.

@jeff-matthews
jeff-matthews requested a review from craigw-SO July 27, 2026 18:03
@jeff-matthews
jeff-matthews merged commit 2f8775d into release/v9.5.0 Jul 27, 2026
2 checks passed
@jeff-matthews
jeff-matthews deleted the DOCS-13-info-markdown branch July 27, 2026 18:15
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

opengraph Docs related to OpenGraph extension use and development v9.5.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants