Inugo Data Ingestion API

Historical data collection project & API documentation

Project Brief - Inugo Data Collection

Goal: Extract 79,780 historical ANPR events (Aug 1 - Dec 21, 2025) from Inugo portal and deliver to our API.

About the Inugo Portal

Inugo is a parking management platform that captures vehicle entry/exit events via ANPR cameras. Events are displayed in their web-based Activity page at admin.inugo.com

Login credentials will be provided separately via secure communication.

Scope of Work

Date Range

August 1, 2025 through December 21, 2025

79,780 events total (~80K events)

Required Data Points

  • Site - Location name from table
  • Lane & Gate - Extract "Entry" or "Exit" before brackets
  • Triggered At - Timestamp in NZST (no conversion needed)
  • Plate - Vehicle registration number
  • Snapshot - Plate crop thumbnail image (URL or base64)
  • View Image - Full vehicle image via ⋮ menu → "View Image" (URL or base64)

Delivery Method - Real-Time API Integration

Workflow:

  1. Scrape the Inugo Activity page to extract event data
  2. POST each event (or batch of events) directly to our API endpoint in real-time
  3. Our API immediately downloads and stores image URLs to prevent 24-hour expiration issues
  4. Events are stored in staging for review before final import

This approach eliminates image expiration risk and provides near real-time data ingestion.

Data Mapping from Inugo Portal:

Site → location field (e.g., "Sudima Hotel Auckland Airport")
Lane & Gate → Extract "entry" or "exit" for event_type field
Triggered At → Keep in NZST, convert to ISO 8601 format for timestamp field

⚠️ DO NOT convert timezone - preserve NZST timestamps exactly as displayed in Inugo portal

Plate → plate field
Snapshot → plate_crop_image as URL or base64
View Image (⋮ menu) → full_image as URL or base64

Quality Standards

  • All 79,780 events must be captured (no gaps)
  • Both plate crop and full vehicle images required for each event
  • Images can be sent as direct URLs (e.g., S3 links) or base64-encoded strings - we handle download and storage
  • Handle Inugo portal pagination and rate limits gracefully

✓ Image Expiration Solution

Our API immediately downloads and stores all image URLs upon receipt, eliminating the 24-hour expiration risk. POST events to our endpoint as soon as they're scraped for optimal data preservation.

Timeline & Next Steps

Phase 1

Proposal & Quote

Est. timeline & cost

Phase 2

Test Scrape

100 sample events

Phase 3

Full Collection

All historical data

Upon agreement, we will provide Inugo portal credentials and the API key to begin the test phase.

API Documentation
API Endpoint
POST
https://epro.enforcify.pro/api/functions/ingestInugoData

Share this URL with your scraping provider

Authentication

Include your API key in the request header:

X-API-Key: YOUR_INUGO_INGESTION_API_KEY

Set the INUGO_INGESTION_API_KEY secret in your app settings and share it securely with your provider.

Request Format

Required Fields (from Inugo Activity page)

  • plate - Vehicle plate number (from "Plate" column)
  • location - Location name (from "Site" column, must match existing location in system)
  • event_type - "entry" or "exit" (extract from "Lane & Gate" column)
  • timestamp - ISO 8601 format in NZST (from "Triggered At" column) - DO NOT convert timezone, keep as NZST
  • plate_crop_image - Image URL or base64-encoded string (from "Snapshot" column)
  • full_image - Image URL or base64-encoded string (from ⋮ menu → "View Image")

Example Payload

{
  "events": [
    {
      "plate": "ABC123",
      "location": "Sudima Hotel Auckland Airport",
      "event_type": "entry",
      "timestamp": "2025-12-21T10:30:00+13:00",
      "plate_crop_image": "https://s3.amazonaws.com/inugo/images/plate_crop.jpg",
      "full_image": "https://s3.amazonaws.com/inugo/images/full_vehicle.jpg"
    }
  ]
}
cURL Example
curl -X POST 'https://epro.enforcify.pro/api/functions/ingestInugoData' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
  "events": [
    {
      "plate": "ABC123",
      "location": "Sudima Hotel Auckland Airport",
      "event_type": "entry",
      "timestamp": "2025-12-21T10:30:00+13:00",
      "plate_crop_image": "https://s3.amazonaws.com/inugo/images/plate_crop.jpg",
      "full_image": "https://s3.amazonaws.com/inugo/images/full_vehicle.jpg"
    }
  ]
}'
Response Format

Success (200)

{
  "success": true,
  "total": 1,
  "inserted": 1,
  "skipped": 0,
  "errors": []
}

Error Response

{
  "success": true,
  "total": 2,
  "inserted": 1,
  "skipped": 1,
  "errors": [
    {
      "plate": "XYZ789",
      "error": "Location not found: Invalid Location"
    }
  ]
}