Webhook

Configurazione

coders webhook create \
  --url https://yourapp.com/webhooks/coders \
  --events deployment.succeeded deployment.failed build.started

Oppure dal pannello: Progetto → Settings → Webhooks → Add webhook.

Payload

Ogni evento invia una richiesta POST con:

{
  "id": "evt_xyz789",
  "type": "deployment.succeeded",
  "created_at": "2024-04-12T14:22:05Z",
  "data": {
    "deployment_id": "dpl_abc123",
    "project_id": "proj_def456",
    "environment": "production",
    "url": "https://mio-progetto.coders.app",
    "duration_ms": 42350
  }
}

Verifica della firma

Ogni richiesta include l'header X-Coders-Signature:

function verifyWebhook(string $payload, string $signature, string $secret): bool
{
    $expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
    return hash_equals($expected, $signature);
}

// In un controller Laravel:
$payload   = request()->getContent();
$signature = request()->header('X-Coders-Signature');

if (! verifyWebhook($payload, $signature, config('services.coders.webhook_secret'))) {
    abort(401, 'Invalid signature');
}

Lista eventi disponibili

Evento Descrizione
build.started Build avviata
build.succeeded Build completata con successo
build.failed Build fallita
deployment.started Deploy avviato
deployment.succeeded Deploy completato
deployment.failed Deploy fallito
deployment.rolled_back Rollback eseguito