Read Event Log
Only available for enterprise customers - allows you to read full event log for a given card template, including which passes were issued, how and by whom using our console API.
card_template_id
nullable string
Unique identifier for the card template to look up
filters
nullable object
Filters to reduce result size of event logs
device
nullable string
Must be either `mobile` or `watch`
start_date
nullable datetime
Must be in ISO8601 format
end_date
nullable datetime
Must be in ISO8601 format
event_type
nullable string
Must be either `issue`, `install`, `update`, `suspend`, `resume`, or `unlink`
Request
curl -v \
-X GET \
-H 'X-ACCT-ID: 123' \
-H "X-PAYLOAD-SIG: $HASH" \
"https://api.accessgrid.com/v1/console/card-templates/{template_id}/logs"
require 'accessgrid'
acct_id = ENV['ACCOUNT_ID']
secret_key = ENV['SECRET_KEY']
client = AccessGrid.new(acct_id, secret_key)
events = client.console.event_log(
card_template_id: "0xd3adb00b5",
filters: {
device: "mobile",
start_date: 30.days.ago.utc.iso8601(3),
end_date: Time.zone.now.utc.iso8601(3),
event_type: "install"
}
)
events.each do |event|
puts "Event: #{event.type} at #{event.timestamp} by #{event.user_id}"
end
import AccessGrid from 'accessgrid';
const accountId = process.env.ACCOUNT_ID;
const secretKey = process.env.SECRET_KEY;
const client = new AccessGrid(accountId, secretKey);
const getEventLog = async () => {
try {
const events = await client.console.eventLog({
cardTemplateId: "0xd3adb00b5",
filters: {
device: "mobile",
startDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(),
endDate: new Date().toISOString(),
eventType: "install"
}
});
events.forEach(event => {
console.log(`Event: ${event.type} at ${event.timestamp} by ${event.userId}`);
});
} catch (error) {
console.error('Error fetching event log:', error);
}
};
getEventLog();
from accessgrid import AccessGrid
import os
from datetime import datetime, timezone, timedelta
account_id = os.getenv('ACCOUNT_ID')
secret_key = os.getenv('SECRET_KEY')
client = AccessGrid(account_id, secret_key)
start_date = (datetime.now(timezone.utc) - timedelta(days=30)).isoformat()
end_date = datetime.now(timezone.utc).isoformat()
events = client.console.event_log(
card_template_id="0xd3adb00b5",
filters={
"device": "mobile",
"start_date": start_date,
"end_date": end_date,
"event_type": "install"
}
)
for event in events:
print(f"Event: {event.type} at {event.timestamp} by {event.user_id}")
package main
import (
"context"
"fmt"
"os"
"time"
"github.com/Access-Grid/accessgrid-go"
)
func main() {
accountID := os.Getenv("ACCOUNT_ID")
secretKey := os.Getenv("SECRET_KEY")
client, err := accessgrid.NewClient(accountID, secretKey)
if err != nil {
fmt.Printf("Error creating client: %v\n", err)
return
}
startDate := time.Now().AddDate(0, 0, -30).UTC()
endDate := time.Now().UTC()
filters := accessgrid.EventLogFilters{
Device: "mobile",
StartDate: &startDate,
EndDate: &endDate,
EventType: "install",
}
ctx := context.Background()
events, err := client.Console.EventLog(ctx, "0xd3adb00b5", filters)
if err != nil {
fmt.Printf("Error fetching event log: %v\n", err)
return
}
for _, event := range events {
fmt.Printf("Event: %s at %s by %s\n", event.Type, event.Timestamp, event.UserID)
}
}
using AccessGrid;
using System;
public async Task GetEventLogAsync()
{
var accountId = Environment.GetEnvironmentVariable("ACCOUNT_ID");
var secretKey = Environment.GetEnvironmentVariable("SECRET_KEY");
var client = new AccessGridClient(accountId, secretKey);
var events = await client.Console.EventLogAsync(
"0xd3adb00b5",
new EventLogFilters
{
Device = "mobile",
StartDate = DateTime.UtcNow.AddDays(-30),
EndDate = DateTime.UtcNow,
EventType = "install"
});
foreach (var evt in events)
{
Console.WriteLine($"Event: {evt.Type} at {evt.Timestamp} by {evt.UserId}");
}
}
import com.organization.accessgrid.AccessGridClient;
import com.organization.accessgrid.model.Event;
import com.organization.accessgrid.model.EventLogFilters;
import java.time.ZonedDateTime;
import java.util.List;
public class ConsoleService {
private final AccessGridClient client;
public ConsoleService() {
String accountId = System.getenv("ACCOUNT_ID");
String secretKey = System.getenv("SECRET_KEY");
this.client = new AccessGridClient(accountId, secretKey);
}
public void getEventLog() throws AccessGridException {
EventLogFilters filters = EventLogFilters.builder()
.device("mobile")
.startDate(ZonedDateTime.now().minusDays(30))
.endDate(ZonedDateTime.now())
.eventType("install")
.build();
List<Event> events = client.console().eventLog("0xd3adb00b5", filters);
for (Event event : events) {
System.out.printf("Event: %s at %s by %s%n",
event.getType(),
event.getTimestamp(),
event.getUserId());
}
}
}
<?php
require 'vendor/autoload.php';
use AccessGridClient;
$accountId = $_ENV['ACCOUNT_ID'];
$secretKey = $_ENV['SECRET_KEY'];
$client = new Client($accountId, $secretKey);
$events = $client->console->eventLog([
'card_template_id' => '0xd3adb00b5',
'filters' => [
'device' => 'mobile',
'start_date' => (new DateTime('30 days ago'))->format('c'),
'end_date' => (new DateTime('now'))->format('c'),
'event_type' => 'install'
]
]);
foreach ($events as $event) {
echo "Event: {$event->type} at {$event->timestamp} by {$event->user_id}\n";
}
Response
{
"logs": [
{
"id": "evt_91f2a7c3",
"event": "install",
"created_at": "2025-11-30T10:14:22Z",
"ip_address": "192.168.1.24",
"user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X)",
"metadata": {
"device": "mobile",
"platform": "ios",
"card_id": "key_a91c7e23",
"template_id": "0xd3adb00b5"
}
},
{
"id": "evt_c83d19aa",
"event": "install",
"created_at": "2025-12-05T16:48:09Z",
"ip_address": "10.0.0.88",
"user_agent": "Mozilla/5.0 (Linux; Android 14; Pixel 8)",
"metadata": {
"device": "mobile",
"platform": "android",
"card_id": "key_b81d77ef",
"template_id": "0xd3adb00b5"
}
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total_pages": 1,
"total_count": 2
}
}