eSuite API
API REST per integrare sistemi esterni con eSuite. Gestisci aziende, sedi, prodotti e ordini.
https://cdn.vanillainnovations.com/api/v1
Authentication
Autenticazione tramite API Key. Includi l'header X-Api-Key in ogni richiesta.
Tutte le richieste API richiedono l'header X-Api-Key. La chiave si genera dalla sezione Settings > API Keys di eSuite. Rate limit: 60 richieste al minuto per API key. Formato risposte: JSON con envelope {"data": ...} per successo e {"error": ...} per errori.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Accept
|
application/json
|
Optional | Formato risposta |
Responses
{
"data": [
"..."
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 20,
"total": 97
}
}
Companies
Gestione delle aziende clienti/fornitori.
Restituisce la lista paginata delle aziende. Supporta ricerca su legal_name, code, brand, email, vat_id.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
page
|
integer | query | Optional | Numero pagina |
1
|
per_page
|
integer | query | Optional | Elementi per pagina (max 100) |
20
|
search
|
string | query | Optional | Testo di ricerca | - |
sort
|
string | query | Optional | Campo di ordinamento | - |
direction
|
string | query | Optional | Direzione ordinamento: asc o desc |
asc
|
include
|
string | query | Optional | Relazioni da includere. Valore supportato: venues | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
{
"data": [
{
"id": 1,
"code": "CLI001",
"brand": "Acme",
"legal_name": "Acme SRL",
"vat_id": "01234567890",
"tax_id": "01234567890",
"email": "info@acme.it",
"phone": "+39 02 1234567",
"mobile": null,
"website": "https://acme.it",
"pec": "acme@pec.it",
"sdi": "0000000",
"fiscal_position": "national",
"note": null,
"language": "it",
"currency": "EUR",
"created_at": "2026-01-15T10:30:00+00:00",
"updated_at": "2026-03-20T14:00:00+00:00"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 1,
"from": 1,
"to": 1
}
}
Restituisce i dettagli di una singola azienda. Usa ?include=venues per includere le sedi.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'azienda | - |
include
|
string | query | Optional | Relazioni da includere: venues | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Crea una nuova azienda. Viene automaticamente creata una sede predefinita "Sede principale".
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
legal_name
|
string | body | Required | Ragione sociale | - |
code
|
string | body | Optional | Codice cliente (max 50 car.) | - |
brand
|
string | body | Optional | Nome commerciale | - |
vat_id
|
string | body | Optional | Partita IVA | - |
tax_id
|
string | body | Optional | Codice fiscale | - |
email
|
string | body | Optional | - | |
phone
|
string | body | Optional | Telefono | - |
pec
|
string | body | Optional | PEC | - |
sdi
|
string | body | Optional | Codice SDI (max 10 car.) | - |
fiscal_position
|
string | body | Optional | Posizione fiscale: national, eu, extra_eu | - |
language
|
string | body | Optional | Lingua (es. it, en) | - |
currency
|
string | body | Optional | Valuta (es. EUR) | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Request Body
{
"legal_name": "Acme SRL",
"code": "CLI001",
"vat_id": "01234567890",
"tax_id": "01234567890",
"email": "info@acme.it",
"phone": "+39 02 1234567",
"sdi": "0000000",
"pec": "acme@pec.it",
"fiscal_position": "national"
}
Responses
Aggiorna i campi di un'azienda. Tutti i campi sono opzionali.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'azienda | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Elimina un'azienda (soft delete).
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'azienda | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
Venues
Sedi e indirizzi delle aziende. Ogni azienda ha almeno una sede predefinita.
Restituisce tutte le sedi di un'azienda, ordinate per sede predefinita e poi per nome.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
companyId
|
integer | path | Required | ID dell'azienda | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
{
"data": [
{
"id": 1,
"company_id": 1,
"name": "Sede principale",
"address": "Via Roma 1",
"city": "Milano",
"zip": "20100",
"province": "MI",
"country": "IT",
"phone1": "+39 02 1234567",
"email1": "sede@acme.it",
"is_default": true,
"created_at": "2026-01-15T10:30:00+00:00",
"updated_at": "2026-01-15T10:30:00+00:00"
}
]
}
Aggiunge una nuova sede all'azienda.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
name
|
string | body | Required | Nome della sede | - |
address
|
string | body | Optional | Indirizzo | - |
city
|
string | body | Optional | Citta | - |
zip
|
string | body | Optional | CAP | - |
province
|
string | body | Optional | Provincia (sigla) | - |
country
|
string | body | Optional | Paese | - |
phone1
|
string | body | Optional | Telefono | - |
email1
|
string | body | Optional | - | |
is_default
|
boolean | body | Optional | Sede predefinita | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Request Body
{
"name": "Magazzino Nord",
"address": "Via Industria 5",
"city": "Bergamo",
"zip": "24100",
"province": "BG",
"country": "IT"
}
Responses
Aggiorna i campi di una sede. Tutti i campi sono opzionali.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Elimina una sede.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
Products
Catalogo prodotti e servizi.
Restituisce la lista paginata dei prodotti con categoria, tipo, brand, IVA e unita di misura.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
page
|
integer | query | Optional | Numero pagina |
1
|
per_page
|
integer | query | Optional | Elementi per pagina (max 100) |
20
|
search
|
string | query | Optional | Testo di ricerca | - |
sort
|
string | query | Optional | Campo di ordinamento | - |
direction
|
string | query | Optional | Direzione ordinamento: asc o desc |
asc
|
is_active
|
boolean | query | Optional | Filtra per stato attivo/inattivo | - |
category_id
|
integer | query | Optional | Filtra per categoria | - |
brand_id
|
integer | query | Optional | Filtra per brand | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
{
"data": [
{
"id": 1,
"code": "PROD001",
"name": "Prodotto Test",
"description": "Descrizione prodotto",
"product_kind": "good",
"price": "25.00",
"cost": "10.00",
"stock_qty": "100.00",
"weight": "0.50",
"is_active": true,
"image": null,
"category": {
"id": 1,
"name": "Categoria"
},
"type": {
"id": 1,
"name": "Tipo"
},
"brand": {
"id": 1,
"name": "Brand"
},
"vat": {
"id": 1,
"rate": "22.00",
"name": "22%"
},
"unit": {
"id": 1,
"name": "Pezzi",
"code": "PZ"
},
"created_at": "2026-01-15T10:30:00+00:00",
"updated_at": "2026-03-20T14:00:00+00:00"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 1,
"from": 1,
"to": 1
}
}
Restituisce i dettagli di un prodotto con le relazioni.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID del prodotto | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Crea un nuovo prodotto nel catalogo.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
code
|
string | body | Required | Codice prodotto (obbligatorio, max 50 car.) | - |
name
|
string | body | Required | Nome prodotto | - |
description
|
string | body | Optional | Descrizione | - |
product_kind
|
string | body | Optional | Tipo: good o service |
good
|
price
|
number | body | Optional | Prezzo di vendita | - |
cost
|
number | body | Optional | Costo di acquisto | - |
stock_qty
|
number | body | Optional | Quantita in magazzino | - |
category_id
|
integer | body | Optional | ID categoria | - |
type_id
|
integer | body | Optional | ID tipo | - |
brand_id
|
integer | body | Optional | ID brand | - |
vat_id
|
integer | body | Optional | ID aliquota IVA | - |
unit_id
|
integer | body | Optional | ID unita di misura | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Request Body
{
"code": "PROD001",
"name": "Prodotto Test",
"price": 25,
"cost": 10,
"is_active": true,
"category_id": 1,
"vat_id": 1,
"unit_id": 1,
"stock_qty": 100
}
Responses
Aggiorna i campi di un prodotto. Tutti i campi sono opzionali.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Elimina un prodotto dal catalogo.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
Orders
Gestione ordini cliente. I totali vengono calcolati automaticamente dalle righe.
Restituisce la lista paginata degli ordini con azienda e righe.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
page
|
integer | query | Optional | Numero pagina |
1
|
per_page
|
integer | query | Optional | Elementi per pagina (max 100) |
20
|
search
|
string | query | Optional | Testo di ricerca | - |
sort
|
string | query | Optional | Campo di ordinamento | - |
direction
|
string | query | Optional | Direzione ordinamento: asc o desc |
asc
|
status
|
string | query | Optional | Filtra per stato: draft, confirmed, sent, cancelled | - |
company_id
|
integer | query | Optional | Filtra per azienda | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Restituisce i dettagli di un ordine con azienda e righe.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'ordine | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
{
"data": {
"id": 1,
"number": "001/2026",
"date": "2026-03-22",
"due_date": null,
"status": "draft",
"fulfillment_status": "unfulfilled",
"company_id": 1,
"company": {
"id": 1,
"legal_name": "Acme SRL",
"code": "CLI001"
},
"currency": "EUR",
"net": "100.00",
"tax": "22.00",
"gross": "122.00",
"shipping": "0.00",
"note_public": null,
"items": [
{
"id": 1,
"product_id": 1,
"code": "PROD001",
"name": "Prodotto Test",
"description": null,
"qty": "2.00",
"price": "50.00",
"discount_percent": "0.00",
"net": "100.00",
"tax_percent": "22.00",
"tax": "22.00",
"gross": "122.00"
}
],
"created_at": "2026-03-22T10:00:00+00:00",
"updated_at": "2026-03-22T10:00:00+00:00"
}
}
Crea un nuovo ordine. I totali (net, tax, gross) vengono calcolati automaticamente dalle righe. L'ordine viene creato in stato 'draft'. Usa PATCH /orders/{id}/confirm per confermarlo.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
company_id
|
integer | body | Required | ID dell'azienda cliente | - |
date
|
date | body | Optional | Data ordine (YYYY-MM-DD) |
oggi
|
due_date
|
date | body | Optional | Data scadenza | - |
currency
|
string | body | Optional | Valuta |
EUR
|
note_public
|
string | body | Optional | Note pubbliche | - |
shipping
|
number | body | Optional | Costo spedizione | - |
items
|
array | body | Required | Righe ordine (obbligatorio, min 1) | - |
items[].product_id
|
integer | body | Optional | ID prodotto (se specificato, prende codice e nome dal prodotto) | - |
items[].name
|
string | body | Required | Descrizione riga | - |
items[].qty
|
number | body | Required | Quantita | - |
items[].price
|
number | body | Required | Prezzo unitario | - |
items[].tax_percent
|
number | body | Optional | Aliquota IVA % |
22
|
items[].discount_percent
|
number | body | Optional | Sconto riga % | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Request Body
{
"company_id": 1,
"date": "2026-03-22",
"note_public": "Ordine urgente",
"items": [
{
"product_id": 1,
"name": "Prodotto Test",
"qty": 2,
"price": 50,
"tax_percent": 22
},
{
"name": "Servizio personalizzato",
"qty": 1,
"price": 100,
"tax_percent": 22
}
]
}
Responses
Aggiorna un ordine. Se vengono fornite le righe (items), sostituiscono completamente quelle esistenti e i totali vengono ricalcolati. Non e possibile aggiornare un ordine annullato.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Elimina un ordine e tutte le sue righe.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Responses
Cambia lo stato dell'ordine a "confirmed". Non e possibile confermare un ordine annullato.
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'ordine | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |
Cambia lo stato dell'ordine a "cancelled".
Parameters
| Name | Type | In | Required | Description | Default |
|---|---|---|---|---|---|
id
|
integer | path | Required | ID dell'ordine | - |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
X-Api-Key
|
YOUR_API_KEY
|
Required | La tua API key generata dalla sezione Settings > API Keys di eSuite |