Dokumentation

Karten: CLI-Befehle

Kartentypen finden, Karte erstellen, Parameter und Live-Daten setzen, Vorschau ansehen und Daten über signierte Webhooks aus Fremdsystemen aktualisieren.

Jeder Befehl läuft wie in der CLI-Referenz beschrieben: globale Flags, JSON-Ausgabe, Beendigungscodes, Revisionen und Wiederholungen.

Karten

Entdecken Sie Kartentypen, erstellen Sie eine Instanz und aktualisieren Sie deren Live-Daten. Eine Playlist platziert die zurückgegebene Karten-ID.

screenrig cards list --category ops
screenrig cards show gauge
screenrig card create --type gauge --file gauge-params.json
screenrig card list
screenrig card show crd_01EXAMPLEGAUGE000000000
screenrig card params crd_01EXAMPLEGAUGE000000000 --file gauge-params.json
screenrig card data get crd_01EXAMPLEGAUGE000000000
screenrig card data put crd_01EXAMPLEGAUGE000000000 --file gauge-data.json --ttl 30m --expect-rev 1
screenrig card preview crd_01EXAMPLEGAUGE000000000 --output gauge.png
screenrig card delete crd_01EXAMPLEGAUGE000000000
ParameterTypErforderlichStandardNotizen
cards list --tag TAGstringneinkeineEntspricht einem Katalog-Tag.
cards list --category CATEGORYstringneinkeineEntspricht einer Katalogkategorie. Mit --tag muss eine Karte beide erfüllen.
cards show <id>stringjakeineDie Katalog-Karten-ID aus cards list, etwa gauge.
card create --type IDstringjakeineDie Katalog-Karten-ID aus cards list.
card create --major Nintegerneinaktuelle HauptversionLegt eine Hauptversion des Katalogs fest.
card create --file FILEPfadjakeineDie statischen Parameter als JSON-Objekt von höchstens 1 MiB oder - für stdin.
<id>stringjakeineDie crd_ Karten-ID, die card show, card params, card delete und card data annehmen.
card params --file FILEPfadjakeineDie neuen statischen Parameter, gelesen wie bei card create. Sie ersetzen die alten sofort.
card data put --file FILEPfadjakeineDas Datendokument als JSON-Objekt oder - für stdin. Es ersetzt das gesamte Dokument.
card data put --ttl DURATIONstringneinkeineLeert die Daten nach dieser Zeit, Offline-Bildschirme eingeschlossen: 30m, 12h oder 1d, von 1s bis 365d. Nicht mit --expires-at kombinierbar.
card data put --expires-at INSTANTstringneinkeineLeert die Daten zu diesem ISO-8601-Zeitstempel, der eine Zeitzone enthält. Ein Schreibvorgang ohne eine der beiden Optionen löscht den alten Ablauf.
card data put --expect-rev REVISIONstringneinkeineSchreibt nur, wenn die Daten noch auf dieser Revision sind, wie card data get sie zeigt. Ein veralteter Wert ergibt revision_conflict (Exit 6).
card preview <type|id>stringjakeineEine Katalog-Karten-ID oder eine crd_-Karten-ID, um diese Instanz mit ihren eigenen Parametern und Daten zu zeichnen.
card preview --output FILEPfadjakeineSchreibt das PNG hierhin. Übergeordnete Verzeichnisse werden erstellt.
card preview --params FILEPfadneinkeineStatische Eigenschaften als JSON-Objekt.
card preview --data FILEPfadneinkeineDas dynamische Dokument als JSON-Objekt.
card preview --feed FILEPfadneinkeineDas Host-Feed-Dokument als JSON-Objekt. Ein Feed, den die Karte braucht und den Sie weglassen, wird gemeldet.
card preview --width PX / --height PXintegernein1920 / 1080Bildgröße, 1 bis 8192.
card preview --layout LAYOUTstringneinfullfull, free, center, wide, header, footer, corner, chip oder strip: das zu zeichnende Layout.
card preview --anchor ANCHORstringneinkeineDie Ecke eines corner- oder chip-Layouts oder die Kante eines strip.
card preview --now ISOstringneindie aktuelle ZeitFriert die Uhr zu diesem ISO-8601-Zeitpunkt ein.
card preview --timezone ZONEstringneinder dieses RechnersZeichnet in dieser IANA-Zeitzone, etwa America/Vancouver.

