Zum Hauptinhalt springen

Kanera-API

Mit der öffentlichen API von Kanera können Sie Integrationen rund um die gleiche Arbeit erstellen, die Ihr Team in der App verwaltet: Arbeitsbereiche, Boards, Karten, Listen, Board-Trenner, Kommentare, Checklisten, Notizen, Anhänge, Beschriftungen, benutzerdefinierte Felder, Aufgaben, Rangfolge-Warteschlangen, Aktivitäten und externe Links.

Verwenden Sie die API, wenn Kanera eine Verbindung zu einem anderen System herstellen, einen internen Workflow unterstützen, Daten migrieren, Berichte erstellen oder ein anderes Tool zum Erstellen und Aktualisieren von Kanera verwenden muss.

Was Sie bauen können​

Zu den gängigen API-Anwendungsfällen gehören:

  • Synchronisieren Sie Kanera-Karten mit einem anderen Arbeits-Tracker.
  • Erstellen Sie Karten aus Formularen, Support-Tickets, Chat-Nachrichten oder CRM-Datensätzen.
  • Erstellen Sie benutzerdefinierte Berichts-Dashboards aus Boards, Aufgaben, Beschriftungen, benutzerdefinierten Feldern und Aktivitäten.
  • Importieren Sie Arbeiten aus einem anderen System in Kanera.
  • Bewahren Sie externe Aufzeichnungen auf, die mit Kanera-Karten oder -Notizen verknüpft sind.
  • Fügen Sie Kommentare oder Statusaktualisierungen von einem anderen Tool hinzu.
  • Laden Sie Dateien hoch und hängen Sie sie an Karten oder Notizen an.
  • Lesen Sie den Aktivitätsverlauf für Audits, Berichte oder Automatisierung.

Kanera-Integrationen können auf eigenständige Boards oder Arbeitsbereiche abzielen. Ein eigenständiges Board verfügt über eigene Listen, Beschriftungen und benutzerdefinierte Felder. Ein Arbeitsbereich teilt diese Ressourcen über alle seine Boards hinweg, was es einfacher macht, die Board-übergreifende Berichterstellung und die Synchronisierung von Arbeitsabläufen konsistent zu halten.

Offizielle Kunden​

Sie müssen nicht von vorne beginnen curl. Zwei Erstanbieter-Clients umschließen dieselbe API:

KundeInstallierenBenutze es für
Kanera CLInpm install --global @kanera/cliTerminalnutzung, Shell-Skripte und KI-Agenten, die Befehle ausführen können.
TypeScript-SDKnpm install @kanera/sdkTypeScript- und JavaScript-Integrationen. Keine Laufzeitabhängigkeiten; läuft auf Node, Bun, Deno, Workern und Browsern.

Das SDK ist MIT-lizenziert, sodass die Einbettung in Ihre eigene Anwendung keine Fragen zur Lizenzpolitik aufwirft. Verwenden Sie die REST-Endpunkte direkt für jede andere Sprache.

API-Referenz​

Die Kanera REST API finden Sie unter:

https://api.kanera.app

Eine ausführliche Referenz auf Endpunktebene finden Sie unter:

https://api.kanera.app/docs

Der öffentliche API-Dienst enthält die Referenz auf Endpunktebene:

PfadBenutzen
/docsInteraktive Skalar-API-Referenz.
/swaggerReferenz zur Swagger-Benutzeroberfläche.
/openapi.jsonOpenAPI-Dokument für SDK-Generierung und Tooling.

Für Kanera öffnen Sie:

https://api.kanera.app/docs
https://api.kanera.app/swagger
https://api.kanera.app/openapi.json

Verwenden Sie diese Seite als Leitfaden für die ersten Schritte und verwenden Sie dann die API-Referenz für genaue Endpunktpfade, Anforderungstexte, Antwortschemata und verfügbare Webhook-Ereignistypen.

Verwenden Sie die Endpunktreferenz​

Offen Skalar für die primäre Endpunktreferenz. Für jede Operation werden Methode und Pfad, erforderlicher Bereich, Pfad- und Abfrageparameter, Anforderungsschema, Antwortschema und Fehlerantworten angezeigt. Benutzen Autorisieren um ein Inhabertoken bereitzustellen, wenn Sie eine Anfrage versuchen möchten.

Benutzen Swagger-Benutzeroberfläche wenn Ihre Werkzeuge oder Ihr Arbeitsablauf auf Swagger basieren. Herunterladen OpenAPI JSON zur SDK-Generierung, Anforderungsvalidierung oder zum Importieren der API in einen anderen Client.

Das OpenAPI-Dokument ist die Quelle der Wahrheit. Kopieren Sie ein Beispiel aus der Referenz, anstatt einen Anforderungstext zu erraten, und testen Sie Schreib- oder Löschvorgänge im vorgesehenen Arbeitsbereich, bevor Sie sie automatisieren.

Endpunktgruppen​

GruppeTypische Operationen
Arbeitsbereiche und BoardsEntdecken Sie zugängliche Arbeiten, öffnen Sie den vollständigen Board-Status, verwalten Sie Mitglieder und Gäste und erstellen Sie Boards oder ordnen Sie sie neu an.
Listen, Trennzeichen und KartenArbeiten erstellen, aktualisieren, positionieren, verschieben, vervollständigen, archivieren, duplizieren und in großen Mengen bearbeiten.
Notizen und AnhängeErstellen Sie verschachtelte Notizen, verwalten Sie Sperren und Backlinks, laden Sie Dateien direkt oder über einen einmaligen Upload-Link hoch und lesen Sie die Bytes eines Anhangs.
NotizblockLesen Sie die privaten Scratchpad-Seiten des Anrufers und erfassen Sie schnelle Aufgaben auf einer Posteingangsseite. Nur persönliche Anmeldeinformationen.
Felder und BeschriftungenVerwalten Sie benutzerdefinierte Felder, Optionen und wiederverwendbare Kartenetiketten auf Arbeitsbereichsebene.
Kommentare und AktivitätLesen Sie Karten-Feeds, schreiben Sie Kommentare und Reaktionen und überprüfen Sie die Board-Aktivitäten.
Die nächsten PrioritätenEntdecken Sie lesbare Warteschlangen, listen Sie die Teamreihenfolge auf und fügen Sie Ranglistenkarten hinzu, verschieben oder entfernen Sie sie.
NachfolgendBeobachten Sie Karten und Pinnwände oder hören Sie auf, sie anzusehen, richten Sie Ihre privaten Kartenerinnerungen ein, löschen oder listen Sie sie auf und rufen Sie Ihren Benachrichtigungseingang ab. Nur persönliche Anmeldeinformationen.
Agent läuftKündigen Sie an, dass ein Agent eine Karte bearbeitet, geben Sie während der Ausführung einen Herzschlag ab und zeichnen Sie auf, wie die Karte beendet wurde.
Suche und externe LinksDurchsuchen Sie zugängliche Inhalte und verwalten Sie idempotente Zuordnungen zu Datensätzen in anderen Systemen.
WebhooksRegistrieren und verwalten Sie Endpunkte, prüfen oder wiederholen Sie Lieferungen und empfangen Sie signierte Änderungsereignisse ohne Abfrage.

