API RILEVAZIONI
PREMESSA
- Tutti gli endpoint POST/PATCH/DELETE sono transazionali quindi se avviene un errore durante degli aggiornamenti multipli non ne verrà applicato alcuno!
- Gli endpoint GET si basano sulla tecnologia SAPI. Per i dettagli del funzionamento di questi ultimi va visionata la relativa documentazione.
ENDPOINT
TIPO RILEVAZIONE
-
POST - detectiontypes/
Inserimento di uno o più tipi rilevazione.
Codici di risposta:
- Buon Fine -> 201
- Richiesta mal formattata -> 400
Controlli
- La descrizione non deve avere più di 4 caratteri
- Non deve essere presente un tipo rilevazione con la stessa descrizione
Eccezioni possibili
Input Body
- Array di Tipo Rilevazione
Output Body
-
PATCH - detectiontypes/
Aggiornamento di uno o più campi di uno o più tipi rilevazione.
Codici di risposta:
- Buon Fine -> 200
- Richiesta mal formattata -> 400
Controlli
- La chiave delle rilevazioni che si vogliono aggiornare deve esistere
- Non deve essere presente nessuna rilevazione con questo tipo rilevazione
Eccezioni possibili
Input Body
- vedi Variation<T>
[ { "description": "string", "isDescriptionEditable":Variation<string>(nullable), "detectProductsNotPresentInRegistry":Variation<string>(nullable), "detectProductsNotPresentInSurvey":Variation<string>(nullable), "weightBasedProductsManagementMode":Variation<string>(nullable), "requestQuantity":Variation<string>(nullable), "quantityRequestMode":Variation<string>(nullable), "warehouseRequest":Variation<string>(nullable), "requestExpiredProducts":Variation<string>(nullable), "priceRequest":Variation<string>(nullable), "merge":Variation<string>(nullable), "sharing":Variation<string>(nullable), "references":Variation<string>(nullable), "notes":Variation<string>(nullable), "status":Variation<string>(nullable), "creatableByApp":Variation<bool>(nullable), "editableFromApp":Variation<bool>(nullable), "type":Variation<string>(nullable) } ]
Output Body
-
DELETE - detectiontypes/
Eliminazione di uno o più tipi rilevazione che non risultano associati a una rilevazione
Codici di risposta:
- Buon Fine -> 204
- Richiesta mal formattata -> 400
Controlli
- Il tipo rilevazione non deve essere associato ad alcuna rilevazione;
- La rilevazione che si vuol eliminare deve essere presente a database.
Eccezioni possibili
Input Body
[ { “description": "string" } ]Output Body
RILEVAZIONI
-
POST - detections/
Inserimento di uno o più rilevazioni
Codici di risposta:
- Buon Fine -> 201
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione non deve essere già presente con la stesso codice univoco
- La tipologia di rilevazione deve essere già presente nel database
- Il numero punto deve essere già presente nel database
- La rilevazione può essere chiusa solo se presente almeno una riga di dettaglio
Eccezioni possibili
Input Body
- Array di Aggregato Rilevazione
Output Body
-
POST - detections/close
Chiudi una o più rilevazioni
Codici di risposta:
- Buon Fine -> 200
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione deve esistere
- L’etag deve corrispondere con l’attuale etag
- La rilevazione non deve essere già chiusa o scaduta
- La rilevazione deve avere almeno una riga al suo interno
- Se la rilevazione è bloccata, la richiesta può esser fatta solo da quell’utente
Eccezioni possibili
Input Body
Output Body
-
POST - detections/use
Utilizza una o più rilevazioni (Utilizzata per gli export)
Codici di risposta:
- Buon Fine -> 200
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione deve esistere
- L’etag deve corrispondere con l’attuale etag
- La rilevazione deve essere già chiusa e non scaduta
Eccezioni possibili
Input Body
Output Body
-
POST - detections/lock
Occupazione di uno o più Rilevazioni
Codici di risposta:
- Buon Fine -> 201
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione deve esistere
- L’etag deve corrispondere con l’attuale etag
- La rilevazione non deve essere già occupata
- La rilevazione deve essere in stato aperto
Eccezioni possibili
Input Body
Output Body
-
POST - detections/unlock
Disoccupazione di uno o più rilevazioni occupate dal utente che esegue la chiamata
Codici di risposta:
- Buon Fine -> 201
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione deve esistere
- L’etag deve corrispondere con l’attuale etag
- La rilevazione deve essere occupata
- L’occupazione deve essere stata imposta dall’utente che esegue la chiamata
Eccezioni possibili
Input Body
Output Body
-
POST - detections/forceUnlock
!!! DATA L’ASSENZA DI AUTENTICAZIONE L’ENDPOINT NON È STATO IMPLEMENTATO !!!
Forzatura di disoccupazione di uno o più rilevazioni occupate. La chiamata è limitata ad utenti con permessi elevati
Codici di risposta:
- Buon Fine -> 204
- Richiesta mal formattata -> 400, 403
Controlli
- La rilevazione deve esistere
- L’etag deve corrispondere a quello attuale
- La rilevazione deve essere occupata
Eccezioni possibili
Input Body
Output Body
-
PUT - detections
Modifica della rilevazione.
Codici di risposta:
- Buon Fine -> 200
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione di riferimetno deve esistere
- L’etag della rilevazione deve corrispondere a quello attuale
Eccezioni possibili
Input Body
- Array di Aggregato Rilevazione
Output Body
-
PATCH - detections
Modifica dei campi della rilevazione.
Codici di risposta:
- Buon Fine -> 200
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione di riferimetno deve esistere
- L’etag della rilevazione deve corrispondere a quello attuale
Eccezioni possibili
Input Body
- vedi Variation<T>
- vedi Changes<T> e Contenuto Rilevazione
{ "etag":"string (GUID)", "Id":"string (GUID)", "shopId" : Variation<int>, "warehouseNumber" : Variation<int>, "description" : Variation<string>, "references" : Variation<string>, "dueDate" : Variation\<DateTime (ISO8601)\>, "notes": Variation<string>, "changedRows" : [ Changes<Contenuto Rilevazione> ] }Output Body
-
DELETE - detections/
Eliminazione di uno o più rilevazioni e dei relativi Rilevazione Contuti
Codici di risposta:
- Buon Fine -> 204
- Rilevazione non trovata -> 404
- Versione Errata -> 403
- Rilevazione occupata -> 423
- Richiesta mal formattata -> 400
- Errore lato server -> 500
Controlli
- La rilevazione deve essere presente a database
- L’etag deve corrispondere con l’attuale etag
Eccezioni possibili
Input Body
Output Body
ENTITÀ
Le entità espresse sotto verranno riutilizzate nel documento
Input
- Variation<T>;
"Variation<T>":{ "value": <T>, "isChanged": "bool" }
- Changes<T>
"Changes<T>": { "value": <T>, "changeType": "nuovo | aggiornato | cancellato" } - Input Chiusura Rilevazione
"id" : "string (GUID)", "etag" : "string (GUID)", "datetime" : "DateTime (ISO8601 - nullable)"
- Input Chiave Etag
"id" : "string (GUID)", "etag" : "string (GUID)"
- Tipo Rilevazione
{ "id" : "string", "description" : "string", "detectionDescriptionEditable" : "No | Si", "detectProductsNotPresentInRegistry" : "No | Si", "detectProductsNotPresentInDetection" : "No | Si", "productManagementModeByWeight" : "RilevaDallaLettura | RilevaEChiediConferma | NonRilevare ", "quantityRequest" : "No | Facoltativa | Obbligatoria", "quantityRequestMode" : "SoloQuantita | SoloUnitaDiMisuraBase | LiberoDefaultUnitaBase | LiberoDefaultUnitaCommerciale | UnitaMisuraCommerciale", "warehouseRequest" : "No | Si", "expiredProductsRequest" : "SoloScadenza | ScadenzaEBollone", "priceRequest" : "No | Si", "merge" : "NonAccorpare | Accorpa | Sostituisci | ChiediAlUtente ", "sharing" : "No | Si", "references" : "No | Falcotativi | Obbligatori ", "notes" : "string", "status" : "Standard | Eliminato", "creatableFromApp" : "bool", "editableFromApp" : "bool", "type" : "string" }
- Contenuto Rilevazione
{ "id" : "string (GUID)", "detectionId" : "string (GUID)", "productId" : "string", "labelId" : "number", "detectedCode" : "string", "readDate" : "DateTime (ISO8601)", "unitOfMeasure" : "string", "detectedQuantity" : "number", "alternativeUnitOfMeasure" : "string", "detectedAlternativeQuantity" : "number", "lotID" : "string", "lot" : "string", "commercialUnitID" : "number", "detectedCommercialUnitQuantity" : "number", "notes" : "string", "competitorPrice" : "number", "dueDate" : "DateTime (ISO8601)", "stampApplied" : "bool", "noExpiringProductsPresent" : "bool", "productVerified" : "bool", "quantityToDetect" : "number", "detectedExpiredQuantity" : "number", "expiredQuantityToDetect" : "number", "expiryDays" : "number" }
- Aggregato Rilevazione
contenuto rilevazione{ "id" : "string (GUID)", "detectionRows" : [ \<ContenutoRilevazione\> ], "shopId" : "number", "warehouseId" : "number", "detectionTypeId" : "string", "description" : "string", "references" : "string", "startDate" : "DateTime (ISO8601)", "endDate" : "DateTime (ISO8601)", "dueDate" : "DateTime (ISO8601)", "exportDate" : "DateTime (ISO8601)", "notes" : "string", "etag" : "string (GUID)", "lockDevice" : "string" }
Output
- Base Output<T>;
NB!: Tutti gli output si baseranno su questo oggetto!{ "data":\<T\>, "errors": [ { "level": "string", "title": "string", "detail": "string(nullable)", "source": "string(nullable)", } ] }
- Tipo Rilevazione
{ "id": "string," "description" : "string", "detectionDescriptionEditable" : "No | Si", "detectProductsNotPresentInRegistry" : "No | Si", "detectProductsNotPresentInDetection" : "No | Si", "productManagementModeByWeight" : "RilevaDallaLettura | RilevaEChiediConferma | NonRilevare ", "quantityRequest" : "No | Facoltativa | Obbligatoria", "quantityRequestMode" : "SoloQuantita | SoloUnitaDiMisuraBase | LiberoDefaultUnitaBase | LiberoDefaultUnitaCommerciale | UnitaMisuraCommerciale", "warehouseRequest" : "No | Si", "expiredProductsRequest" : "SoloScadenza | ScadenzaEBollone", "priceRequest" : "No | Si", "merge" : "NonAccorpare | Accorpa | Sostituisci | ChiediAlUtente ", "sharing" : "No | Si", "references" : "No | Falcotativi | Obbligatori ", "notes" : "string", "status" : "Standard | Eliminato", "creatableFromApp" : "bool", "editableFromApp" : "bool", "type" : "string" }
- Aggregato Rilevazione
{ "id" : "string (GUID)", "detectionRows" : [ { "id" : "string (GUID)", "detectionId" : "string (GUID)", "productId" : "string", "detectedCode" : "string", "readDate" : "DateTime (ISO8601)", "unitOfMeasure" : "string", "detectedQuantity" : "number", "alternativeUnitOfMeasure" : "string", "detectedAlternativeQuantity" : "number", "lotId" : "string", "commercialUnitID" : "number", "detectedCommercialUnitQuantity" : "number", "notes" : "string", "competitorPrice" : "number", "dueDate" : "DateTime (ISO8601)", "stampApplied" : "bool", "noExpiringProductsPresent" : "bool", "productVerified" : "bool", "quantityToDetect" : "number", "detectedExpiredQuantity" : "number", "expiredQuantityToDetect" : "number", "expiryDays" : "number" } ], "shopId" : "number", "warehouseId" : "number", "detectionTypeId" : "string", "description" : "string", "references" : "string", "startDate" : "DateTime (ISO8601)", "endDate" : "DateTime (ISO8601)", "dueDate" : "DateTime (ISO8601)", "exportDate" : "DateTime (ISO8601)", "detectionStatus" : "string", "notes" : "string", "etag" : "string (GUID)", "lockDevice" : "string" }
ECCEZIONI
- In caso di eccezioni Base Output restituirà nel campo “Data” un array vuoto e valorizzerà i campi dell’oggetto “Errors”.
un esempio di eccezione può essere:{ "data": [], "errors": [ { "level": "Error", "title": "Chiusura Rilevazione: Il Numero Magazzino è mancante", "detail": null, "source": null } ] }