Come Costruire un'App DonutWork
Una guida agnostica dal punto di vista della programmazione per progettare, registrare e distribuire integrazioni di terze parti nell'ecosistema DonutWork.
Costruire per DonutWork
Questa guida fornisce un blueprint concettuale e tecnico per lo sviluppo di applicazioni di terze parti. Il framework DonutWork è esplicitamente agnostico rispetto al linguaggio di programmazione, basandosi su protocolli standard HTTP/REST e sull'incorporamento sicuro della UI per facilitare l'orchestrazione tra sistemi.
1. Registrazione dell'Applicazione
Prima di iniziare lo sviluppo, è necessario registrare l'applicazione per ottenere le credenziali necessarie per l'identità e l'accesso alla piattaforma.
- Client ID: L'identificativo pubblico della tua applicazione.
- Client Secret: Una credenziale sicura utilizzata per autorizzare la tua app ad agire per conto di un'azienda.
- Redirect URI: L'URL dove DonutWork invierà i codici di autorizzazione.
Consulta la Guida Dettagliata OAuth per l'handshake tecnico di autenticazione.
2. Scoperta delle Funzionalità (Il Manifesto)
DonutWork utilizza un Discovery Pattern per comprendere le capacità della tua applicazione. Invece di chiamare la tua app alla cieca, la tua app deve "dichiarare" le sue funzionalità (Azioni).
Dichiarazione delle Funzionalità
La tua applicazione deve inviare una richiesta PUT all'endpoint /integrations.json. Questo manifesto comunica a DonutWork quali endpoint chiamare quando viene attivata un'azione specifica (ad esempio, tramite un Workflow o la UI).
integrations:writeApiAccessPermission::INTEGRATIONS_WRITEQuery Parameters
No query parameters required.
Request Body
{
"app_token": "YOUR_APP_SHARED_TOKEN",
"capabilities": [
{
"name": "ping",
"description": "Test della salute della connessione",
"endpoint": "https://your-app.com/api/ping.json",
"method": "GET",
"inputs": []
},
{
"name": "provision_resource",
"description": "Creazione di una nuova risorsa",
"endpoint": "https://your-app.com/api/provision.json",
"method": "POST",
"inputs": [
{
"name": "resource_name",
"type": "string",
"required": true
}
]
}
]
}- app_token: DonutWork includerà questo Bearer token in ogni header
Authorizationquando chiamerà la tua applicazione. Ciò consente alla tua app di verificare che la richiesta provenga da DonutWork. - capabilities: Un array di azioni consentite, ciascuna con un
endpoint, unmethode gliinputsattesi.
3. Modello di Comunicazione (La Logica dell'Azione)
Quando un utente o un workflow generico attiva un'azione, DonutWork agisce come un Proxy Sicuro.
- Trigger: DonutWork identifica l'azione di destinazione (es.
provision_resource). - Identificazione: DonutWork recupera l'
endpointe l'app_tokendal manifesto salvato. - Esecuzione: DonutWork invia una richiesta HTTP al tuo endpoint, includendo l'
app_tokennell'intestazione e i dati richiesti nel corpo. - Risposta: La tua applicazione elabora la richiesta e restituisce una risposta JSON standard.
4. Framework UI (L'Iframe)
DonutWork incorpora il frontend della tua applicazione all'interno della propria dashboard tramite un Iframe. Per garantire un'esperienza utente fluida e mantenere la sicurezza, è necessario rispettare le seguenti policy:
Sicurezza dei Cookie (SameSite=None)
Poiché la tua applicazione è in esecuzione in un contesto Iframe (cross-site), i cookie di sessione tradizionali potrebbero essere bloccati dai browser moderni. È necessario configurare i cookie di sessione con:
SameSite=NoneSecure=true
Header di Sicurezza
DonutWork consente l'incorporamento di Iframe da applicazioni registrate. Da parte tua, dovresti assicurarti che i tuoi header consentano alla piattaforma di visualizzare i tuoi contenuti. Per approfondire la verifica della firma, vedi Contesto Iframe e Sicurezza.
Content-Security-Policy: frame-ancestors 'self' https://hub.donutwork.com;
X-Frame-Options: ALLOW-FROM https://hub.donutwork.com5. Sincronizzazione degli Eventi (Webhook)
Per reagire agli eventi della piattaforma in tempo reale (ad esempio, quando un utente paga una fattura), dovresti registrare un Webhook.
- Endpoint: La tua applicazione dovrebbe fornire un URL HTTPS dedicato per ricevere i payload POST.
- Rotazione delle Chiavi: Durante la registrazione, riceverai un
token. Usa questa chiave per verificare l'intestazioneX-SIGNATUREsu ogni richiesta in arrivo.
6. Callback di Disinstallazione (Pulizia Dati Company)
Quando una company disinstalla la tua app da DonutWork, la piattaforma invia una callback server-to-server verso l'uninstall_url configurata.
- Metodo:
DELETE - Content-Type:
application/x-www-form-urlencoded - Body:
company_id: identificativo della company da eliminare.verify: firma HMAC calcolata comeHMAC_SHA256(company_id, client_secret).
Esempio payload:
DELETE /uninstall HTTP/1.1
Content-Type: application/x-www-form-urlencoded
company_id=699ecb44790ac4eea20e9cd3&verify=7c72b2...Regola di verifica lato app:
$expected = hash_hmac('sha256', $companyId, $clientSecret);
$isValid = hash_equals($expected, $verify);Requisiti implementativi:
- Valida
company_ideverifyprima di qualsiasi cancellazione. - Elimina solo i dati tenant-scoped della
company_idricevuta. - Rendi l'endpoint idempotente (chiamate ripetute non devono fallire).
- Restituisci
2xxsolo quando la pulizia e' completata (o gia' completata).
Se il tuo endpoint restituisce status non-2xx, DonutWork considera fallita la callback di uninstall e blocca la disinstallazione locale.
Elenco di Controllo Riassuntivo
- Registra l'App e ottieni Client ID/Secret.
- Implementa OAuth 2.0 per ottenere i Platform Access Tokens.
- Usa
PUT /integrations.jsonper dichiarare gli endpoint della tua app. - Implementa i tuoi endpoint API per gestire le richieste dal proxy DonutWork.
- Configura i cookie
SameSite=NoneeSecureper la tua UI in Iframe. - Registra i Webhook per l'elaborazione degli eventi in tempo reale.
- Implementa
DELETE uninstall_urlconcompany_id+ HMACverifye cleanup tenant-safe.
Donutwork Claude Code Skill
Integra Donutwork piu' velocemente con il pacchetto ufficiale per Claude Code, con SKILL.md, mappa endpoint, modelli entita' e playbook pronti.
Autenticazione e Governance Iframe
Proteggi la tua applicazione con OAuth 2.0 e gestisci l'incorporamento fluido degli Iframe all'interno della dashboard di DonutWork.