Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
La commande reste sur une seule ligne. Faites défiler horizontalement pour la vérifier avant de la copier.
Vous préférez une copie locale ? Téléchargez les fichiers actuellement disponibles dans SkillsMP.
Affichage de SKILL.md
SKILL.md
Instructions source · Aperçu en lecture seule
name
miro-webhooks-events
description
Implement Miro REST API v2 webhooks with board subscriptions, event handling,
and signature verification for real-time board change notifications.
Trigger with phrases like "miro webhook", "miro events",
"miro board subscription", "miro real-time", "miro notifications".
allowed-tools
Read, Write, Edit, Bash(curl:*)
version
1.7.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","miro","webhooks","events"]
compatibility
Designed for Claude Code
Miro Webhooks & Events
Overview
Receive real-time notifications when items on a Miro board change. Miro uses board subscriptions via the /v2-experimental/webhooks/board_subscriptions endpoint. All board item types are supported except tags, connectors, and comments.
Prerequisites
Access token with boards:read scope
HTTPS endpoint accessible from the internet
Webhook signing secret (generated when creating subscription)
// List subscriptions// GET https://api.miro.com/v2-experimental/webhooks/board_subscriptionsconst list = awaitmiroFetch('/v2-experimental/webhooks/board_subscriptions');
// Get a specific subscription// GET https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}const sub = awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`);
// Update subscription (enable/disable)// PATCH https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`, 'PATCH', {
status: 'disabled',
});
// Delete subscription// DELETE https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`, 'DELETE');
Event Payload Structure
When a board item is created, updated, or deleted, Miro sends a POST request to your callback URL:
Miro may deliver the same event multiple times. Prevent duplicate processing:
import { Redis } from'ioredis';
const redis = newRedis(process.env.REDIS_URL);
asyncfunctionprocessOnce(eventId: string, handler: () => Promise<void>): Promise<void> {
const key = `miro:webhook:${eventId}`;
// SET NX with TTL — returns 'OK' only if key was newly setconst result = await redis.set(key, '1', 'EX', 86400 * 7, 'NX'); // 7 days TTLif (result !== 'OK') {
console.log(`Duplicate event ${eventId} — skipping`);
return;
}
awaithandler();
}
Webhook Testing
# Test with ngrok for local development
ngrok http 3000
# Register https://your-ngrok.ngrok-free.app/webhooks/miro as callback URL# Manually test your endpoint
curl -X POST http://localhost:3000/webhooks/miro \
-H "Content-Type: application/json" \
-H "X-Miro-Signature: $(echo -n '{"event":"board_subscription_changed","type":"create","boardId":"test","item":{"id":"123","type":"sticky_note"}}' | openssl dgst -sha256 -hmac "$MIRO_WEBHOOK_SECRET" | awk '{print $2}')" \
-d '{"event":"board_subscription_changed","type":"create","boardId":"test","item":{"id":"123","type":"sticky_note"}}'# Use Pipedream for webhook debugging# See: https://developers.miro.com/docs/set-up-a-test-endpoint-for-webhooks
Instructions
Use the ordered procedures and code samples in this guide as a sequence: begin with the prerequisites, apply the configuration or operational step for the target environment, then perform the documented validation or cleanup before proceeding. Keep credentials in the documented secret store; never hard-code them in source.
Output
Following this guide produces the Miro integration outcome for its topic—configuration, validation evidence, operational recovery, or a documented migration result. Record command output and relevant identifiers so a failed step is traceable.
Examples
Start with the smallest applicable command or code example in the relevant section, using a dedicated test board and non-production credentials. Confirm the expected response or validation result before applying the pattern to production.