API FiscoZone

Integra FiscoZone nelle tue applicazioni e automatizza la gestione fiscale.

Base URL
https://rest.fiscozone.it/api/v1

API RESTful con verbi HTTP standard: GET per lettura, POST per creazione, PATCH per aggiornamento, DELETE per eliminazione.

Input/output in formato JSON standard. I parametri di filtro vanno come query string normali.

Formato parametri

Per le richieste GET, i filtri sono query string standard:

GET /api/v1/invoices?year=2026&status=PAGATA&page=1&pageSize=20

Per le richieste POST e PATCH, i dati vanno nel body JSON:

POST /api/v1/invoices
Content-Type: application/json

{"clientId":"clx...","data":"2026-04-05","righe":[...]}

Formato risposta

// Successo
{"data": {...}}

// Successo con paginazione
{"data": [...], "meta": {"page": 1, "pageSize": 20, "total": 45, "totalPages": 3}}

// Errore
{"error": {"code": "NOT_FOUND", "message": "Invoice not found"}}

Autenticazione

FiscoZone usa un flusso a due passaggi: la tua API key viene scambiata per un token temporaneo JWT.

Flusso di autenticazione

  1. Crea una API key da Impostazioni → Sviluppatori
  2. Scambia la key per un token JWT tramite POST /api/auth/token usando l'header fz-api-key
  3. Usa l'access_token nell'header Authorization: Bearer <token> per tutte le chiamate
  4. Quando l'access token scade, usa il refresh_token per ottenerne uno nuovo senza rimandare la API key

1. Ottenere un token

POST/api/auth/tokennessuno

Scambia una API key per un token JWT temporaneo (durata: 1 ora). La API key viene inviata una sola volta in questa chiamata tramite l'header dedicato fz-api-key.

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/auth/token \
  -H "fz-api-key: fz_la_tua_api_key"

Esempio risposta

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scopes": ["invoices:read", "invoices:write", "clients:read"]
}

2. Usare il token

Includi il token in tutte le richieste successive:

# Richiesta GET senza parametri:
curl https://rest.fiscozone.it/api/v1/invoices \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

# Richiesta GET con filtri:
curl "https://rest.fiscozone.it/api/v1/invoices?year=2026&status=PAGATA" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

# Richiesta POST (creazione):
curl -X POST https://rest.fiscozone.it/api/v1/invoices \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"clientId":"clx...","data":"2026-04-05","righe":[...]}'

# Richiesta PATCH (aggiornamento):
curl -X PATCH https://rest.fiscozone.it/api/v1/invoices/clx123 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"pagata":true,"dataPagamento":"2026-04-05"}'

3. Refresh del token

Quando l'access token scade (errore 401), usa il refresh token per ottenerne uno nuovo senza rimandare la API key:

POST/api/auth/tokennessuno

Rinnova la coppia access + refresh token. Il refresh token e valido per 7 giorni dopo la scadenza dell'access token.

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/auth/token \
  -H "Content-Type: application/json" \
  -d '{"grant_type": "refresh_token", "refresh_token": "eyJhbGciOiJIUzI1NiIs..."}'

Esempio risposta

{
  "access_token": "eyJ...nuovo...",
  "refresh_token": "eyJ...nuovo...",
  "token_type": "Bearer",
  "expires_in": 3600
}

Sicurezza: L'access token scade dopo 1 ora. Il refresh token e valido per 7 giorni. Dopo la scadenza del refresh token, dovrai riautenticarti con la API key. La key transita solo nell'header fz-api-key, mai nell'URL o nel body. Non conservare la API key nel codice client - usala solo lato server.

Scopes

Ogni API key ha un set di scopes che determinano quali endpoint sono accessibili.

