Skip to content

web sdk reports

Andre Lafleur edited this page Dec 15, 2025 · 3 revisions

The /report Endpoint

The Security Center Web SDK provides reporting capabilities for querying historical activity data, events, and analytics. Reports allow you to retrieve audit trails, activity logs, and time-based data with filtering and time range support.

Reports vs Entity Searches

Understanding the distinction between reports and entity searches is critical:

Activity Reports (This Guide)

Purpose: Query historical events, activities, and time-based data

Examples:

  • "Show me all door access events in the last hour"
  • "Which cardholders accessed Building A yesterday?"
  • "List all unused credentials in the past 30 days"
  • "Show time attendance data for specific areas"

Characteristics:

  • Time-based queries (start/end times)
  • Event-driven data
  • Historical/audit information
  • Activity trails and logs

Report Types:

  • CardholderActivity
  • DoorActivity
  • AreaActivity
  • TimeAttendanceActivity
  • UnusedCredentials
  • And many more...

Entity Configuration Searches (See Entity Reference)

Purpose: Find entities for CRUD operations

Examples:

  • "Find all cardholders named John"
  • "List all doors in partition X"
  • "Get all active users"
  • "Find cameras in a specific area"
  • "List all access rules for a cardholder"

Report Types:

  • EntityConfiguration - Search for any entity type
  • CardholderConfiguration - Search for cardholders with specific criteria
  • CredentialConfiguration - Search for credentials
  • AccessRuleConfiguration - Search for access rules
  • UserReport - Search for user accounts
  • UserGroupReport - Search for user groups

See: Web SDK Entity Reference for complete entity search documentation.


Report Endpoint Structure

Basic Format

GET /report/{reportType}?q={filters}

Components:

  • {reportType} - The type of activity report (e.g., CardholderActivity, DoorActivity)
  • {filters} - Comma-separated filter expressions

Filter Syntax

Important

All activity reports require at least one filter.

Activity reports use specialized filters for time ranges and event filtering:

Pattern Purpose Example
TimeRange.SetTimeRange(start,end) Set time window TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)
EntityFilter@guid1@guid2 Filter by entities Doors@{guid1}@{guid2}
Events@eventId1@eventId2 Filter by event types Events@AccessGranted@AccessDenied
CustomEvents@id1@id2 Filter by custom events CustomEvents@{custom-event-guid}
MaximumResultCount=N Limit results MaximumResultCount=1000
SortOrder=value Sort direction SortOrder=Descending

Example Request

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z),Events@AccessGranted,MaximumResultCount=100

Response (actual format with data):

{
  "Rsp": {
    "Status": "Ok",
    "Result": [
      {
        "Timestamp": "2025-11-12T06:34:12.92Z",
        "EventType": 45,
        "UnitGuid": "00000000-0000-0000-0000-000000000000",
        "DeviceGuid": "00000000-0000-0000-0000-000000000000",
        "APGuid": "43cd07a1-93d0-4a87-b6a1-2228ec033967",
        "SourceGuid": "00000000-0000-0000-0000-000000000000",
        "CredentialGuid": "00000000-0000-0000-0000-000000000000",
        "CardholderGuid": "5ef8b764-de93-4395-9347-fc931f95a702",
        "Credential2Guid": "00000000-0000-0000-0000-000000000000",
        "TimeZone": "Singapore Standard Time",
        "OccurrencePeriod": 0,
        "AccessPointGroupGuid": "4fb9b4d3-e9cf-45b4-b1a0-3809154ca544",
        "CustomEventMessage": ""
      }
    ]
  }
}

Note

This is an actual response from the Web SDK. The Result array contains JSON objects with named properties matching the column names in the Response Format table.


Time Range Filtering

SetTimeRange Overloads

1. SetTimeRange(DateTime start, DateTime end)

Query between two specific timestamps.

TimeRange.SetTimeRange(2025-01-10T00:00:00Z,2025-01-11T00:00:00Z)

2. SetTimeRange(DateTime start, TimeSpan duration)

Query from a start time for a specific duration. TimeSpan format: days.hours:minutes:seconds

TimeRange.SetTimeRange(2025-01-10T00:00:00Z,1.00:00:00)

3. SetTimeRange(DateTime start)

Query from a start time to current time (DateTime.UtcNow).

TimeRange.SetTimeRange(2025-01-10T00:00:00Z)

4. SetTimeRange(TimeSpan timeSpanInThePast)

Query a time range in the past relative to current time. Subtracts the TimeSpan from DateTime.UtcNow.

TimeRange.SetTimeRange(7.00:00:00)

Time Range Examples

Last 24 hours (using two timestamps):

TimeRange.SetTimeRange(2025-01-10T00:00:00Z,2025-01-11T00:00:00Z)

Last 24 hours (using TimeSpan):

TimeRange.SetTimeRange(1.00:00:00)

Specific hour:

TimeRange.SetTimeRange(2025-01-10T14:00:00Z,2025-01-10T15:00:00Z)

Last 7 days:

TimeRange.SetTimeRange(7.00:00:00)

From specific date to now:

TimeRange.SetTimeRange(2025-01-01T00:00:00Z)

Time Zone Considerations

UTC timestamps (recommended):

TimeRange.SetTimeRange(2025-01-10T14:00:00Z,2025-01-10T15:00:00Z)

Local time with offset:

TimeRange.SetTimeRange(2025-01-10T09:00:00-05:00,2025-01-10T17:00:00-05:00)

Best practice: Always use UTC (with Z suffix) to avoid time zone ambiguity


Available Activity Reports

Reports are organized by functional similarity. Reports in the same group share common filters and response structures.

Access Control Activity Reports

Shared Characteristics: All reports in this group share the same base filters and 13-column response format. They query activity events with time ranges and event filtering.

Report Type Purpose Entity Collection Filter
CardholderActivity Cardholder access events and activities Cardholders
CredentialActivity Credential usage events Credentials
DoorActivity Door access events (granted, denied, forced, held) Doors
AreaActivity Area entry/exit activities Areas
ZoneActivity Zone activities and violations Zones
ElevatorActivity Elevator access and floor activities Elevators
AccessControlUnitActivity Access control unit events Units
VisitorActivity Visitor check-in/check-out activities Visitor
TimeAttendanceActivity Calculate time spent in areas by cardholders Areas, Cardholders

Video Event Reports

Shared Characteristics: All reports share video event structure with 10-column response format including camera, timestamp, and event details.

Report Type Purpose Key Differences
Bookmark Query video bookmarks Includes DescriptionFilter for text search
MotionEvent Query motion detection events Motion-specific event filtering
FileDeletionEvent Query file deletion events File deletion event types
RecordingEvent Query recording start/stop events Recording state change events
CameraEvent Query camera state change events Camera state transition events
BlockingVideoEvent Query video blocking events Privacy blocking events

Video Sequence & File Reports

Shared Characteristics: Video-related queries with camera and time range filtering.

Report Type Purpose Unique Features
VideoSequence Query recorded video sequences Sequence-based with motion filtering
VideoMotion Query video motion data Motion detection details
VideoFile Query video archive files Protection states and file metadata
Thumbnail Query video thumbnails Thumbnail image retrieval
CameraIntegrity Query camera integrity check events Integrity verification results

Archive Management Reports

Report Type Purpose Key Features
ArchiverStatisticsReport Query archiver performance statistics Performance metrics and statistics
ArchiveTransferReport Query archive transfer group states Transfer group status
TransferHistoryReport Query archive transfer attempt history Historical transfer data
TransferHistoryDetailsReport Query detailed transfer attempt information Detailed transfer metadata
ArchiverEvent Query archiver role events Archiver event tracking

Health & System Monitoring Reports

Report Type Purpose Key Features
HealthEvents Query system health event history Health event tracking
HealthStatistics Query health statistics and availability metrics MTTR, MTBF, uptime metrics
HardwareInventoryReport Query hardware inventory for units and devices Hardware configuration details

Audit & Compliance Reports

Report Type Purpose Key Features
AuditTrailsReport Entity modification history and audit trails Entity change tracking
ActivityTrailsReport User and system activity tracking Activity correlation
UnusedCredentials List credentials not used in time period Compliance reporting
UnusedCardholders List cardholders with no activity in time period Compliance reporting

License Plate Recognition (LPR) Reports

Report Type Purpose Key Features
LprRead Query license plate reads 37 columns including plate, location, images
LprReadById Query specific read by ID Single read retrieval
LprHit Query hotlist hits 82 columns with two read records
LprHitById Query specific hit by ID Single hit retrieval
PatrollerPositions Query patroller GPS positions Location tracking over time
LpmDailyUsage Query patroller daily usage statistics Operating time, stop time metrics
ParkingSession Query parking sessions Entry/exit, durations, violations
ParkingSessionById Query specific parking session Single session retrieval
ParkingZoneOccupancy Query parking zone occupancy Real-time and historical occupancy
ParkingZoneActivity Query parking zone activity Entries, exits, violations
Inventory Query LPR inventory records Permit management
LpmLoginRecorderPerPatroller Query patroller login/logout history Login session tracking
LpmReadsHitsStatsPerDay Query daily LPR statistics Aggregated read/hit counts per day
LpmImage Query full-size LPR images All image types and thumbnails

Intrusion Management Reports

Shared Characteristics: Both reports share the same 11-column response format with intrusion-specific filters for areas and units.

Report Type Purpose Entity Collection Filter
IntrusionAreaActivity Intrusion area events (armed, disarmed, violations) IntrusionAreas
IntrusionUnitActivity Intrusion unit status events (AC fail, battery, tamper) IntrusionUnits

Alarm Management Reports

Report Type Purpose Key Features
AlarmActivity Query alarm activity and acknowledgments 17 columns, multiple related tables

Incident Management Reports

Report Type Purpose Key Features
Incident Query incident records 15 columns including templates, references, attachments

Visitor Management Reports

Report Type Purpose Key Features
Visitor Query visitor entity records 18 columns including check-in/check-out status

Advanced Access Control Reports

Report Type Purpose Key Features
AccessControlRawEvent Query raw access control events from EventStream database Event position tracking, insertion timestamps, synchronization support
ExecuteSavedTask Execute saved task report configurations Dynamic schema, pre-configured queries, privilege-based execution
Custom Execute custom queries with flexible event filtering Custom events, entity expansion, extensible properties

Other Reports

Report Type Purpose Category
AssetEvent Query asset tracking events Asset Management
AssetAreaPresence Query asset presence in areas Asset Management

Report-Specific Filters

This section documents filters and response formats for all report types. Reports are grouped by similarity to avoid repetition.

⚠️ Filter Requirements for Activity Reports

Important

All activity reports require at least one filter. The entity collection filter requirement varies by report type:

Reports Where Entity Collection Filter is OPTIONAL

These reports work with various filter combinations (entity filter not required):

  • CardholderActivity - Cardholders@{guid} is OPTIONAL
  • CredentialActivity - Credentials@{guid} is OPTIONAL

Valid query examples (at least one filter required):

  • TimeRange.SetTimeRange(...)
  • Events@{event-type}
  • Events@{event-type},TimeRange.SetTimeRange(...)
  • Cardholders@{guid},TimeRange.SetTimeRange(...)

Reports Where Entity Collection Filter is MANDATORY

These reports REQUIRE the entity collection filter (other filters alone will return empty results):

  • DoorActivity - REQUIRES Doors@{guid}
  • AreaActivity - REQUIRES Areas@{guid}
  • ZoneActivity - REQUIRES Zones@{guid}
  • ElevatorActivity - REQUIRES Elevators@{guid}
  • AccessControlUnitActivity - REQUIRES Units@{guid}
  • VisitorActivity - REQUIRES Visitor@{guid}
  • IntrusionAreaActivity - REQUIRES IntrusionAreas@{guid}
  • IntrusionUnitActivity - REQUIRES IntrusionUnits@{guid}
  • LPR Reports - REQUIRE appropriate entity filters
  • Archiver Reports - REQUIRE Archivers@{guid}
  • Video Reports - REQUIRE Cameras@{guid} or appropriate entity filters
  • Asset Reports - REQUIRE appropriate entity filters

General Rule

At least one filter is REQUIRED for all reports to work.

Entity Collection Filters:

  • Optional for Cardholder and Credential activity reports
  • Mandatory for all other activity reports (Door, Area, Zone, Elevator, Visitor, Intrusion, LPR, Archiver, Video, Asset)

Note

Some reports like HardwareInventoryReport, UnusedCredentials, and UnusedCardholders are not time-based and do not use TimeRange.


Access Control Activity Reports

Most Access Control activity reports share the same base structure, filters, and response format. They differ only in the entity collection being queried.

Common Characteristics

All reports in this group share the same filters and return the same 13-column response format.

Shared Filters (All Access Control Reports)