cards show gibt params_schema und data_schema der Karte aus, ihre statischen und dynamischen Eigenschaften, Stufe, Layouts und Feed sowie ein Beispiel zum Kopieren in eine Playlist-Seite. card create liefert die crd_-ID der Instanz, und eine identische Wiederholung nach einer verlorenen Antwort verwendet den gespeicherten Idempotenzschlüssel.

card data put ersetzt das Dokument sofort, ohne die Playlist neu zu veröffentlichen. Die eigene Validierung der Karte lehnt ein Dokument ab, das sie nicht anzeigen kann (card_data_invalid), und ein Ablauf leert die Daten auf jedem Bildschirm, wenn sie nichts erneuert. card delete löscht die Instanz und ihre Daten und antwortet mit resource_conflict (Exit 5), solange eine Playlist sie platziert.

card preview zeichnet die Karte in einem lokalen Chromium oder Chrome und schreibt ein PNG; es wird nichts veröffentlicht. Setzen Sie SCREENRIG_BROWSER auf den Pfad des Browsers, wenn keiner der üblichen installiert ist. data.file ist der geschriebene Pfad, und data.unrendered listet auf, was die Vorschau nicht zeichnen konnte, etwa einen Host-Feed, den Sie nicht geliefert haben. Öffnen Sie das Bild, bevor Sie veröffentlichen. Eingebaute Karten beschreibt Layouts, Eigenschaften und Feeds jeder Karte.

Karten-Webhooks

Ein Karten-Webhook ist eine URL, die das Datendokument einer Karte schreibt, sodass ein externes System wie ein CMS, eine Verkaufsstelle oder ein Skript mit einem einzigen HTTP POST Daten an eine Karte sendet. kv webhook create, list, rotate-secret und delete akzeptieren --card CARD_ID anstelle von --app-id, nie beides; update und deliveries unten funktionieren nur für Karten. Eine Karte hat höchstens 20 Webhooks.

kv webhook create --card CARD_ID [--description TEXT] [--map FILE|-] [--key-template TEMPLATE] [--signing]
                  [--verify VENDOR [--verify-secret-file FILE|-] [--verify-header NAME] [--verify-encoding hex|base64]
                   [--verify-timestamp-header NAME] [--verify-tolerance SECONDS]] [--handshake VENDOR]
kv webhook list --card CARD_ID
kv webhook rotate-secret <webhook_id> --card CARD_ID [--signing]
kv webhook delete <webhook_id> --card CARD_ID

Beim Erstellen eines Karten-Webhooks ist kein Schlüssel nötig. --map FILE (oder - für stdin) ist das Mapping, --key-template schreibt Dokumente mit Schlüsseln, --signing schaltet die Signierung ein, und --verify und --handshake akzeptieren die eigenen Zustellungen eines Anbieters (Signaturen und Handshakes der Anbieter). Die Antwort enthält data.secret und, wenn der Webhook signiert, data.signing_secret, jeweils nur einmal angezeigt.

Der Absender authentifiziert sich wie bei einem Anwendungs-Webhook: Authorization: Bearer <secret> mit dem Geheimnis srkw_… oder HTTP Basic mit der Webhook-ID als Benutzername, sodass https://kvw_ID:srkw_…@api.screenrig.ai/… für einen Absender geeignet ist, der nur eine URL annimmt. Der Body, höchstens 1 MiB, ist JSON oder application/x-www-form-urlencoded; ein wiederholter Formularname wird zu einem Array. Ohne Mapping ist das gesendete Objekt das Datendokument der Karte.

