Handbook
Integrations, APIs, and Events
Architecture target (AFF v0.1). Implementation flags live in implementation-status.md. Do not treat this document as a shipped product contract.
Updated
Architecture target (AFF v0.1). Implementation flags live in implementation-status.md. Do not treat this document as a shipped product contract.
Integration priorities
Collaboration channels
- Slack
- Microsoft Teams
- In-app and mobile notification
- Calendar reminder
Channel delivery must use the same survey instance and exposure ledger. A reminder in another channel is not a second question exposure.
Identity and directory
- CSV import for early stages
- Google Workspace and Microsoft Entra directory sync
- HRIS connectors
- SAML SSO
- SCIM provisioning and deprovisioning
Work context
Optional integrations can improve routing and event triggers:
- Jira / Azure DevOps / Linear
- GitHub / GitLab
- incident-management systems
- CRM and customer-account systems
- learning platforms
- calendar and meeting systems
Do not ingest operational telemetry merely because it is available. Every field needs a declared purpose and access model.
Public API domains
- tenants and entitlements
- people, teams, roles, and relationships
- frameworks, constructs, questions, and scales
- packs, overlays, and assignments
- schedules and survey windows
- rater nominations
- survey status and delivery
- responses, subject to permissions
- PDP goals and milestones
- aggregates and reports
- imports and mappings
- audit and deletion requests
Event model
Recommended events:
tenant.created
tenant.entitlement.changed
person.created
person.updated
person.deactivated
relationship.changed
pack.published
pack.assigned
schedule.activated
survey.window.created
survey.instance.assembled
survey.instance.delivered
survey.instance.opened
survey.instance.completed
survey.instance.expired
question.exposed
response.recorded
coverage.cycle.completed
coverage.feasibility.failed
pdp.goal.created
pdp.goal.activated
pdp.override.created
pdp.milestone.completed
pdp.goal.completed
report.released
report.suppressed
import.completed
import.mapping.reviewed
data.exported
data.deletion.requested
data.deletion.completed
Every event should include tenant, actor, subject, source, timestamp, version, and idempotency key where appropriate.
Survey assembly API
Example request:
{
"tenant_id": "acme",
"survey_window_id": "win_2026_w32",
"subject_id": "sub_123",
"respondent_id": "rsp_456",
"relationship": "direct_report",
"pack_assignments": ["pa_1", "pa_2"],
"preview": false
}
Response should include selected items and a decision trace suitable for authorized debugging, not for respondents.
Import adapter contract
An adapter returns:
- source metadata
- extracted people and relationships
- constructs or competencies
- items and scales
- raw observations
- qualitative text
- source report aggregates
- mapping suggestions
- extraction warnings
- checksum and parser version
The import is staged until a user confirms it.
Webhook safeguards
- signed payloads
- retries with idempotency
- tenant-configurable endpoints
- secret rotation
- delivery logs
- event filtering
- redaction of narrative and identity data by default
BI access
Enterprise customers may receive:
- scheduled de-identified export
- secure data share
- API for aggregated metrics
- warehouse connector
Raw respondent identity should not be exposed merely to make dashboarding easier.
Integration entitlement model
Use granular entitlements:
integrations:
slack: true
microsoft_teams: true
csv_directory: true
hris_connectors: 0
saml_sso: false
scim: false
public_api: read_only
webhooks: 3
warehouse_export: false
This is more flexible than a single integrations_enabled flag.