Filter Type Required Description Example
{EntityCollection} Guid Varies* Collection of entity GUIDs to query. The collection name varies by report type (see table below). OPTIONAL for CardholderActivity and CredentialActivity. MANDATORY for all other reports (Door, Area, Zone, Elevator, Unit, Visitor). Cardholders@{guid1}@{guid2} or Doors@{door-guid}
TimeRange string No Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
Events int No Collection of event types to filter by. Events are pre-filled with default events for the entity type. Use Events*@ to clear defaults and specify new events (asterisk directly followed by @). Events@AccessGranted@AccessDenied or Events*@DoorForced@DoorHeld
CustomEvents int No Collection of custom event IDs to filter by (negative integers for custom events). CustomEvents@-1001@-1002
ExcludedExpansionEntities Guid No Entity GUIDs to exclude from expansion in the query results. ExcludedExpansionEntities@{guid1}@{guid2}
IncludedExpansionEntities Guid No Area or entity GUIDs to include in the query expansion. IncludedExpansionEntities@{guid1}@{guid2}
OfflinePeriodTypes string No Collection of offline period types to include. Default is all period types. OfflinePeriodTypes@Online@OnlineToOffline@Offline
AccessDecisionAuthorities string No Collection of access decision authority types to include. Default is all authorities. AccessDecisionAuthorities@Server@Unit
SortOrder string No Sort order for results. Values: Ascending, Descending. SortOrder=Descending
MaximumResultCount int No Maximum number of results to return. MaximumResultCount=100
QueryTimeout int No Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000
CustomFields string No Custom field filters to apply to the query. CustomFields.Add(fieldId,value)

*Entity Collection Filter Requirements by Report Type:

  • CardholderActivity, CredentialActivity: Entity filter is OPTIONAL - you can query with other filters only
  • DoorActivity, AreaActivity, ZoneActivity, ElevatorActivity, AccessControlUnitActivity, VisitorActivity: Entity filter is MANDATORY

Important

  • At least one filter is REQUIRED for all reports to work

Valid query examples:

CardholderActivity (entity filter optional):

GET /report/CardholderActivity?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)
GET /report/CardholderActivity?q=Events@AccessGranted,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)
GET /report/CardholderActivity?q=Cardholders@{guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

DoorActivity (entity filter mandatory):

GET /report/DoorActivity?q=Doors@{door-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Shared Response Format (All Access Control Reports)

The response includes the following columns:

Name Type Description
Timestamp DateTime The time (UTC) at which the event occurred.
EventType int The event type integer value of the access control event.
UnitGuid Guid The unique identifier of the access control unit involved in the event.
DeviceGuid Guid The unique identifier of the Device (Reader, InputDevice, etc.) involved in the event.
APGuid Guid The unique identifier of the access point (DoorSide, etc.) involved in the event.
SourceGuid Guid The GUID of the source entity (DoorSide, Door, Area).
CredentialGuid Guid The unique identifier of the primary Credential involved in the event.
CardholderGuid Guid The unique identifier of the Cardholder involved in the event.
Credential2Guid Guid The unique identifier of the second Credential involved in the event.
TimeZone string The standard name of the Timezone in which the event occurred.
OccurrencePeriod int The offline period type during which the event took place. Values: 0=None (Online), 1=GracePeriod, 2=OfflineAlarmPeriod, 3=Offline.
AccessPointGroupGuid Guid The unique identifier of the access point group (Door, Area, etc.) involved in the event.
CustomEventMessage string The message stored in the custom event description.

Access Control Report Types

Report Type Entity Collection Filter Description Special Notes
CardholderActivity Cardholders Query cardholder access events If CardholderGroup GUID is used, all cardholders in the group are queried.
CredentialActivity Credentials Query credential usage events Track when specific credentials were used.
DoorActivity Doors Query door access events If Area GUID is used, all doors in area are queried. If SystemConfiguration GUID is used, all doors in system are queried.
AreaActivity Areas Query area entry/exit events If SystemConfiguration GUID is used, all areas in system are queried.
ElevatorActivity Elevators Query elevator access events If Area GUID is used, all elevators in area are queried. If SystemConfiguration GUID is used, all elevators in system are queried.
AccessControlUnitActivity Units Query access control unit events Track unit-level events (online, offline, etc.).
IntrusionAreaActivity IntrusionAreas Query intrusion area events Track intrusion detection events.
IntrusionUnitActivity IntrusionUnits Query intrusion unit events Track intrusion unit status and events.

Example Requests

The following examples demonstrate common query patterns. Replace {EntityCollection} with the appropriate filter name from the table above (e.g., Cardholders, Doors, Areas).

Basic query with time range:

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Query multiple entities:

GET /report/DoorActivity?q=Doors@{door-guid-1}@{door-guid-2},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Filter by specific events:

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},Events@AccessGranted@AccessDenied,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Clear default events and add specific events:

GET /report/DoorActivity?q=Doors@{door-guid},Events*@DoorForced@DoorHeld,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Query by area (expand to all doors in area):

GET /report/DoorActivity?q=Doors@{area-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Query all entities in system:

GET /report/AreaActivity?q=Areas@{system-config-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z),MaximumResultCount=1000

Filter by offline period types:

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},OfflinePeriodTypes@Online@Offline,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Filter by access decision authorities:

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},AccessDecisionAuthorities@Unit@Server,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

Combine multiple filters:

GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},Events@AccessGranted@AccessDenied,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z),SortOrder=Descending,MaximumResultCount=500,OfflinePeriodTypes@Online

ZoneActivity Report

Purpose: Query zone activity events including zone violations, arming/disarming, and zone status changes.

Note

ZoneActivity has a unique 19-column response format that extends the standard Access Control format with additional zone-specific fields (EventId, TimeStampUtc, TimeStampLocal, TimeZoneId, ZoneId, OfflinePeriod).

Filters

All standard Access Control filters apply (see above), using the Zones collection filter.

Special Notes:

  • If Area GUID is used, all zones attached to the area will be queried
  • If SystemConfiguration GUID is used, all zones in the system will be queried

Response Format

Name Type Description
Timestamp DateTime The time (UTC) at which the event occurred.
EventType int The event type integer value of the access control event.
UnitGuid Guid The unique identifier of the access control unit involved in the event.
DeviceGuid Guid The unique identifier of the Device (Reader, InputDevice, etc.) involved in the event.
APGuid Guid The unique identifier of the access point (DoorSide, etc.) involved in the event.
SourceGuid Guid The GUID of the source entity (DoorSide, Door, Area).
CredentialGuid Guid The unique identifier of the primary Credential involved in the event.
CardholderGuid Guid The unique identifier of the Cardholder involved in the event.
Credential2Guid Guid The unique identifier of the second Credential involved in the event.
TimeZone string The standard name of the Timezone in which the event occurred.
OccurrencePeriod int The offline period type during which the event took place. Values: 0=None (Online), 1=GracePeriod, 2=OfflineAlarmPeriod, 3=Offline.
AccessPointGroupGuid Guid The unique identifier of the access point group (Door, Area, etc.) involved in the event.
CustomEventMessage string The message stored in the custom event description.
EventId int The unique database table identifier of the event occurrence.
TimeStampUtc DateTime The DateTime (UTC) at which the event occurred.
TimeStampLocal DateTime The DateTime (local) at which the event occurred.
TimeZoneId string The standard name of the Timezone in which the event occurred.
ZoneId Guid The unique identifier of the Zone entity involved in the event.
OfflinePeriod int The offline period type during which the event took place. Values: 0=None (Online), 1=GracePeriod, 2=OfflineAlarmPeriod, 3=Offline.

Example Request

GET /report/ZoneActivity?q=Zones@{zone-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)

TimeAttendanceActivity

Purpose: Calculate time spent in areas for time & attendance tracking. Reports if a cardholder was in a desired area during a specific time.

Important

Both Areas and Cardholders filters are required for this report type.

Available Filters

Filter Type Description Example
Areas Guid Collection of area GUIDs to track. Areas@{area-guid1}@{area-guid2}
Cardholders Guid Collection of cardholder, cardholder group, or visitor GUIDs to track. Cardholders@{cardholder-guid1}@{cardholder-guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
DayStartOffset TimeSpan Sets the local day start time offset. Default is midnight (00:00:00). Use format HH:MM:SS. DayStartOffset=08:00:00
SortOrder string Sort order for results. Values: Ascending, Descending. SortOrder=Descending
QueryTimeout int Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000
CustomFields string Custom field filters to apply to the query. CustomFields.Add(fieldId,value)

Note

MaximumResultCount is not supported for this report type.

Response Format

The response includes the following columns:

Name Type Description
Date string The date (local time) for the attendance record. ISO 8601 format.
CardholderGuid string The unique identifier (GUID string) of the cardholder.
AreaGuid string The unique identifier (GUID string) of the area.
TotalMinutes int Total time in minutes spent in the area (exclusive).
FirstTimeIn string Timestamp of the first entry into the area. ISO 8601 format.
LastExitTime string Timestamp of the last exit from the area. ISO 8601 format.
TotalMinutesInclusive int Total time in minutes spent in the area (inclusive of entry/exit times).
TimeZoneId string The timezone identifier for the area.

Filter Examples

Basic time attendance query:

GET /report/TimeAttendanceActivity?q=Areas@{area-guid},Cardholders@{cardholder-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-08T00:00:00Z)

Set day start offset (8 AM):

GET /report/TimeAttendanceActivity?q=Areas@{area-guid},Cardholders@{cardholder-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-08T00:00:00Z),DayStartOffset=08:00:00

Multiple areas and cardholders:

GET /report/TimeAttendanceActivity?q=Areas@{area-1}@{area-2},Cardholders@{ch-1}@{ch-2},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-08T00:00:00Z)

Track cardholder group:

GET /report/TimeAttendanceActivity?q=Areas@{area-guid},Cardholders@{cardholder-group-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-08T00:00:00Z)

Video Management Reports

Important

Video reports require an Archiver role to be configured and running in the Security Center system. If video functionality is not available, video report queries will return "Message": "Query unsuccessful: DispatchFailed" errors.

VideoSequence

Purpose: Query video sequences from cameras. Returns time periods when video is available, including start and end times for each sequence.

Note

Sequence query results are not influenced by the security level of the user, meaning it will include results when the camera was blocked. To query blocking video events, see BlockingVideoEvent.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing sequence data:

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string Unsupported, internal use only. The unique identifier (GUID string) of the Archiver Agent entity.
StartTime string The start time (UTC) of the video sequence. ISO 8601 format.
EndTime string The end time (UTC) of the video sequence. ISO 8601 format.
Capabilities int Unsupported, internal use only. Capabilities integer value.
TimeZone string The timezone of the device.
EncoderGuid string The unique identifier (GUID string) of the VideoUnit (video encoder).
UsageGuid string Unsupported, internal use only. The stream usage GUID string.
OriginGuid string Unsupported, internal use only. The unique identifier (GUID string) of the origin.
MediaTypeGuid string Unsupported, internal use only. The media type GUID string.
OriginType int Unsupported, internal use only. The origin type integer value.

Examples

Example 1: Query all video sequences for the last 24 hours

GET /report/VideoSequence?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query sequences for specific camera

GET /report/VideoSequence?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 3: Query with result limit

GET /report/VideoSequence?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=100

Bookmark

Purpose: Query video bookmark events. Bookmarks are markers placed on video timelines to identify important moments.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
Events int Collection of event types to filter by. Events@{event-type1}@{event-type2}
DescriptionFilter String Filter bookmarks by description text. Searches for partial matches. DescriptionFilter=suspect
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing bookmark event data:

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC when the bookmark was created. ISO 8601 format.
EventType int The event type integer value.
Value int The value associated with the event.
Notes string The bookmark description/notes.
XMLData string Additional XML data associated with the bookmark.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone of the device.
Thumbnail string Thumbnail image data as base64 string (if available).

Examples

Example 1: Query all bookmarks for the last 7 days

GET /report/Bookmark?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-06T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query bookmarks for specific camera

GET /report/Bookmark?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 3: Query bookmarks with description filter

GET /report/Bookmark?q=DescriptionFilter=suspect,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 4: Query with specific event types

GET /report/Bookmark?q=Events@42001,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

MotionEvent

Purpose: Query video motion detection events. Returns motion events detected on camera video streams.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
Events int Collection of event types to filter by. Events@{event-type1}@{event-type2}
MotionThreshold int The motion threshold value for filtering (0-100). Only returns motion events with motion percentage at or above this threshold. MotionThreshold=50
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing motion event data:

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC when motion was detected. ISO 8601 format.
EventType int The event type integer value.
Value int The motion percentage value (0-100).
Notes string Additional notes.
XMLData string Additional XML data associated with the motion event.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone of the device.
Thumbnail string Thumbnail image data as base64 string (if available).

Examples

Example 1: Query all motion events for the last 24 hours

GET /report/MotionEvent?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query motion events for specific camera

GET /report/MotionEvent?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 3: Query motion events above threshold

GET /report/MotionEvent?q=MotionThreshold=50,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 4: Query with result limit and threshold

GET /report/MotionEvent?q=MotionThreshold=75,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=100

VideoFile

Purpose: Query video archive files. Returns information about physical video files stored on archivers, including file paths, sizes, and protection status.

Time Range Usage: The TimeRange filter specifies a lower and upper bound to the archives. It includes any archive that spans over the TimeRange lower bound, plus any subsequent archive that ends before the TimeRange upper bound. The SecondStartTime filter specifies an upper limit to the archive file start time. All files that start between the lower bound of TimeRange and SecondStartTime, and end before the upper bound of TimeRange, will be returned.

