Skip to content

svc-emergency-response

NovaTrek Emergency Response Service  |  Safety  |  v1.0.0  |  NovaTrek Safety and Compliance Team

Manages emergency alerts, SOS signals from guests on active adventures,

Swagger UI Download OpenAPI Spec


Integration Context

svc-emergency-response C4 context diagram

Data Store

Overview

Property Detail
Engine PostgreSQL 15
Schema emergency
Tables emergencies, emergency_timeline, dispatch_records, rescue_teams, emergency_contacts
Estimated Volume ~50 emergencies/month (peak season)
Connection Pool min 5 / max 15 / idle timeout 10min
Backup Strategy Continuous WAL archiving, daily base backup, 30-day PITR

Key Features

  • Indexes on guest_id and reservation_id for fast lookup
  • Optimistic locking via _rev column on emergencies table
  • Composite index on (status, severity) for active incident filtering
  • TTL-based archival of resolved emergencies after 90 days

Table Reference

emergencies

Primary emergency incident records triggered by SOS or staff report

Column Type Constraints
emergency_id UUID PK, DEFAULT gen_random_uuid()
guest_id UUID NOT NULL
reservation_id UUID NOT NULL
type VARCHAR(30) NOT NULL
severity VARCHAR(10) NOT NULL
status VARCHAR(20) NOT NULL, DEFAULT 'active'
latitude DOUBLE PRECISION NOT NULL
longitude DOUBLE PRECISION NOT NULL
altitude_meters DOUBLE PRECISION NULL
description TEXT NULL
reported_by VARCHAR(100) NOT NULL
dispatch_id UUID NULL
resolution_notes TEXT NULL
created_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
updated_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
resolved_at TIMESTAMPTZ NULL
_rev VARCHAR(36) NOT NULL

Indexes:

  • idx_emergency_guest on guest_id
  • idx_emergency_reservation on reservation_id
  • idx_emergency_active on status, severity
  • idx_emergency_date on created_at DESC

emergency_timeline

Chronological event log for each emergency incident

Column Type Constraints
entry_id UUID PK, DEFAULT gen_random_uuid()
emergency_id UUID NOT NULL, FK -> emergencies
event_type VARCHAR(20) NOT NULL
description TEXT NOT NULL
actor VARCHAR(100) NOT NULL
timestamp TIMESTAMPTZ NOT NULL, DEFAULT NOW()

Indexes:

  • idx_timeline_emergency on emergency_id, timestamp

dispatch_records

Rescue team dispatch records linked to emergencies

Column Type Constraints
dispatch_id UUID PK, DEFAULT gen_random_uuid()
emergency_id UUID NOT NULL, FK -> emergencies
rescue_team_id UUID NOT NULL, FK -> rescue_teams
priority VARCHAR(20) NOT NULL, DEFAULT 'urgent'
status VARCHAR(20) NOT NULL, DEFAULT 'dispatched'
dispatched_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
eta_minutes INTEGER NULL

Indexes:

  • idx_dispatch_emergency on emergency_id
  • idx_dispatch_team on rescue_team_id

rescue_teams

Registry of available rescue teams and their operational status

Column Type Constraints
team_id UUID PK, DEFAULT gen_random_uuid()
name VARCHAR(100) NOT NULL
region VARCHAR(50) NOT NULL
status VARCHAR(20) NOT NULL, DEFAULT 'available'
member_count INTEGER NOT NULL
certifications TEXT[] NULL

Indexes:

  • idx_team_status on status
  • idx_team_region on region

emergency_contacts

Guest emergency contact information for SOS notifications

Column Type Constraints
contact_id UUID PK, DEFAULT gen_random_uuid()
guest_id UUID NOT NULL
name VARCHAR(200) NOT NULL
relationship VARCHAR(50) NOT NULL
phone VARCHAR(20) NOT NULL
email VARCHAR(200) NULL
is_primary BOOLEAN NOT NULL, DEFAULT false

Indexes:

  • idx_contact_guest on guest_id

Endpoints (10 total)


GET /emergencies -- List emergency incidents with optional filters

View in Swagger UI

GET /emergencies sequence diagram

POST /emergencies -- Trigger a new emergency alert (SOS)

Creates a new emergency incident from a guest SOS signal or staff report.

View in Swagger UI

POST /emergencies sequence diagram

GET /emergencies/{emergency_id} -- Get emergency incident details

View in Swagger UI

GET /emergencies/{emergency_id} sequence diagram

PATCH /emergencies/{emergency_id} -- Update emergency status or add resolution notes

View in Swagger UI

PATCH /emergencies/{emergency_id} sequence diagram

GET /emergencies/{emergency_id}/timeline -- Get the full event timeline for an emergency

View in Swagger UI

GET /emergencies/{emergency_id}/timeline sequence diagram

POST /emergencies/{emergency_id}/timeline -- Add a timeline entry to an active emergency

View in Swagger UI

POST /emergencies/{emergency_id}/timeline sequence diagram

POST /emergencies/{emergency_id}/dispatch -- Dispatch a rescue team to the emergency location

View in Swagger UI

POST /emergencies/{emergency_id}/dispatch sequence diagram

GET /rescue-teams -- List available rescue teams and their current status

View in Swagger UI

GET /rescue-teams sequence diagram

GET /emergency-contacts/{guest_id} -- Get emergency contacts for a guest

View in Swagger UI

GET /emergency-contacts/{guest_id} sequence diagram

PUT /emergency-contacts/{guest_id} -- Update emergency contacts for a guest

View in Swagger UI

PUT /emergency-contacts/{guest_id} sequence diagram

Consuming Applications

Application Screens Using This Service
Operations Dashboard Safety Incident Board
Adventure App Weather and Trail Alerts

Events Published

Event Channel Trigger Consumers
emergency.triggered novatrek.safety.emergency.triggered POST /emergencies svc-notifications, svc-scheduling-orchestrator, svc-safety-compliance, svc-analytics