Skip to main content
Manage monitored interfaces. All endpoints are public.

GET /api/loft/interfaces

List all interfaces.
curl
curl https://api.pidgeon.health/api/loft/interfaces

POST /api/loft/interfaces

Create a new interface.
FieldTypeDefaultDescription
namestringRequiredDisplay name
directoryPathstringRequiredFilesystem path to watch
profileNamestringVendor profile for validation
filePatternstring"*.hl7"Glob pattern for message files
curl
curl -X POST https://api.pidgeon.health/api/loft/interfaces \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ER Interface",
    "directoryPath": "/var/loft/er",
    "profileName": "epic_er",
    "filePattern": "*.hl7"
  }'

GET /api/loft/interfaces/

Get interface by ID.
curl
curl https://api.pidgeon.health/api/loft/interfaces/intf-001

PUT /api/loft/interfaces/

Update an interface. All fields optional.
FieldTypeDescription
namestringUpdated display name
profileNamestringUpdated vendor profile
filePatternstringUpdated file pattern
enabledbooleanEnable/disable monitoring
curl
curl -X PUT https://api.pidgeon.health/api/loft/interfaces/intf-001 \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

DELETE /api/loft/interfaces/

Delete an interface.
curl
curl -X DELETE https://api.pidgeon.health/api/loft/interfaces/intf-001

GET /api/loft/interfaces//metrics

Get interface metrics.
Query ParamTypeDefaultDescription
sinceHoursint24Hours of history
curl
curl "https://api.pidgeon.health/api/loft/interfaces/intf-001/metrics?sinceHours=12"
Response includes messagesTotal, messagesSuccessful, messagesFailed, successRate, averageLatencyMs, p99LatencyMs.