To query for any archive that intersects a specified range (from t_start to t_end), specify t_start and DateTime.Max in the TimeRange, and t_end as the SecondStartTime filter. This will return all the files that contain video in the specified range.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. See above for usage details. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
SecondStartTime DateTime Upper limit to the archive file start time. Use with TimeRange to query files intersecting a specific range. Format: UTC datetime. SecondStartTime=2025-01-12T11:00:00Z
IsInfiniteProtection Boolean Filter to query files with infinite protection status. IsInfiniteProtection=true
ProtectionEndDate DateTime Filter by protection end date. Format: UTC datetime. ProtectionEndDate=2025-12-31T23:59:59Z
VideoProtectionStates string Collection of video protection states to filter by. VideoProtectionStates@Protected@Locked
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing video file data:

Name Type Description
CameraGuid string The camera unique identifier (GUID string).
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
StartTime string The start time (UTC) of the video file. ISO 8601 format.
EndTime string The end time (UTC) of the video file. ISO 8601 format.
FilePath string The file path on the hard disk (server-side path).
FileSize number The file size in bytes.
MetadataPath string The file path of the metadata file.
ProtectionStatus int The video protection state integer value (0=None, 1=Protected, 2=Locked).
InfiniteProtection bool True if the protection is infinite, otherwise false.
Drive string The hard drive location (C:, D:, etc).
Error int The error code integer value (0 if no error).
ProtectionEndDateTime string The date at which the protection ends (UTC). ISO 8601 format. Null if InfiniteProtection is true.

Examples

Example 1: Query all video files for the last 24 hours

GET /report/VideoFile?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query video files for specific camera

GET /report/VideoFile?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 3: Query files intersecting a specific time range

To find all files containing video between 10:00 and 11:00:

GET /report/VideoFile?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T10:00:00Z,9999-12-31T23:59:59Z),SecondStartTime=2025-01-12T11:00:00Z

Example 4: Query protected video files

GET /report/VideoFile?q=VideoProtectionStates@Protected,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 5: Query files with infinite protection

GET /report/VideoFile?q=IsInfiniteProtection=true,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-13T00:00:00Z)

VideoMotion

Purpose: Query video motion periods. Returns time ranges when motion was detected in camera video, different from MotionEvent which returns individual motion events.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
ConsecutivesFrames int Number of consecutive frames required for motion detection. ConsecutivesFrames=3
MotionThreshold int The motion threshold value (0-100). Motion percentage required to trigger detection. MotionThreshold=50
TimeBetweenFrames int Time between frames in milliseconds. TimeBetweenFrames=500
Mask MotionMask Motion mask defining the area for motion detection (complex object, not easily set via URL). N/A
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing motion period data:

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string Unsupported, internal use only. The unique identifier (GUID string) of the Archiver Agent entity.
StartTime string The start time (UTC) of the motion period. ISO 8601 format.
EndTime string The end time (UTC) of the motion period. ISO 8601 format.
Capabilities int Unsupported, internal use only. Capabilities integer value.
TimeZone string The timezone of the device.
EncoderGuid string The unique identifier (GUID string) of the VideoUnit (video encoder).
UsageGuid string Unsupported, internal use only. The stream usage GUID string.
OriginGuid string Unsupported, internal use only. The unique identifier (GUID string) of the origin.
MediaTypeGuid string Unsupported, internal use only. The media type GUID string.
OriginType int Unsupported, internal use only. The origin type integer value.

Examples

Example 1: Query motion periods for last 24 hours

GET /report/VideoMotion?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query with motion threshold

GET /report/VideoMotion?q=MotionThreshold=50,ConsecutivesFrames=3,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

FileDeletionEvent

Purpose: Query video file deletion events. Returns events when video files were deleted from archive storage.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
Events int Collection of event types to filter by. Events@{event-type1}@{event-type2}
DateTimeFilter DateTime Datetime to query for file deletion events. Format: UTC datetime. DateTimeFilter=2025-01-12T10:00:00Z
FileFilter String File filter to query for file deletion events. Searches for partial file name matches. FileFilter=camera01
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing file deletion event data (same as VideoEventQuery format):

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC when the file was deleted. ISO 8601 format.
EventType int The event type integer value.
Value int The value associated with the event.
Notes string Additional notes about the file deletion.
XMLData string Additional XML data associated with the file deletion event.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone of the device.

Examples

Example 1: Query all file deletion events

GET /report/FileDeletionEvent?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query with file filter

GET /report/FileDeletionEvent?q=FileFilter=camera01,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

RecordingEvent

Purpose: Query video recording start/stop events. Returns events when cameras started or stopped recording.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
Events int Collection of event types to filter by. Events@{event-type1}@{event-type2}
StartRecordingFilter Boolean Filter for events where recording started. StartRecordingFilter=true
StopRecordingFilter Boolean Filter for events where recording stopped. StopRecordingFilter=true
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing recording event data (same as VideoEventQuery format):

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC when recording started/stopped. ISO 8601 format.
EventType int The event type integer value.
Value int The value associated with the event.
Notes string Additional notes.
XMLData string Additional XML data associated with the recording event.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone of the device.

Examples

Example 1: Query all recording events

GET /report/RecordingEvent?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query recording start events only

GET /report/RecordingEvent?q=StartRecordingFilter=true,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

CameraEvent

Purpose: Query camera events. Returns various camera-related events such as state changes, configuration changes, and camera-specific notifications.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
Events int Collection of event types to filter by. Events@{event-type1}@{event-type2}
DescriptionFilter String Filter events by description text. Searches for partial matches. DescriptionFilter=offline
ValueFilter int Filter events by value field. ValueFilter=1
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. Defaults to no limit. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

The response returns a JSON object with a results array containing camera event data (same as VideoEventQuery format):

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC when the camera event occurred. ISO 8601 format.
EventType int The event type integer value.
Value int The value associated with the event.
Notes string Additional notes or description of the camera event.
XMLData string Additional XML data associated with the camera event.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone of the device.

Examples

Example 1: Query all camera events

GET /report/CameraEvent?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query with description filter

GET /report/CameraEvent?q=DescriptionFilter=offline,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

CameraConfiguration

