This page is the full reference for the Document union type and its four shapes: EntityDetailsDefinitionDocument, EntityDetailsInjectionDocument, InvExDefinitionDocument, and InvExInjectionDocument.
DocumentTypetype DocumentType =| 'EntityDetailsDefinition'| 'EntityDetailsInjection'| 'InvExTypeDefinition'| 'InvExInjection';
The type field is the discriminant used throughout the SDK to identify which shape a document is and how to process it.
All four shapes extend a common base:
| Property | Type | Required | Description |
|---|---|---|---|
|
| yes | Document format version. Used for runtime migration in case of breaking changes. Always set to the |
|
| yes | Discriminant identifying the document shape. |
|
| no | DQL queries whose results become condition variables usable elsewhere in the document. See Conditional rendering. |
EntityDetailsDefinitionDocumentDefines the complete layout for a Smartscape entity type in Entity Details.
| Property | Type | Description |
|---|---|---|
|
| Which app and entity type this document applies to. See Targeting. |
|
| The full details composition: header, health alert groups, and tabbed content. |
{"version": "1.3.0","type": "EntityDetailsDefinition","target": { "app": "dynatrace.infraops", "nodeType": "dt.entity.host" },"content": {"type": "details","id": "host-details","header": { "title": "Host details" },"content": {"type": "tabs","items": [{ "type": "tab", "id": "overview", "title": "Overview", "content": [] }]}}}
EntityDetailsInjectionDocumentAdds a tab or a card into an existing Entity Details view, without owning the whole layout.
| Property | Type | Description |
|---|---|---|
|
| Which app, entity type, and optionally which tab to inject into. See Targeting. |
|
| The element to inject — a |
{"version": "1.3.0","type": "EntityDetailsInjection","target": { "app": "dynatrace.infraops", "nodeType": "dt.entity.host", "tabId": "overview" },"content": {"type": "message","id": "extra-info-card","cardTitle": "Extra info","content": "Injected content."}}
InvExDefinitionDocumentDefines a new type or subtype in Inventory Explorer.
| Property | Type | Description |
|---|---|---|
|
| Which app, Inventory Explorer instance, and optional parent type this document applies to. See Targeting. |
|
| The type/subtype definition: display name, icon, content layout, and filtering. |
|
| Optional. |
{"version": "1.3.0","type": "InvExTypeDefinition","target": { "app": "dynatrace.infraops" },"content": {"id": "my-custom-type","displayName": "My custom type","content": { "type": "vertical-layout", "items": [] }}}
InvExInjectionDocumentAdds content into an existing Inventory Explorer type.
| Property | Type | Description |
|---|---|---|
|
| Which app and Inventory Explorer type to inject into. See Targeting. |
|
| The layout element to inject. |
{"version": "1.3.0","type": "InvExInjection","target": { "app": "dynatrace.infraops", "invExType": "dt.entity.host" },"content": {"type": "message","id": "invex-banner","content": "Injected into Inventory Explorer."}}
Every document carries a version field, set to the SDK's VERSION constant. The version only changes for breaking format changes that require a migration path — additive changes (new optional fields, new element types) do not bump it. Always write the current VERSION value when authoring a new document; don't hardcode a version string independently of the SDK you're building against.
ExtensionsInfrastructure Observability