Documentazione completa per l'integrazione da mktg-agile e sistemi e-commerce.
Risponde alle domande del team marketing su endpoint, autenticazione e risposta API.
nis2_mktg_8c8bd38e78fccb9faa749d8601051f42
https://nis2.agile.software/api
curl nis2.agile.software/api/services/status
# Crea licenza in 1 chiamata: curl -X POST https://nis2.agile.software/api/invites/create \ -H "X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42" \ -H "Content-Type: application/json" \ -d '{"plan":"professional","duration_months":12,"label":"Ordine #123","channel":"ecommerce","max_users_per_org":10,"price_eur":990}' # Risposta β prendi invites[0].token (inv_xxx) e invites[0].invite_url # Consegna invite_url al cliente β lui clicca e si attiva in autonomia
// Header richiesti:
Content-Type: application/json
X-API-Key: nis2_LA_TUA_CHIAVE β vedi sezione 2
// Body (tutti i campi disponibili):
{
"plan": "professional", // essentials | professional | enterprise
"duration_months": 12, // durata licenza dopo attivazione
"invite_expires_days": 30, // giorni per attivare l'invito
"max_uses": 1, // n. aziende che possono usarlo (1=singolo)
"max_users_per_org": 10, // max utenti per azienda (ometti = illimitato)
"label": "NIS2 Pro β Ordine MKT-001", // etichetta interna
"channel": "ecommerce", // ecommerce|lg231|direct|reseller|manual
"issued_to": "cliente@co.it", // email o nome destinatario
"reseller_name": "Partner XYZ", // riferimento reseller (solo vostro)
"price_eur": 990.00, // prezzo applicato (solo riferimento)
"notes": "Campagna Q1 2026", // note interne marketing
"quantity": 1, // genera N token in batch (default 1, max 50)
// OPZIONALE β restrizioni di sicurezza:
"restrict_vat": "02345678901", // solo questa P.IVA puΓ² usarlo
"restrict_email": "ciso@co.it" // solo questo admin puΓ² usarlo
}
plan, label. Tutti gli altri sono opzionali con valori di default ragionevoli.
Ogni chiamata da mktg-agile deve includere l'header X-API-Key con una chiave dedicata.
mktg-agile integration β Scope: admin:licensesnis2_xxxx... β visibile una sola voltaNIS2_API_KEY=nis2_xxxx...# Chiamata da mktg-agile (curl): curl -X POST https://nis2.agile.software/api/invites/create \ -H "X-API-Key: nis2_LA_TUA_CHIAVE" \ -H "Content-Type: application/json" \ -d '{"plan":"professional","duration_months":12,"label":"Test"}'
| Scope | Tipo | Permessi |
|---|---|---|
admin:licenses CONSIGLIATO | Lettura + Scrittura | Crea, lista, revoca, rigenera licenze |
read:all SOLA LETTURA | Solo lettura | Lista e dettaglio licenze, nessuna modifica |
POST /api/auth/login con le credenziali super_admin e usa il token restituito
come Authorization: Bearer eyJ.... Valido 2 ore.
HTTP 201. JSON. Array invites β uno per token generato.
{
"success": true,
"data": {
"invites": [
{
"id": 42,
"token": "inv_a1b2c3d4e5f6...", β SALVA SUBITO β non recuperabile
"token_prefix": "inv_a1b2c3...", β riferimento visivo (non il token completo)
"plan": "professional",
"duration_months": 12,
"max_uses": 1,
"max_users_per_org": 10,
"price_eur": 990.00,
"expires_at": "2026-04-07 14:00:00", β entro cui attivare
"channel": "ecommerce",
"label": "NIS2 Pro β Ordine MKT-001",
"issued_to": "cliente@co.it",
"invite_url": "https://nis2.agile.software/onboarding.html?invite=inv_a1b2...",
"provision_hint": "POST /api/services/provision con invite_token: ..."
}
],
"count": 1,
"warning": "Salva i token subito β non saranno piΓΉ visibili in chiaro."
}
}
| Campo | Uso |
|---|---|
token | Il token completo inv_xxx β consegnarlo al cliente / lg231. Non viene mai restituito di nuovo. |
invite_url | URL diretto per onboarding browser β il cliente apre questo link e si registra |
expires_at | Entro quando il cliente deve attivare. Dopo questa data il token non funziona. |
id | ID numerico per revoca / dettaglio successivo |
Il pannello licenseExt.html ha un bottone
Esporta CSV che scarica tutte le licenze generate nella sessione.
In alternativa, esporta programmaticamente da GET /api/invites/list e converti.
# Parametri query (tutti opzionali): ?status=pending // pending | used | expired | revoked &channel=ecommerce // ecommerce | lg231 | direct | reseller | manual &limit=50 // default 50, max 100 &offset=0 // paginazione # Esempio β tutte le licenze ecommerce attive: GET /api/invites/list?channel=ecommerce&status=pending X-API-Key: nis2_LA_TUA_CHIAVE
Risposta: { invites: [...], total: N, limit: 50, offset: 0 }
Ogni licenza include tutti i campi tranne il token in chiaro (non recuperabile dopo creazione).
Dettaglio singola licenza. Se Γ¨ stata usata, include used_by_org con nome azienda e settore.
Revoca la licenza (status β revoked). Il record rimane in DB per audit.
Genera un nuovo token invalidando il precedente. Stessa configurazione (piano, durata, scadenza). Usare se il token Γ¨ stato inviato per errore o compromesso prima dell'uso.
| Stato licenza | Revocabile | Rigenerabile | Note |
|---|---|---|---|
pending | β SΓ¬ | β SΓ¬ | Normale |
used | β No | β No | GiΓ attivata β azienda rimane attiva |
expired | β SΓ¬ | β SΓ¬ | Scaduta ma non usata |
revoked | β | β SΓ¬ | GiΓ revocata |
license_expires_at.
La revoca non disattiva retroattivamente nessun cliente.
Γ il pannello admin lato marketing β non il cliente.
| Pagina | Audience | Funzione |
|---|---|---|
| licenseExt.html | Marketing / Admin NIS2 | Genera licenze, vede stats (aziende provisionate, utenti coinvolti), revoca, esporta CSV |
onboarding.html?invite=inv_xxx |
Cliente finale | Usa il token ricevuto per attivare la propria azienda in NIS2 (wizard 5 step) |
| integrazioniext.html | Partner tecnici (lg231, e-commerce) | Documentazione flow completo, provisioning automatico B2B, webhook |
super_admin.
Non Γ¨ pubblica β accedervi comunicando l'URL ai soli membri del team autorizzati.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ BASE URL https://nis2.agile.software/api AUTH X-API-Key: nis2_xxxx (scope: admin:licenses) ββββββββββββββββββββββββββββββββββββββββββββββββββββββ POST /invites/create Crea licenza/e GET /invites/list Lista licenze (filtri: status, channel) GET /invites/{id} Dettaglio singola DELETE /invites/{id} Revoca POST /invites/{id}/regenerate Nuovo token (stesso config) ββββββββββββββββββββββββββββββββββββββββββββββββββββββ PUBBLICO (no auth): GET /invites/validate?token=inv_ Anteprima invito (piano, scadenza) ββββββββββββββββββββββββββββββββββββββββββββββββββββββ COSA CONTROLLA NIS2 (non il mktg): β N. aziende attivabili β max_uses β Tempo validitΓ invito β invite_expires_days β expires_at β Durata licenza β duration_months β license_expires_at β N. utenti per azienda β max_users_per_org β license_max_users ββββββββββββββββββββββββββββββββββββββββββββββββββββββ PROVA IN 30 SECONDI: curl https://nis2.agile.software/api/services/status