Wählen Sie einen API-Schlüsseltyp​

Kanera verfügt über zwei API-Schlüsseltypen. Sie authentifizieren sich auf die gleiche Weise, ihr Zugriffsmodell ist jedoch unterschiedlich.

SchlüsseltypErstellen Sie es ausVerwenden Sie es wannZugriffsmodell
Persönlicher API-SchlüsselProfileinstellungen -> API-SchlüsselSie verbinden Ihr eigenes Skript, Ihren eigenen CLI- oder MCP-Client und möchten, dass er auf allen Boards funktioniert, auf die Sie persönlich zugreifen können.Verhält sich wie Sie selbst, in allen Arbeitsbereichen und Foren, auf die Sie zugreifen können, und respektiert Ihre Rolle in jedem Forum. Es ist Lesen oder Schreiben Der Bereich begrenzt, was er innerhalb dieses Zugriffs tun darf. Es können keine Workspace-Admin-Aktionen ausgeführt werden.
Arbeitsbereichs- oder Board-API-SchlüsselArbeitsbereichseinstellungen -> API oder Board-Einstellungen -> APISie richten eine Teamintegration, ein Dienstkonto, einen Webhook-Produzenten, einen Synchronisierungsauftrag oder eine Automatisierung für einen Arbeitsbereich oder ein eigenständiges Board ein.Bezogen auf diesen Arbeitsbereich oder das eigenständige Board. Es ist Lesen, Schreiben, oder Admin Der Bereich steuert, was die Integration tun kann.

Verwenden Sie einen persönlichen Schlüssel für benutzereigene Workflows. Verwenden Sie einen bereichsbezogenen Workspace- oder Board-Schlüssel für gemeinsame oder Produktionsintegrationen, die im Besitz des Ziels sein, rotiert und geprüft werden sollten.

Plananforderungen​

Persönliche API-Schlüssel und interaktive KI-Agentenverbindungen funktionieren jeder Plan, einschließlich gehosteter Free. Sie agieren als aktueller Benutzer und erreichen somit genau die Foren, die der Benutzer öffnen kann, sowohl in Free- als auch in Pro-Organisationen.

Arbeitsbereichs- und Board-API-Schlüssel, unbeaufsichtigte OAuth-Dienstagenten, Webhooks und Chat-Ziele erforderlich Pro oder die 30-Tage Pro-Testversion. Sie werden im Namen der Organisation ausgeführt, ohne dass jemand angemeldet ist, daher sind sie nicht auf der gehosteten kostenlosen Version verfügbar, wo dies auf der Seite mit den Arbeitsbereichseinstellungen erläutert wird, anstatt das Erstellungsformular anzuzeigen. Durch eine Planlimitrückgabe blockierte Anfragen 403 mit dem Fehlercode PLAN_LIMIT, sodass eine Integration ein Planproblem von einem Berechtigungsproblem unterscheiden kann.

Anforderungen an die Erstellung von Arbeitsbereichs- oder Board-API-Schlüsseln, OAuth-Clients und Chat-Zielen Arbeitsbereichsadministrator Erlaubnis. Administratoren verwalten außerdem jeden Webhook-Endpunkt in einem Arbeitsbereich. Ein schreibfähiger API-Anmeldedaten- oder interaktiver OAuth-Agent kann Endpunkte registrieren, die auf seine eigene Verbindung beschränkt sind, wenn sein Benutzer ein Arbeitsbereichsmitglied ist. Für persönliche API-Schlüssel muss keine Workspace-Rolle erstellt werden.

Das Tor liegt nicht nur in der Schöpfung. Wenn eine gehostete Organisation zu Free wechselt, widerruft Kanera seine aktiven Arbeitsbereichs- und Board-API-Schlüssel, wodurch auch die darauf basierenden OAuth-Dienstagenten deaktiviert werden /api/v1 lehnt sie zum Zeitpunkt der Anfrage ab, sodass ein Schlüssel, der an anderer Stelle überlebt, immer noch nicht verwendet werden kann. Persönliche API-Schlüssel und interaktive Agentenverbindungen funktionieren weiterhin. Webhook-Endpunkte und Chat-Ziele werden durch dasselbe Downgrade angehalten. Durch ein Zurück-Upgrade auf Pro werden die Schlüssel und Endpunkte wiederhergestellt, die durch das Downgrade berührt wurden.

Tarifbegrenzungen​

Anfragen von API-Schlüsseln und KI-Agenten, sowohl über REST als auch MCP, sind pro Benutzer begrenzt, entsprechend den Plangrenzen der Organisation, die das Board besitzt, auf das zugegriffen wird:

Organisation des VorstandesPro SekundePro Minute
Kostenlos gehostet560
Hosted Pro oder Pro-Testversion20400
Selbst gehostet20400 (konfigurierbar)

Ein Benutzer, der sowohl einer Free- als auch einer Pro-Organisation angehört, erhält die Limits jeder Organisation auf ihren eigenen Boards. Anfragen, die das Limit überschreiten, werden nicht sofort abgelehnt: Bis zu 10 warten maximal 10 Sekunden in der Warteschlange und werden als Kapazitätsfreigabe bearbeitet. Es werden nur Anfragen außerhalb dieser Warteschlange empfangen 429 mit einem Retry-After Kopfzeile. Der CLI-, SDK- und MCP-Server wird zurückgesetzt und versucht es automatisch erneut.

