-
Notifications
You must be signed in to change notification settings - Fork 4
web sdk reports
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.
Understanding the distinction between reports and entity searches is critical:
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:
CardholderActivityDoorActivityAreaActivityTimeAttendanceActivityUnusedCredentials- And many more...
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.
GET /report/{reportType}?q={filters}Components:
-
{reportType}- The type of activity report (e.g.,CardholderActivity,DoorActivity) -
{filters}- Comma-separated filter expressions
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 |
GET /report/CardholderActivity?q=Cardholders@{cardholder-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z),Events@AccessGranted,MaximumResultCount=100Response (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.
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)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)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
Reports are organized by functional similarity. Reports in the same group share common filters and response structures.
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
|
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 |
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 |
| 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 |
| 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 |
| 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 |
| 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 |
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 |
| Report Type | Purpose | Key Features |
|---|---|---|
AlarmActivity |
Query alarm activity and acknowledgments | 17 columns, multiple related tables |
| Report Type | Purpose | Key Features |
|---|---|---|
Incident |
Query incident records | 15 columns including templates, references, attachments |
| Report Type | Purpose | Key Features |
|---|---|---|
Visitor |
Query visitor entity records | 18 columns including check-in/check-out status |
| 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 |
| Report Type | Purpose | Category |
|---|---|---|
AssetEvent |
Query asset tracking events | Asset Management |
AssetAreaPresence |
Query asset presence in areas | Asset Management |
This section documents filters and response formats for all report types. Reports are grouped by similarity to avoid repetition.
Important
All activity reports require at least one filter. The entity collection filter requirement varies by report type:
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(...)
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
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.
Most Access Control activity reports share the same base structure, filters, and response format. They differ only in the entity collection being queried.
All reports in this group share the same filters and return the same 13-column response format.
| 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)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. |
| 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. |
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=1000Filter 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@OnlinePurpose: 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).
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
| 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. |
GET /report/ZoneActivity?q=Zones@{zone-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-02T00:00:00Z)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.
| 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.
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. |
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:00Multiple 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)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.
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.
| 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 |
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. |
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=100Purpose: Query video bookmark events. Bookmarks are markers placed on video timelines to identify important moments.
| 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 |
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). |
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)Purpose: Query video motion detection events. Returns motion events detected on camera video streams.
| 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 |
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). |
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=100Purpose: 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.
| 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 |
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. |
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:00ZExample 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)Purpose: Query video motion periods. Returns time ranges when motion was detected in camera video, different from MotionEvent which returns individual motion events.
| 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 |
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. |
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)Purpose: Query video file deletion events. Returns events when video files were deleted from archive storage.
| 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 |
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. |
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)Purpose: Query video recording start/stop events. Returns events when cameras started or stopped recording.
| 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 |
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. |
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)Purpose: Query camera events. Returns various camera-related events such as state changes, configuration changes, and camera-specific notifications.
| 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 |
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. |
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)Purpose: Query camera configuration information including manufacturer, model, stream settings, recording parameters, network settings, and retention policies.
| 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 |
| 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. |
Example 1: Query configuration for specific cameras
GET /report/CameraConfiguration?q=Cameras@{camera-guid-1}@{camera-guid-2},MaximumResultCount=100Example 2: Query configuration for a single camera
GET /report/CameraConfiguration?q=Cameras@{camera-guid}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).
| 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 |
| 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). |
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)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.
| 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
| 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. |
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=50Purpose: Query archiver statistics including camera counts, disk space usage, network traffic, and cloud archive information. Querying statistics will return refreshed data.
| 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 |
| 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. |
Example 1: Query archiver statistics
GET /report/ArchiverStatistics?q=Archivers@{archiver-role-guid},MaximumResultCount=100Example 2: Query statistics for multiple archivers
GET /report/ArchiverStatistics?q=Archivers@{archiver-role-guid-1}@{archiver-role-guid-2}Purpose: Query archiver events such as archiver state changes, disk space warnings, and other archiver-related events.
| 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 |
| 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. |
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)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.
| 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 |
| 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. |
Example 1: Query all camera integrity events
GET /report/CameraIntegrity?q=Cameras@{camera-guid},MaximumResultCount=100Example 2: Query integrity events for specific cameras
GET /report/CameraIntegrity?q=Cameras@{camera-guid}Purpose: Query archive transfer groups and their current state. Returns information about transfer groups including their type, status, and timing information.
| 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 |
| 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. |
Example 1: Query all archive transfers
GET /report/ArchiveTransfer?q=MaximumResultCount=100Example 2: Query only active transfers
GET /report/ArchiveTransfer?q=OnlyActiveTransfers=truePurpose: Query archive transfer attempt history. Returns historical records of transfer group attempts including their trigger reason, type, result, and retry information.
| 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 |
| 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. |
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=10Purpose: Query detailed information about specific archive transfer attempts. Returns collection-level details for transfer attempts including transfer results, error codes, and data transferred.
| 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 |
| 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. |
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}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.
| 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 |
| 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. |
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)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.
| 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 |
| 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. |
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)Purpose: Query license plate reads captured by LPR units or patrollers.
| 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 |
| 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 |
GET /report/LprRead?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),SourceIds@{lpr-unit-guid},MaximumResultCount=100Purpose: 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.
| 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 |
| 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 |
GET /report/LprHit?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),HitTypes@Hotlist,MaximumResultCount=100Purpose: Query GPS position history for patrollers. Tracks patroller movements over time.
| 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 |
| 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. |
GET /report/PatrollerPositions?q=TimeRange.SetTimeRange(2025-01-15T12:00:00Z,2025-01-15T13:00:00Z),Patrollers@{patroller-guid},MaximumResultCount=1000Purpose: Query daily usage statistics for patrollers. Provides operational metrics including operating time, stop time, and application usage patterns.
| 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 |
| 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. |
GET /report/LpmDailyUsage?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),PatrollerId={patroller-guid},MaximumResultCount=31Purpose: Query a specific license plate read by its unique identifier.
| 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.
| 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. |
GET /report/LprReadById?q=ReadId={read-guid},UnitSource={lpr-unit-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)Purpose: Query a specific license plate hit by its unique identifier.
| 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.
| 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. |
GET /report/LprHitById?q=HitId={hit-guid},UnitSource={lpr-unit-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)Purpose: Query parking session information including entry/exit times, durations, violations, and payment status.
| 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 |
| 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 |
GET /report/ParkingSession?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid},MaximumResultCount=100Purpose: Query a specific parking session by its unique identifier.
| 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) |
| 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. |
GET /report/ParkingSessionById?q=ParkingSessionId={session-guid},TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z)Purpose: Query real-time and historical occupancy information for parking zones.
| 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 |
Returns occupancy data including zone capacity, current occupancy, timestamps, and occupancy percentages.
GET /report/ParkingZoneOccupancy?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid}Purpose: Query activity events within parking zones including entries, exits, and violations.
| 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 |
Returns activity records including timestamps, plate numbers, activity types, and associated session information.
GET /report/ParkingZoneActivity?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ParkingZoneIds@{zone-guid},MaximumResultCount=200Purpose: Query LPR inventory records for permit management and vehicle tracking.
| 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 |
Returns inventory records including plate information, permit status, and associated metadata.
GET /report/Inventory?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=100Purpose: Query patroller login/logout history. Tracks when patrollers log in and out of the LPM system for audit and operational reporting.
| 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 |
| 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. |
GET /report/LpmLoginRecorderPerPatroller?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),PatrollerId={patroller-guid},MaximumResultCount=100Purpose: Query daily statistics for LPR reads and hits. Provides aggregated counts of reads, hits, enforced hits, rejected hits per day for analysis and reporting.
| 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 |
| 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. |
GET /report/LpmReadsHitsStatsPerDay?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=365Purpose: 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.
| 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 |
| 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. |
GET /report/LpmImage?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),ReadIds@{read-guid}Purpose: Query health event history of the system. Tracks system health events including errors, warnings, and recovery notifications across all system components.
| 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.
| 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. |
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=50Example 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=100Example 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)Purpose: Query health statistics and availability metrics for system entities. Returns uptime, downtime, MTTR, MTBF, and availability percentages.
| 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.
| 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. |
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=50Purpose: 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.
| 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.
| 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. |
Example 1: Query all hardware in a specific role
GET /report/HardwareInventoryReport?q=Entities@{role-guid},MaximumResultCount=100Example 2: Query all access control units including readers
GET /report/HardwareInventoryReport?q=SourceTypes@AccessControl,QueryControllers=true,QueryReaders=true,MaximumResultCount=100Example 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=50Purpose: Find credentials that have not been used during a specified time period. Useful for compliance auditing and identifying inactive credentials.
| 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 |
GET /report/UnusedCredentials?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z),MaximumResultCount=500Purpose: Find cardholders that have had no activity during a specified time period. Useful for compliance auditing and identifying inactive accounts.
| 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 |
GET /report/UnusedCardholders?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-02-01T00:00:00Z),MaximumResultCount=500Purpose: 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.
| 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 |
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. |
Query all recent alarms:
GET /report/AlarmActivity?q=TriggeredTimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z),MaximumResultCount=100Query 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=50Query 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=10Purpose: 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.
| 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 |
| 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. |
Example 1: Query recent incidents
GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),MaximumResultCount=100Example 2: Query incidents by category
GET /report/Incident?q=TimeRange.SetTimeRange(2025-01-01T00:00:00Z,2025-01-31T23:59:59Z),Categories@Security,MaximumResultCount=50Example 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=100Example 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}Purpose: Query visitor access events. This report tracks visitor check-in, check-out, and access activity.
| 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) |
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. |
Query all visitor activity:
GET /report/VisitorActivity?q=TimeRange.SetTimeRange(2025-11-01T00:00:00Z,2025-11-13T23:59:59Z),MaximumResultCount=100Query 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 track intrusion detection events from intrusion areas and intrusion units. Both reports share the same 11-column response structure.
Both IntrusionAreaActivity and IntrusionUnitActivity reports share identical filters and response formats.
| 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.
| 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 |
Purpose: Query intrusion detection area activity events including area armed/disarmed, zone violations, and intrusion alarms.
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
Returns 11 columns as documented in the shared response format above. Focus on IntrusionAreaId column for area-specific events.
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=100Query 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=500Query 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=DescendingPurpose: Query intrusion unit activity events including unit status changes such as AC fail, battery fail, unit lost, communication errors, and tamper events.
Uses the shared intrusion filters listed above with IntrusionUnits as the entity collection filter.
Returns 11 columns as documented in the shared response format above. Focus on IntrusionUnitId column for unit-specific events.
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=100Query 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=500Monitor unit health events:
GET /report/IntrusionUnitActivity?q=TimeRange.SetTimeRange(2025-01-12T00:00:00Z,2025-01-13T00:00:00Z),Events*@AcFail@BatteryFail@CommunicationError,SortOrder=DescendingPurpose: 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.
| 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:
-
InsertionStartTimeUtcandInsertionEndTimeUtcfilters use the database insertion time, NOT the event occurrence time - DateTime values should NOT include the 'Z' suffix for these nullable DateTime properties
-
MaximumResultCounthas a strict range of 1-50000 results per query - This report does NOT use the standard
TimeRange.SetTimeRange()method; it uses individualInsertionStartTimeUtcandInsertionEndTimeUtcproperties
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. |
Query raw events by insertion time range:
GET /report/AccessControlRawEvent?q=InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00,MaximumResultCount=1000Query specific event types:
GET /report/AccessControlRawEvent?q=EventTypeFilter@AccessGranted@AccessDenied,InsertionStartTimeUtc=2025-01-12T00:00:00,InsertionEndTimeUtc=2025-01-13T00:00:00,MaximumResultCount=5000Resume 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=10000Resume 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:00Purpose: 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.
| 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
TaskGuidandUserGuidare 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
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
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=500Example: 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.
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.
| 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:
-
CustomEventsaccepts positive integer IDs (e.g., 1001), which are internally converted to negative values for custom event identification -
EventTypesandCustomEventsare separate filters - use both if you need to combine standard and custom events -
QueryEntitiescan 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
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
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=100Query 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=500Query 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)- Web SDK Getting Started - Authentication and setup
- Web SDK Entity Reference - Entity configuration report documentation
- Web SDK Under the Hood - Technical deep-dive on Web SDK architecture
- Web SDK Performance Guide - Optimization strategies
- Postman Collection - Ready-to-use example requests for all report types
-
Security Center SDK Developer Guide Overview of the SDK framework and how to build integrations with Security Center.
-
Platform SDK
- Platform SDK Overview Introduction to the Platform SDK and core concepts.
- SDK Certificates Details certificates, licensing, and connection validation.
- Entity Guide Explains the core entity model, inheritance, and how to work with entities.
- Entity Cache Guide Describes the engine's local entity cache and synchronization.
- SDK Transactions Covers batching operations for performance and consistency.
- ReportManager Querying entities and activity data from Security Center.
- Events and Actions Subscribing to events and handling actions.
- Logging with the Genetec SDK How to configure logging, diagnostics, and debug methods.
- Referencing SDK Assemblies Best practices for referencing assemblies and resolving them at runtime.
- SDK Compatibility Guide Understanding backward compatibility and versioning in the SDK.
-
Plugin SDK
- Plugin SDK Overview Introduction to plugin architecture and capabilities.
- Plugin SDK Certificates SDK certificate requirements for plugin roles.
- Plugin SDK Lifecycle Initialization and disposal patterns.
- Plugin SDK Threading Threading model, QueueUpdate, and async patterns.
- Plugin SDK Configuration Configuration storage and monitoring.
- Plugin SDK Restricted Configuration Secure credential storage and admin-only configuration.
- Plugin SDK Database Database integration and schema management.
- Plugin SDK Events Event subscription and handling.
- Plugin SDK Queries Query processing and response handling.
- Plugin SDK Request Manager Request/response communication with clients.
- Plugin SDK Entity Ownership Understanding plugin-owned entities, running state management, and ownership release.
- Plugin SDK Entity Mappings Using EntityMappings for plugin-specific configuration and external system integration.
- Plugin SDK State Management Reporting plugin health and diagnostics.
- Plugin SDK Server Management High availability and server failover.
- Custom Privileges Defining and enforcing custom privileges.
- Resolving Non-SDK Assemblies Handling third-party dependencies in plugins and workspace modules.
- Deploying Plugins Registering and deploying plugins and workspace modules.
-
- Macro SDK Developer Guide Complete guide to creating server-side automation scripts in Security Center using C#.
- 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 Guide Setup and configuration of the Media Gateway role for video streaming.
- Web Player Guide Complete guide to integrating GWP for live and playback video streaming.
- Web Player API Reference Full API documentation with interfaces, methods, properties, and events.
- Web Player Sample Application Comprehensive demo showcasing all GWP features with timeline and PTZ controls.
- Genetec Web Player Multiplexing Sample Multi-camera grid demo using a shared WebSocket connection.