Feedback

Linear issue-state webhook (feedback resolution)

Receives Issue state-change events from Linear (MNE-1680). When a linked issue (matched via the Feedback-ID: marker MNE-1679 embeds in the issue body, resolved through feedback_work_items.linear_issue_id) moves to a completed state (Done / Released), writes a feedback_resolutions row and flips the submission — and any cluster-dupe submissions — to resolved. Non-issue events, non-completed states, and issues with no linked work item are acknowledged as no-ops (200). Authenticated by the linear-signature header, an HMAC-SHA-256 digest of the raw request body keyed on LINEAR_WEBHOOK_SIGNING_SECRET, timing-safe-compared. FAILS CLOSED: if that secret is not configured, every request is rejected — this endpoint never silently skips signature validation. Handler: handleLinearWebhook in src/feedback/linear-webhook.ts; runLinearReconciler is the scheduled backstop for dropped deliveries.

post/feedback/webhook/linear

Request

  • Base URL: https://api.mnemom.ai/v1
  • URL: https://api.mnemom.ai/v1/feedback/webhook/linear
  • Auth: none required

Headers

linear-signaturestring required

HMAC-SHA-256 hex digest of the raw request body, keyed on LINEAR_WEBHOOK_SIGNING_SECRET, timing-safe-compared.

Request body

typestring

Linear event type, e.g. "Issue".

actionstring

e.g. "update", "create".

dataobject

The Issue resource: id (Linear UUID), identifier (e.g. "MNE-1234"), state.name/state.type, description, mergeCommitHash, releaseLabel.

Response

Acknowledged — either a real resolution was recorded (resolved: true/false reflecting whether this was already resolved) or the event was a no-op (skipped: <reason>).

okboolean required
skippedstring

Set when no action was taken: "not_an_issue_event" | "not_a_resolution_state" | "no_linked_work_item".

resolvedboolean
submission_idstring uuid

Changes

No recorded changes to this operation across all 1 revision of this API.