Selbst gehostete Betreiber können die Limits mit ändern PUBLIC_API_KEY_RATE_LIMIT_PER_SECOND, PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE, PUBLIC_API_RATE_LIMIT_QUEUE_SIZE, und PUBLIC_API_RATE_LIMIT_QUEUE_MAX_WAIT_MS. Siehe Webhooks für das volle Downgrade-Verhalten.

Erstellen Sie einen persönlichen API-Schlüssel​

  1. Offen Profileinstellungen.
  2. Gehe zu API-Schlüssel Registerkarte.
  3. Erstellen Sie einen persönlichen API-Schlüssel.
  4. Wählen Sie Schreibgeschützt oder Lesen und schreiben.
  5. Fügen Sie optional ein privates Etikett hinzu, damit Sie erkennen können, wo der Schlüssel verwendet wird.
  6. Kopieren Sie das Geheimnis, wenn es angezeigt wird.

Persönliche Schlüssel sind immer an den Benutzer gebunden, der sie erstellt hat. Sie folgen dem tatsächlichen Board-Zugriff und der Rolle des Eigentümers, und die Aktivität wird als Eigentümer angezeigt. Es gibt keinen Admin-Bereich: Ein persönlicher Schlüssel kann niemals die Arbeitsbereichsverwaltung übernehmen, unabhängig von der Rolle seines Besitzers.

Schreibgeschützte persönliche Schlüssel​

Ein persönlicher Schlüssel ist lesen und schreiben es sei denn, Sie wählen etwas anderes, was Ihnen ein vorhandener Schlüssel oder ein unveränderter Erstellungsfluss bietet.

Wählen Sie Schreibgeschützt Wenn der Berechtigungsnachweis an einen Ort gelangt, an dem Sie ihn nicht beobachten können: ein KI-Agent, ein Berichtsauftrag, eine CI-Prüfung, ein Dashboard. Ein schreibgeschützter Schlüssel kann auflisten, lesen, suchen und melden, und Kanera weist jede Mutation damit zurück 403 und den Fehlercode FORBIDDEN. Da die Ablehnung an der API und nicht im Client erfolgt, kann ein sich schlecht benehmender oder durch Eingabeaufforderungen injizierter Agent Ihre Arbeit immer noch nicht ändern.

Der Geltungsbereich wird bei der Schlüsselerstellung festgelegt. Um ihn zu ändern, erstellen Sie einen neuen Schlüssel und widerrufen den alten.

Das Geheimnis wird einmal gezeigt. Speichern Sie es in Ihrem lokalen Secret Manager, in der MCP-Clientkonfiguration oder in Umgebungsvariablen.

Erstellen Sie einen Arbeitsbereichs- oder Board-API-Schlüssel​

  1. Öffnen Sie den Arbeitsbereich oder das eigenständige Board.
  2. Gehe zu Arbeitsbereichseinstellungen -> API oder Board-Einstellungen -> API.
  3. Erstellen Sie einen Arbeitsbereich-API-Schlüssel.
  4. Wählen Sie den kleinsten Bereich, der zur Integration passt.
  5. Kopieren Sie das Geheimnis, wenn es angezeigt wird.

Workspace-API-Einstellungen mit API-Schlüssel- und Webhook-Verwaltung.

Arbeitsbereichs-API-Schlüssel sind arbeitsbereichsbezogen. Ein Schlüssel kann nur auf Ressourcen in dem Arbeitsbereich zugreifen, in dem er erstellt wurde und auf den sein Ersteller weiterhin Zugriff hat.

Das Geheimnis wird einmal gezeigt. Speichern Sie es im Secret Manager oder in den Umgebungsvariablen Ihrer Integration.

Schlüsselbereiche der Workspace-API​

UmfangVerwenden Sie es wann
LesenDie Integration muss lediglich Kanera-Daten lesen, durchsuchen, melden oder exportieren.
SchreibenDie Integration muss Arbeiten wie Karten, Kommentare, Beschriftungen, Beauftragte, benutzerdefinierte Feldwerte, Notizen oder Anhänge erstellen oder aktualisieren.
AdminDie Integration erfordert öffentliche API-Vorgänge auf Administratorebene, sofern dies unterstützt wird. Gehen Sie sparsam damit um.

Lesen, Schreiben, und Admin gilt für Arbeitsplatz- und Board-Tasten. Persönliche Schlüssel wählen zwischen Lesen und Schreiben nur und erben darüber hinaus immer die Board-Level-Berechtigungen des Besitzers.

Verwenden Sie separate API-Schlüssel für separate Integrationen. Dies erleichtert das Widerrufen, Rotieren und Prüfen des Zugriffs. Bevorzugen Sie bei gemeinsam genutzten Systemen Arbeitsbereichsschlüssel, damit der Zugriff nicht an die persönlichen Werkzeuge einer Person gebunden ist.

Authentifizierung​

Senden Sie den API-Schlüssel als Bearer-Token:

curl "$KANERA_PUBLIC_API_URL/api/v1/workspaces" \
-H "Authorization: Bearer kanera_live_..."

Kanera-API-Schlüssel verwenden Präfixe für die Umgebung:

PräfixUmwelt
kanera_live_...Produktion
kanera_stg_...Inszenierung
kanera_dev_...Entwicklung
kanera_test_...Testen

Persönliche Schlüssel tragen a u Marker nach dem Herstellerpräfix, also kanera_u_live_... ist ein persönlicher Schlüssel und kanera_live_... ist ein Arbeitsplatz- oder Board-Schlüssel. Beide authentifizieren sich auf die gleiche Weise.

Fehlende oder ungültige Schlüssel werden zurückgegeben 401. Gültige Schlüssel ohne Berechtigung für eine Ressource oder einen Vorgang werden zurückgegeben 403 – einschließlich eines Schreibversuchs mit einem Schlüssel mit Lesebereich.

OAuth für KI-Agenten​

Kanera unterstützt OAuth 2.0, sodass ein kompatibler KI-Agent über eine Browser-Zustimmung oder eine Dienstverbindung eine Verbindung zu Kanera MCP herstellen kann, anstatt einen API-Schlüssel zu speichern.

