mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
`key` was a leftover from when CTAs were embedded JSON — there's no remaining reason to require analyzers to invent a within-insight identifier. The execution layer is gone (no `cta.key` event format), insights are immutable from the user side (analyzers re-ingest by delete + recreate, so idempotent matching never happens), and `label` already covers human-facing identification. The console can group/sort CTAs by `service`+`method` if needed. - Schema: drop `key` attribute and the UNIQUE `(insightInternalId, key)` index from insightCTAs. Required fields are now `label`, `service`, `method` (+ optional `params`). - Validator no longer requires `key`. Drop the dup-key normalization loop in the manager Create endpoint — there's no semantic uniqueness to enforce. - Response model: `InsightCTA` keeps `$id` + standard headers, `insightId` backref, and the four functional fields. - E2E: drop sampleCTA's `$key` parameter, drop the testCreateRejectsDuplicateCTAIds test entirely, rename empty-fields test to testCreateRejectsCTAWithEmptyLabel and update the missing- fields tests to drop `key` from their payloads. - Unit tests rewritten to drop `key`. - Comment on the `insights.ctas` virtual attribute updated to reference the renamed `insightCTAs` collection. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>