Purpose: Query camera configuration information including manufacturer, model, stream settings, recording parameters, network settings, and retention policies.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query (required). Cameras@{guid1}@{guid2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
Guid Guid The unique identifier of the camera.
Manufacturer string The manufacturer of the camera.
Model string The model of the camera.
StreamUsage string The available stream usage of the camera.
Schedule string The video quality schedule name of the camera.
VideoFormat string The video format.
Resolution string The resolution.
RecordingMode string The recording mode.
NetworkSetting string The network setting connection type.
MulticastAddress string The Multicast address.
Port string The Port.
Trickling string The Trickling (Yes or No).
BitRate int The BitRate.
ImageQuality int The Image Quality.
KeyFrameInterval int The Key Frame Interval.
KeyFrameIntervalUnits int The Key Frame Interval unit. Values: 0=seconds, 1=images.
FrameRate int The Frame Rate.
UnitFirmwareVersion string The Unit Firmware Version.
UnitIpAddress string The Unit Ip Address.
RetentionPeriod int Retention period currently applied to the camera.

Examples

Example 1: Query configuration for specific cameras

GET /report/CameraConfiguration?q=Cameras@{camera-guid-1}@{camera-guid-2},MaximumResultCount=100

Example 2: Query configuration for a single camera

GET /report/CameraConfiguration?q=Cameras@{camera-guid}

BlockingVideoEvent

Purpose: Query blocking video events. These events occur when a camera is blocked or unblocked due to security level restrictions. The XMLData column contains the security level of the user who blocked the camera (UserLevel) and at which level the camera was blocked (BlockLevel).

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query. Cameras@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
Events int Collection of event types to filter. Events@{eventType1}@{eventType2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
ArchiveSourceGuid string The unique identifier (GUID string) of the source archiver.
EventTime string The event time in UTC. ISO 8601 format.
EventType int The event type integer value.
Value int The value associated with the event.
Notes string Additional notes.
XMLData string XML data containing UserLevel and BlockLevel information.
Capabilities int The capabilities integer value. This is for internal use only.
TimeZone string The timezone.
Thumbnail string Base64 encoded thumbnail data (if available).

Examples

Example 1: Query all blocking video events

GET /report/BlockingVideoEvent?q=Cameras@{camera-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query blocking events for specific cameras

GET /report/BlockingVideoEvent?q=Cameras@{camera-guid-1}@{camera-guid-2},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Thumbnail

Purpose: Query video thumbnails for cameras. Returns thumbnail images for specified timestamps or time ranges. This is useful for generating thumbnail strips or retrieving thumbnails at specific points in time.

Note

This query uses method calls rather than simple filters for specifying search criteria.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query. Cameras@{guid1}@{guid2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Special Methods:

  • AddTimestamp(camera, timestamp, width) - Query thumbnail at specific timestamp
  • AddTimestamp(camera, timestamp, width, context) - Query thumbnail at specific timestamp with context
  • AddTimestampRange(camera, start, end, thumbnailCount, width) - Query thumbnails in time range
  • AddTimestampRange(camera, start, end, thumbnailCount, width, context) - Query thumbnails in time range with context

Response Format

Name Type Description
Camera string The unique identifier (GUID string) of the camera.
Timestamp string The timestamp of the thumbnail. ISO 8601 format.
Thumbnail string Base64 encoded thumbnail image data. Use a MemoryStream to convert to an image.
Context string The GUID string of the context. Generally returns empty GUID.
LatestFrame string The timestamp of the last frame when available, otherwise minimum DateTime value. ISO 8601 format.

Examples

Example 1: Query thumbnails for a camera

GET /report/Thumbnail?q=Cameras@{camera-guid}

Example 2: Query thumbnails with maximum result limit

GET /report/Thumbnail?q=Cameras@{camera-guid},MaximumResultCount=50

ArchiverStatistics

Purpose: Query archiver statistics including camera counts, disk space usage, network traffic, and cloud archive information. Querying statistics will return refreshed data.

Filters

Filter Type Description Example
Archivers Guid Collection of archiver role GUIDs to query (required). Archivers@{guid1}@{guid2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
RoleId string The unique identifier (GUID string) of the archiver role.
ServerId string The unique identifier (GUID string) of the server associated with the role.
ActiveCameras int The number of currently active cameras.
ArchivingCameras int The number of currently archiving cameras.
LoadPercent number The percent load on disk as UsedSpace / (UsedSpace + AvailableSpace) * 100.
ReceivingRate int The receiving rate in bytes per second.
WritingRate int The writing rate in bytes per second.
ArchivingSpan string The archiving span as a TimeSpan string.
AvailableSpace int The amount of available space on disk in bytes.
FreeSpace int The free space on disk in bytes.
UsedSpace int The amount of used space on disk in bytes.
ComputerNetworkTrafficIn int Network traffic in bytes per second.
ComputerNetworkTrafficOut int Network traffic out bytes per second.
CloudArchivesUploadSpeedInBytesPerSecond int Cloud archives upload speed in bytes per second.
CloudArchivesUploadSpeedStartTime string Cloud archives upload speed calculation range start time. ISO 8601 format.
CloudArchivesUploadSpeedEndTime string Cloud archives upload speed calculation range end time. ISO 8601 format.
CloudArchivesBacklogFilesCount int Cloud archives upload backlog files count.
CloudArchivesBacklogOldestFileStartTime string Cloud archives upload backlog oldest file date. ISO 8601 format.
CloudArchivesBacklogSizeInBytes int Cloud archives upload backlog size in bytes.

Examples

Example 1: Query archiver statistics

GET /report/ArchiverStatistics?q=Archivers@{archiver-role-guid},MaximumResultCount=100

Example 2: Query statistics for multiple archivers

GET /report/ArchiverStatistics?q=Archivers@{archiver-role-guid-1}@{archiver-role-guid-2}

ArchiverEvent

Purpose: Query archiver events such as archiver state changes, disk space warnings, and other archiver-related events.

Filters

Filter Type Description Example
Archivers Guid Collection of archiver role GUIDs to query. Archivers@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
Events int Collection of event types to filter. Events@{eventType1}@{eventType2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
ArchiveSourceGuid string The unique identifier (GUID string) of the archiver.
EventTime string The time when event triggered. ISO 8601 format in UTC.
EventType int The event type integer value.

Examples

Example 1: Query all archiver events

GET /report/ArchiverEvent?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query archiver events for specific archivers

GET /report/ArchiverEvent?q=Archivers@{archiver-role-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

CameraIntegrity

Purpose: Query camera integrity checks. This query returns events from the Camera Integrity Monitor Analysis Module when camera integrity changes are detected (such as tampering, obstruction, or scene changes).

Note

This query will not return any results unless the Camera Integrity Monitor Analysis Module is enabled and one or more cameras are being monitored.

Filters

Filter Type Description Example
Cameras Guid Collection of camera GUIDs to query. Cameras@{guid1}@{guid2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
CameraGuid string The unique identifier (GUID string) of the camera.
EventTime string The date of the event. ISO 8601 format in UTC.
EventType int The event type integer value.
Notes string The event notes.
Thumbnail string Base64 encoded thumbnail of the video feed at the time integrity changed.
Value int The value depends on the EventType.

Examples

Example 1: Query all camera integrity events

GET /report/CameraIntegrity?q=Cameras@{camera-guid},MaximumResultCount=100

Example 2: Query integrity events for specific cameras

GET /report/CameraIntegrity?q=Cameras@{camera-guid}

ArchiveTransfer

Purpose: Query archive transfer groups and their current state. Returns information about transfer groups including their type, status, and timing information.

Filters

Filter Type Description Example
TransferGroupIds Guid Collection of transfer group GUIDs to query. TransferGroupIds@{guid1}@{guid2}
OnlyActiveTransfers Boolean Whether to only return currently active transfer groups. OnlyActiveTransfers=true
TotalDuration TimeSpan Total duration of the query. TotalDuration=02:00:00
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
TransferGroupId string The unique identifier (GUID string) of the transfer group.
Name string The name of the transfer group.
Type int The transfer group type integer value.
Duration string Duration as a TimeSpan string.
Status int The transfer state status integer value.
Progress int Progress value.
LastTransferStart string Last transfer start time. ISO 8601 format.
LastTransferEnd string Last transfer end time. ISO 8601 format.
LastTransferStatus int Last transfer status integer value.
NextTransferStart string Next transfer start time. ISO 8601 format.
ArchiveSourceGuid string The unique identifier (GUID string) of the archive source.

Examples

Example 1: Query all archive transfers

GET /report/ArchiveTransfer?q=MaximumResultCount=100

Example 2: Query only active transfers

GET /report/ArchiveTransfer?q=OnlyActiveTransfers=true

TransferHistory

Purpose: Query archive transfer attempt history. Returns historical records of transfer group attempts including their trigger reason, type, result, and retry information.

Filters

Filter Type Description Example
TransferGroupsToQuery Guid List of transfer group GUIDs to query. TransferGroupsToQuery@{guid1}@{guid2}
ResultsCount int Number of results returned for each transfer group. ResultsCount=50
RowId Long Specific row in database to query. RowId=12345
ResultsTimeRange string Specific date time range to query. ResultsTimeRange.SetRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
TransferResultsFilter int Specific transfer results to filter. TransferResultsFilter@{result1}@{result2}
TransferTypeFilter int Specific transfer types to filter. TransferTypeFilter@{type1}@{type2}
TriggerReasonFilter int Specific trigger reasons to filter. TriggerReasonFilter@{reason1}@{reason2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
TransferGroupId string The unique identifier (GUID string) of the transfer group.
InitialStartTime string The start time (trigger time) of the transfer group attempt. ISO 8601 format.
EndTransferTime string The end time of the transfer group attempt. ISO 8601 format.
triggerReason int The trigger reason integer value of the transfer group attempt.
transferType int The transfer type integer value of the transfer group.
transferResult int The transfer result integer value of the transfer group attempt.
PartialFailure bool Whether the transfer group attempt is partial fail.
RetryCount int The number of retry attempts for the transfer group attempt.
RowId int The row id of the transfer group attempt in database.

Examples

Example 1: Query transfer history

GET /report/TransferHistory?q=ResultsTimeRange.SetRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query transfer history with result count limit

GET /report/TransferHistory?q=TransferGroupsToQuery@{guid},ResultsCount=10

TransferHistoryDetails

Purpose: Query detailed information about specific archive transfer attempts. Returns collection-level details for transfer attempts including transfer results, error codes, and data transferred.

Filters

Filter Type Description Example
TransferGroupId Guid The specific transfer group to query. TransferGroupId={guid}
TransferAttemptIds int List of specific transfer group attempt row IDs to query (long integers, not GUIDs). TransferAttemptIds@{row-id1}@{row-id2}
CollectionIds Guid List of specific collection GUIDs to query. CollectionIds@{guid1}@{guid2}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
TransferGroupAttemptId int The unique identifier of the transfer group attempt associated to this result.
CollectionId string The Collection id (GUID string) of the associated transfer collection attempt.
transferResult int The transfer result integer value of the associated transfer collection attempt.
errorCode int The error code integer value of the associated transfer collection attempt.
TransferredDataSize int The amount of data transferred on the associated transfer collection attempt in bytes.

Examples

Example 1: Query transfer history details for a transfer group

GET /report/TransferHistoryDetails?q=TransferGroupId={transfer-group-guid}

Example 2: Query transfer history details for specific attempts

GET /report/TransferHistoryDetails?q=TransferAttemptIds@{row-id1}@{row-id2}

AuditTrail

Purpose: Query audit trails on entities. Returns a history of all modifications made to entities including who made the change, when it was made, what was changed, and the old/new values.

Note

This query does not support custom field filtering. Custom fields filtering only properly works on specific queries - AuditTrailQuery is one of the queries that does NOT support this feature.

Filters

Filter Type Description Example
QueryEntities Guid Collection of entity GUIDs to query audit trails for. QueryEntities@{guid1}@{guid2}
Users Guid Collection of user/role GUIDs who made modifications. Users@{guid1}@{guid2}
EntityTypes int Collection of entity types to query. Cannot be used with QueryEntities. EntityTypes@{type1}@{type2}
Applications int Collection of application types that made modifications. Applications@{app1}@{app2}
IncludedAreas Guid Area GUIDs to include in query. IncludedAreas@{guid1}@{guid2}
ExcludedAreas Guid Area GUIDs to exclude from query. ExcludedAreas@{guid1}@{guid2}
AuditAttributes Guid Specific audit attribute (property ID) GUIDs to query. AuditAttributes@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
Id int The unique Id number.
Guid string The GUID string of the entity being audited.
ModificationTimeStamp string The modification time stamp in UTC. ISO 8601 format.
ModifiedBy string The GUID string of the entity that modified the audited entity.
SourceApplicationGuid string The GUID string of the application entity (Config Tool, Security Desk, SDK, etc.).
Name string The name of the audited entity.
ModifiedByAsString string The name of the entity that modified the audited entity.
SourceApplicationAsString string The name of the application that did the modification.
Machine string The machine name.
SourceApplicationType int The application type integer value.
OldValue string The old value.
NewValue string The new value.
CustomFieldId string The custom field id (GUID string). Can be empty GUID.
CustomFieldName string The custom field name. Can be empty.
CustomFieldValueType int The custom field value type integer.
AuditTrailModificationType int The audit trail modification type integer.
Type int The entity type integer value.
Description string The description.
AuditTrailModificationSubTypes int Obsolete. Always returns None (0).
Value string Serialized meta information about the audit trail.

Examples

Example 1: Query audit trails for specific entities

GET /report/AuditTrail?q=QueryEntities@{entity-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query audit trails by entity type

GET /report/AuditTrail?q=EntityTypes@{type1}@{type2},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

ActivityTrails

Purpose: Query activity trails to track user and system activities across the system. Returns information about who (initiator) did what (activity) to which entity (impacted), when, and from where.

Filters

Filter Type Description Example
ImpactedEntities Guid Collection of entity GUIDs that were affected by activities. ImpactedEntities@{guid1}@{guid2}
InitiatorEntities Guid Collection of role/user GUIDs that caused activities. InitiatorEntities@{guid1}@{guid2}
ImpactedEntityTypes int Collection of entity types that were impacted. Cannot be used with ImpactedEntities. ImpactedEntityTypes@{type1}@{type2}
InitiatorEntityTypes int Collection of entity types that initiated activities. Cannot be used with InitiatorEntities. InitiatorEntityTypes@{type1}@{type2}
Activities int Collection of specific activity types to filter. Activities@{activity1}@{activity2}
Applications int Collection of application types that initiated activities. Applications@{app1}@{app2}
Events int Collection of event types to filter (PTZ events). Events@{event1}@{event2}
Description String Description text to search for. Description=login
IncludedAreas Guid Area GUIDs to include in query. IncludedAreas@{guid1}@{guid2}
ExcludedAreas Guid Area GUIDs to exclude from query. ExcludedAreas@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. QueryTimeout=30000

Response Format

Name Type Description
InitiatorEntityId string GUID string of the initiator of the activity.
InitiatorEntityName string Name of the initiator of the activity.
InitiatorEntityType int Type integer of the initiator.
InitiatorEntityTypeName string Type name of the initiator.
InitiatorEntityVersion string Version of the initiator (if applicable).
Description string Description of the activity.
ActivityType int Type integer of activity.
ActivityTypeName string Activity type name.
ImpactedEntityId string GUID string of the entity impacted by the activity.
ImpactedEntityName string Name of the entity impacted.
ImpactedEntityType int Type integer of the impacted entity.
ImpactedEntityTypeName string Type name of impacted entity.
InitiatorMachineName string Machine name initiating the activity.
InitiatorApplicationType int Application type integer that initiated the activity.
InitiatorApplicationName string Application name that initiated the activity.
InitiatorApplicationVersion string Version of the application.
EventTimestamp string Timestamp when the activity occurred in UTC. ISO 8601 format.

Examples

Example 1: Query all activity trails

GET /report/ActivityTrails?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 2: Query activities for specific impacted entities

GET /report/ActivityTrails?q=ImpactedEntities@{entity-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Example 3: Query activities by initiator users

GET /report/ActivityTrails?q=InitiatorEntities@{user-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

License Plate Recognition (LPR) Reports

LprRead

Purpose: Query license plate reads captured by LPR units or patrollers.

Filters

Filter Type Description Example
SourceIds Guid Collection of LPR unit, patroller, or device GUIDs. SourceIds@{lpr-unit-guid}
Plates string License plate numbers to filter by. Plates@ABC123@XYZ789
PartialMatchPlates Boolean Perform partial matching on plates. PartialMatchPlates=true
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
ReadId Guid Unique identifier for the license plate read
UserId Guid User who performed the read (for manual reads)
UnitId Guid LPR unit that captured the read
PatrollerId Guid Patroller associated with the read
LotId Guid Parking lot where the read occurred
PermitCategoryId Guid Permit category associated with the read
LprCameraDeviceId Guid LPR camera device that captured the plate
Timestamp DateTime Local timestamp when the read occurred
TimestampUtc DateTime UTC timestamp when the read occurred
TimeZoneId string Time zone identifier for the read location
Plate string License plate number captured
PlateState string State/province of the license plate
MapType int Map coordinate system type
X double X coordinate on the map
Y double Y coordinate on the map
Street string Street name where the read occurred
CivicNumber int Civic/street number where the read occurred
UnitHeading double Heading direction of the LPR unit (degrees)
UnitSpeed double Speed of the LPR unit when read was captured
IsManualRead bool Indicates if the read was manually entered
IsHit bool Indicates if the read matched a hotlist rule
LprImage byte[] Full-size LPR image data
LprThumbnailImage byte[] Thumbnail version of the LPR image
ContextImage byte[] Full-size context image showing vehicle and surroundings
ContextThumbnailImage byte[] Thumbnail version of the context image
OverviewOrTireImage byte[] Full-size overview or tire image
OverviewOrTireThumbnailImage byte[] Thumbnail version of the overview or tire image
Watermark byte[] Digital watermark data for image authentication
IsProtected bool Indicates if the read is protected from deletion
ZoneId Guid Parking zone where the read occurred
TimestampImported DateTime Local timestamp when the read was imported to the system
TimestampImportedUtc DateTime UTC timestamp when the read was imported to the system
AttributesXml string XML-formatted custom attributes for the read
ProtectionExpirationUtc DateTime UTC timestamp when protection expires
InventoryIndex short Index for inventory tracking
AdditionalMediaContent byte[] Full-size additional media content
AdditionalMediaThumbnailContent byte[] Thumbnail version of additional media content

HTTP Request Example

GET /report/LprRead?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),SourceIds@{lpr-unit-guid},MaximumResultCount=100

LprHit

Purpose: Query license plate hits (reads that matched hotlist rules). Returns comprehensive hit information including full details for up to two associated reads plus hit metadata.

Filters

Filter Type Description Example
SourceIds Guid Collection of LPR unit, patroller, or device GUIDs. SourceIds@{lpr-unit-guid}
Plates string License plate numbers to filter by. Plates@ABC123
LprRuleIds Guid LPR rule GUIDs (hotlist, overtime, permit). LprRuleIds@{rule-guid}
HitTypes string Hit types to filter by. HitTypes@Hotlist@Overtime
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
HitId Guid Unique identifier for the hit
LprRuleId Guid LPR rule (hotlist) that triggered the hit
HitType int Type of hit. Values: 0=Hotlist, 1=Overtime, 2=Permit, 3=SharedPermit.
ReasonType int Reason code for the hit
UserActionType int User action taken on the hit
Timestamp DateTime Local timestamp when the hit occurred
TimestampUtc DateTime UTC timestamp when the hit occurred
Read1Id Guid GUID of the first associated read
Read2Id Guid GUID of the second associated read (for overtime hits)
TimeZoneId string Time zone identifier for the hit
Read1ReadId Guid Unique identifier for the first read
Read1UserId Guid User who performed the first read
Read1UnitId Guid LPR unit that captured the first read
Read1PatrollerId Guid Patroller associated with the first read
Read1LotId Guid Parking lot where the first read occurred
Read1PermitCategoryId Guid Permit category for the first read
Read1LprCameraDeviceId Guid LPR camera device for the first read
Read1Timestamp DateTime Local timestamp of the first read
Read1TimestampUtc DateTime UTC timestamp of the first read
Read1TimeZoneId string Time zone identifier for the first read
Read1Plate string License plate number from the first read
Read1PlateState string State/province from the first read
Read1MapType int Map coordinate system type for the first read
Read1X double X coordinate for the first read
Read1Y double Y coordinate for the first read
Read1Street string Street name for the first read
Read1CivicNumber int Civic number for the first read
Read1UnitHeading double Unit heading for the first read (degrees)
Read1UnitSpeed double Unit speed for the first read
Read1IsManualRead bool Indicates if the first read was manual
Read1IsHit bool Indicates if the first read matched a rule
Read1LprImage byte[] LPR image from the first read
Read1LprThumbnailImage byte[] LPR thumbnail from the first read
Read1ContextImage byte[] Context image from the first read
Read1ContextThumbnailImage byte[] Context thumbnail from the first read
Read1OverviewOrTireImage byte[] Overview/tire image from the first read
Read1OverviewOrTireThumbnailImage byte[] Overview/tire thumbnail from the first read
Read1Watermark byte[] Watermark from the first read
Read1IsProtected bool Protection status of the first read
Read1ZoneId Guid Zone where the first read occurred
Read1TimestampImported DateTime Local import timestamp for the first read
Read1TimestampImportedUtc DateTime UTC import timestamp for the first read
Read1AttributesXml string Custom attributes for the first read
Read1ProtectionExpirationUtc DateTime Protection expiration for the first read
Read1InventoryIndex short Inventory index for the first read
Read1AdditionalMediaContent byte[] Additional media from the first read
Read2ReadId Guid Unique identifier for the second read
Read2UserId Guid User who performed the second read
Read2UnitId Guid LPR unit that captured the second read
Read2PatrollerId Guid Patroller associated with the second read
Read2LotId Guid Parking lot where the second read occurred
Read2PermitCategoryId Guid Permit category for the second read
Read2LprCameraDeviceId Guid LPR camera device for the second read
Read2Timestamp DateTime Local timestamp of the second read
Read2TimestampUtc DateTime UTC timestamp of the second read
Read2TimeZoneId string Time zone identifier for the second read
Read2Plate string License plate number from the second read
Read2PlateState string State/province from the second read
Read2MapType int Map coordinate system type for the second read
Read2X double X coordinate for the second read
Read2Y double Y coordinate for the second read
Read2Street string Street name for the second read
Read2CivicNumber int Civic number for the second read
Read2UnitHeading double Unit heading for the second read (degrees)
Read2UnitSpeed double Unit speed for the second read
Read2IsManualRead bool Indicates if the second read was manual
Read2IsHit bool Indicates if the second read matched a rule
Read2LprImage byte[] LPR image from the second read
Read2LprThumbnailImage byte[] LPR thumbnail from the second read
Read2ContextImage byte[] Context image from the second read
Read2ContextThumbnailImage byte[] Context thumbnail from the second read
Read2OverviewOrTireImage byte[] Overview/tire image from the second read
Read2OverviewOrTireThumbnailImage byte[] Overview/tire thumbnail from the second read
Read2Watermark byte[] Watermark from the second read
Read2IsProtected bool Protection status of the second read
Read2ZoneId Guid Zone where the second read occurred
Read2TimestampImported DateTime Local import timestamp for the second read
Read2TimestampImportedUtc DateTime UTC import timestamp for the second read
Read2AttributesXml string Custom attributes for the second read
Read2ProtectionExpirationUtc DateTime Protection expiration for the second read
Read2InventoryIndex short Inventory index for the second read
Read2AdditionalMediaContent byte[] Additional media from the second read

HTTP Request Example

GET /report/LprHit?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),HitTypes@Hotlist,MaximumResultCount=100

PatrollerPositions

Purpose: Query GPS position history for patrollers. Tracks patroller movements over time.

Filters

Filter Type Description Example
Patrollers Guid Patroller GUIDs to query positions for. Patrollers@{patroller-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=1000

Response Format

Name Type Description
PatrollerPositionId Guid The unique identifier of the Patroller position.
PatrollerId Guid The unique identifier of the Patroller.
Timestamp DateTime The timestamp.
TimestampUtc DateTime The timestamp (UTC).
TimeZoneId string The timezone.
MapType int The map type.
X int The x position.
Y int The y position.
Heading string The heading.
Speed string The speed.

HTTP Request Example

GET /report/PatrollerPositions?q=TimeRange.SetTimeRange(2025-01-15T12:00:00Z,2025-01-15T13:00:00Z),Patrollers@{patroller-guid},MaximumResultCount=1000

LpmDailyUsage

Purpose: Query daily usage statistics for patrollers. Provides operational metrics including operating time, stop time, and application usage patterns.

Filters

Filter Type Description Example
PatrollerId Guid Patroller GUID to query (required). PatrollerId={patroller-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=31

Response Format

Name Type Description
DateTime DateTime Day of the Patroller shift.
MaxShutdownTime double Single longest number of minutes in a day that the Patroller application is closed.
MaxShutdownTimePercent double Percentage of Longest shutdown over the total number of minutes in a day.
MaxStopTime double Single longest number of minutes in a day that the vehicle is stationary.
MaxStopTimePercent double Percentage of longest stop time over operating time.
OperatingTime double Total number of minutes in a day that the Patroller application is open.
TotalShutdownTime double Single longest number of minutes in a day that the Patroller application is closed.
TotalShutdownTimePercent double Percentage of Longest shutdown over the total number of minutes in a day.
TotalStopTime double Total number of minutes in operating time when the vehicle is stationary.
TotalStopTimePercent double Percentage of total stop time over operating time.
Instances int Total number of times the Patroller application is opened during the day.

HTTP Request Example

GET /report/LpmDailyUsage?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),PatrollerId={patroller-guid},MaximumResultCount=31

LprReadById

Purpose: Query a specific license plate read by its unique identifier.

Filters

Filter Type Description Example
ReadId Guid The unique identifier of the read (required). ReadId={read-guid}
UnitSource Guid The GUID of the LPR unit (required if PatrollerSource not set). UnitSource={lpr-unit-guid}
PatrollerSource Guid The GUID of the patroller (required if UnitSource not set). PatrollerSource={patroller-guid}
TimeRange string Time range where the read occurred. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

Note

Either UnitSource or PatrollerSource must be specified.

Response Format

Name Type Description
ReadId Guid The unique identifier of the read.
UserId Guid The unique identifier of the User.
UnitId Guid The unique identifier of the LprUnit.
PatrollerId Guid The unique identifier of the Patroller.
LotId Guid The unique identifier of the Lot. This can be Guid.Empty
PermitCategoryId Guid The unique identifier of the permit category. This can be Guid.Empty
LprCameraDeviceId Guid The unique identifier of the LprCamera.
Timestamp DateTime The Timestamp.
TimestampUtc DateTime The Timestamp (UTC).
TimeZoneId string The timezone.
Plate string The plate number.
PlateState string The plate state.
MapType int The map type.
X double The X coordinate.
Y double The Y Coordinate.
Street string The street name.
CivicNumber int The civic number.
UnitHeading double The heading of the unit.
UnitSpeed double The speed of the unit.
IsManualRead bool Boolean indicating whether the read is manual or automatic.
IsHit bool The hit, true or false.
LprImage byte[] The Lpr image.
LprThumbnailImage byte[] The Lpr thumbnail image.
ContextImage byte[] The context image.
ContextThumbnailImage byte[] The context thumbnail image.
OverviewOrTireImage byte[] The overview or tire image.
OverviewOrTireThumbnailImage byte[] The overview or tire thumbnail image.
Watermark byte[] The watermark.
IsProtected bool The protected information. True if it is protected, otherwise false.
ZoneId Guid The unique identifier of the shared permit rule.
HasValidWatermark bool True if it has a valid watermark, otherwise false.
TimestampImported DateTime The timestamp imported.
TimestampImportedUtc DateTime The timestamp imported (UTC).
AttributesXml string The xml attributes.
AdditionalMediaContent byte[] The additional media content.
AdditionalMediaThumbnailContent byte[] The additional media thumbnail content.

HTTP Request Example

GET /report/LprReadById?q=ReadId={read-guid},UnitSource={lpr-unit-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

LprHitById

Purpose: Query a specific license plate hit by its unique identifier.

Filters

Filter Type Description Example
HitId Guid The unique identifier of the hit (required). HitId={hit-guid}
UnitSource Guid The GUID of the LPR unit (required if PatrollerSource not set). UnitSource={lpr-unit-guid}
PatrollerSource Guid The GUID of the patroller (required if UnitSource not set). PatrollerSource={patroller-guid}
TimeRange string Time range where the hit occurred. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

Note

Either UnitSource or PatrollerSource must be specified.

Response Format

Name Type Description
HitId Guid The unique identifier of the Hit.
LprRuleId Guid The unique identifier of the SharedPermitRule entity.
Timestamp DateTime The timestamp of the hit.
TimestampUtc DateTime The timestamp of the hit (UTC).
TimeZoneId string The timezone.
UserActionType int The enum of type HitUserAction.
HitType int The enum of type HitType.
ReasonType int The enum of type HitReason.
ExtraInfo string The extra information.
AttributesXml string The xml attributes.
Read1Id Guid The unique identifier of the Read1.
Read1UserId Guid The unique identifier of the user id. This can return Guid.Empty.
Read1UnitId Guid The unique identifier of the LprUnit entity.
Read1PatrollerId Guid The unique identifier of the Patroller.
Read1LotId Guid The unique identifier of the LotId.
Read1PermitCategoryId Guid The unique identifier of the Permit category id.
Read1LprCameraDeviceId Guid The unique identifier of the Device entity.
Read1Timestamp DateTime The read timestamp.
Read1TimestampUtc DateTime The read timestamp (UTC).
Read1TimeZoneId string The timezone.
Read1Plate string The license plate.
Read1PlateState string The license plate state.
Read1MapType int The map type.
Read1X double The read x coordinates.
Read1Y double The read y coordinates.
Read1Street string The street.
Read1CivicNumber int The civic number.
Read1UnitHeading double The heading coordinates.
Read1UnitSpeed double The unit speed.
Read1IsManualRead bool Boolean indicating whether the read is manual or automatic.
Read1LprImage Byte[] The Lpr image.
Read1LprThumbnailImage Byte[] The Lpr thumbnail image.
Read1ContextImage Byte[] The context image.
Read1ContextThumbnailImage Byte[] The context thumbnail image.
Read1OverviewOrTireImage Byte[] The overview or tire image.
Read1OverviewOrTireThumbnailImage Byte[] The overview of thumbnail image.
Read1Watermark Byte[] The read watermark.
Read2Id Guid The unique identifier of the Read2.
Read2UserId Guid The unique identifier of the user id. This can return Guid.Empty.
Read2UnitId Guid The unique identifier of the LprUnit entity.
Read2PatrollerId Guid The unique identifier of the Patroller.
Read2LotId Guid The unique identifier of the LotId.
Read2PermitCategoryId Guid The unique identifier of the Permit category id.
Read2LprCameraDeviceId Guid The unique identifier of the Device entity.
Read2Timestamp DateTime The read timestamp.
Read2TimestampUtc DateTime The read timestamp (UTC).
Read2TimeZoneId String The timezone.
Read2Plate String The license plate.
Read2PlateState String The license plate state.
Read2MapType Int32 The map type.
Read2X double The read x coordinates.
Read2Y double The read y coordinates.
Read2Street string The street.
Read2CivicNumber int The civic number.
Read2UnitHeading double The heading coordinates.
Read2UnitSpeed double The unit speed.
Read2IsManualRead bool Boolean indicating whether the read is manual or automatic.
Read2LprImage Byte[] The Lpr image.
Read2LprThumbnailImage Byte[] The Lpr thumbnail image.
Read2ContextImage Byte[] The context image.
Read2ContextThumbnailImage Byte[] The context thumbnail image.
Read2OverviewOrTireImage Byte[] The overview or tire image.
Read1OverviewOrTireThumbnailImage Byte[] The overview of thumbnail image.
Read2Watermark Byte[] The read watermark.
Watermark Byte[] The watermark.
IsProtected bool The isProtected. true if it is protected, otherwise false.
RejectReason string The reject reason.
Read1ZoneId Guid The unique identifier of the SharedPermitRule entity.
Read2ZoneId Guid The unique identifier of the SharedPermitRule entity.
TimestampImported DateTime The timestamp imported.
TimestampImportedUtc DateTime The timestamp imported (Utc).
Read1TimestampImported DateTime The read1 timestamp imported.
Read1TimestampImportedUtc DateTime The read1 timestamp imported (Utc).
Read2TimestampImported DateTime The read2 timestamp imported.
Read2TimestampImportedUtc DateTime The read2 timestamp imported (Utc).
Read1AttributesXml string The read1 attributes xml.
Read2AttributesXml string The read2 attributes xml.
ProtectionExpirationUtc DateTime The protection expiration (UTC).
Read1AdditionalMediaContent Byte[] The additional media content.
Read1AdditionalMediaThumbnailContent Byte[] The additional media thumbnail content.
Read2AdditionalMediaContent Byte[] The additional media content.
Read2AdditionalMediaThumbnailContent Byte[] The additional media thumbnail content.

HTTP Request Example

GET /report/LprHitById?q=HitId={hit-guid},UnitSource={lpr-unit-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

ParkingSession

Purpose: Query parking session information including entry/exit times, durations, violations, and payment status.

Filters

Filter Type Description Example
ParkingSessionIds Guid Parking session GUIDs to query. ParkingSessionIds@{session-guid}
ParkingZoneIds Guid Parking zone GUIDs to filter by. ParkingZoneIds@{zone-guid}
Plates string License plate numbers to filter by. Plates@ABC123
SessionStates string Session states to filter by. SessionStates@Active@Completed
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
ParkingZoneId Guid Unique identifier of the parking zone
ParkingZoneRuleId Guid Parking zone rule that governs this session
ParkingSessionId Guid Unique identifier for the parking session
EntryPlateNumber string License plate number captured at entry
EntryContextImage byte[] Context image captured at session entry
EntryLPRImage byte[] LPR image captured at session entry
ExitPlateNumber string License plate number captured at exit
StartTimestamp DateTime Timestamp when the parking session started
ViolationTimestamp DateTime Timestamp when a violation was detected
CompletedTimestamp DateTime Timestamp when the session was completed
TotalDuration TimeSpan Total duration of the parking session
SessionState int Current state of the parking session. Values: 0=Completed, 1=Enforced, 2=Violation, 3=Valid.
StateReason int Reason code for the current session state
ConvenienceTimeDuration TimeSpan Duration of convenience time applied
ConvenienceTimeTimestamp DateTime Timestamp when convenience time was applied
EnforcedDuration TimeSpan Duration the session was under enforcement
EnforcedTimestamp DateTime Timestamp when enforcement began
ExitContextImage byte[] Context image captured at session exit
ExitLPRImage byte[] LPR image captured at session exit
GracePeriodDuration TimeSpan Duration of grace period applied
GracePeriodTimestamp DateTime Timestamp when grace period was applied
PaidDuration TimeSpan Duration of time that was paid for
PaidTimestamp DateTime Timestamp when payment was made
ViolationDuration TimeSpan Duration the vehicle was in violation
ParkingEntryReadId Guid Read ID associated with the parking entry
ParkingExitReadId Guid Read ID associated with the parking exit
PermitId Guid Permit ID if session is associated with a permit

HTTP Request Example

GET /report/ParkingSession?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid},MaximumResultCount=100

ParkingSessionById

Purpose: Query a specific parking session by its unique identifier.

Filters

Filter Type Description Example
ParkingSessionId Guid The unique identifier of the parking session (required). ParkingSessionId={session-guid}
TimeRange string Time range where the session occurred. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

Response Format

Name Type Description
ParkingZoneId Guid The unique identifier of the Parking Zone.
ParkingRuleId Guid The unique identifier of the Parking Rule.
ParkingSessionId Guid The unique identifier of the Parking Session.
EntryPlateNumber string The entry plate number.
EntryContextImage byte[] The entry context image.
EntryLPRImage byte[] The entry LPR image.
ExitPlateNumber string The exit plate number.
StartTimestamp DateTime The start timestamp.
ViolationTimestamp DateTime The violation timestamp.
CompletedTimestamp DateTime The completed timestamp.
TotalDuration TimeSpan The total duration timespan.
SessionState int The session state.
StateReason int The state reason.
ConvenienceTimeDuration TimeSpan The convenience time duration.
ConvenienceTimeTimestamp DateTime The convenience time timestamp.
EnforcedDuration TimeSpan The enforced duration timespan.
EnforcedTimestamp DateTime The enforced timestamp.
ExitContextImage byte[] The exit context image.
ExitLPRImage byte[] The exit lpr image.
GracePeriodDuration TimeSpan The grace period duration.
GracePeriodTimestamp DateTime The grace period timestamp.
PaidDuration TimeSpan The paid duration timespan.
PaidTimestamp DateTime The paid timestamp.
ViolationDuration TimeSpan The violation duration timespan.
ParkingEntryReadIdColumnName Guid The entry read ID.
ParkingExitReadIdColumnName Guid The exit read ID.

HTTP Request Example

GET /report/ParkingSessionById?q=ParkingSessionId={session-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

ParkingZoneOccupancy

Purpose: Query real-time and historical occupancy information for parking zones.

Filters

Filter Type Description Example
ParkingZoneIds Guid Parking zone GUIDs to query. ParkingZoneIds@{zone-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Returns occupancy data including zone capacity, current occupancy, timestamps, and occupancy percentages.

HTTP Request Example

GET /report/ParkingZoneOccupancy?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid}

ParkingZoneActivity

Purpose: Query activity events within parking zones including entries, exits, and violations.

Filters

Filter Type Description Example
ParkingZoneIds Guid Parking zone GUIDs to query. ParkingZoneIds@{zone-guid}
ActivityTypes string Activity types to filter by. ActivityTypes@Entry@Exit@Violation
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Returns activity records including timestamps, plate numbers, activity types, and associated session information.

HTTP Request Example

GET /report/ParkingZoneActivity?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid},MaximumResultCount=200

Inventory

Purpose: Query LPR inventory records for permit management and vehicle tracking.

Filters

Filter Type Description Example
InventoryIndexes int Inventory index identifiers. InventoryIndexes@1@2
Plates string License plate numbers to filter by. Plates@ABC123
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Returns inventory records including plate information, permit status, and associated metadata.

HTTP Request Example

GET /report/Inventory?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=100

LpmLoginRecorderPerPatroller

Purpose: Query patroller login/logout history. Tracks when patrollers log in and out of the LPM system for audit and operational reporting.

Filters

Filter Type Description Example
PatrollerId Guid Patroller GUID to query (required). PatrollerId={patroller-guid}
UserIds Guid User GUIDs to filter by. UserIds@{user-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
Date DateTime Day of the Patroller shift.
UserId Guid The unique identifier of the Patroller.
LoginTimestamp DateTime Log on timestamp.
LogoutTimestamp DateTime Log off timestamp.

HTTP Request Example

GET /report/LpmLoginRecorderPerPatroller?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),PatrollerId={patroller-guid},MaximumResultCount=100

LpmReadsHitsStatsPerDay

Purpose: Query daily statistics for LPR reads and hits. Provides aggregated counts of reads, hits, enforced hits, rejected hits per day for analysis and reporting.

Filters

Filter Type Description Example
ExcludedSourceIds Guid LPR units, patrollers, or devices to exclude. ExcludedSourceIds@{source-guid}
HitTypes string Hit types to include in statistics. HitTypes@Hotlist@Overtime
LprRuleIds Guid LPR rule GUIDs to filter by. LprRuleIds@{rule-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=365

Response Format

Name Type Description
Date DateTime Day of the Patroller shift.
NbHits int The number of hits.
NbHitsEnforced int The number of enforced hits.
NbHitsNotEnforced int The number of hits that were not enforced.
NbHitsRejected int The number of hits that were rejected.
NbReads int The number of license plate reads.

HTTP Request Example

GET /report/LpmReadsHitsStatsPerDay?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=365

LpmImage

Purpose: Query full-size images associated with LPR reads or hits. Retrieves all image types including LPR images, context images, overview/tire images, and their thumbnails.

Filters

Filter Type Description Example
ReadIds Guid Read GUIDs to retrieve images for. ReadIds@{read-guid}
HitIds Guid Hit GUIDs to retrieve images for. HitIds@{hit-guid}
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
ReadId Guid The unique identifier of the Read.
HitId Guid The unique identifier of the Hit.
LprImage byte[] Image associated with the Read or Hit.
ContextImage byte[] Context image associated with the Read or Hit.
OverviewOrTireImage byte[] Overview or tire image associated with the Read or Hit.
LprThumbnailImage byte[] Thumbnail of the image associated with the Read or Hit.
ContextThumbnailImage byte[] Thumbnail of the context image associated with the Read or Hit.
OverviewOrTireImageThumbnailImage byte[] Thumbnail of the overview or tire image associated with the Read or Hit.
AdditionalMediaContent byte[] Additional media content associated with the Read or Hit.
AdditionalMediaThumbnailContent byte[] Thumbnail additional media content associated with the Read or Hit.

HTTP Request Example

GET /report/LpmImage?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ReadIds@{read-guid}


Health Monitoring & System Reports

HealthEvents

Purpose: Query health event history of the system. Tracks system health events including errors, warnings, and recovery notifications across all system components.

Filters

Filter Type Description Example
Sources Guid Collection of entity GUIDs that are the source of health events. Sources@{entity-guid1}@{entity-guid2}
ObserverEntities Guid Collection of entity GUIDs that are observers of health events. ObserverEntities@{role-guid}
HealthEvents int Collection of health event types to filter by. HealthEvents@{event-type1}@{event-type2}
EventSourceTypes int Collection of event source types to filter by. EventSourceTypes@Application@Role@Unit
Severities int Collection of severity levels to filter by. Severities@Error@Warning
MachineName string Machine name where the event originated. MachineName=Server01
MachineNameSearchMode string String search mode. Values: Exact, StartsWith, Contains, EndsWith. MachineNameSearchMode=Contains
OnlyCurrentlyActiveEvents bool If true, returns only currently active events (errors/warnings not yet recovered). OnlyCurrentlyActiveEvents=true
TimeRange string Time range for health events. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100

Note

Sources can be Application, Camera, IntrusionUnit, LprUnit, Patroller, Role, Server, SystemConfiguration, Unit, or VideoUnit entities.

Response Format

Name Type Description
HealthEventId int The health event type ID (enum HealthEventType).
EventSourceTypeId int The event source type ID (enum EventSourceType).
SourceEntityGuid string The GUID of the source entity.
EventDescription string The description of the event.
MachineName string The machine name where the event occurred.
Timestamp string The timestamp of the event (UTC, ISO 8601 format).
SeverityId int The severity ID (enum Severity: 0=Information, 1=Warning, 2=Error, 3=Recovery).
ErrorNumber int The error number.
Occurence int The occurrence number.
ObserverEntity string The GUID of the observer entity.

HTTP Request Examples

Example 1: Query all health events in time range

GET /report/HealthEvents?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=50

Example 2: Query only error and warning events

GET /report/HealthEvents?q=Severities@Error@Warning,TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

Example 3: Query currently active (unresolved) events

GET /report/HealthEvents?q=OnlyCurrentlyActiveEvents=true,MaximumResultCount=100

Example 4: Query health events for specific source entity

GET /report/HealthEvents?q=Sources@{entity-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

HealthStatistics

Purpose: Query health statistics and availability metrics for system entities. Returns uptime, downtime, MTTR, MTBF, and availability percentages.

Filters

Filter Type Description Example
Sources Guid Collection of entity GUIDs to query statistics for. Sources@{entity-guid1}@{entity-guid2}
ObserverEntities Guid Collection of entity GUIDs that are observers. ObserverEntities@{role-guid}
TimeRange string Time range for statistics calculation. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100

Note

Sources can be Application, IntrusionUnit, LprUnit, Role, Server, SystemConfiguration, Unit, or VideoUnit entities.

Response Format

Name Type Description
FailureCount int The total number of failures.
RTPPacketLoss int The RTP packet loss count.
CalculationStatus int The calculation status (enum AvailabilityCalculationStatus).
SourceEntityGuid string The GUID of the source entity.
EventSourceType int The event source type ID (enum EventSourceType).
UnexpectedDowntime string The unexpected downtime duration (ISO 8601 duration format).
ExpectedDowntime string The expected downtime duration (ISO 8601 duration format).
Uptime string The uptime duration (ISO 8601 duration format).
Mttr number Mean Time To Repair (MTTR) in seconds.
Mtbf number Mean Time Between Failures (MTBF) in seconds.
Availability number Availability percentage (0-100).
LastErrorTimestamp string The timestamp of the last error (UTC, ISO 8601 format).
ObserverEntity string The GUID of the observer entity.

HTTP Request Examples

Example 1: Query health statistics for specific entities

GET /report/HealthStatistics?q=Sources@{role-guid1}@{role-guid2},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)

Example 2: Query health statistics for all entities in time range

GET /report/HealthStatistics?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=50

HardwareInventoryReport

Purpose: Query hardware inventory for units, controllers, expanders, locksets, and readers in the system. Returns detailed hardware information including firmware versions, IP addresses, upgrade status, and encryption status.

Filters

Filter Type Description Example
Entities Guid Collection of entity GUIDs (units or roles) to query. Entities@{entity-guid1}@{entity-guid2}
SourceTypes int Collection of hardware unit types to query. SourceTypes@AccessControl@Video
QueryControllers bool If true, include access control controllers in results. QueryControllers=true
QueryExpanders bool If true, include expander modules in results. QueryExpanders=true
QueryLocksets bool If true, include locksets in results. QueryLocksets=true
QueryReaders bool If true, include readers in results. QueryReaders=true
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100

Note

If no SourceTypes are specified, all available unit types will be queried. The QueryControllers, QueryExpanders, QueryLocksets, and QueryReaders flags only apply to AccessControl unit types.

Response Format

Name Type Description
UnitName string The name/breadcrumb path of the unit.
UnitType int The unit type ID (enum EntityType).
UnitManufacturer string The manufacturer name.
ProductType string The product model/type.
Role string The GUID of the parent role.
FirmwareVersion string The firmware version.
IpAddress string The IP address.
PhysicalAddress string The physical/MAC address.
TimeZone string The time zone display name.
User string The username for unit access.
PasswordStrength string The password strength level.
UpgradeStatus string The firmware upgrade status.
NextUpgrade string The next scheduled upgrade time.
UpgradeFailureReason int The upgrade failure reason (enum UnitUpgradeErrorDetails).
State int The running state (enum State).
PlatformVersion string The platform version.
Password string The password (always masked as "****").
LastPasswordUpdate string The last password update timestamp.
Progress string The upgrade progress percentage.
ReaderType string The reader type (only for readers).
ReaderEncryptionStatus int The reader encryption status (enum DeviceReaderEncryptionStatus, only for readers).
Related string Related entity name (door name for readers).
LicenseConsumption string License consumption information.

HTTP Request Examples

Example 1: Query all hardware in a specific role

GET /report/HardwareInventoryReport?q=Entities@{role-guid},MaximumResultCount=100

Example 2: Query all access control units including readers

GET /report/HardwareInventoryReport?q=SourceTypes@AccessControl,QueryControllers=true,QueryReaders=true,MaximumResultCount=100

Example 3: Query specific unit details

GET /report/HardwareInventoryReport?q=Entities@{unit-guid}

Example 4: Query all video units

GET /report/HardwareInventoryReport?q=SourceTypes@Video,MaximumResultCount=50

Compliance Reports

UnusedCredentials

Purpose: Find credentials that have not been used during a specified time period. Useful for compliance auditing and identifying inactive credentials.

Filters

Filter Type Description Example
TimeRange string Time range to check for credential usage. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=500
SortOrder string Sort order for results. Values: Ascending, Descending. SortOrder=Descending
QueryTimeout int Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000

Example Request

GET /report/UnusedCredentials?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z),MaximumResultCount=500

UnusedCardholders

Purpose: Find cardholders that have had no activity during a specified time period. Useful for compliance auditing and identifying inactive accounts.

Filters

Filter Type Description Example
TimeRange string Time range to check for cardholder activity. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=500
SortOrder string Sort order for results. Values: Ascending, Descending. SortOrder=Descending
QueryTimeout int Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000

Example Request

GET /report/UnusedCardholders?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z),MaximumResultCount=500

Alarm Management Reports

AlarmActivity

Purpose: Query alarm events including triggers, acknowledgments, and investigations. This query returns multiple tables: main alarm data, dynamic attached entities, dynamic URLs, forwards, and forward recipients.

Note

This report does NOT support custom field filtering.

Filters

Filter Type Description Example
Alarms Guid Collection of alarm entity GUIDs to query. Alarms@{alarm-guid1}@{alarm-guid2}
InstanceId int Specific alarm instance ID to query. InstanceId=12345
TriggeredTimeRange string Time range when alarms were triggered. Use TriggeredTimeRange.SetTimeRange(start,end) in UTC. TriggeredTimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
AcknowlegedTimeRange string Time range when alarms were acknowledged. Use AcknowlegedTimeRange.SetTimeRange(start,end) in UTC. AcknowlegedTimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
InvestigatedTimeRange string Time range when alarms were investigated. Use InvestigatedTimeRange.SetTimeRange(start,end) in UTC. InvestigatedTimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
AckBy Guid Collection of user GUIDs who acknowledged the alarms. AckBy@{user-guid1}@{user-guid2}
InvestigatedBy Guid Collection of user GUIDs who investigated the alarms. InvestigatedBy@{user-guid1}@{user-guid2}
AckReason int Collection of acknowledgment reasons (write-only property, may not work via URL query). AckReason@{reason1}@{reason2}
States int Collection of alarm states to filter by. States@Active@Acknowledged
TriggerEntities Guid Collection of entity GUIDs that triggered the alarms. TriggerEntities@{entity-guid1}@{entity-guid2}
TriggerEvents int Collection of event types that triggered the alarms (write-only property, may not work via URL query). TriggerEvents@100@101
User Guid GUID of user (recipient) for the alarm. User={user-guid}
DynamicContext String Dynamic context string to search for. DynamicContext=camera
DynamicContextSearchMode string How to search dynamic context. Values: Exact, StartsWith, Contains, EndsWith. DynamicContextSearchMode=Contains
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
SortOrder string Sort order for results. Values: Ascending, Descending. SortOrder=Descending
QueryTimeout int Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000

Response Format

Main Table (Table 0):

Name Type Description
InstanceID int The unique identifier of this alarm instance.
Alarm string The alarm entity GUID string.
TriggerEntity string Source entity GUID string that generated the alarm (e.g., a user).
TriggerEvent int Source event integer value of the origin of the trigger (e.g., manual action).
TriggerTime string Time (UTC) at which the alarm was triggered in Security Center. ISO 8601 format.
AckedTime string Time (UTC) at which the alarm was acked. ISO 8601 format (null or min value if not acked).
AckedBy string GUID string of who acked the alarm, empty GUID if not acked.
CreationTime string Time at which the alarm was created. ISO 8601 format. TriggerTime != CreationTime when alarm was created in third party system.
OfflinePeriod int The integer value of OfflinePeriodType during which the event took place.
AckReason int The integer value of AckReason of the alarm.
ExternalInstanceID int External instance ID (for a federated alarm).
InvestigatedBy string GUID string of who investigated the alarm, empty GUID if no investigation.
InvestigatedTime string Time (UTC) at which the alarm was investigated. ISO 8601 format (null or min value if never investigated).
State int State integer value of the alarm (0=Active, 1=Acknowledged, 2=Cleared, etc.).
HasSourceCondition bool Whether the alarm has a source condition.
Priority int Priority integer value of the alarm.
DynamicContext string Dynamic Context of the alarm.

DynamicAttachedEntities Table (Table 1):

Name Type Description
InstanceID int The alarm instance ID (links to main table).
AttachedEntity string GUID string of dynamically attached entity.

DynamicUrls Table (Table 2):

Name Type Description
InstanceID int The alarm instance ID (links to main table).
DynamicUrl string Dynamic URL associated with the alarm.

Forwards Table (Table 3):

Name Type Description
InstanceID int The alarm instance ID (links to main table).
ForwardedID int The forward ID.
ForwardedBy string GUID string of user who forwarded the alarm.
ForwardedTime string Time (UTC) when alarm was forwarded. ISO 8601 format.

ForwardedTo Table (Table 4):

Name Type Description
InstanceID int The alarm instance ID (links to main table).
ForwardedID int The forward ID (links to Forwards table).
ForwardRecipient string Recipient user GUID string.

Example Requests

Query all recent alarms:

GET /report/AlarmActivity?q=TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z),MaximumResultCount=100

Query specific alarm:

GET /report/AlarmActivity?q=Alarms@{alarm-guid},TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Query alarms by acknowledgment time:

GET /report/AlarmActivity?q=AcknowlegedTimeRange.SetTimeRange(2025-11-12T00:00:00Z,2025-11-13T23:59:59Z),MaximumResultCount=50

Query alarms acknowledged by specific user:

GET /report/AlarmActivity?q=AckBy@{user-guid},TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Query alarms by state:

GET /report/AlarmActivity?q=States@Active@Acknowledged,TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Query alarms by dynamic context:

GET /report/AlarmActivity?q=DynamicContext=test,DynamicContextSearchMode=Contains,TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Query without time range (queries all alarms):

GET /report/AlarmActivity?q=MaximumResultCount=10

Incident Management Reports

Incident

Purpose: Query incident records created in Security Center. Incidents can be created from alarms, manually by operators, or from other sources. Returns comprehensive incident information including description, timestamps, references, and attached data.

Note

This query does not support custom field filtering.

Filters

Filter Type Description Example
IncidentGuids Guid Specific incident GUIDs to retrieve. IncidentGuids@{incident-guid}
IncidentTemplates Guid Incident template GUIDs to filter by. IncidentTemplates@{template-guid}
CreatedBy Guid User GUIDs who created the incidents. CreatedBy@{user-guid}
ModifiedBy Guid User GUIDs who modified the incidents. ModifiedBy@{user-guid}
Categories string Incident categories to filter by. Categories@Security@Safety
EventTypes int Event types that triggered the incidents. EventTypes@DoorForcedOpen@AlarmTriggered
TimeRange string Time range to query. TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)
MaximumResultCount int Maximum number of results. MaximumResultCount=100

Response Format

Name Type Description
Guid Guid The unique identifier of the incident.
IncidentTemplate Guid The unique identifier of the IncidentTemplate. Generally, this is Guid.Empty when there is no template applied.
Data string An XML string that represents the incident. It contains the information regarding the FormattedText, the language, the source guid, etc.
Note string The description field of the incident.
CreatedBy Guid The unique identifier of the user that created the incident.
ModifiedBy Guid The unique identifier of the user that modified the incident. When an incident is created, this field is generally the same as the user that created the incident.
GuidReference string An XML string that represents the entities that are attached as reference to this incident.
CreationTimestamp DateTime The DateTime (UTC) creation of the incident. This is the time saved when the user clicks on the Create Button.
ModificationTimestamp DateTime The DateTime (UTC) of the modification of the incident.
AlarmInstance int The unique Id of the alarm responsible of the incident.
EventType int The EventType responsible of the incident.
IncidentTimestamp DateTime The DateTime (UTC) the incident initially got created. This happens as soon as the Alarm is ackowledged.
Category string The category of the incident.
AttachedData string An XML string that represents the attached video sequence to the incident
Title string The title of the incident.

HTTP Request Examples

Example 1: Query recent incidents

GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=100

Example 2: Query incidents by category

GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),Categories@Security,MaximumResultCount=50

Example 3: Query incidents created by specific user

GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),CreatedBy@{user-guid},MaximumResultCount=100

Example 4: Query specific incident by GUID

GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),IncidentGuids@{incident-guid}

Visitor Management Reports

VisitorActivity

Purpose: Query visitor access events. This report tracks visitor check-in, check-out, and access activity.

Filters

Filter Type Description Example
Visitor Guid GUID of the visitor to query. If not specified, queries all visitors. Visitor={visitor-guid}
Events int Collection of event types to filter by. Events are pre-filled with visitor events. Use Events*@ to clear defaults and specify new events (asterisk directly followed by @). Events@259@260 or Events*@259@260
CustomEvents int Collection of custom event IDs to filter by (negative integers for custom events). CustomEvents@-1001@-1002
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
ExcludedExpansionEntities Guid Entity GUIDs to exclude from expansion in the query results. ExcludedExpansionEntities@{guid1}@{guid2}
IncludedExpansionEntities Guid Area or entity GUIDs to include in the query expansion. IncludedExpansionEntities@{guid1}@{guid2}
OfflinePeriodTypes string Collection of offline period types to include. Default is all period types. OfflinePeriodTypes@Online@OnlineToOffline@Offline
AccessDecisionAuthorities string Collection of access decision authority types to include. Default is all authorities. AccessDecisionAuthorities@Server@Unit
SortOrder string Sort order for results. Values: Ascending, Descending. SortOrder=Descending
MaximumResultCount int Maximum number of results to return. MaximumResultCount=100
QueryTimeout int Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000
CustomFields string Custom field filters to apply to the query. CustomFields.Add(fieldId,value)

Response Format

The response includes the following columns:

Name Type Description
Timestamp string The time (UTC) at which the event occurred. ISO 8601 format.
EventType int The EventType integer value of the access control event.
UnitGuid string The unique identifier (GUID string) of the access control unit involved in the event.
DeviceGuid string The unique identifier (GUID string) of the Device (Reader, InputDevice, etc.) involved in the event.
APGuid string The unique identifier (GUID string) of the access point (DoorSide, etc.) involved in the event.
SourceGuid string The GUID string of the source entity (DoorSide, Door, Area).
CredentialGuid string The unique identifier (GUID string) of the primary Credential involved in the event.
CardholderGuid string The unique identifier (GUID string) of the Cardholder (visitor) involved in the event.
Credential2Guid string The unique identifier (GUID string) of the second Credential involved in the event.
TimeZone string The standard name of the Timezone in which the event occurred.
OccurrencePeriod int The offline period type during which the event took place. Values: 0=None (Online), 1=GracePeriod, 2=OfflineAlarmPeriod, 3=Offline.
AccessPointGroupGuid string The unique identifier (GUID string) of the access point group (Door, Area, etc.) involved in the event.
CustomEventMessage string The message stored in the custom event description.

Example Requests

Query all visitor activity:

GET /report/VisitorActivity?q=TimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z),MaximumResultCount=100

Query specific visitor:

GET /report/VisitorActivity?q=Visitor={visitor-guid},TimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Query with empty visitor GUID (returns no results):

GET /report/VisitorActivity?q=Visitor=00000000-0000-0000-0000-000000000000,TimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z)

Intrusion Management Reports

Intrusion Management reports track intrusion detection events from intrusion areas and intrusion units. Both reports share the same 11-column response structure.

Common Characteristics

Both IntrusionAreaActivity and IntrusionUnitActivity reports share identical filters and response formats.

Shared Filters (All Intrusion Reports)

Filter Type Required Description Example
{EntityCollection} Guid YES Collection of entity GUIDs to query. Use IntrusionAreas for area activity or IntrusionUnits for unit activity. This filter is REQUIRED - you cannot query without specifying at least one entity GUID. IntrusionAreas@{guid1}@{guid2} or IntrusionUnits@{unit-guid}
TimeRange string No Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
Events int No Collection of event types to filter by. Events are pre-filled with default intrusion events. Use Events*@ to clear defaults and specify new events. Events@IntrusionDetected@Tamper
CustomEvents int No Collection of custom event IDs to filter by (negative integers for custom events). CustomEvents@-1001@-1002
ExcludedExpansionEntities Guid No Entity GUIDs to exclude from expansion in the query results. ExcludedExpansionEntities@{guid1}@{guid2}
IncludedExpansionEntities Guid No Area or entity GUIDs to include in the query expansion. IncludedExpansionEntities@{guid1}@{guid2}
OfflinePeriodTypes string No Collection of offline period types to include. Default is all period types. OfflinePeriodTypes@Online@OnlineToOffline@Offline
SortOrder string No Sort order for results. Values: Ascending, Descending. SortOrder=Descending
MaximumResultCount int No Maximum number of results to return. MaximumResultCount=100
QueryTimeout int No Query timeout in milliseconds. Default is 180000 (3 minutes). QueryTimeout=30000

IMPORTANT REQUIREMENTS:

  • Entity Collection Filter is MANDATORY: You MUST provide at least one entity GUID (IntrusionAreas or IntrusionUnits). Queries without entity filters will return empty results.
  • At least one filter is REQUIRED for all reports to work.

Shared Response Format (11 Columns)

Name Type Description
Timestamp DateTime The UTC timestamp for the event
EventType int The event type that was fired
IntrusionUnitId Guid The GUID for the intrusion unit involved in the event
IntrusionAreaId Guid The GUID for the intrusion area involved in the event
DeviceId Guid The GUID for the device involved in the event
SourceGuid Guid The GUID for the source entity for the event
OccurrencePeriod int The OfflinePeriodType enum value
TimeZoneId string The string representing the source time zone
UserId Guid The GUID for the user involved in the event
CardholderId Guid The GUID for the cardholder involved in the event
InitiatorId Guid The GUID for the entity that caused the event

IntrusionAreaActivity

Purpose: Query intrusion detection area activity events including area armed/disarmed, zone violations, and intrusion alarms.

Filters

Uses the shared intrusion filters listed above with IntrusionAreas as the entity collection filter.

Entity Expansion:

  • If an Area entity GUID is provided, all intrusion areas attached to that area will be queried
  • If the SystemConfiguration entity GUID is provided, all intrusion areas in the system will be queried

Response Format

Returns 11 columns as documented in the shared response format above. Focus on IntrusionAreaId column for area-specific events.

HTTP Request Examples

Query specific intrusion areas:

GET /report/IntrusionAreaActivity?q=IntrusionAreas@{area-guid-1}@{area-guid-2},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=100

Query all intrusion areas with specific events:

GET /report/IntrusionAreaActivity?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),Events*@IntrusionDetected@Tamper,MaximumResultCount=500

Query areas within a logical area:

GET /report/IntrusionAreaActivity?q=IntrusionAreas@{logical-area-guid},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),SortOrder=Descending

IntrusionUnitActivity

Purpose: Query intrusion unit activity events including unit status changes such as AC fail, battery fail, unit lost, communication errors, and tamper events.

Filters

Uses the shared intrusion filters listed above with IntrusionUnits as the entity collection filter.

Response Format

Returns 11 columns as documented in the shared response format above. Focus on IntrusionUnitId column for unit-specific events.

HTTP Request Examples

Query specific intrusion units:

GET /report/IntrusionUnitActivity?q=IntrusionUnits@{unit-guid-1}@{unit-guid-2},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=100

Query all intrusion units with specific events:

GET /report/IntrusionUnitActivity?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),Events*@UnitLost@BatteryFail,MaximumResultCount=500

Monitor unit health events:

GET /report/IntrusionUnitActivity?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),Events*@AcFail@BatteryFail@CommunicationError,SortOrder=Descending

