Skip to content

Reports API ​

The Reports API provides traffic analytics, violation statistics, and report management.

Overview ​

ProcedureTypeAuthDescription
reports.getAnalyticsQueryYesGet comprehensive analytics dashboard
reports.getReportsQueryYesGet list of generated reports

Procedures ​

reports.getAnalytics ​

Get comprehensive analytics data including seatbelt violations and traffic events.

Type: Query Auth Required: Yes

Response ​

typescript
{
  seatbeltViolations: {
    total: number;           // Total violation count
    trend: number;           // % change from previous month
    avgPerDay: number;       // Average violations per day
    complianceRate: number;  // Compliance percentage (0-100)
    criticalHours: string[]; // Peak violation hours (e.g., ["08:00-08:59", "17:00-17:59"])
    topLocations: Array<{
      name: string;
      violations: number;
    }>;
  };
  trafficEvents: {
    total: number;           // Total event count
    trend: number;           // % change from previous month
    avgPerDay: number;       // Average events per day
    peakHour: string;        // Peak traffic hour (e.g., "08:00-08:59")
    eventTypes: Array<{
      type: string;
      count: number;
      percentage: number;
    }>;
  };
}

Example ​

bash
curl -X GET "https://api.itms.solutions/trpc/reports.getAnalytics" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Response Example ​

json
{
  "result": {
    "data": {
      "json": {
        "seatbeltViolations": {
          "total": 1250,
          "trend": -5.2,
          "avgPerDay": 41.7,
          "complianceRate": 87,
          "criticalHours": ["08:00-08:59", "17:00-17:59"],
          "topLocations": [
            { "name": "Main Intersection", "violations": 342 },
            { "name": "Highway Checkpoint", "violations": 256 },
            { "name": "Downtown Junction", "violations": 198 }
          ]
        },
        "trafficEvents": {
          "total": 8540,
          "trend": 12.3,
          "avgPerDay": 284.7,
          "peakHour": "08:00-08:59",
          "eventTypes": [
            { "type": "Speed Violation", "count": 3420, "percentage": 40.0 },
            { "type": "Red Light", "count": 2135, "percentage": 25.0 },
            { "type": "Lane Violation", "count": 1707, "percentage": 20.0 }
          ]
        }
      }
    }
  }
}

Errors ​

CodeDescription
UNAUTHORIZEDNot authenticated
INTERNAL_SERVER_ERRORFailed to fetch analytics data

reports.getReports ​

Get a list of all generated reports with creator information.

Type: Query Auth Required: Yes

Response ​

typescript
Array<{
  id: string;
  name: string;
  description: string | null;
  type: string;              // Report type (e.g., "DAILY", "WEEKLY", "MONTHLY")
  status: string;            // Status (e.g., "COMPLETED", "PENDING", "FAILED")
  filePath: string | null;
  userId: string;
  createdAt: string;
  updatedAt: string;
  createdBy: {
    id: string;
    firstName: string;
    lastName: string;
    email: string;
  } | null;
  downloadUrl: string;       // URL to download the report
  size: number;              // File size in bytes
  format: string;            // File format (e.g., "PDF")
}>

Example ​

bash
curl -X GET "https://api.itms.solutions/trpc/reports.getReports" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Response Example ​

json
{
  "result": {
    "data": {
      "json": [
        {
          "id": "report-001",
          "name": "Weekly Traffic Summary",
          "description": "Traffic analysis for week 45",
          "type": "WEEKLY",
          "status": "COMPLETED",
          "filePath": "/reports/weekly-45.pdf",
          "userId": "admin-001",
          "createdAt": "2024-11-15T10:30:00.000Z",
          "updatedAt": "2024-11-15T10:35:00.000Z",
          "createdBy": {
            "id": "admin-001",
            "firstName": "System",
            "lastName": "Administrator",
            "email": "admin@itms.solutions"
          },
          "downloadUrl": "https://storage.itms.solutions/reports/report-001",
          "size": 0,
          "format": "PDF"
        }
      ]
    }
  }
}

Analytics Calculations ​

Trend Calculation ​

Trend values compare the current month to the previous month:

trend = ((current - previous) / previous) * 100
  • Positive trend: Increase in events/violations
  • Negative trend: Decrease in events/violations

Compliance Rate ​

complianceRate = ((totalTraffic - violations) / totalTraffic) * 100

Critical Hours ​

Hours with the highest violation counts in the last 30 days, sorted by frequency.

Event Types ​

Event types are grouped by violationType and include:

  • Count of events
  • Percentage of total

Report Types ​

TypeDescription
DAILYDaily summary report
WEEKLYWeekly analysis report
MONTHLYMonthly comprehensive report
CUSTOMCustom date range report
INCIDENTSpecific incident report

Report Status ​

StatusDescription
PENDINGReport generation in progress
COMPLETEDReport ready for download
FAILEDReport generation failed
EXPIREDReport file expired/deleted

SCS Smart City - Traffic, Gateway, Camera, and NVR Platform