Eine OAuth-Verbindung ist für MCP; Es handelt sich nicht um eine allgemeine öffentliche API-Anmeldeinformation. Verwenden Sie einen persönlichen, Workspace- oder Board-API-Schlüssel, wenn Ihre eigene Integration aufrufen muss /api/v1 direkt.

Es gibt drei OAuth-Pfade:

  • Interaktive Agenten Verwenden Sie den Autorisierungscode-Fluss mit PKCE. Eine Person genehmigt die Verbindung einmal im Browser und der Agent fungiert als dieser Benutzer. Auf diese Weise stellen kompatible MCP-Clients wie Claude, ChatGPT, Copilot und Codex eine Verbindung ohne API-Schlüssel her.
  • Geräte-Clients Verwenden Sie die Geräteautorisierungserteilung (urn:ietf:params:oauth:grant-type:device_code). Der Client zeigt einen Kurzcode an, eine Person genehmigt ihn in einem Browser auf einem beliebigen Gerät und der Client fragt nach Tokens. Verwenden Sie dies für eine CLI oder einen Headless-Client, der keine Browserumleitung empfangen kann. Siehe die Geräteautorisierungsreferenz.
  • Unbeaufsichtigte Agenten Benutze die client_credentials gewähren. Sie erstellen eine Client-ID und ein Geheimnis in Arbeitsbereichseinstellungen -> API und tauschen Sie sie ohne Browserschritt gegen kurzlebige Token ein. Verwenden Sie diese für CI-, Cron- oder serverseitige Agenten.

Siehe Verbinden Sie einen KI-Agenten für Setup, Bereiche und Verbindungsverwaltung. Autoren benutzerdefinierter OAuth-Clients finden die Protokolldetails im Technische Referenz zu MCP.

Basis-URL und Versionierung​

REST-Endpunkte leben darunter /api/v1 auf dem öffentlichen API-Dienst.

Zum Beispiel:

https://api.kanera.app/api/v1/workspaces

Operative Hilfspfade wie z /docs, /swagger, /openapi.json, signierte Medien-URLs und die Erkennung von Webhook-Ereignissen können außerhalb von liegen /api/v1 Präfix. Behandeln Sie signierte Medien-URLs, die von der API zurückgegeben werden, als undurchsichtige URLs und verwenden Sie sie wie vorgesehen.

Erste Anfragen​

Überprüfen Sie, für wen der Ausweis gilt. GET /api/v1/session Gibt den Benutzer, die Organisation, die Art der Anmeldeinformationen und zurück scope (read bedeutet, dass jede Änderung abgelehnt wird), plus die des Benutzers timeZone und today, das aktuelle Datum in dieser Zone, sodass ein Client „heute“ oder „morgen“ festlegen kann, so wie Kanera Fälligkeitstermine stempelt:

curl "$KANERA_PUBLIC_API_URL/api/v1/session" \
-H "Authorization: Bearer $KANERA_API_KEY"

Listen Sie die Arbeitsbereiche auf, auf die der API-Schlüssel zugreifen kann:

curl "$KANERA_PUBLIC_API_URL/api/v1/workspaces" \
-H "Authorization: Bearer $KANERA_API_KEY"

Listen Sie dann Boards in einem Arbeitsbereich auf:

curl "$KANERA_PUBLIC_API_URL/api/v1/workspaces/$WORKSPACE_ID/boards" \
-H "Authorization: Bearer $KANERA_API_KEY"

Öffnen Sie ein Board, um das Board, Arbeitsbereichslisten, Board-Trennzeichen, sichtbare Karten, Mitglieder, Beschriftungen und benutzerdefinierte Felder abzurufen, die zum Rendern oder Synchronisieren von Arbeit erforderlich sind:

curl "$KANERA_PUBLIC_API_URL/api/v1/boards/$BOARD_ID/open" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY"

Erstellen Sie eine Karte:

curl "$KANERA_PUBLIC_API_URL/api/v1/boards/$BOARD_ID/lists/$LIST_ID/cards" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Follow up with Acme"}'

Ein Erstellen kann ebenfalls festgelegt werden labelIds, assigneeIds, dueDateLocalDate (YYYY-MM-DD), und dueDateSlot im selben Schreibvorgang, so dass die Karte vollständig beschrieben ankommt und ihre Beschriftungsautomatisierungen einmal ausgeführt werden.

Erstellen Sie mehrere Karten gleichzeitig, bis zu 50 pro Anfrage auf einem Board. Jede Karte benennt ihre eigene Liste und landet in der Reihenfolge der Anforderungen unten:

curl "$KANERA_PUBLIC_API_URL/api/v1/boards/$BOARD_ID/cards/bulk/create" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d "{\"cards\":[{\"listId\":\"$LIST_ID\",\"title\":\"Draft the brief\",\"labelIds\":[\"$LABEL_ID\"]},{\"listId\":\"$LIST_ID\",\"title\":\"Review with legal\",\"assigneeIds\":[\"$USER_ID\"],\"dueDateLocalDate\":\"2026-11-02\"}]}"

Jede Karte wird überprüft, bevor eine erstellt wird, sodass eine unbekannte Liste, ein unbekanntes Label oder ein unbekannter Beauftragter die gesamte Anfrage mit a ablehnt 400 das den Eintrag benennt, z cards[1]: one or more label ids are invalid. Jede Karte löst dann dieselben Automatisierungen, Benachrichtigungen und Webhooks aus wie eine einzelne Erstellung.

Kartenantworten beinhalten das Unveränderliche workspaceId, undurchsichtig organisationKey, positiv number, aktuell für Menschen lesbar key wie z.B PROJ-123, und sauberen Browser url. Ein Arbeitsbereichspräfix kann sich ändern, die Kartennummer jedoch nicht.

Lösen Sie einen aktuellen oder historischen Kartenschlüssel auf, bevor Sie einen id-basierten Mutationsendpunkt aufrufen:

curl "$KANERA_PUBLIC_API_URL/api/v1/organisations/$ORGANISATION_KEY/cards/by-key/$CARD_KEY" \
-H "Authorization: Bearer $KANERA_API_KEY"