Ein Mapping ist eine JSON-Vorlage, die das Dokument aus dem Body aufbaut. Ein String mit Platzhaltern wie {{body.alert.title}} oder {{body.items[0].name}} ist Text, und ein String, der genau ein Platzhalter ist, behält den Typ des Werts. Ein Pfad beginnt mit body oder query (die Abfrageparameter der URL), und ein Pfad, der nichts enthält, ist im Text leer und lässt einen einzelnen Wert weg. $each bildet ein Array ab, mit item und index im Gültigkeitsbereich, $group mit $by gruppiert in der Reihenfolge des ersten Auftretens, $number liest 1,234.50, $3.50, 3,50 € oder 12% (fügen Sie "$decimal": "," für ein Dezimalkomma hinzu), $bool liest true, yes, y, 1 und x, und $text mit $max kürzt Text. Die Vorlage wird beim Speichern geprüft: invalid_request nennt die fehlerhafte Stelle.

{
  "title": "{{body.alert.title}}",
  "body": "{{body.alert.message}}",
  "items": { "$each": "{{body.items}}", "$limit": 20, "$template": { "text": "{{item.name}}" } }
}
curl https://api.screenrig.ai/api/cards/crd_01EXAMPLEBOARD0000000000/kv-webhooks/kvw_01EXAMPLEWEBHOOK00000/write \
  -H "Authorization: Bearer $CARD_WEBHOOK_SECRET" \
  -H "Content-Type: application/json" \
  --data '{"alert":{"title":"Fire drill","message":"Leave by the east door"},"items":[{"name":"Floor 2"}]}'

--key-template TEMPLATE schreibt Dokumente mit Schlüsseln anstelle des eigenen Dokuments der Karte. Die Vorlage ist ein Kartendaten-Schlüssel mit {screen.field.NAME}-Platzhaltern, etwa room-{screen.field.room}, und das gemappte Objekt (oder der gesendete Body ohne Mapping) enthält nur ein documents-Array aus {fields, document}-Objekten: Jedes fields-Objekt füllt die Vorlage, und jedes document wird unter dem Schlüssel geschrieben, den es ergibt. Ein Seitenelement, das dieselbe Vorlage als data angibt, zeigt jedem Bildschirm das Dokument seiner eigenen Felder. Jedes Dokument wird geprüft, bevor eines geschrieben wird, und ein wiederholter Schlüssel wird abgelehnt. Ein Speicherfehler kann einen Teil des Stapels geschrieben zurücklassen: Senden Sie denselben Body mit demselben Idempotency-Key erneut. Schlüssel, die eine Zustellung auslässt, behalten ihre Daten, und ein Webhook setzt kein Ablaufdatum. Dokumente mit Schlüsseln zeigt ein Mapping.

Jeder Post wird als Daten der Karte selbst geprüft: card_data_invalid nennt den Pfad, und nichts wird geschrieben. Ein Dokument, das dem aktuellen der Karte entspricht, wird mit unchanged beantwortet und schreibt nichts, sodass kein Bildschirm geweckt wird. Ein akzeptierter Post zählt nicht zum Limit für Agentenanfragen, ein Webhook nimmt höchstens 120 Posts pro Minute an, und ein Idempotency-Key-Header dedupliziert die Wiederholungen eines Absenders 24 Stunden lang.

Eine falsche Adresse, ein falsches oder fehlendes Geheimnis, ein deaktivierter Webhook, eine fehlende oder falsche Signatur und jedes GET werden mit demselben 404 beantwortet, sodass eine Link-Vorschau oder ein Raten nichts verrät. kv webhook deliveries nennt den Grund.

