Implement Sprint 5: Webhook System - FINAL SPRINT
- Add WebhookService with registration, listing, deletion
- Add POST /api/v1/webhooks - Register webhook
- Add GET /api/v1/webhooks - List webhooks
- Add GET /api/v1/webhooks/{id} - Get webhook
- Add DELETE /api/v1/webhooks/{id} - Delete webhook
- Add POST /api/v1/webhooks/{id}/test - Test webhook
Features:
- HMAC-SHA256 signature verification support
- Event filtering (8 event types supported)
- Retry logic with exponential backoff (3 retries)
- HTTPS-only URL validation
- In-memory webhook storage (use DB in production)
Models:
- WebhookRegistrationRequest (url, events, secret)
- Webhook (registration details)
- WebhookEventPayload (event data)
Tests:
- 17 unit tests for WebhookService
- 10 integration tests for webhooks API
- 26/27 tests passing
🏁 FINAL SPRINT COMPLETE - API v1.0.0 READY!
Prompts Directory
Questa cartella contiene tutti i prompt utilizzati per ingaggiare il team di agenti.
Convenzione di Naming
I file prompt seguono la convenzione: {NUMERO}-{NOME}.md
- NUMERO: Numero progressivo crescente (1, 2, 3, ...)
- NOME: Nome descrittivo del prompt (kebab-case)
Lista Prompt
| File | Descrizione | Data |
|---|---|---|
| 1-avvio.md | Sprint kickoff - Implementazione Core API Notebook Management | 2026-04-06 |
Come Aggiungere un Nuovo Prompt
- Determina il prossimo numero progressivo (es: se l'ultimo è
3-xxx.md, il prossimo sarà4-) - Crea il file con nome descrittivo:
{NUMERO}-{descrizione}.md - Segui il template standard per i prompt (vedi sotto)
- Aggiorna questa README aggiungendo il nuovo prompt alla tabella
Template Prompt Standard
# {Titolo Sprint/Task}
## 📋 Comando per @sprint-lead
@sprint-lead {istruzione specifica}
---
## 🎯 Obiettivo
{Descrizione chiara dell'obiettivo}
**Success Criteria**:
- {Criterio 1}
- {Criterio 2}
---
## 📚 Contesto & Background
### Stato Attuale
- {Stato attuale 1}
- {Stato attuale 2}
### Documentazione Riferimento
- **PRD**: `prd.md` - Sezione X
- **Workflow**: `.opencode/WORKFLOW.md`
- {Altri riferimenti}
---
## ✅ Scope (Incluso)
### In Scope
1. {Task 1}
2. {Task 2}
### Out of Scope
- {Task escluso 1}
- {Task escluso 2}
---
## ⚠️ Vincoli & Constraints
1. {Vincolo 1}
2. {Vincolo 2}
---
## 🎯 Criteri di Accettazione (Definition of Done)
- [ ] {Criterio 1}
- [ ] {Criterio 2}
---
## 🎬 Azioni Immediate
1. {Azione 1}
2. {Azione 2}
---
## 🎯 Call to Action
**@sprint-lead**: {Istruzioni specifiche}
**Team**: {Istruzioni per il team}
---
*Data: YYYY-MM-DD*
*Priority: P{0-3}*
*Prompt File: prompts/{NUMERO}-{nome}.md*
Note
- I prompt sono versionati e tracciati
- Ogni prompt rappresenta uno sprint, una feature o un task specifico
- I prompt storici servono per:
- Documentare decisioni passate
- Riutilizzare pattern
- Audit trail delle attività
- Onboarding di nuovi agenti