Die Auflösung berücksichtigt nicht die Groß-/Kleinschreibung und gibt die aktuelle ID, den Arbeitsbereich, das Board, die Liste, die Nummer, den Schlüssel und die Browser-URL der Karte zurück. Der Organisationsschlüssel ist der undurchsichtige Wert, der von Kanera zurückgegeben wird, kein Organisationsname oder Slug. Fehlende und unzugängliche Karten werden zurückgegeben 404.

Aktualisieren Sie eine Karte:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID" \
-X PATCH \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"Imported from CRM"}'

Kommentar hinzufügen:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID/comments" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body":"Customer confirmed the rollout window."}'

Ersetzen Sie die Beschriftungen oder Beauftragten der Karte durch einen genauen Satz:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID/labels" \
-X PUT \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"labelIds\":[\"$LABEL_ID\"]}"

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID/assignees" \
-X PUT \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"userIds\":[\"$USER_ID\"]}"

Diese beiden PUT Operationen ersetzen die gesamte Menge. Senden Sie ein leeres Array, um es zu löschen. Verwenden Sie die dokumentierten Massen-Hinzufügen/Entfernen-Vorgänge, wenn Sie Patch-Semantik für ausgewählte Karten benötigen.

Vervollständigen Sie eine Karte:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID/completion" \
-X PATCH \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"completed":true}'

Verwalten Sie Board-Trenner​

Ein Trennzeichen ist ein tafeleigenes, betiteltes und optional farbiges Element in der gemischten Karten- und Trennzeichen-Bestellspur einer Workflow-Liste. Erstellen Sie einen an einem genau typisierten Anker:

curl "$KANERA_PUBLIC_API_URL/api/v1/boards/$BOARD_ID/lists/$LIST_ID/separators" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"title\":\"This week\",\"color\":\"blue\",\"beforeItem\":{\"type\":\"card\",\"id\":\"$CARD_ID\"}}"

Aktualisieren Sie den Titel oder die Farbe mit PATCH /api/v1/separators/{id}, bewege es mit POST /api/v1/separators/{id}/move, und löschen Sie es mit DELETE /api/v1/separators/{id}. Verschieben Sie Körper, benennen Sie das Ziel listId und liefern Sie genau eine beforeItem oder afterItem; Der Artikel kann ein sein { "type": "card", "id": "..." } oder { "type": "separator", "id": "..." } Referenz. A null afterItem bedeutet die Spitze und a null beforeItem bedeutet der Boden. Durch das Löschen eines Trennzeichens bleiben die Karten unverändert.

Nächste Bestellung verwalten​

Die API stellt die gleichen Ranglisten-Warteschlangen bereit, die von „Home“, „Meine Karten“ und „Teamkarten“ verwendet werden:

EndpunktBenutzen
GET /api/v1/work/priority-targetsListen Sie die Benutzer auf, deren Warteschlangen die Anmeldeinformationen lesen dürfen.
GET /api/v1/work/prioritiesLesen Sie jede zulässige Warteschlange in einer Antwort.
GET /api/v1/work/priorities/{userId}Lesen Sie eine Warteschlange in der Rangfolge.
POST /api/v1/work/priorities/{userId}/cardsFügen Sie eine zugewiesene aktive Karte an einer verankerten Position hinzu.
POST /api/v1/card-priorities/{id}/moveVerschieben Sie einen Warteschlangeneintrag vor oder nach einen anderen sichtbaren Eintrag.
DELETE /api/v1/card-priorities/{id}Entfernen Sie den Eintrag, ohne die Karte zu wechseln.

Persönliche Anmeldeinformationen können immer ihre eigene Warteschlange lesen. Das Lesen der Warteschlange einer anderen Person erfordert wirksame Administratorrechte in einem gemeinsam genutzten Arbeitsbereich, und für Schreibvorgänge sind außerdem schreibberechtigte Anmeldeinformationen und Berechtigungen für die Zielkarte erforderlich. Verwenden Sie die von der Warteschlange zurückgegebenen Eintrags-IDs als Verschiebungsanker. Ränge sind Präsentationswerte, keine Mutations-IDs.

Dateien anhängen und lesen​

POST /api/v1/cards/{id}/attachments erfordert einen mehrteiligen Upload. Wenn sich die Datei an einem Ort befindet, von dem der Anrufer nicht direkt streamen kann, z. B. in der Sandbox eines KI-Agenten, erstellen Sie stattdessen einen einmaligen Upload-Link und PUT die Rohbytes dazu:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/MKT-42/attachments/upload-links" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileName":"test-run.log"}'

# The response includes uploadUrl; no Authorization header is needed for the upload itself.
curl -fsS -T ./test-run.log "$UPLOAD_URL"
  • Der Link funktioniert einmal, läuft nach 15 Minuten ab und funktioniert nicht mehr, wenn der Schlüssel, der ihn erstellt hat, widerrufen wird.
  • Kanera speichert die Datei unter dem Namen und Typ, der beim Erstellen des Links angegeben wurde, und leitet den Typ aus der Erweiterung ab, wenn Sie diese weglassen mimeType. Protokolldateien (.log, .out, .jsonl, und ähnliches) werden als Klartext gespeichert.
  • Zum Erstellen eines Links sind schreibberechtigte Anmeldeinformationen und Editorzugriff auf die Karte erforderlich. Die Speichergrenzen werden sowohl beim Erstellen des Links als auch beim Eintreffen der Datei überprüft.
  • Die Upload-Antwort ist der neue Anhang, und jeder, der die Karte betrachtet, sieht sie sofort.

Lesen Sie die Bytes eines Anhangs mit GET /api/v1/cards/{id}/attachments/{attachmentId}/content. Es unterstützt Range Anfragen und ?variant=cover (bis zu 1200px) oder ?variant=thumbnail (400px) gibt die JPEG-Kopien zurück, die Kanera von PNG-, JPEG-, GIF- und WebP-Bildern erstellt.

Auf dem Scratchpad erfassen​

POST /api/v1/scratchpad/capture Hängt eine offene Aufgabe an die private Nachricht des Anrufers an Notizblock, auf der ersten Seite betitelt pageTitle (Standard Inbox) und erstellt die Seite, wenn sie fehlt:

curl "$KANERA_PUBLIC_API_URL/api/v1/scratchpad/capture" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Renew the venue insurance"}'

GET /api/v1/scratchpad/notes listet jede Seite mit ihrem Inhalt auf und PATCH /api/v1/scratchpad/notes/{id} ersetzt eine Seite. Übergeben Sie die updatedAt du liest als baseUpdatedAt zu empfangen 409 SCRATCHPAD_STALE anstatt seitdem vorgenommene Änderungen zu überschreiben. Das Scratchpad gehört einer Person, sodass Arbeitsbereich-API-Schlüssel erhalten werden 403; Verwenden Sie einen persönlichen Schlüssel oder eine OAuth-Verbindung.

Sehen Sie sich Karten an und legen Sie Erinnerungen fest​

Die Nachfolgend Endpunkte verwalten die eigenen Abonnements des Anrufers, sodass Arbeitsbereich-API-Schlüssel empfangen werden 403; Verwenden Sie einen persönlichen Schlüssel oder eine OAuth-Verbindung. Für die Änderung ist ein schreibfähiger Ausweis, aber nur Lesezugriff auf die Karte erforderlich.

EndpunktBenutzen
GET /api/v1/cards/{id}/followOb Sie sich die Karte und Ihre Erinnerung darauf ansehen.
PUT / DELETE /api/v1/cards/{id}/watchBeobachten Sie eine Karte oder hören Sie auf, sie anzusehen. Gibt den gleichen Status zurück wie follow.
PUT / DELETE /api/v1/boards/{id}/watchBeobachten Sie eine Tafel oder hören Sie auf, sie anzusehen.
PUT /api/v1/cards/{id}/reminderLegen Sie Ihre Erinnerung fest: {"remindAt": "2026-10-16T15:00:00+01:00"}.
DELETE /api/v1/cards/{id}/reminderLöschen Sie Ihre Erinnerung.
GET /api/v1/remindersIhre ausstehenden Erinnerungen, die frühesten zuerst. ?status=all schließt diejenigen ein, die bereits ausgelöst wurden.
GET /api/v1/notificationsRufen Sie Ihren Benachrichtigungseingang mit einem Cursor ab. Siehe unten.

remindAt ist ein ISO-Zeitpunkt mit einem Offset, der in der Zukunft und höchstens 56 Tage (acht Wochen) im Voraus liegt. Sie halten eine Erinnerung pro Karte, daher wird sie durch erneutes Setzen ersetzt und wieder aktiviert. Ihre anderen offenen Sitzungen werden sofort aktualisiert. In der Aktivität der Karte werden weder „Zuschauen“ noch „Erinnerungen“ angezeigt. Siehe Erinnerungen.

GET /api/v1/notifications ist für ein Skript oder einen Agenten gedacht, der keine Webhooks empfangen kann, beispielsweise eines, das auf einem Laptop ausgeführt wird. Es werden die gleichen Zeilen wie in Ihrer Benachrichtigungsleiste zurückgegeben (Antworten, Erwähnungen, Zuweisungen und Änderungen an Karten, die Sie ansehen oder denen Sie zugewiesen wurden), die ältesten zuerst. Nennen Sie es einmal ohne since für die neuesten Zeilen, dann übergeben Sie jede Antwort cursor zurück als since, während wiederholen hasMore ist true, um nur das zu bekommen, was neu ist. Jede Zeile trägt eine Einzeile summary, die card Schlüssel und URL, die actor, und a commentExcerpt für Kommentare. Zeilen erscheinen einige Sekunden nach dem Ereignis. Eine AI-Agent-Verbindung sieht keine Benachrichtigungen, die durch ihre eigenen Schreibvorgänge verursacht wurden, es sei denn, Sie fügen sie hinzu includeSelf=true, und bei der Abfrage wird nie etwas als gelesen markiert.

Verfolgen Sie die Arbeit eines Agenten während des Flugs​

Wenn es sich bei dem Anrufer um einen KI-Agenten und nicht um einen Synchronisierungsauftrag handelt, kann er die von ihm ausgeführte Arbeit auf einer Karte ankündigen. Kanera zeigt dann einen Live-Chip auf dem Kartenplättchen an, listet den Lauf im Kartendetail auf und zeichnet Kartenaktivitätszeilen für den Anfang und das Ende auf – so kann eine Person sehen, dass etwas passiert und wer es tut, ohne auf das Ergebnis warten zu müssen.

EndpunktBenutzen
POST /api/v1/cards/{cardId}/agent-runsStarten Sie einen Lauf. Körper braucht title (erforderlich), summary, und externalUrl.
GET /api/v1/cards/{cardId}/agent-runsListen Sie die Läufe einer Karte auf. Live nur standardmäßig; passieren includeEnded=true für die Geschichte, das Neueste zuerst.
GET /api/v1/agent-runs/{id}Lesen Sie einen Lauf.
PATCH /api/v1/agent-runs/{id}Aktualisieren, Heartbeat oder Beenden eines Laufs. Jedes Feld ist also optional {} ist ein bloßer Herzschlag.

Starten Sie den Lauf und behalten Sie ihn bei id aus der Antwort:

curl "$KANERA_PUBLIC_API_URL/api/v1/cards/$CARD_ID/agent-runs" \
-X POST \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Implementing OAuth refresh","externalUrl":"https://github.com/acme/api/pull/482"}'

Melden Sie dann den Fortschritt und schließen Sie ihn ab:

curl "$KANERA_PUBLIC_API_URL/api/v1/agent-runs/$RUN_ID" \
-X PATCH \
-H "Authorization: Bearer $KANERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"succeeded","summary":"Merged in PR 482; realtime suite green."}'

Status sind running, blocked, succeeded, failed, cancelled, und stalled:

  • running und blocked sind die beiden Live-Zustände. Benutzen blocked während der Agent auf eine Person wartet, beispielsweise auf eine Frage oder eine Genehmigung; Der Chip der Karte wird gelb.
  • succeeded, failed, und cancelled sind terminal. Ein Endstatus beendet den Lauf und macht ihn unveränderlich, also auch später PATCH kehrt zurück 409 mit message: agent run has already ended.
  • stalled wird von Kanera und nicht von Ihnen festgelegt, wenn ein Live-Lauf für fünfzehn Minuten aufhört zu pulsieren, so dass ein abgestürzter Agent nicht auf unbestimmte Zeit eine Karte mit dem Status „funktioniert“ hinterlassen kann. Eine angehaltene Ausführung wird nicht beendet: Der Agent kann sie dennoch mit einem Terminalstatus schließen oder festlegen running fortfahren.