Mit --signing muss jeder Post außerdem ScreenRig-Signature: t=<unix seconds>,v1=<hex> tragen, wobei v1 der HMAC-SHA256 von t, einem Punkt und dem rohen Body unter dem Signaturgeheimnis whsec_… ist und t höchstens fünf Minuten von der Serveruhr abweichen darf. Es ist das Format der eigenen Webhook-Signaturen von screenRIG.

Signaturen und Handshakes der Anbieter

Anbieter signieren ihre Zustellungen auf ihre eigene Weise, und manche können Ihr Secret gar nicht senden. Ein Karten-Webhook kann die Signatur des Anbieters anstelle des Secrets prüfen und den Einrichtungs-Handshake des Anbieters beantworten, sodass GitHub, Stripe, Shopify, Slack, Linear, Vercel, Asana, Microsoft Graph, monday.com, Trello und Azure Event Grid direkt an ihn senden, ohne Zwischenstation. Jeder andere Sender, der mit HMAC signiert, funktioniert ebenfalls. Setzen Sie sie mit --verify und --handshake bei kv webhook create und ändern Sie sie mit kv webhook update.

  • --verify VENDOR akzeptiert die eigene Signatur eines Anbieters; --verify-secret-file FILE (oder - für stdin, nie als Argument) enthält das Secret, das der Anbieter anzeigt. Für generic_hmac benennt --verify-header NAME den Header, der die Signatur trägt, --verify-encoding ist hex (Standard) oder base64, --verify-timestamp-header NAME benennt einen Header mit der Unix-Zeit, und --verify-tolerance SECONDS gibt an, wie weit sie von der Uhr des Servers abweichen darf (standardmäßig 300). Eine Zustellung mit der gültigen Signatur des Anbieters wird ohne das eigene srkw_-Secret des Webhooks akzeptiert, das daneben weiter funktioniert. Das Secret des Anbieters wird versiegelt gespeichert und nur als set und ein hint seiner letzten vier Zeichen angezeigt. Bei kv webhook update behält --verify ohne --verify-secret-file das gespeicherte Secret, solange der Anbieter derselbe bleibt, und --clear-verify entfernt die Prüfung samt Secret. --verify und --signing schließen sich gegenseitig aus.
  • --handshake VENDOR ist microsoft_graph, monday, trello oder azure_event_grid, und --clear-handshake entfernt ihn. Slack und Asana beantworten ihre eigenen Handshakes über --verify.
--verifyKopfzeileWas signiert wirdZeitstempel
githubX-Hub-Signature-256HMAC-SHA256 des BodyKeine
stripeStripe-SignatureHMAC-SHA256 aus Zeitstempel, einem Punkt und dem Body; jedes v1 darf passen5 Minuten
shopifyX-Shopify-Hmac-Sha256HMAC-SHA256 des Body, in Base64Keine
slackX-Slack-SignatureHMAC-SHA256 aus v0:, dem Zeitstempel, einem Doppelpunkt und dem BodyX-Slack-Request-Timestamp, 5 Minuten
linearLinear-SignatureHMAC-SHA256 des BodywebhookTimestamp im Body, 1 Minute
vercelx-vercel-signatureHMAC-SHA1 des BodyKeine
asanaX-Hook-SignatureHMAC-SHA256 des Body, mit dem X-Hook-Secret des Handshakes als SchlüsselKeine
generic_hmacDer --verify-header, den Sie benennenHMAC-SHA256 des Body oder, mit einem --verify-timestamp-header, aus Zeitstempel, einem Punkt und dem Body--verify-tolerance

Der Schlüssel jedes HMAC ist der Text des Secrets, wie ihn der Anbieter zeigt (bei Stripe einschließlich whsec_). Eine Signatur wird am Body genau so geprüft, wie er ankam, in konstanter Zeit, bevor die Zustellung Schreibbudget verbraucht, und sie wird vor ihrem Zeitstempel beurteilt: timestamp_stale bedeutet immer, dass das Secret stimmte. Ein Body kann JSON, ein Formular oder multipart/form-data sein, wobei ein Textfeld body.FIELD ist und Dateien gezählt, nicht gelesen werden.

