ENA Feedback
API Reference

Feedback & Analytics API

REST API endpoints for feedback tickets, hygiene submissions, cleaning logs, and visitor analytics.

Last updated on

Feedback tickets

List tickets

GET /api/feedback

Query parameters:

ParameterTypeDescription
fromISO 8601Start date
toISO 8601End date
location_idstringFilter by location
statusstringopen, in_review, resolved
categorystringFilter by category slug
pagenumberPage number
per_pagenumberMax: 100

Response:

{
  "data": [
    {
      "id": "tkt_abc123",
      "location_id": "loc_def456",
      "category": "cleanliness",
      "description": "Restroom needs cleaning.",
      "status": "open",
      "has_attachment": true,
      "contact_email": null,
      "created_at": "2026-06-07T09:15:00Z",
      "updated_at": "2026-06-07T09:15:00Z"
    }
  ],
  "meta": { "total": 58, "page": 1, "per_page": 20, "pages": 3 }
}

Get ticket

GET /api/feedback/:id

Returns the full ticket including notes and status history.

Update ticket status

PATCH /api/feedback/:id

Request body:

{ "status": "resolved" }

Hygiene submissions

List hygiene submissions

GET /api/hygiene

Query parameters: from, to, location_id, page, per_page

Response:

{
  "data": [
    {
      "id": "hyg_001",
      "location_id": "loc_def456",
      "submitted_at": "2026-06-07T11:30:00Z",
      "scores": {
        "cleanliness": 4,
        "smell": 5,
        "supplies": 3,
        "general": 4
      },
      "average_score": 4.0,
      "comment": null
    }
  ],
  "meta": { "total": 320, "page": 1, "per_page": 20, "pages": 16 }
}

Get hygiene analytics

GET /api/analytics/hygiene

Query parameters: from, to, location_id

Returns aggregated scores per category per location and trend data.


Cleaning logs

List cleaning logs

GET /api/cleaning

Query parameters: from, to, location_id, personnel_id, page, per_page

Response:

{
  "data": [
    {
      "id": "cln_001",
      "location_id": "loc_def456",
      "personnel_id": "prs_789",
      "personnel_name": "Staff Member A",
      "submitted_at": "2026-06-07T08:00:00Z",
      "tasks_completed": ["mopped", "stocked_supplies", "sanitised"],
      "notes": null
    }
  ],
  "meta": { "total": 180, "page": 1, "per_page": 20, "pages": 9 }
}

Visitor analytics

Get analytics dashboard

GET /api/analytics/dashboard

Query parameters: from, to

Returns cross-module KPI metrics for the selected period:

{
  "period": { "from": "...", "to": "..." },
  "total_responses": 1247,
  "average_score": 4.2,
  "nps": 38,
  "active_locations": 47,
  "pending_tickets": 12,
  "cleaning_compliance_rate": 0.94
}

Get visitor events

GET /api/analytics/visitor-events

Query parameters: from, to, location_id, event_type (scan, form_open, submission, dropout)

Returns aggregated event counts grouped by day and location.