Jeder PATCH Aktualisiert den Herzschlag, einschließlich eines, der nichts ändert, also senden Sie bei einem langen Job ein Keep-Alive innerhalb des 15-Minuten-Fensters. Das Starten oder Aktualisieren eines Laufs erfordert ein Board Herausgeber Zugang und einen schreibfähigen Berechtigungsnachweis, genau wie jeder andere Kartenschreiber. Läufe geben auch das aus agentRun:started und agentRun:updated Webhook-Ereignisse.

Ein Agent, der über verbunden ist OAuth wird als der Agent aufgezeichnet, der für seinen Benutzer handelt: Seine Ausführungs-, Kommentar- und Aktivitätszeilen tragen den Namen des Agenten, und die Person, für die er handelt, wird über seine Tätigkeit benachrichtigt. Ein persönlicher API-Schlüssel, der von Ihrem eigenen Skript verwendet wird, fungiert weiterhin als dessen Besitzer.

Registrieren Sie einen Webhook von einer Integration​

Workspace-Administratoren können jeden generischen Webhook-Endpunkt verwalten. Ein nicht schreibfähiger API-Anmeldedaten- oder interaktiver OAuth-Agent, der kein Administrator ist, kann einen solchen auch erstellen, wenn sein Benutzer dem Arbeitsbereich angehört; Kanera markiert diesen Endpunkt scope: "connection", und nur die gleichen Verbindungs- und Arbeitsbereichsadministratoren können es auflisten oder verwalten. Dadurch kann ein Agent Board-Ereignisse abonnieren, ohne Workspace-Administratorrechte zu erhalten.

Benutzen POST /api/v1/workspaces/{workspaceId}/webhooks um den Endpunkt zu erstellen und das Einmalige zu speichern secret aus der Antwort. Dieselbe Ressource stellt Listen-, Aktualisierungs-, Lösch-, Secret-Rotations-, Zustellungsverlaufs- und Wiederholungsvorgänge bei fehlgeschlagener Zustellung bereit. Siehe Webhooks für die Endpunktzuordnung und Signaturregeln.

Ein zuverlässiger Integrationsfluss​

  1. Rufen Sie an GET /api/v1/workspaces oder GET /api/v1/boards um nur Ressourcen zu entdecken, auf die die Anmeldeinformationen zugreifen können.
  2. Benutzen POST /api/v1/boards/{id}/open wenn Sie das Board sowie seine Listen, Karten, Mitglieder, Beschriftungen und benutzerdefinierten Felder in einer Antwort benötigen.
  3. Speichern Sie zurückgegebene IDs für API-Mutationen. Namen können bearbeitet werden; Ein für Menschen lesbarer Kartenschlüssel kann in die aktuelle Karten-ID umgewandelt werden, wenn eine Person oder ein externer Datensatz einen bereitstellt.
  4. Validieren Sie Schreibkörper anhand des Operationsschemas in Scalar oder OpenAPI.
  5. Behandeln 401 als ungültige Authentifizierung, 403 B. unzureichender Zugang oder Plantor, 404 als fehlende oder unzugängliche Daten, 409 als Staatskonflikt und 429 als Signal zum Rückzug.
  6. Notieren Sie die Antwort x-request-id in Integrationsprotokollen ohne Protokollierung von Anmeldeinformationen oder vertraulichen Inhalten.

Kartenbeziehungen​

Beziehungen verbinden Karten im selben Arbeitsbereich, auch über alle Foren hinweg. direction liest von der Karte im Pfad: blocks bedeutet, dass diese Karte das Ziel blockiert, blocked_by bedeutet, dass das Ziel diese Karte blockiert, und relates_to hat keine erforderliche Reihenfolge.

Methode und WegZweck
GET /api/v1/cards/{cardId}/relationsLesen Sie sichtbare Zusammenhänge und hiddenBlockerCount.
POST /api/v1/cards/{cardId}/relationsHinzufügen { "targetCardId": "<UUID>", "direction": "blocked_by" }.
DELETE /api/v1/cards/{cardId}/relations/{relationId}Entfernen Sie eine Beziehung anhand ihrer ID.

Kartendetails umfassen relations und hiddenBlockerCount; Kartenzusammenfassungen enthüllen blockedByCount. Eine aktive Karte wird gesperrt, solange mindestens eine Voraussetzung unvollständig und nicht archiviert ist. Benutzen filters: { blockedOnly: true } mit POST /api/v1/work/cards/query nur gesperrte offene Karten zurückzugeben, oder atRiskOnly: true für offene Karten, deren sichtbarer Blocker überfällig ist oder nach ihnen fällig ist. POST /api/v1/work/portfolio/query kehrt zurück blocked und atRisk zählt pro Board und in seinen Gesamtsummen.

Das Hinzufügen einer bestehenden Beziehung ist idempotent. Selbstverknüpfungen, Cross-Workspace-Verknüpfungen, Abhängigkeitszyklen und eine abgeschlossene Karte als neuer Blocker werden abgelehnt. Für Schreibvorgänge ist Bearbeitungszugriff auf die Pfadkarte und die gesperrte Karte sowie Lesezugriff auf die andere Karte erforderlich. Unzugängliche Beziehungen werden bei Lesevorgängen weggelassen; Ihre aktiven Blocker tragen nur dazu bei hiddenBlockerCount.

Durch das Löschen des letzten aktiven Blockers können Automatisierungen ausgeführt und Übergabebenachrichtigungen gesendet werden. Durch erneutes Öffnen oder Wiederherstellen eines Blockers kann die Karte erneut gesperrt werden. Die Vervollständigung über die API bleibt ohne die interaktive Warnung der Web-App verfügbar. Siehe Kartenbeziehungen und Blockierung für Lebenszyklusverhalten.

Abhängigkeitsdiagramme​

POST /api/v1/cards/dependency-graph liest das Diagramm hinter der Ansicht „Abhängigkeiten“. Übergeben Sie genau einen Bereich:

