OTBOperational Transparency Board

Integrations

Every integration is optional. Each one reads its own environment variables; when they're absent the feature silently hides — no broken tiles, no error banners, no noise. The wall dashboard drops the tile; the public board drops the mention; GET /api/public-config reports the feature as false.

Configure in .env, then restart the service.


Google Chat notifications

Posts incident announcements and updates to a Google Chat room.

GOOGLE_CHAT_WEBHOOK_URL=https://chat.googleapis.com/v1/spaces/…/messages?key=…&token=…

Create the webhook in the target space: space name → Apps & integrations → Webhooks → add. Paste the URL into .env. Off when empty.


PagerDuty (P1 incidents tile)

Shows currently-active P1 - Critical incidents from a PagerDuty account on the wall dashboard.

Variable Purpose
PAGERDUTY_USER_API_KEY PagerDuty user API token (read-only recommended)
PD_P1_PRIORITY_ID ID of the priority treated as P1 (from the PagerDuty web UI URL)
PD_NE_EP_ID Escalation policy ID used to scope "on-call" views, if desired

The PagerDuty tile appears when PAGERDUTY_USER_API_KEY is set. Without a priority ID configured, the tile still works but may match more incidents — set PD_P1_PRIORITY_ID to pin it to critical-only.

Circuit Incidents tile (circuit monitoring via PagerDuty)

Surfaces incidents from a dedicated circuit-monitoring service (e.g. your ISP/circuit watchdog) mapped to physical sites.

Variable Purpose
PAGERDUTY_CIRCUIT_SERVICE_NAME or PAGERDUTY_CIRCUIT_SERVICE_ID The dedicated service whose incidents are circuit outages
lib/circuit_clinic_map.json Map of circuit/site identifiers to your locations (start from {} and extend)

Requires the PagerDuty integration to be configured as well. Tile hides when any piece is missing.


OPManager (device up/down)

Shows devices currently down or warning from ManageEngine OPManager.

Variable Purpose
OPMANAGER_API_URL Base URL, e.g. https://opmanager.example.local:8080
OPMANAGER_API_TOKEN API token (preferred auth)
OPMANAGER_API_NAME + OPMANAGER_API_KEY Legacy auth pair (used when no token)
OPMANAGER_IGNORE_DEVICES Comma-separated device names to exclude from the tile

Tile appears when the URL and any credential pair are set.


Zoho Desk (P1-Critical tickets)

Shows open P1-Critical tickets from Zoho Desk.

Variable Purpose
ZOHO_CLIENT_ID / ZOHO_CLIENT_SECRET / ZOHO_REFRESH_TOKEN OAuth credentials from a Zoho API client
ZOHO_ORG_ID Numeric Zoho org ID (sent as the orgId header)
ZOHO_ORG_SLUG Org URL slug, used to build deep links to tickets in Zoho

Refresh tokens are exchanged by the app as needed. Tile appears when the OAuth trio and org ID are present.


Power outage monitoring (FEMA EAGLE-I)

Shows known power outages near your locations. Uses the public FEMA EAGLE-I API — no credentials, no signup.

Variable / file Purpose
lib/clinics_fips.json FIPS county codes to watch. Start from {} — the feature stays off. Add county FIPS codes for the areas you care about.
POWER_OUTAGE_API_* Override the API base/endpoint only if FEMA changes it

The tile (and the location map's power layer) activates when the FIPS file contains at least one county.


Unconfigured behavior (for planners)

Unconfigured What users see
Email Subscribe form notes email isn't available; nothing sends
Google Chat Nothing — silent
Any wall tile Tile absent from /wall
All integrations Board is still fully functional for its core job: incidents + maintenance + subscriptions

This is checked at startup and logged:

[CONFIG] Features: email=NOT CONFIGURED, googleChat=NOT CONFIGURED, pagerduty=configured, ...

If a tile you expected is missing, that log line is the first place to look.