AnbieterscreenRIG antwortetSpätere Zustellungen
Slack (--verify slack)Das signierte url_verification mit seinem challenge; wer mit curl testet, kann stattdessen das Secret des Webhooks sendenMit dem Signing-Secret signiert
Asana (--verify asana)Der X-Hook-Secret des Handshakes, den es versiegelt als Schlüssel jedes X-Hook-Signature behält. Dasselbe Secret erneut ist ein Wiederholungsversuch; ein anderes wird als handshake_invalid abgelehntX-Hook-Signature
Microsoft Graph (--handshake microsoft_graph)Das decodierte ?validationToken= als text/plainTragen das Secret des Webhooks
monday.com (--handshake monday)Das challenge, das es sendet, als JSON zurückgegebenTragen das Secret des Webhooks
Trello (--handshake trello)Eine HEAD-Prüfung wird mit 200 ohne Body beantwortet, nur für diesen WebhookTragen das Secret des Webhooks
Azure Event Grid (--handshake azure_event_grid){"validationResponse": "CODE"}Tragen das Secret des Webhooks

Ein Handshake wird nur für einen Webhook beantwortet, der für diesen Anbieter eingerichtet ist, bevor irgendwelche Zugangsdaten verlangt werden, auf eine Anfrage, die dieser Handshake ist, und nie von einem deaktivierten Webhook. Er schreibt nichts, wird nie abgerechnet und verbraucht kein Ratenbudget. Microsoft Graph, monday.com, Trello und Azure Event Grid senden keinen Header, den screenRIG prüft, daher werden ihre Zustellungen nur mit dem Secret des Webhooks akzeptiert. Azure Event Grid übergibt es als statischen Zustell-Header, Authorization: Bearer srkw_…, als geheim markiert, und seine Ereignisse kommen als Array an, sodass eine Zuordnung body[0] liest.

AnbieterIn den Einstellungen des Anbieters
GitHubSettings, Webhooks, Add webhook: Die Payload URL ist die url des Webhooks, der Content-Typ application/json und dasselbe Secret. Der ping von GitHub ist signiert und wird akzeptiert
StripeWorkbench, Webhooks: Fügen Sie die url hinzu und zeigen Sie das Signing-Secret an. Während Stripe ein Secret rotiert, sendet es für jedes ein v1, und beide werden akzeptiert; ersetzen Sie das gespeicherte Secret danach mit kv webhook update --verify stripe --verify-secret-file FILE
ShopifyAbonnieren Sie mit der url im JSON-Format. Das Secret ist das Client-Secret der App
SlackDie Request URL der Events API ist die url, und das Secret ist das Signing-Secret der App. Ein Slash-Befehl sendet ein Formular: {{body.text}}, {{body.user_name}}
LinearLegen Sie in den API-Einstellungen einen Webhook mit der url an und kopieren Sie sein Signing-Secret. Der webhookTimestamp im Body muss innerhalb einer Minute zur Uhr des Servers liegen
VercelTeam settings, Webhooks: Legen Sie einen mit der url an. Vercel zeigt das Secret nur einmal
AsanaLegen Sie den Webhook mit --verify asana an: Er hat noch kein Secret und lehnt Ereignisse mit secret_pending ab. Legen Sie dann den Asana-Webhook mit target auf die url gesetzt an, und der Handshake setzt das Secret. Um ein neues Secret zu übernehmen, führen Sie kv webhook update mit --clear-verify aus, dann erneut mit --verify asana
Microsoft GraphLegen Sie das Abonnement mit notificationUrl auf die url gesetzt an
monday.comFühren Sie create_webhook mit der url aus
TrelloPOST /1/webhooks mit callbackURL auf die url gesetzt
Azure Event GridLegen Sie das Ereignisabonnement mit der url als Webhook-Endpunkt an und fügen Sie den obigen Zustell-Header hinzu
echo '{"title":"{{body.repository.full_name}}","body":"{{body.head_commit.message}}"}' |
  screenrig kv webhook create --card crd_01EXAMPLEBOARD0000000000 --description "Pushes" \
    --verify github --verify-secret-file github.secret --map -