Advanced Access Control Reports

AccessControlRawEvent

Purpose: Query raw access control events directly from the EventStream database table. This report provides low-level access to event data with database position tracking, primarily used for event synchronization and integration scenarios.

Use Case: This report is designed for advanced integrations that need to track event stream positions across access managers, maintain event synchronization checkpoints, or process events in sequential order from specific database positions.

Filters

Filter Type Description Example
EventTypeFilter int Collection of event types to filter by. EventTypeFilter@AccessGranted@AccessDenied
InsertionStartTimeUtc DateTime Start of time range based on database insertion timestamp (UTC). InsertionStartTimeUtc=2025-01-12T00:00:00
InsertionEndTimeUtc DateTime End of time range based on database insertion timestamp (UTC). InsertionEndTimeUtc=2025-01-13T00:00:00
MaximumResultCount int Maximum number of results to return (1-50000). Default: 50000. MaximumResultCount=1000
StartingAfterIndexes string Collection of RawEventIndex values to exclude from results. Format: AccessManagerGuid:Position. All events at specified positions are excluded. StartingAfterIndexes@{access-mgr-guid}:12345@{access-mgr-guid-2}:67890

Important Notes:

  • InsertionStartTimeUtc and InsertionEndTimeUtc filters use the database insertion time, NOT the event occurrence time
  • DateTime values should NOT include the 'Z' suffix for these nullable DateTime properties
  • MaximumResultCount has a strict range of 1-50000 results per query
  • This report does NOT use the standard TimeRange.SetTimeRange() method; it uses individual InsertionStartTimeUtc and InsertionEndTimeUtc properties

