-
Notifications
You must be signed in to change notification settings - Fork 4
workspace sdk components
Components are the extension points of the Workspace SDK. They allow modules to add functionality to Security Center client applications such as Security Desk and Config Tool. Each component type serves a specific purpose: rendering content in tiles, adding widgets to dashboards, extending maps, encoding credentials, and more.
Not all component types are available in both applications. Dashboard widgets require Security Desk. Other component types such as map components, credential components, and image extractors are available in both applications.
Shared components are a separate mechanism from
Workspace.Components. Use Workspace.SharedComponents and
Monitor.SharedComponents to consume built-in shared UI
components. For details, see
About shared components.
All components inherit from a specialized abstract class such as ContentBuilder, TileWidgetBuilder, or DashboardWidgetBuilder. These classes inherit from the Component base class, which provides the shared registration and initialization infrastructure.
Do not inherit from Component directly. Each specialized component class seals the Type property to return a predefined identifier that the system uses to route the component to the correct consumer. Inheriting from Component directly produces a component that the system does not know how to use.
| Member | Kind | Description |
|---|---|---|
Name |
Property (abstract) | Display name for the component. |
UniqueId |
Property (abstract) | Unique identifier for this component instance. Each component must return a distinct GUID. |
Type |
Property (abstract) | Component type identifier. Sealed by each specialized class. Do not override this yourself. |
IsAvailable |
Property | Whether the component is currently available. Defaults to false. Set to true after initialization. |
Workspace |
Property | The workspace instance. Available after Initialize(Workspace) is called. |
Initialize(Workspace) |
Method | Initializes the component with the workspace. Call this before registering the component. |
Initialize() |
Method (protected virtual) | Override to perform setup after Workspace is available. Called by Initialize(Workspace). |
Register and unregister components through Workspace.Components:
public class SampleModule : Module
{
private MyContentBuilder m_component;
public override void Load()
{
m_component = new MyContentBuilder();
m_component.Initialize(Workspace);
Workspace.Components.Register(m_component);
}
public override void Unload()
{
Workspace.Components.Unregister(m_component);
}
}| Member | Description |
|---|---|
Register(Component) |
Register a component with the workspace. |
Unregister(Component) |
Remove a component from the workspace. |
this[Guid type] |
Get all registered components of the specified type as a ReadOnlyCollection<Component>. |
this[Guid type, Guid id] |
Get a specific component by type and unique identifier. |
Count |
The number of registered components. |
The SDK provides the following component types. Each type has a dedicated abstract class to inherit from.
These components extend Security Desk's tile-based monitoring interface.
| Component | Base class | Description |
|---|---|---|
| Content builder | ContentBuilder |
Controls what appears inside tiles. Handles entity drag-and-drop, events, and alarms by producing ContentGroup and Content objects. The system calls builders in priority order and uses the first non-null result. |
| Tile widget | TileWidgetBuilder |
Adds collapsible panels to the right-side controls area when a tile is selected. Displays supplementary information or controls related to the tile content. |
| Tile view | TileViewBuilder |
Renders overlays and custom visualizations directly inside the tile area. Supports placement over video, below the toolbar, or as full-tile content. |
| Tile properties | TilePropertiesBuilder |
Adds configuration tabs to the bottom of the right-side controls panel alongside the built-in "General" tab. |
For content builder implementation details, see About content builders.
For tile widget, tile view, and tile properties implementation details, see Creating tile extensions.
| Component | Base class | Description |
|---|---|---|
| Dashboard widget | DashboardWidgetBuilder |
Adds widgets to Security Desk dashboards. The builder creates DashboardWidget instances that provide visual content and configuration options. |
For dashboard widget implementation details, see Creating dashboard widgets.
These components extend Security Center's mapping capabilities. Map components are available in both Security Desk and Config Tool.
| Component | Base class | Description |
|---|---|---|
| Map panel | MapPanelBuilder |
Adds panels to the map interface. |
| Map searcher | MapSearcher |
Implements map search. Override Search(MapSearcherContext) to return IList<MapSearcherResult> with matching locations. |
| Map importer | MapImporter |
Imports external map data. Returns MapImporterResult. |
| Map object provider | MapObjectProvider |
Supplies custom objects for display on maps. |
| Map object view | MapObjectViewBuilder |
Builds visual representations of custom map objects. |
| Map layer | MapLayerBuilder |
Adds custom overlay layers to maps. |
| Map designer tool | MapDesignerTool |
Adds tools to the map designer in Config Tool. |
| Map designer widget | MapDesignerWidget |
Adds widgets to the map designer in Config Tool. |
For map component implementation details, see Extending maps.
These components extend cardholder and credential management. They are available in both Security Desk and Config Tool.
| Component | Base class | Description |
|---|---|---|
| Badge printer | BadgePrinter |
Implements badge printing through IBadgeService. |
| Credential encoder | CredentialEncoder |
Encodes credential data to external hardware. Override Encode(CredentialEncoderData). |
| Credential reader | CredentialReader |
Reads credential data from external hardware. CardholderCredentialReader provides a specialized variant for cardholder workflows. |
| Cardholder fields extractor | CardholderFieldsExtractor |
Imports cardholder data from external sources such as HR systems, vCard files, or custom integrations. Extracts fields like name, email, photo, credentials, and group assignments. |
For badge printer implementation details, see About badge printers.
For credential encoder implementation details, see About credential encoders.
For credential reader implementation details, see About credential readers.
For cardholder fields extractor implementation details, see About cardholder fields extractors.
| Component | Base class | Description |
|---|---|---|
| Image extractor | ImageExtractor |
Captures images from external sources for cardholder photos, custom fields, and entity thumbnails. Available in both Security Desk and Config Tool. |
| Timeline provider | TimelineProviderBuilder |
Provides data for timeline visualizations. The TimelineProvider class inherits from DependencyObject, not Component. Register providers through TimelineProviderBuilder. |
For image extractor implementation details, see About image extractors.
For timeline provider implementation details, see About timeline providers.
| Component | Base class | Description |
|---|---|---|
| Pinnable content builder | PinnableContentBuilder |
Creates visual content for pinnable popups (floating panels) in monitor windows. |
| Logon provider | LogonProvider |
Customizes sign-in behavior for Security Center client applications. |
| Custom action | CustomActionBuilder |
Adds custom actions to the event-to-action system. The builder creates CustomActionView instances for configuring the action. |
| Incident | IncidentBuilder |
Adds custom incident types to the incident management system. The builder creates IncidentView instances for editing incident data. |
For pinnable content builder implementation details, see About pinnable content builders.
For logon provider implementation details, see About logon providers.
For custom action implementation details, see About custom actions.
For incident implementation details, see About incidents.
-
Security Center SDK Developer Guide Overview of the SDK framework and how to build integrations with Security Center.
-
Platform SDK
- Overview Introduction to the Platform SDK and core concepts.
- Connecting to Security Center Step-by-step guide for connecting and authenticating with the SDK.
- SDK Certificates Details certificates, licensing, and connection validation.
- Referencing SDK Assemblies Best practices for referencing assemblies and resolving them at runtime.
- SDK Compatibility Guide Understanding backward compatibility and versioning in the SDK.
- Entity Guide Explains the core entity model, inheritance, and how to work with entities.
- Entity Cache Guide Describes the engine's local entity cache and synchronization.
- Transactions Covers batching operations for performance and consistency.
- Events Subscribing to real-time system events.
- Actions Sending actions to Security Center.
- Security Desk Displaying content on monitors, reading tiles, sending tasks, and messaging operators.
- Custom Events Defining, raising, and subscribing to custom events.
- ReportManager Querying entities and activity data from Security Center.
- ReportManager Query Reference Complete reference of query types, parameters, and response formats.
- Privileges Checking, querying, and setting user privileges.
- Partitions Entity organization and access control through partitions.
- Logging How to configure logging, diagnostics, and debug methods.
-
Plugin SDK
- Overview Introduction to plugin architecture and capabilities.
- Certificates SDK certificate requirements for plugin roles.
- Lifecycle Initialization and disposal patterns.
- Threading Threading model, QueueUpdate, and async patterns.
- State Management Reporting plugin health and diagnostics.
- Configuration Configuration storage and monitoring.
- Restricted Configuration Secure credential storage and admin-only configuration.
- Events Event subscription and handling.
- Queries Query processing and response handling.
- Request Manager Request/response communication with clients.
- Database Database integration and schema management.
- Entity Ownership Understanding plugin-owned entities, running state management, and ownership release.
- Entity Mappings Using EntityMappings for plugin-specific configuration and external system integration.
- Server Management High availability and server failover.
- Custom Privileges Defining and enforcing custom privileges.
- Custom Entity Types Defining and managing plugin-specific entity types.
- Resolving Non-SDK Assemblies Handling third-party dependencies in plugins and workspace modules.
- Deploying Plugins Registering and deploying plugins and workspace modules.
- .NET 8 Support Building plugins with .NET 8 and .NET Standard compatibility.
-
Workspace SDK
- Overview Introduction to client-side UI extensions for Security Desk and Config Tool.
- Certificates SDK certificate requirements for workspace modules.
- Creating Modules Module lifecycle, registration patterns, and assembly resolution.
- Tasks Executable actions, home page entries, and programmatic invocation.
- Pages Page content, lifecycle, descriptors, and navigation.
- Components Dashboard widgets, tiles, maps, credentials, and content builders.
- Tile Extensions Custom tile widgets, views, and properties panels.
- Services Built-in services for dialogs, maps, alarms, badges, and more.
- Contextual Actions Right-click context menu extensions.
- Options Extensions Custom settings pages in application preferences.
- Configuration Pages Entity configuration pages for Config Tool.
- Monitors Multi-monitor support and shared components.
- Shared Components Using monitor and workspace shared UI components.
- Commands Command execution, evaluation, and interception.
- Extending Events Adding custom fields to Security Center events.
- Map Extensions Custom map objects, layers, and providers.
- Timeline Providers Custom timeline event sources for video playback.
- Image Extractors Custom image sources for cardholder photos and custom fields.
- Credential Encoders Encoding credentials with custom encoder components.
- Cardholder Fields Extractors Importing cardholder data from external sources.
- Content Builders Building and customizing tile content in Security Desk.
-
Macro SDK
- Overview How macros work, creating and configuring macro entities, automation, and monitoring.
- Developer Guide Developing macro code with the UserMacro class and Security Center SDK.
-
- Getting Started Setup, authentication, and basic configuration for the Web SDK.
- Referencing Entities Entity discovery, search capabilities, and parameter formats.
- Entity Operations CRUD operations, multi-value fields, and method execution.
- About access control in the Web SDK Concepts, relationships, and common access-control operations.
- About video in the Web SDK Concepts, relationships, configuration, and common video operations.
- Users and user groups Creating users, managing group membership, and assigning privileges.
- Partitions Managing partitions, entity membership, and user access control.
- Custom Fields Creating, reading, writing, and filtering custom entity fields.
- Custom Card Formats Managing custom credential card format definitions.
- Actions Control operations for doors, cameras, macros, and notifications.
- Events and Alarms Real-time event monitoring, alarm monitoring, and custom events.
- Incidents Incident management, creation, and attachment handling.
- Reports Activity reports, entity queries, and historical data retrieval.
- Tasks Listing and executing saved report tasks.
- Macros Monitoring currently running macros.
- Custom Entity Types Listing, retrieving, and deleting custom entity type descriptors.
- System Endpoints License usage, web tokens, and exception handling.
- Performance Guide Optimization tips and best practices for efficient API usage.
- Reference Entity GUIDs, EntityType enumeration, and EventType enumeration.
- Under the Hood Technical architecture, query reflection, and SDK internals.
- Troubleshooting Common error resolution and debugging techniques.
- Media Gateway Guide Setup and configuration of the Media Gateway role for video streaming.
- Developer Guide Complete guide to integrating GWP for live and playback video streaming.
- API Reference Full API documentation with interfaces, methods, properties, and events.
- Sample Application Comprehensive demo showcasing all GWP features with timeline and PTZ controls.
- Multiplexing Sample Multi-camera grid demo using a shared WebSocket connection.