Integrations overview — Salesforce / ServiceNow / Cityworks / Accela / webhook / REST

Verified jurisdictions wire Civic Reports into their existing case-management system through one of five outbound adapters, plus a read REST API for inbound pulls.

The five outbound adapter kinds:
- **Generic webhook** — HMAC-signed JSON POST. The simplest path; lets you wire anything.
- **Cityworks Server AMS** — direct REST integration with the Cityworks ServiceRequest API. Most cities run this.
- **Salesforce** — OAuth2 refresh-token flow → Case sObject create + PATCH on close.
- **ServiceNow** — Table API for Incidents. Basic auth or OAuth2.
- **Accela Civic Platform** — v4 serviceRequests API with app + access token.

Each kind has a dedicated walkthrough article covering credentials + setup + common gotchas — see "Cityworks integration setup", "Salesforce integration setup", etc.

Inbound REST API:
1. `/civicreports` → **API Keys** tab.
2. Issue a key. The plaintext is shown ONCE — save it; we only store the SHA-256 hash.
3. Call `https://turtini.com/api/civicReportsApi/reports` with `Authorization: Bearer <key>`. Endpoints: `/reports` (with optional `?status=...`) and `/stats`.

All outbound calls are metered + billed at 0.115¢ per call. See "Integration call billing + how to monitor usage" for the rate model + monitoring tips.