ScopeDescrizioneAccesso
invoices:readFattureLettura fatture, note di credito, proforma
invoices:writeFattureCreazione, modifica, eliminazione, invio SDI
quotes:readPreventiviLettura preventivi
quotes:writePreventiviCreazione, modifica, conversione in fattura
clients:readClientiAnagrafica e report clienti
clients:writeClientiCreazione, modifica, eliminazione
taxes:readFiscaleCalcolo tasse, scadenze, F24
f24:readF24Download documenti F24
expenses:readSpeseLettura spese e categorie
expenses:writeSpeseCreazione, modifica, eliminazione
contracts:readContrattiLettura contratti e firme
contracts:writeContrattiCreazione e invio per firma
projects:readProgettiLettura progetti, task e timesheet
projects:writeProgettiCreazione e gestione progetti, task e timesheet
calendar:readCalendarioLettura impostazioni, tipi evento, prenotazioni e disponibilita
calendar:writeCalendarioCreazione e gestione prenotazioni, tipi evento e disponibilita
pos:readPagamentiLettura link di pagamento
pos:writePagamentiCreazione link di pagamento
notifications:readNotificheLettura notifiche
documents:readDocumentiLettura documenti
documents:writeDocumentiUpload documenti
communications:readComunicazioniLettura thread e messaggi
communications:writeComunicazioniInvio messaggi
profile:readProfiloDati account e attivita
commercialista:readCommercialistaClienti assegnati
commercialista:writeCommercialistaGestione operazioni clienti

Fatturazione

Gestisci fatture, proforma e note di credito.

GET/api/v1/invoicesinvoices:read

Elenco fatture con filtri opzionali.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoBOZZA | EMESSA | INVIATA | CONSEGNATA | PAGATA
tipoDocumentostringNoFATTURA | PROFORMA | NOTA_CREDITO
yearnumberNoAnno di riferimento
searchstringNoRicerca per numero o cliente
pagenumberNoPagina (default: 1)
pageSizenumberNoRisultati per pagina (default: 20, max: 100)

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/invoices?year=2026" \
  -H "Authorization: Bearer <token>"

Esempio risposta

{
  "result": {
    "data": {
      "items": [
        {
          "id": "clx...",
          "numero": "1/2026",
          "data": "2026-01-15",
          "status": "PAGATA",
          "tipoDocumento": "FATTURA",
          "totale": 1220.00,
          "imponibile": 1000.00,
          "client": { "denominazione": "Acme Srl" }
        }
      ],
      "total": 15,
      "page": 1,
      "pageSize": 20,
      "totalPages": 1
    }
  }
}
GET/api/v1/invoices/:idinvoices:read

Dettaglio completo di una fattura con righe e tracking SDI.

Parametri

ParametroTipoObbligatorioDescrizione
idstringSiID della fattura

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/invoices/clx123abc" \
  -H "Authorization: Bearer <token>"
POST/api/v1/invoicesinvoices:write

Crea una nuova fattura o proforma.

Parametri

ParametroTipoObbligatorioDescrizione
tipoDocumentostringSiFATTURA | PROFORMA
clientIdstringSiID del cliente
datastringSiData emissione (ISO format)
righearraySiArray di righe fattura
statusstringNoBOZZA | EMESSA (default: BOZZA)
scadenzastringNoData scadenza pagamento
notestringNoNote aggiuntive
applicaRivalsabooleanNoApplica rivalsa INPS 4%
applicaBollobooleanNoApplica bollo (auto-calcolato)

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/invoices \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "tipoDocumento": "FATTURA",
    "clientId": "clx...",
    "data": "2026-04-05",
    "status": "BOZZA",
    "righe": [{
      "descrizione": "Consulenza web",
      "quantita": 10,
      "prezzoUnitario": 50,
      "tipoIva": "ESENTE",
      "naturaEsenzione": "N2.2"
    }]
  }'

Esempio risposta

{
  "result": {
    "data": {
      "id": "clx...",
      "numero": "5/2026",
      "status": "BOZZA",
      "totale": 500.00
    }
  }
}
PATCH/api/v1/invoices/:idinvoices:write

Aggiorna una fattura (stato pagamento, note).

Parametri

ParametroTipoObbligatorioDescrizione
idstringSiID della fattura
pagatabooleanNoSegna come pagata
dataPagamentostringNoData pagamento (ISO)
notestringNoNote
DELETE/api/v1/invoices/:idinvoices:write

Elimina una fattura (solo BOZZA o EMESSA).

Parametri

ParametroTipoObbligatorioDescrizione
idstringSiID della fattura
POST/api/v1/invoices/:id/send-sdiinvoices:write

Invia una fattura allo SDI (fatturazione elettronica).

Parametri

ParametroTipoObbligatorioDescrizione
invoiceIdstringSiID della fattura da inviare
GET/api/v1/invoices/statsinvoices:read

Statistiche fatturato dell'anno: totale, non pagato, conteggi.

Parametri

ParametroTipoObbligatorioDescrizione
yearnumberNoAnno (default: corrente)

Clienti

Gestisci l'anagrafica clienti.