Ein Sender, der mit seinem eigenen HMAC signiert, nennt den Header, die Codierung und, wenn er einen Zeitstempel signiert, den Zeitstempel-Header:

echo '{"title":"{{body.sensor}}","body":"{{body.state}}"}' |
  screenrig kv webhook create --card crd_01EXAMPLEBOARD0000000000 --verify generic_hmac --verify-secret-file acme.secret \
    --verify-header X-Acme-Signature --verify-encoding base64 --verify-timestamp-header X-Acme-Time --verify-tolerance 120 \
    --map -
ts=$(date +%s); body='{"sensor":"door","state":"open"}'
sig=$(printf '%s.%s' "$ts" "$body" | openssl dgst -sha256 -hmac "$SECRET" -binary | openssl base64 -A)
curl "$URL" -H "Content-Type: application/json" -H "X-Acme-Time: $ts" -H "X-Acme-Signature: $sig" -d "$body"

Jeder Fehler ergibt dasselbe 404 wie jede andere Ablehnung. kv webhook deliveries zeigt den Grund, und ein Handshake erscheint mit dem Ergebnis handshake:

GrundBedeutung
signature_missingEine Anbieterprüfung ist gesetzt, und die Zustellung trug weder das Secret noch den Header des Anbieters
signature_invalidDer Header ist fehlerhaft oder passt nicht zum Body
timestamp_missingDie Signatur braucht einen Zeitstempel, den die Zustellung nicht trug
timestamp_staleDie Signatur ist gültig, und ihr Zeitstempel liegt außerhalb des Fensters
secret_pendingEine Asana-Verifizierung wartet noch auf ihren Handshake
handshake_invalidDie Anfrage ist der Handshake eines Anbieters und kann nicht beantwortet werden

kv webhook update#

Einen Karten-Webhook ändern: Beschreibung, Mapping, Dokumente mit Schlüsseln, Aktivierungsstatus, Signierung, Anbieterprüfung oder Handshake.

kv webhook update <webhook_id> --card CARD_ID [--description TEXT] [--map FILE|-] [--clear-map]
                   [--key-template TEMPLATE] [--clear-key-template] [--enable|--disable] [--signing|--no-signing]
                   [--verify VENDOR [--verify-secret-file FILE|-] [--verify-header NAME] [--verify-encoding hex|base64]
                    [--verify-timestamp-header NAME] [--verify-tolerance SECONDS]] [--clear-verify]
                   [--handshake VENDOR] [--clear-handshake]