Response Format (15 Columns)

The response includes raw event stream data with database position tracking:

Name Type Description
Position long The sequential position of this event in the EventStream table for the specific access manager. Used for checkpointing and synchronization.
AccessManagerGuid Guid The unique identifier of the access manager on which this event was stored.
EventTimestamp DateTime The UTC timestamp when the event actually occurred (device time).
InsertionTimestamp DateTime The UTC timestamp when the event was inserted into the database.
EventType int The EventType enum value associated with the event.
UnitGuid Guid The unique identifier of the access control unit involved in the event.
DeviceGuid Guid The unique identifier of the device (reader, input device, etc.) involved in the event.
AccessPointGuid Guid The unique identifier of the access point (door side, etc.) involved in the event.
SourceGuid Guid The GUID of the source entity (door side, door, area).
CredentialGuid Guid The unique identifier of the primary credential involved in the event.
CardholderGuid Guid The unique identifier of the cardholder involved in the event.
CredentialGuid2 Guid The unique identifier of the second credential involved in the event (for dual-credential scenarios).
TimeZone string The standard name of the timezone in which the event occurred (e.g., "Eastern Standard Time").
OccurrencePeriod int The OfflinePeriodType enum value during which the event took place. Values: 0=None (Online), 1=GracePeriod, 2=OfflineAlarmPeriod, 3=Offline.
AccessPointGroupGuid Guid The unique identifier of the access point group (door, area, etc.) involved in the event.