GET/api/v1/clientsclients:read

Elenco clienti con ricerca.

Parametri

ParametroTipoObbligatorioDescrizione
searchstringNoRicerca per nome, P.IVA, CF
pagenumberNoPagina (default: 1)
pageSizenumberNoRisultati per pagina (default: 20)
POST/api/v1/clientsclients:write

Crea un nuovo cliente.

Parametri

ParametroTipoObbligatorioDescrizione
denominazionestringSiNome o ragione sociale
partitaIvastringNoPartita IVA
codiceFiscalestringNoCodice fiscale
indirizzostringNoIndirizzo
capstringNoCAP
comunestringNoComune
provinciastringNoProvincia (2 lettere)
pecstringNoPEC
codiceSdistringNoCodice SDI (7 caratteri)
emailstringNoEmail
telefonostringNoTelefono
GET/api/v1/clients/:id/reportclients:read

Report finanziario dettagliato per un cliente specifico.

Parametri

ParametroTipoObbligatorioDescrizione
clientIdstringSiID del cliente
annonumberNoAnno di riferimento

Preventivi

Crea e gestisci preventivi.

GET/api/v1/quotesquotes:read

Elenco preventivi.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoBOZZA | INVIATO | ACCETTATO | RIFIUTATO | SCADUTO
pagenumberNoPagina
POST/api/v1/quotesquotes:write

Crea un nuovo preventivo.

Parametri

ParametroTipoObbligatorioDescrizione
clientIdstringSiID del cliente
datastringSiData (ISO)
righearraySiRighe del preventivo
validitaGiorninumberNoGiorni di validita (default: 30)

Spese

Registra e gestisci le spese dell'attivita.

GET/api/v1/expensesexpenses:read

Elenco spese con filtri.

Parametri

ParametroTipoObbligatorioDescrizione
annonumberNoAnno
categoriaSpesaIdstringNoFiltra per categoria
pagatabooleanNoFiltra per stato pagamento
searchstringNoRicerca
POST/api/v1/expensesexpenses:write

Registra una nuova spesa.

Parametri

ParametroTipoObbligatorioDescrizione
fornitorestringSiNome fornitore
descrizionestringSiDescrizione
importoLordonumberSiImporto lordo (IVA inclusa)
datastringSiData (ISO)
aliquotaIvanumberNoAliquota IVA %
categoriaSpesaIdstringNoID categoria
isAssetbooleanNoSegna come cespite
pagatabooleanNoGia pagata
GET/api/v1/expenses/categoriesexpenses:read

Lista delle categorie di spesa disponibili.

Tasse

Calcolo previsionale tasse e scadenze fiscali. Richiede piano PRO.

GET/api/v1/taxes/calculatetaxes:read

Calcolo previsionale completo: imposta sostitutiva, INPS, acconti, saldi.

Parametri

ParametroTipoObbligatorioDescrizione
annonumberNoAnno (default: corrente)
fatturatoManualenumberNoOverride fatturato per simulazione

Esempio risposta

{
  "result": {
    "data": {
      "fatturatoAnno": 45000.00,
      "coefficienteRedditivita": 0.67,
      "redditoImponibile": 28150.00,
      "aliquotaImposta": 0.05,
      "impostaSostitutiva": 1407.50,
      "contributiInps": 7200.00,
      "totaleImposte": 8607.50,
      "nettoStimato": 36392.50,
      "saldoImposta": 1407.50,
      "saldoInps": 3600.00
    }
  }
}
GET/api/v1/taxes/deadlinestaxes:read

Scadenze fiscali con importi e stato pagamento.

Parametri

ParametroTipoObbligatorioDescrizione
annonumberNoAnno
GET/api/v1/taxes/f24f24:read

Elenco modelli F24 generati.

Parametri

ParametroTipoObbligatorioDescrizione
annonumberNoAnno

Contratti

Gestisci contratti digitali con firma elettronica.

GET/api/v1/contractscontracts:read

Elenco contratti.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoBOZZA | FINALIZZATO | INVIATO | FIRMATO | SCADUTO
tipostringNoLETTERA_INCARICO | CONTRATTO_SERVIZI | NDA | ...
clientIdstringNoFiltra per cliente
POST/api/v1/contractscontracts:write

Crea un nuovo contratto.

Parametri

ParametroTipoObbligatorioDescrizione
tipostringSiTipo di contratto
titolostringSiTitolo
clientIdstringNoID cliente
contenutostringNoContenuto HTML
templateIdstringNoID template da usare