{ "boardId": "<board UUID>" }

Alternativ passieren { "workspaceId": "<workspace UUID>" } oder { "cardIds": ["<card UUID>"] }. Ein Karten-ID-Bereich akzeptiert 1–2.000 UUIDs. Dieser POST ist eine Lektüre ohne Nebenwirkungen.

Die Antwort enthält kompakte Kartenzusammenfassungen, Kanten, Board-/Listen-/Beschriftungs-/Personen-Suchen, benutzerdefinierte Felder für die Kartenoberfläche usw truncated. Jede Karte fügt hinzu inScope und es ist kanonisch url. Jedes Board beinhaltet canEdit für die Abhängigkeitsbearbeitungsberechtigung des Aufrufers. A blocks Kante läuft ab sourceCardId (die Voraussetzung) zu targetCardId (der Abhängige); relates_to ist symmetrisch.

Der Rundgang beginnt bei offenen, nicht archivierten Scope-Karten mit Beziehungen, folgt blockierenden Kanten in beide Richtungen über lesbare Tafeln und endet bei fertigen Karten. Verwandte Nachbarn werden jeweils einen Hopfen aus den Samen entfernt. Nicht zugängliche Karten werden weggelassen; blockedByCount zählt immer noch ihre aktiven Blocker. Die Grafik stoppt bei 400 Karten und Sets truncated: true; Schränken Sie den Anwendungsbereich ein, wenn eine vollständige Kette benötigt wird. Workspace-Anmeldeinformationen bleiben in ihrem Workspace.

Siehe Ansicht „Abhängigkeiten“. dafür, wie die App diese Daten darstellt und bearbeitet. MCP gibt anstelle dieser kompakten Zusammenfassungen eine erweiterte agentenorientierte Projektion zurück.

Board- und Arbeitsbereichsmodell​

Die API von Kanera repräsentiert beide benutzerorientierten Modelle:

  • Ein Standardarbeitsbereich enthält mehrere Boards.
  • Ein eigenständiges Board wird mit zurückgegeben kind: "board" durch Endpunkte, die seinen Backing-Container offenlegen, aber Benutzer erleben es als ein unabhängiges Board.
  • Tafeln enthalten Karten.
  • Listen, Beschriftungen und benutzerdefinierte Felder gehören nur zu einem eigenständigen Board oder werden von allen Boards in einem Standardarbeitsbereich gemeinsam genutzt.
  • Zuweisungsendpunkte können im Arbeitsbereich übergreifende Karten zurückgeben.
  • Private Boards sind nur dort sichtbar, wo der API-Schlüssel Zugriff hat.
  • Mit einem persönlichen Schlüssel können Boards in allen Arbeitsbereichen angezeigt werden, auf die der Besitzer Zugriff hat.
  • Ein Arbeitsbereichsschlüssel kann nur Boards innerhalb seines einen Arbeitsbereichs sehen.

Dies ist beim Aufbau von Integrationen wichtig. Verwenden Sie ein eigenständiges Board, wenn dessen Schema unabhängig bleiben soll. In einem Arbeitsbereich können Sie vorhandene Listen und Felder wiederverwenden, damit Berichte, Zuweisungsabfragen und Aggregation benutzerdefinierter Felder konsistent bleiben. Die Global Work-Benutzeroberfläche kann jedes Board umfassen, auf das die angemeldete Person zugreifen kann, während ein Arbeitsbereich-API-Schlüssel auf seinen einen Arbeitsbereich beschränkt bleibt.

Paginierung und Fehler​

Listen Sie Endpunkte auf, die die Verwendung von Paginierung unterstützen:

ParameterBedeutung
limitAnzahl der zurückzugebenden Datensätze.
beforeFilter im Cursor-Stil für Datensätze vor einem Zeitstempel.

Fehler geben JSON zurück mit:

FeldBedeutung
codeStabiler Fehlercode.
messageFür Menschen lesbare Fehlermeldung.
issuesOptionale Validierungsdetails.

Verwenden Sie den HTTP-Statuscode und den Fehlercode zusammen, wenn Sie entscheiden, ob Sie es erneut versuchen, die Eingabe korrigieren oder einen Administrator bitten möchten, den Zugriff zu aktualisieren.

Webhooks​

Mit Webhooks können externe Systeme reagieren, wenn sich die Arbeit in Kanera ändert. Siehe Webhooks für die Einrichtung, die Zustellungsüberprüfung und die vollständige Liste der unterstützten Webhook-Ereignistypen.

Wenn das Ziel darin besteht, Kartenaktivitäten in einem Team-Chat-Kanal zu veröffentlichen, müssen Sie nichts erstellen: verwenden Chat-Ziele für Slack, Discord, Telegram oder Zulip.

Mithilfe externer Links können Integrationen dauerhafte Zuordnungen zwischen Kanera-Datensätzen und Datensätzen in einem anderen System speichern.

Verwenden Sie externe Links, wenn Synchronisierungsjobs idempotent sein müssen. Beispielsweise kann sich eine Trello-Synchronisierung merken, welche Kanera-Karte welcher Trello-Karte zugeordnet ist, ohne versteckte Integrationsmetadaten in die Kartenbeschreibung einzufügen.

Sicherheitsempfehlungen​

  • Verwenden Sie einen API-Schlüssel pro Integration.
  • Verwenden Sie den niedrigsten Bereich, der funktioniert.
  • Speichern Sie Schlüssel und Webhook-Geheimnisse in einem Secret Manager.
  • Tauschen Sie Schlüssel und Webhook-Geheimnisse aus, wenn Personen das Unternehmen verlassen oder sich Systeme ändern.
  • Fügen Sie keine API-Schlüssel in Scratchpad, Notizen, Karten, Kommentare, Quellcodeverwaltung, Protokolle oder Screenshots ein.
  • Überprüfen Sie Webhook-Signaturen, bevor Sie Nutzlasten verarbeiten.
  • Machen Sie Webhook-Handler idempotent, da Zustellungen möglicherweise wiederholt werden.
  • Protokollieren Sie genügend Anfrage- und Ereignis-IDs, um das Synchronisierungsverhalten zu debuggen, ohne Geheimnisse zu protokollieren.