GeoSentinel is a real-time geospatial incident monitoring platform that aggregates events from multiple sources — including NASA FIRMS, USGS, GDELT, and ACLED — normalises them into a canonical model, applies spatio-temporal clustering, and exposes the results through a versioned REST API. Every resource is served as JSON and the full set of endpoints is publicly accessible without credentials.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/danizd/GeoSentinel/llms.txt
Use this file to discover all available pages before exploring further.
Base URL
All requests in local development target:docker-compose.prod.yml and your reverse-proxy host configuration for the exact domain.
Authentication
No API keys, bearer tokens, or session cookies are required. Every request can be made as a plain HTTP call.Versioning
All production endpoints are prefixed with/v1/. When breaking changes are introduced, a new prefix (e.g. /v2/) will be introduced without removing the previous version.
Interactive Documentation
FastAPI automatically generates interactive API documentation from the OpenAPI schema. Three interfaces are available when the server is running:| Interface | URL |
|---|---|
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
| OpenAPI JSON schema | http://localhost:8000/openapi.json |
openapi.json can be imported into Postman, Insomnia, or any OpenAPI-compatible toolchain.
Response Format
All responses areapplication/json. There are two general shapes:
Single-resource response — a flat JSON object representing the requested entity.
incidents, aois, etc.), but total and page are present on every paginated response.
Pagination
All list endpoints accept two query parameters to control pagination:| Parameter | Type | Default | Maximum | Description |
|---|---|---|---|---|
page | integer | 1 | — | 1-based page number |
limit | integer | 20 | 100 | Number of results per page |
page until page * limit >= total.
Endpoints Summary
Incidents
List and retrieve geospatial incidents aggregated from all ingestion sources. Supports spatial filtering, category, status, severity, and source filters.
GET /v1/incidents
GET /v1/incidents/{incident_id}AOI
Manage Areas of Interest. Create, list, update, and soft-delete polygons used for spatial filtering and targeted ingestion.
GET /v1/aoi
POST /v1/aoi
GET /v1/aoi/{aoi_id}
PUT /v1/aoi/{aoi_id}
DELETE /v1/aoi/{aoi_id}Corrections
Submit human-in-the-loop corrections to incidents. Supports false positive marking, manual closure, reclassification, relocation, and merge operations.
POST /v1/correctionsMilitary Flights
Real-time military flight positions filtered by active AOIs. Sourced from the OpenSky Network relay microservice running on port 8002.
GET /v1/military-flightsAIS Vessels
Real-time AIS vessel positions streamed from the AISStream relay microservice running on port 8003.
GET /v1/ais-vesselsAdmin Jobs
Trigger background jobs such as clustering and incident lifecycle transitions. Returns 409 if a job is already running.
POST /v1/admin/run/{source}
POST /v1/admin/run/lifecycle
POST /v1/admin/run/allHealth
Service and database health checks. Use these endpoints for liveness and readiness probes in container orchestration.
GET /v1/health
GET /v1/health/db
GET /v1/seedError Codes
GeoSentinel uses standard HTTP status codes for all error responses. Error bodies follow FastAPI’s default format and include adetail field with a human-readable explanation.
| Status Code | Meaning | Common Causes |
|---|---|---|
400 | Bad Request | Malformed query parameter that cannot be parsed (e.g. an invalid bbox string) |
404 | Not Found | The requested resource UUID does not exist in the database |
409 | Conflict | An admin job was requested while the same job is already running |
422 | Unprocessable Entity | Pydantic / FastAPI validation failure — one or more query or body parameters failed type or constraint checks (e.g. limit=200 exceeds the maximum of 100) |
