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 Live Service (Dev) Azure Portal CI/CD Pipeline Source Code Technology Stack

Delivery Status

Delivery Wave: 6 -- External Integrations

Stage Status
Infrastructure (Bicep) ✅ complete
Database Schema (Flyway) ✅ complete
Deployed to Dev ✅ complete
Smoke Tested ✅ complete
Deployed to Prod not-started
Pipeline Status
CI Pipeline ✅ complete
CD Pipeline ✅ complete

Azure Resources (Dev):


Integration Context

svc-emergency-response C4 context diagram

Generated from architecture/specs/svc-emergency-response.yaml + cross-service-calls.yaml

Data Store

Entity Relationship Diagram

svc-emergency-response entity relationship diagram

Generated from architecture/metadata/data-stores.yaml

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

Solutions Affecting This Service

Ticket Solution Capabilities Date
NTK-10006 Real-Time Adventure Tracking and Emergency Alerting System CAP-3.3, CAP-3.2, CAP-2.1 2026-03-20

Endpoints (10 total)


GET /emergencies -- List emergency incidents with optional filters

View in Swagger UI

GET /emergencies sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

Architect-authored — overrides auto-generated baseline Source: architecture/diagrams/endpoints/svc-emergency-response--post-emergencies.puml


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

View in Swagger UI

GET /emergencies/{emergency_id} sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

PATCH /emergencies/{emergency_id} sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

GET /emergencies/{emergency_id}/timeline sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

POST /emergencies/{emergency_id}/timeline sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

POST /emergencies/{emergency_id}/dispatch sequence diagram

Architect-authored — overrides auto-generated baseline Source: architecture/diagrams/endpoints/svc-emergency-response--post-emergencies-emergency_id-dispatch.puml


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

View in Swagger UI

GET /rescue-teams sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

GET /emergency-contacts/{guest_id} sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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

View in Swagger UI

PUT /emergency-contacts/{guest_id} sequence diagram

Generated from architecture/specs/svc-emergency-response.yaml Auto-generated baseline — shows standard request flow. For detailed behavioral sequences, see the relevant solution design.


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