🎉 T-wiki 1.3.0 is released

BACK-ENDProgettiRilevazioniProtocollo

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
    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
    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
    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
        {
            "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
            }
        ]
    }