Example Requests

Query raw events by insertion time range:

GET /report/AccessControlRawEvent?q=InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00,MaximumResultCount=1000

Query specific event types:

GET /report/AccessControlRawEvent?q=EventTypeFilter@AccessGranted@AccessDenied,InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00,MaximumResultCount=5000

Resume from specific position (event synchronization):

GET /report/AccessControlRawEvent?q=StartingAfterIndexes@12345678-1234-1234-1234-123456789abc:500,InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00,MaximumResultCount=10000

Resume from multiple access managers:

GET /report/AccessControlRawEvent?q=StartingAfterIndexes@{access-mgr-1}:1000@{access-mgr-2}:2000,InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00

ExecuteSavedTask

Purpose: Execute a saved task report configuration and retrieve its results. This report runs a pre-configured query (saved task) and returns the results as if running that task manually.

Use Case: Use this report to programmatically execute saved tasks (scheduled reports) that were created in Security Center Config Tool, allowing automated retrieval of complex pre-configured report data without manually specifying all filter parameters.

Filters

Filter Type Description Example
TaskGuid Guid The GUID of the saved task to execute (required). TaskGuid={task-guid}
UserGuid Guid The GUID of the user executing the task (required). Used for privilege checking. UserGuid={user-guid}
MaximumResultCount int Maximum number of results to return. MaximumResultCount=1000