ParameterTypErforderlichStandardNotizen
<webhook_id>stringjakeineDie kvw_ Webhook-ID.
--card CARD_IDstringjakeineDie crd_ Karten-ID.
--description TEXTstringneinkeineWas an ihn sendet, maximal 200 Bytes. Es darf keine Zugangsdaten enthalten.
--map FILEPfadneinkeineDas Mapping durch ein JSON-Objekt aus einer Datei ersetzen, oder - für stdin. Nicht mit --clear-map kombinierbar.
--clear-mapbooleanneinausDas Mapping entfernen: Das gesendete Objekt wird zum Dokument.
--key-template TEMPLATEstringneinkeineLegt die Schlüsselvorlage fest, die die Dokumente mit Schlüsseln versieht, etwa room-{screen.field.room}. Nicht mit --clear-key-template kombinierbar.
--clear-key-templatebooleanneinausKehrt dazu zurück, das eigene Dokument der Karte zu schreiben.
--enable / --disablebooleanneinaus--disable beantwortet jeden Post wie ein falsches Geheimnis, bis --enable gesetzt wird.
--signing / --no-signingbooleanneinaus--signing verlangt den Signatur-Header und gibt das Signatur-Secret einmal aus; ein Webhook, der bereits signiert, behält sein Secret, das kv webhook rotate-secret --signing ersetzt. --no-signing verlangt ihn nicht mehr. Nicht mit --verify kombinierbar.
--verify VENDORstringneinkeineErsetzt die Anbieterprüfung: github, stripe, shopify, slack, linear, vercel, asana oder generic_hmac. Ohne --verify-secret-file bleibt das gespeicherte Secret erhalten, wenn der Anbieter derselbe ist; so lassen sich ein Header oder ein Zeitfenster allein ändern. Ein anderer Anbieter braucht sein eigenes. Nicht mit --clear-verify kombinierbar.
--verify-secret-file FILEPfadneindas gespeicherte SecretLiest das Secret des Anbieters aus einer Datei oder mit - von stdin (nie als Argument). asana nimmt keines. Nur eine Option liest stdin.
--verify-header NAMEstringmit generic_hmackeineDer Header, der die Signatur trägt, 1 bis 100 Buchstaben, Ziffern, - oder _.
--verify-encoding ENCODINGstringneinhexMit generic_hmac: hex oder base64; sie darf mit sha256= beginnen.
--verify-timestamp-header NAMEstringneinkeineMit generic_hmac: ein Header, der die Unix-Zeit in Sekunden oder in Millisekunden mit 13 Ziffern trägt.
--verify-tolerance SECONDSintegernein300Mit --verify-timestamp-header: wie weit der Zeitstempel von der Uhr des Servers abweichen darf, 1 bis 86400.
--clear-verifybooleanneinausAkzeptiert die Signatur des Anbieters nicht mehr und vergisst ihr Secret. Eine Asana-Prüfung nimmt erst nach --clear-verify und erneutem --verify asana einen neuen Handshake an.
--handshake VENDORstringneinkeineLegt den Handshake fest, den die URL beantwortet: microsoft_graph, monday, trello oder azure_event_grid. Nicht mit --clear-handshake kombinierbar.
--clear-handshakebooleanneinausBeantwortet den Handshake des Anbieters nicht mehr.

Mindestens eine Änderung ist erforderlich.

screenrig kv webhook update kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000 --map alert-map.json
screenrig kv webhook update kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000 --verify stripe --verify-secret-file stripe.secret
screenrig kv webhook update kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000 --clear-verify

Der Umschlag ist der Webhook. data.signing_secret erscheint nur einmal, in der Antwort, die die Signierung eingeschaltet hat. Nach einer unterbrochenen oder mehrdeutigen Änderung führen Sie denselben Befehl erneut aus: Er verwendet den gespeicherten Idempotenzschlüssel.

kv webhook deliveries#

Das Zustellungsprotokoll eines Karten-Webhooks lesen, neueste zuerst, für die letzten sieben Tage.

kv webhook deliveries <webhook_id> --card CARD_ID [--limit N]
ParameterTypErforderlichStandardNotizen
<webhook_id>stringjakeineDie kvw_ Webhook-ID.
--card CARD_IDstringjakeineDie crd_ Karten-ID.
--limit Nnumbernein100Wie viele Zustellungen zurückgegeben werden, 1 bis 100.
screenrig kv webhook deliveries kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000

Jeder Eintrag hat at, outcome (written, unchanged, refused, invalid oder handshake), reason (credentials, signature für eine fehlgeschlagene ScreenRig-Signature, disabled, body, mapping, card_data_invalid, rate_limited, internal oder ein Anbietergrund aus der Tabelle oben), detail, status, bytes, files (die Dateiteile einer Multipart-Zustellung, die ignoriert werden), revision und request_id. Weder Body noch Header noch Zugangsdaten werden gespeichert, und eine Zustellung an eine falsche Adresse hinterlässt keine Zeile.

Weitere Befehlsgruppen