API Partner — Documentazione & Tester

Come il sito cliente integra esperienze e prenotazioni di IDV. IDV resta il DB centrale; il sito cliente chiama queste API e riceve webhook real-time.

Architettura

1. DB centrale: Tutti i dati restano su Italia da Vivere (Experience, ExperienceBooking).

2. API sicura: Il sito cliente chiama https://italiadavivere.com/functions/partnerApi con header x-api-key.

3. Sync real-time: Ogni modifica su IDV (nuova prenotazione, accettazione, ecc.) invia un webhook al sito cliente (se configurato) + polling di fallback.

4. Scalabilità: Ogni sito ha la sua chiave. 1000 siti = 1000 chiavi indipendenti. Le API sono service-role e O(1) per chiave.

Codice da copiare sul sito cliente

Frontend (SDK):

// 1. Copia src/lib/partnerClient.js nel sito cliente
// 2. Salva l'API key in un secret del sito cliente
// 3. Usa le funzioni:

import { idvExperiences, idvBookings, idvStats } from '@/lib/partnerClient';

const API_KEY = process.env.IDV_PARTNER_API_KEY;

// Lista esperienze
const { experiences } = await idvExperiences.list(API_KEY);

// Crea/aggiorna esperienza
await idvExperiences.save(API_KEY, { title: "Cena degustazione", price_per_person: 45, category: "Enogastronomia" });

// Rispondi a una prenotazione
await idvBookings.respond(API_KEY, booking_id, "accepted", "Confermiamo la prenotazione");

// Segna come pagato
await idvBookings.markPaid(API_KEY, booking_id);

// Completa
await idvBookings.complete(API_KEY, booking_id);

Backend (webhook receiver):

// Funzione backend sul sito cliente: functions/idvWebhook/entry.ts
import { verifyWebhookSecret } from '@/lib/partnerClient';

export default async function(req) {
  const secret = process.env.IDV_WEBHOOK_SECRET;
  if (!verifyWebhookSecret(req, secret)) {
    return Response.json({ error: 'Non autorizzato' }, { status: 401 });
  }
  const { event, entity_id, data } = await req.json();
  // event: "ExperienceBooking.create" | "ExperienceBooking.update" | "Experience.update" | ...
  // Aggiorna la cache/UI del sito cliente (refetch via API o usa data direttamente)
  console.log('Notifica IDV:', event, entity_id);
  return Response.json({ ok: true });
}
Tester live

© 2026 - P.IVA 18372161002 - Tutti i diritti riservati

Utilizziamo cookie per migliorare la tua esperienza. Continuando accetti la nostra privacy policy.