Progetti

Gestisci progetti con Kanban board, task e timesheet. Richiede piano PRO.

GET/api/v1/projectsprojects:read

Elenco progetti con filtri.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoPLANNING | IN_PROGRESS | ON_HOLD | COMPLETED | ARCHIVED
clientIdstringNoFiltra per cliente
searchstringNoCerca per nome
pagenumberNoPagina (default: 1)
pageSizenumberNoRisultati per pagina (default: 12)

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/projects?status=IN_PROGRESS" \
  -H "Authorization: Bearer <token>"
POST/api/v1/projectsprojects:write

Crea un nuovo progetto con colonne Kanban predefinite.

Parametri

ParametroTipoObbligatorioDescrizione
namestringSiNome progetto
clientIdstringNoID cliente
billingTypestringNoHOURLY | DAILY | FIXED (default: HOURLY)
ratenumberNoTariffa oraria/giornaliera
budgetnumberNoBudget totale
startDatestringNoData inizio (ISO)
endDatestringNoData fine (ISO)
colorstringNoColore hex (default: #6366f1)
tagsstring[]NoTag per categorizzazione

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/projects \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sito web Acme", "clientId": "clx...", "billingType": "HOURLY", "rate": 50}'
GET/api/v1/projects/:idprojects:read

Dettaglio progetto completo con colonne Kanban, task e etichette.

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/projects/clx123" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/projects/:idprojects:write

Aggiorna un progetto (nome, stato, tariffa, budget, ecc.).

DELETE/api/v1/projects/:idprojects:write

Elimina un progetto e tutti i dati associati.

Task

GET/api/v1/projects/:id/tasksprojects:read

Elenco task del progetto con colonne e checklist.

POST/api/v1/projects/:id/tasksprojects:write

Crea un nuovo task in una colonna.

Parametri

ParametroTipoObbligatorioDescrizione
titlestringSiTitolo del task
columnIdstringSiID della colonna Kanban
prioritystringNoLOW | MEDIUM | HIGH | URGENT
dueDatestringNoScadenza (ISO)
estimatedHoursnumberNoOre stimate
GET/api/v1/projects/:id/tasks/:taskIdprojects:read

Dettaglio task con checklist e time entries.

PATCH/api/v1/projects/:id/tasks/:taskIdprojects:write

Aggiorna task (titolo, priorita, colonna, completamento, ecc.).

Parametri

ParametroTipoObbligatorioDescrizione
titlestringNoTitolo
columnIdstringNoSposta in altra colonna
completedbooleanNoSegna come completato
prioritystringNoLOW | MEDIUM | HIGH | URGENT
DELETE/api/v1/projects/:id/tasks/:taskIdprojects:write

Elimina un task.

Timesheet

GET/api/v1/projects/:id/timesheetprojects:read

Registrazioni di tempo del progetto.

Parametri

ParametroTipoObbligatorioDescrizione
dateFromstringNoData inizio (ISO)
dateTostringNoData fine (ISO)
billablebooleanNoSolo fatturabili
invoicedbooleanNoSolo fatturate
taskIdstringNoFiltra per task
POST/api/v1/projects/:id/timesheetprojects:write

Registra una nuova entry di tempo.

Parametri

ParametroTipoObbligatorioDescrizione
datestringSiData (ISO)
hoursnumberSiOre lavorate
taskIdstringNoID task associato
descriptionstringNoDescrizione attivita
billablebooleanNoFatturabile (default: true)

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/projects/clx123/timesheet \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"date": "2026-04-05", "hours": 3.5, "description": "Sviluppo frontend"}'

Calendario

Gestisci prenotazioni, tipi evento, disponibilita e impostazioni calendario. Richiede piano PRO.

Impostazioni

GET/api/v1/calendar/settingscalendar:read

Legge le impostazioni del calendario, incluse le regole di disponibilita settimanale e gli override.

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/calendar/settings" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/calendar/settingscalendar:write

Aggiorna le impostazioni del calendario.

Parametri

