[CONTEXT+MKTG] Contesto sessione + HTML migliorati per comunicazione terze parti

- CONTEXT_LAST_SESSION.md: documento completo di tutto lo sprint B2B
- mktg-api-doc.html: Quick Start box con chiave attiva, flusso visivo 4 step, curl pronti
- integrazioniext.html tab Inviti: tabella "Chi fa cosa" per ruolo, sezione mktg-agile
  con chiave API + 3 curl pronti, Quick Start aggiornato con tabella risorse per destinatario

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-03-07 16:37:14 +01:00
co-authored by Claude Sonnet 4.6
parent 13eb8ae8a8
commit f7347ccd8c
3 changed files with 277 additions and 7 deletions
+100 -7
View File
@@ -324,9 +324,46 @@
<strong>Sistema Inviti / Licenze B2B:</strong> NIS2 Agile genera token di invito che abilitano
il provisioning automatico di organizzazioni e utenti. L'e-commerce o il partner riceve l'invito,
lo consegna al cliente finale (es. lg231), che lo usa per attivarsi automaticamente.
L'accesso si interrompe alla scadenza dell'invito.
L'accesso si interrompe alla scadenza della licenza.
</div>
<div class="section-title">Chi fa cosa — ruoli nell'ecosistema</div>
<table class="api-table" style="margin-bottom:1.5rem">
<thead><tr><th>Sistema</th><th>Ruolo</th><th>API usata</th><th>Auth</th></tr></thead>
<tbody>
<tr>
<td><strong>NIS2 Admin</strong><br><span style="font-size:.72rem;color:var(--text-secondary)">o mktg-agile</span></td>
<td>Genera i token licenza, fissa piano/durata/utenti/prezzo</td>
<td><code>POST /api/invites/create</code></td>
<td><span class="badge-status s-pending" style="font-size:.65rem">API Key admin:licenses</span></td>
</tr>
<tr>
<td><strong>E-commerce</strong></td>
<td>Riceve token all'acquisto, lo consegna al cliente con l'ordine</td>
<td>— (semplice consegna token)</td>
<td><span class="badge-status s-pending" style="font-size:.65rem">API Key admin:licenses</span></td>
</tr>
<tr>
<td><strong>lg231 / partner</strong></td>
<td>Valida il token, fa provisioning automatico per il cliente</td>
<td><code>GET /api/invites/validate</code><br><code>POST /api/services/provision</code></td>
<td><span class="badge-status s-used" style="font-size:.65rem">invite_token nel body</span></td>
</tr>
<tr>
<td><strong>Cliente finale</strong></td>
<td>Apre invite_url e si registra in autonomia via wizard</td>
<td><code>onboarding.html?invite=inv_...</code></td>
<td><span class="badge-status" style="font-size:.65rem;background:rgba(156,163,175,.1);color:#9ca3af">nessuna auth</span></td>
</tr>
<tr>
<td><strong>NIS2 Admin</strong></td>
<td>Monitora uso licenze, revoca, rigenera</td>
<td><code>GET /api/invites/list</code><br><code>DELETE /api/invites/{id}</code></td>
<td><span class="badge-status s-pending" style="font-size:.65rem">API Key o JWT super_admin</span></td>
</tr>
</tbody>
</table>
<div class="section-title">Flusso completo</div>
<div class="code-block" style="font-family:monospace;line-height:1.8;font-size:.82rem">
<span style="color:#22c55e">1. GENERAZIONE</span> NIS2 Admin (super_admin)
@@ -458,6 +495,31 @@ curl "https://nis2.agile.software/api/invites/validate?token=inv_a1b2c3..."
</tbody>
</table>
<div class="section-title">Per mktg-agile / E-commerce — Quick Start</div>
<div class="callout">
Chiave API già attiva per mktg-agile: <code style="color:#4ade80">nis2_mktg_8c8bd38e78fccb9faa749d8601051f42</code>
· Scope: <code>admin:licenses</code> · Scade: 2028-03-07
· Doc completa: <a href="/mktg-api-doc.html" style="color:var(--primary)">mktg-api-doc.html</a>
· Pannello web: <a href="/licenseExt.html" style="color:var(--primary)">licenseExt.html</a>
</div>
<div class="code-block"><span class="cmt"># 1. Crea licenza (mktg-agile → NIS2)</span>
curl -X POST https://nis2.agile.software/api/invites/create \
-H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
-H <span class="str">"Content-Type: application/json"</span> \
-d <span class="str">'{"plan":"professional","duration_months":12,"max_users_per_org":10,
"label":"Ordine MKT-001","channel":"ecommerce","price_eur":990}'</span>
<span class="cmt"># → risposta contiene token (inv_xxx) e invite_url</span>
<span class="cmt"># → consegna invite_url al cliente nel messaggio di conferma ordine</span>
<span class="cmt"># 2. Verifica stato licenza in qualsiasi momento</span>
curl -H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
"https://nis2.agile.software/api/invites/42"
<span class="cmt"># 3. Lista licenze attive per canale ecommerce</span>
curl -H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
"https://nis2.agile.software/api/invites/list?channel=ecommerce&amp;status=pending"</div>
<div class="callout">
<strong>Sicurezza token:</strong> il token <code>inv_</code> viene restituito in chiaro UNA SOLA VOLTA
alla creazione. Nel DB è conservato solo il hash SHA-256. Il <code>token_prefix</code> (es: <code>inv_a1b2c3...</code>)
@@ -729,14 +791,45 @@ curl -H <span class="str">"X-API-Key: nis2_TUA_CHIAVE"</span> \
curl -H <span class="str">"X-API-Key: nis2_TUA_CHIAVE"</span> \
"https://nis2.agile.software/api/services/risks/feed?level=high,critical"</div>
<div class="section-title">Contatti e riferimenti</div>
<div class="section-title">Risorse per ogni tipo di integratore</div>
<table class="api-table">
<thead><tr><th>Destinatario</th><th>Risorsa</th><th>URL</th></tr></thead>
<tbody>
<tr><td>App NIS2 Agile</td><td><a href="https://nis2.agile.software" style="color:var(--primary)">https://nis2.agile.software</a></td></tr>
<tr><td>Specifiche OpenAPI</td><td><code>GET /api/services/openapi.json</code></td></tr>
<tr><td>Test Runner</td><td><a href="/test-runner.php?t=Nis2Test2026" style="color:var(--primary)">test-runner.php</a></td></tr>
<tr><td>Amministratore</td><td>cristiano.benassati@gmail.com</td></tr>
<tr><td>Documento tecnico lg231</td><td><code>docs/integration/lg231-nis2-integration.md</code></td></tr>
<tr>
<td><strong>mktg-agile / E-commerce</strong></td>
<td>Documentazione API licenze + Quick Start</td>
<td><a href="/mktg-api-doc.html" style="color:var(--primary)">mktg-api-doc.html</a></td>
</tr>
<tr>
<td><strong>mktg-agile / E-commerce</strong></td>
<td>Pannello web gestione licenze</td>
<td><a href="/licenseExt.html" style="color:var(--primary)">licenseExt.html</a></td>
</tr>
<tr>
<td><strong>mktg-agile / E-commerce</strong></td>
<td>Postman Collection (import diretto)</td>
<td><a href="/nis2-license-api.postman.json" download style="color:var(--primary)">nis2-license-api.postman.json</a></td>
</tr>
<tr>
<td><strong>lg231 / Partner tecnici</strong></td>
<td>Questa pagina — tab Guida lg231</td>
<td><a href="/integrazioniext.html" style="color:var(--primary)">integrazioniext.html</a></td>
</tr>
<tr>
<td><strong>lg231 (agente Claude)</strong></td>
<td>Spec tecnica completa per implementazione</td>
<td><code>docs/integration/lg231-nis2-integration.md</code></td>
</tr>
<tr>
<td><strong>Tutti</strong></td>
<td>Health check (no auth)</td>
<td><code>GET https://nis2.agile.software/api/services/status</code></td>
</tr>
<tr>
<td><strong>Tutti</strong></td>
<td>App NIS2 Agile</td>
<td><a href="https://nis2.agile.software" style="color:var(--primary)">https://nis2.agile.software</a></td>
</tr>
</tbody>
</table>
</div>