Important Notes:

  • Both TaskGuid and UserGuid are required parameters
  • The executing user must have privileges to run the specified saved task
  • The response schema is dynamic and depends on the underlying report type configured in the saved task
  • Column names are determined by the saved task configuration

Response Format (Dynamic Schema)

The response format varies based on the underlying saved task configuration. The columns and data types are determined at runtime by inspecting the saved task's report type and configuration.

Response structure:

  • Header row contains column names and types from the saved task's report definition
  • Data rows contain the actual query results
  • If the task has never been executed or has no column definitions, the schema is built dynamically from the first query execution

Example Requests

Execute a saved task:

GET /report/ExecuteSavedTask?q=TaskGuid={saved-task-guid},UserGuid={user-guid}

Execute with result limit:

GET /report/ExecuteSavedTask?q=TaskGuid={saved-task-guid},UserGuid={user-guid},MaximumResultCount=500

Example: If the saved task is configured to run a CardholderActivity report, the response will contain the same columns as CardholderActivity (Timestamp, EventType, CardholderGuid, etc.). If it's an LPR report, you'll get LPR-specific columns.


Custom

Purpose: Execute custom report queries with flexible event filtering and entity targeting. This report provides a generic query interface for custom events and entity-based filtering with extensible properties.

Use Case: Use this report for building custom dashboards, retrieving specific event combinations, filtering by custom events (user-defined events), and creating specialized queries that don't fit standard report types.

Filters

Filter Type Description Example
CustomReportId Guid Identifies the custom report type. Useful for distinguishing different custom report configurations. CustomReportId={report-guid}
QueryEntities Guid Collection of entity GUIDs to include in the query. Entities are automatically expanded based on their type. QueryEntities@{entity-guid-1}@{entity-guid-2}
EventTypes int Collection of standard event types to filter by (does not include custom events). EventTypes@AccessGranted@DoorForced
CustomEvents int Collection of custom event IDs to filter by. Custom event IDs are positive integers in the API (internally stored as negative). CustomEvents@1001@1002
FilterData string Custom filter data string for extended filtering logic. Format depends on implementation. FilterData=custom-filter-expression
ExcludedExpansionEntities Guid Entity GUIDs to exclude from expansion in the query results. ExcludedExpansionEntities@{guid1}@{guid2}
TimeRange string Time range to search. Use TimeRange.SetTimeRange(start,end) in UTC. TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)
MaximumResultCount int Maximum number of results to return. MaximumResultCount=1000

Important Notes:

  • CustomEvents accepts positive integer IDs (e.g., 1001), which are internally converted to negative values for custom event identification
  • EventTypes and CustomEvents are separate filters - use both if you need to combine standard and custom events
  • QueryEntities can include Federation role GUIDs to propagate queries to Security Center Federation
  • The response schema depends on the underlying custom report configuration
  • If FilterData is used, its format and behavior depend on the custom report implementation

Response Format (Dynamic Schema)

The response format is determined by the custom report configuration and may vary based on the entities and events being queried. The table structure is merged from the internal query results.

Common characteristics:

  • Schema is dynamic and based on the query configuration
  • Empty results may not return column definitions
  • Column types depend on the entities and events in the query

Example Requests

Query entities with custom events:

GET /report/Custom?q=QueryEntities@{door-guid}@{camera-guid},CustomEvents@1001@1002,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=100

Query with standard and custom events:

GET /report/Custom?q=QueryEntities@{entity-guid},EventTypes@AccessGranted@DoorForced,CustomEvents@1001,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Query with custom report ID and filter data:

GET /report/Custom?q=CustomReportId={report-guid},QueryEntities@{entity-guid},FilterData=custom-expression,TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),MaximumResultCount=500

Query excluding specific entities:

GET /report/Custom?q=QueryEntities@{entity-guid},ExcludedExpansionEntities@{excluded-guid-1}@{excluded-guid-2},TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z)

Additional Resources


Security Center SDK


Macro SDK Developer Guide


Web SDK Developer Guide

  • 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.
  • 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.
  • 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 Developer Guide


Web Player Developer Guide

Clone this wiki locally