Documentazione API - ZMagazzinoApi
POST - /api/GraphicWarehouse
(Crea un nuovo layout di magazzino grafico)
Codici di risposta possibili
201 Created: Il layout è stato creato con successo.400 Bad Request: I dati forniti nel body non sono validi o sono incompleti.401 Unauthorized: Token di autenticazione mancante o non valido.500 Internal Server Error: Errore interno del server durante l’elaborazione della richiesta.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body (ogni elemento della lista viene validato).
- Controllo che
username,companyeidCompanysiano presenti nei claims dell’utente.
Eccezioni possibili
InvalidInputException: I dati forniti nel body non superano la validazione.DatabaseConnectionError: Errore durante il salvataggio dei dati nel database.
Input Body (JSON)
[
{
"shopId": "integer (ID del punto vendita)",
"companyId": "integer (ID dell'azienda)",
"version": "integer (Versione del layout)",
"activeFrom": "datetime (Data di inizio validitĂ )",
"activeTo": "datetime (opzionale, Data di fine validitĂ )",
"layout": "string (Contenuto del layout, es. JSON o XML)",
"blueprintImage": "string (Base64 immagine di sfondo)",
"notes": "string (opzionale, Note aggiuntive)"
}
]Output Body (JSON)
{
"dati": [
{
"companyId": "integer",
"shopId": "integer",
"version": "integer",
"state": "string (Stato del layout, es. 'Bozza', 'Attivo')",
"activeFrom": "datetime",
"activeTo": "datetime",
"layout": "string",
"blueprintImage": "string,
"notes": "string",
"locked": "boolean"
}
],
"messaggi": "array[string]",
"errori": "array[string]"
}POST - /api/GraphicWarehouse/Draft
(Crea una bozza di layout di magazzino grafico)
Codici di risposta possibili
201 Created: La bozza del layout è stata creata con successo.400 Bad Request: I dati forniti nel body non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
Eccezioni possibili
InvalidInputException: I dati forniti nel body non sono validi.DatabaseConnectionError: Errore durante il salvataggio della bozza.
Input Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
[
{
"shopId": "integer",
"companyId": "integer",
"version": "integer",
"activeFrom": "datetime",
"activeTo": "datetime (opzionale)",
"layout": "string",
"blueprintImage": "string,
"notes": "string (opzionale)"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
{
"dati": [
{
"companyId": "integer",
"shopId": "integer",
"version": "integer",
"state": "string",
"activeFrom": "datetime",
"activeTo": "datetime",
"layout": "string",
"blueprintImage": "string,
"notes": "string",
"locked": "boolean"
}
],
"messaggi": "array[string]",
"errori": "array[string]"
}POST - /api/GraphicWarehouse/Active
(Attiva un layout di magazzino grafico)
Codici di risposta possibili
200 OK: Il layout è stato attivato con successo.400 Bad Request: I dati forniti non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Il layout specificato non è stato trovato.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
Eccezioni possibili
LayoutNotFoundException: Nessun layout trovato per la chiave specificata.InvalidOperationException: Il layout non può essere attivato (es. è già attivo o archiviato).
Input Body (JSON)
[
{
"companyId": "integer (ID dell'azienda)",
"shopId": "integer (ID del punto vendita)",
"version": "integer (Versione del layout da attivare)"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
POST - /api/GraphicWarehouse/Archive
(Archivia un layout di magazzino grafico)
Codici di risposta possibili
200 OK: Il layout è stato archiviato con successo.400 Bad Request: I dati forniti non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Il layout specificato non è stato trovato.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
Eccezioni possibili
LayoutNotFoundException: Nessun layout trovato per la chiave specificata.InvalidOperationException: Il layout non può essere archiviato (es. è in bozza).
Input Body (JSON)
[
{
"companyId": "integer (ID dell'azienda)",
"shopId": "integer (ID del punto vendita)",
"version": "integer (Versione del layout da archiviare)"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
POST - /api/GraphicWarehouse/Lock
(Blocca un layout per la modifica)
Codici di risposta possibili
200 OK: Il layout è stato bloccato con successo.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Il layout specificato non è stato trovato.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
Eccezioni possibili
LayoutNotFoundException: Nessun layout trovato per la chiave specificata.LayoutAlreadyLockedException: Il layout è già bloccato da un altro utente.
Input Body (JSON)
[
{
"companyId": "integer",
"shopId": "integer",
"version": "integer"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
POST - /api/GraphicWarehouse/Unlock
(Sblocca un layout dopo la modifica)
Codici di risposta possibili
200 OK: Il layout è stato sbloccato con successo.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Il layout specificato non è stato trovato.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
Eccezioni possibili
LayoutNotFoundException: Nessun layout trovato per la chiave specificata.LayoutNotLockedException: Il layout non era bloccato.
Input Body (JSON)
[
{
"companyId": "integer",
"shopId": "integer",
"version": "integer"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
PATCH - /api/GraphicWarehouse
(Aggiorna un layout di magazzino grafico esistente)
Codici di risposta possibili
200 OK: Il layout è stato aggiornato con successo.400 Bad Request: I dati forniti non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Il layout da aggiornare non è stato trovato.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
- Controllo che il layout sia bloccato (
InModifica = true) prima di poterlo modificare.
Eccezioni possibili
LayoutNotFoundException: Il layout specificato non ďż˝ stato trovato.LayoutNotLockedException: Il layout deve essere bloccato prima di poter essere modificato.
Input Body (JSON)
[
{
"shopId": "integer",
"companyId": "integer",
"version": "integer",
"activeFrom": "datetime (opzionale)",
"activeTo": "datetime (opzionale)",
"layout": "string (opzionale)",
"blueprintImage": "string,
"notes": "string (opzionale)"
}
]Output Body (JSON)
Stesso formato di POST /api/GraphicWarehouse.
DELETE - /api/GraphicWarehouse
(Elimina tutti i layout di magazzino per un punto vendita)
Codici di risposta possibili
200 OK: Tutti i layout per il punto vendita sono stati eliminati.400 Bad Request: I dati forniti non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: Nessun magazzino grafico trovato per la chiave specificata.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
Eccezioni possibili
WarehouseNotFoundException: Il magazzino grafico per l’azienda e il punto vendita specificati non esiste.
Input Body (JSON)
[
{
"companyId": "integer",
"shopId": "integer"
}
]Output Body (JSON)
Nessuno.
DELETE - /api/GraphicWarehouse/Version
(Elimina una versione specifica di un layout di magazzino)
Codici di risposta possibili
200 OK: La versione del layout è stata eliminata.400 Bad Request: I dati forniti non sono validi.401 Unauthorized: Token di autenticazione mancante o non valido.404 Not Found: La versione del layout specificata non è stata trovata.500 Internal Server Error: Errore interno del server.
Controlli
- Autenticazione JWT richiesta.
- Validazione dell’input body.
Eccezioni possibili
LayoutNotFoundException: La versione del layout specificata non è stata trovata.InvalidOperationException: Non è possibile eliminare un layout attivo.
Input Body (JSON)
[
{
"companyId": "integer",
"shopId": "integer",
"version": "integer"
}
]Output Body (JSON)
Nessuno.
EntitĂ
Elenco e descrizione delle principali entitĂ (DTO, Model) usate negli Input/Output.
InputNewGraphicWarehouse
{
"shopId": "integer (ID del punto vendita, obbligatorio)",
"companyId": "integer (ID dell'azienda, obbligatorio)",
"version": "integer (Versione del layout, obbligatorio)",
"activeFrom": "datetime (Data di inizio validitĂ , obbligatorio)",
"activeTo": "datetime (Data di fine validitĂ , opzionale)",
"layout": "string (Contenuto del layout, obbligatorio)",
"blueprintImage": "string,
"notes": "string (Note aggiuntive, opzionale)"
}InputUpdateGraphicWarehouse
{
"shopId": "integer (obbligatorio)",
"companyId": "integer (obbligatorio)",
"version": "integer (obbligatorio)",
"activeFrom": "datetime (opzionale)",
"activeTo": "datetime (opzionale)",
"layout": "string (opzionale)",
"blueprintImage": "string,
"notes": "string (opzionale)"
}InputGraphicWarehouseKey
{
"companyId": "integer (ID dell'azienda, obbligatorio)",
"shopId": "integer (ID del punto vendita, obbligatorio)"
}InputGraphicWarehouseLayoutKey
{
"companyId": "integer (ID dell'azienda, obbligatorio)",
"shopId": "integer (ID del punto vendita, obbligatorio)",
"version": "integer (Versione del layout, obbligatorio)"
}OutputGraphicWarehouse
{
"companyId": "integer (ID dell'azienda)",
"shopId": "integer (ID del punto vendita)",
"version": "integer (Versione del layout)",
"state": "string (Stato corrente del layout: 'Bozza', 'Attivo', 'Archiviato')",
"activeFrom": "datetime (Data inizio validitĂ )",
"activeTo": "datetime (Data fine validitĂ )",
"layout": "string (Contenuto del layout)",
"blueprintImage": "string,
"notes": "string (Note)",
"locked": "boolean (Indica se il layout è bloccato per la modifica)"
}Eccezioni
Elenco centralizzato di alcuni possibili messaggi di errore o tipi di eccezione.
- InvalidInputException: “I dati forniti nel body non sono validi. Controllare i campi obbligatori e i loro formati.”
- UnauthorizedAccess: “Token di autenticazione mancante o non valido.”
- DatabaseConnectionError: “Errore interno del server durante la connessione al database.”
- LayoutNotFoundException: “Il layout con la chiave specificata non è stato trovato.”
- WarehouseNotFoundException: “Il magazzino grafico per l’azienda e il punto vendita specificati non esiste.”
- LayoutAlreadyLockedException: “Operazione non consentita: il layout è già bloccato.”
- LayoutNotLockedException: “Operazione non consentita: il layout deve essere bloccato prima di poter essere modificato.”
- InvalidOperationException: “Operazione non valida per lo stato corrente del layout (es. non si può archiviare una bozza o eliminare un layout attivo).”