ParametroTipoObbligatorioDescrizione
displayNamestringNoNome visualizzato nella pagina pubblica
biostringNoBiografia breve
timezonestringNoFuso orario (es. Europe/Rome)
isActivebooleanNoPagina pubblica attiva
minimumNoticenumberNoPreavviso minimo in minuti
bookingWindowDaysnumberNoFinestra prenotazione in giorni
bufferBeforenumberNoBuffer prima (minuti)
bufferAfternumberNoBuffer dopo (minuti)
requireConfirmationbooleanNoRichiedi conferma manuale
brandColorstringNoColore brand hex (es. #2563eb)
googleSyncEnabledbooleanNoSincronizzazione Google Calendar

Esempio richiesta

curl -X PATCH https://rest.fiscozone.it/api/v1/calendar/settings \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"minimumNotice": 60, "bufferAfter": 15}'

Tipi Evento

GET/api/v1/calendar/event-typescalendar:read

Elenco tipi di evento prenotabili con conteggio prenotazioni.

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/calendar/event-types" \
  -H "Authorization: Bearer <token>"
POST/api/v1/calendar/event-typescalendar:write

Crea un nuovo tipo di evento prenotabile.

Parametri

ParametroTipoObbligatorioDescrizione
titlestringSiTitolo evento
slugstringSiSlug URL-friendly (univoco)
durationnumberNoDurata in minuti (default: 30)
descriptionstringNoDescrizione
colorstringNoColore hex (default: #2563eb)
locationTypestringNoGOOGLE_MEET | CUSTOM_URL | IN_PERSON | PHONE
customLocationUrlstringNoURL meeting (se CUSTOM_URL)
isGroupbooleanNoEvento di gruppo (default: false)
maxAttendeesnumberNoPartecipanti massimi (default: 1)
requiresPaymentbooleanNoRichiedi pagamento (default: false)
priceInCentsnumberNoPrezzo in centesimi
currencystringNoValuta (default: EUR)
googleCalendarIdstringNoCalendario Google di destinazione

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/calendar/event-types \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title": "Consulenza fiscale", "slug": "consulenza-fiscale", "duration": 30, "locationType": "GOOGLE_MEET"}'
GET/api/v1/calendar/event-types/:idcalendar:read

Dettaglio tipo evento con conteggio prenotazioni.

PATCH/api/v1/calendar/event-types/:idcalendar:write

Aggiorna un tipo evento (titolo, durata, prezzo, stato, ecc.).

Parametri

ParametroTipoObbligatorioDescrizione
titlestringNoTitolo
durationnumberNoDurata in minuti
isActivebooleanNoAttivo/disattivato
requiresPaymentbooleanNoRichiedi pagamento
priceInCentsnumberNoPrezzo in centesimi
locationTypestringNoGOOGLE_MEET | CUSTOM_URL | IN_PERSON | PHONE
DELETE/api/v1/calendar/event-types/:idcalendar:write

Elimina un tipo evento. Se ha prenotazioni attive, viene disattivato.

Prenotazioni

GET/api/v1/calendar/bookingscalendar:read

Elenco prenotazioni con filtri e paginazione.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoPENDING | CONFIRMED | CANCELLED | COMPLETED | NO_SHOW
eventTypeIdstringNoFiltra per tipo evento
searchstringNoCerca per nome o email ospite
pagenumberNoPagina (default: 1)
pageSizenumberNoRisultati per pagina (default: 20, max: 50)

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/calendar/bookings?status=CONFIRMED&page=1" \
  -H "Authorization: Bearer <token>"

Esempio risposta

{
  "data": [{
    "id": "clx...",
    "status": "CONFIRMED",
    "startTime": "2026-04-10T09:00:00.000Z",
    "endTime": "2026-04-10T09:30:00.000Z",
    "attendeeName": "Mario Rossi",
    "attendeeEmail": "mario@example.com",
    "meetingUrl": "https://meet.google.com/abc-defg-hij",
    "paymentStatus": "NOT_REQUIRED",
    "eventType": {
      "id": "clx...",
      "title": "Consulenza fiscale",
      "duration": 30,
      "color": "#2563eb"
    }
  }],
  "meta": { "page": 1, "pageSize": 20, "total": 5, "totalPages": 1 }
}
GET/api/v1/calendar/bookings/:idcalendar:read

Dettaglio prenotazione con tipo evento e promemoria.

POST/api/v1/calendar/bookings/:id/cancelcalendar:write

Cancella una prenotazione confermata o in attesa. Rimuove evento da Google Calendar.

Parametri

ParametroTipoObbligatorioDescrizione
reasonstringNoMotivo cancellazione (opzionale)

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/calendar/bookings/clx123/cancel \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Imprevisto"}'

Disponibilita

GET/api/v1/calendar/availabilitycalendar:read

Regole di disponibilita settimanale (7 giorni, Domenica=0).

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/calendar/availability" \
  -H "Authorization: Bearer <token>"

Esempio risposta

{
  "data": [
    { "dayOfWeek": 0, "startTime": "09:00", "endTime": "18:00", "isEnabled": false },
    { "dayOfWeek": 1, "startTime": "09:00", "endTime": "18:00", "isEnabled": true },
    ...
  ]
}
PATCH/api/v1/calendar/availabilitycalendar:write

Aggiorna tutte le regole di disponibilita settimanale. Richiede un array di 7 elementi.

Esempio richiesta

curl -X PATCH https://rest.fiscozone.it/api/v1/calendar/availability \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '[
    {"dayOfWeek": 0, "startTime": "09:00", "endTime": "18:00", "isEnabled": false},
    {"dayOfWeek": 1, "startTime": "09:00", "endTime": "18:00", "isEnabled": true},
    {"dayOfWeek": 2, "startTime": "09:00", "endTime": "18:00", "isEnabled": true},
    {"dayOfWeek": 3, "startTime": "09:00", "endTime": "18:00", "isEnabled": true},
    {"dayOfWeek": 4, "startTime": "09:00", "endTime": "18:00", "isEnabled": true},
    {"dayOfWeek": 5, "startTime": "09:00", "endTime": "13:00", "isEnabled": true},
    {"dayOfWeek": 6, "startTime": "09:00", "endTime": "18:00", "isEnabled": false}
  ]'

Override Disponibilita

GET/api/v1/calendar/overridescalendar:read

Lista override disponibilita (ferie, orari speciali).

Parametri

ParametroTipoObbligatorioDescrizione
fromstringNoData inizio filtro (YYYY-MM-DD)
tostringNoData fine filtro (YYYY-MM-DD)
POST/api/v1/calendar/overridescalendar:write

Crea un override per una data specifica.

Parametri

ParametroTipoObbligatorioDescrizione
datestringSiData (YYYY-MM-DD)
isUnavailablebooleanNoGiorno non disponibile (default: true)
startTimestringNoOrario inizio personalizzato (HH:mm)
endTimestringNoOrario fine personalizzato (HH:mm)
labelstringNoEtichetta (es. Ferie, Mezza giornata)
PATCH/api/v1/calendar/overrides/:idcalendar:write

Aggiorna un override.

DELETE/api/v1/calendar/overrides/:idcalendar:write

Elimina un override.

Gestione Prenotazioni Avanzata

POST/api/v1/calendar/bookingscalendar:write

Crea una prenotazione manuale (host-initiated).

Parametri

ParametroTipoObbligatorioDescrizione
eventTypeIdstringSiID tipo evento
startTimestringSiData/ora inizio (ISO 8601)
attendeeNamestringSiNome ospite
attendeeEmailstringSiEmail ospite
attendeePhonestringNoTelefono
hostNotesstringNoNote interne (solo per l'host)

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/calendar/bookings \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"eventTypeId": "clx...", "startTime": "2026-04-10T09:00:00Z", "attendeeName": "Mario Rossi", "attendeeEmail": "mario@example.com"}'
PATCH/api/v1/calendar/bookings/:idcalendar:write

Aggiorna dati prenotazione (note, info ospite).

Parametri

ParametroTipoObbligatorioDescrizione
attendeeNamestringNoNome ospite
attendeeEmailstringNoEmail
attendeePhonestringNoTelefono
attendeeNotesstringNoNote dall'ospite
hostNotesstringNoNote interne
POST/api/v1/calendar/bookings/:id/confirmcalendar:write

Conferma una prenotazione in attesa.

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/calendar/bookings/clx123/confirm \
  -H "Authorization: Bearer <token>"
POST/api/v1/calendar/bookings/:id/meetingcalendar:write

Gestisci il link meeting: crea Google Meet, imposta link custom, o rimuovi.

Parametri

ParametroTipoObbligatorioDescrizione
actionstringSicreate_meet | set_custom | remove
customUrlstringNoURL personalizzato (richiesto se action=set_custom)

Esempio richiesta

curl -X POST https://rest.fiscozone.it/api/v1/calendar/bookings/clx123/meeting \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"action": "create_meet"}'

Partecipanti

GET/api/v1/calendar/bookings/:id/attendeescalendar:read

Lista partecipanti aggiuntivi di una prenotazione.

POST/api/v1/calendar/bookings/:id/attendeescalendar:write

Aggiungi un partecipante. Invia email di invito automaticamente.

Parametri

ParametroTipoObbligatorioDescrizione
namestringSiNome
emailstringSiEmail
phonestringNoTelefono
DELETE/api/v1/calendar/bookings/:id/attendees/:attendeeIdcalendar:write

Rimuovi un partecipante dalla prenotazione.

Statistiche

GET/api/v1/calendar/statscalendar:read

Statistiche prenotazioni per mese: totali, confermate, cancellate, ricavi.

Parametri

ParametroTipoObbligatorioDescrizione
monthnumberNoMese (1-12, default: mese corrente)
yearnumberNoAnno (default: anno corrente)

Esempio richiesta

curl "https://rest.fiscozone.it/api/v1/calendar/stats?month=4&year=2026" \
  -H "Authorization: Bearer <token>"

Esempio risposta

{
  "data": {
    "total": 24,
    "confirmed": 18,
    "cancelled": 4,
    "noShow": 2,
    "completionRate": 75,
    "revenueInCents": 45000
  }
}

Prodotti

Catalogo prodotti e servizi.

GET/api/v1/productsinvoices:read

Elenco prodotti.

Parametri

ParametroTipoObbligatorioDescrizione
searchstringNoRicerca per nome
POST/api/v1/productsinvoices:write

Crea un nuovo prodotto.

Parametri

ParametroTipoObbligatorioDescrizione
nomestringSiNome prodotto
prezzoUnitarionumberSiPrezzo unitario
unitaMisurastringNoUnita di misura
codiceArticolostringNoCodice articolo
aliquotaIvanumberNoAliquota IVA %

Cespiti

Beni strumentali e ammortamento.

GET/api/v1/assetsexpenses:read

Elenco cespiti con stato ammortamento.

Parametri

ParametroTipoObbligatorioDescrizione
completatibooleanNoFiltra cespiti completati/attivi
POST/api/v1/assets/depreciationexpenses:read

Calcola ammortamento per un anno specifico.

Parametri

ParametroTipoObbligatorioDescrizione
annonumberSiAnno di calcolo

POS / Pagamenti

Link di pagamento online tramite Stripe.

GET/api/v1/paymentspos:read

Elenco link di pagamento.

Parametri

ParametroTipoObbligatorioDescrizione
statusstringNoPENDING | PAID | EXPIRED | CANCELED
POST/api/v1/paymentspos:write

Crea un nuovo link di pagamento.

Parametri

ParametroTipoObbligatorioDescrizione
invoiceIdsstring[]SiID delle fatture da includere
customerEmailstringNoEmail del cliente
descrizionestringNoDescrizione

Profilo

Informazioni account e attivita.

GET/api/v1/profileprofile:read

Dati account: email, nome, cognome.

GET/api/v1/profile/businessprofile:read

Dati attivita: P.IVA, regime fiscale, coefficiente, cassa previdenziale.

GET/api/v1/profile/subscriptionprofile:read

Piano di abbonamento attivo e stato.

Errori

Le API restituiscono errori nel formato tRPC standard.

{
  "error": {
    "message": "Fattura non trovata",
    "code": -32004,
    "data": {
      "code": "NOT_FOUND",
      "httpStatus": 404
    }
  }
}
CodiceHTTPDescrizione
UNAUTHORIZED401Token mancante, scaduto o invalido
FORBIDDEN403Scope insufficienti per questa operazione
NOT_FOUND404Risorsa non trovata
BAD_REQUEST400Parametri di input non validi
CONFLICT409Conflitto (es. slug duplicato)
TOO_MANY_REQUESTS429Limite richieste superato
INTERNAL_SERVER_ERROR500Errore interno del server

Rate Limits

Per garantire la stabilita del servizio, le API sono soggette a limiti di frequenza.

PianoLimite
PRO100 richieste / minuto
COMPLETE200 richieste / minuto

Best practices

  • Usa la paginazione per elenchi grandi (parametri page e pageSize)
  • Implementa retry con backoff esponenziale per errori 429 e 5xx
  • Cachea l'access token - non richiederne uno nuovo ad ogni chiamata
  • Quando ricevi un errore 401, usa il refresh token per rinnovare
  • Conserva il refresh token in modo sicuro - e valido per 7 giorni
  • Non conservare la API key nel codice client o repository pubblici