Vai al contenuto principale

Documentazione sull'API

David Andrade avatar
Scritto da David Andrade
Aggiornato oltre 2 settimane fa

Endpoint URI di base dell'API

L'endpoint per tutte le chiamate API è: https://app.prodsmart.com/

Autenticazione

L'API ProdSmart utilizza una semplice autorizzazione con token. Innanzitutto, l'utente crea un nuovo token (o ne acquisisce uno esistente). Dopo aver acquisito il token, è possibile utilizzarlo per accedere ad altre risorse nell'ambito del token.

Il token di autenticazione dura 2 ore e successivamente è necessario richiederne uno nuovo con le credenziali API.

Tipi di supporto

Le richieste con un corpo messaggio utilizzano un JSON standard per impostare o aggiornare gli stati delle risorse.

Stati degli errori

Vengono utilizzati i codici di stato comuni della risposta HTTP.

JSON non valido

Se viene visualizzata una risposta che indica "JSON non valido", verificare il payload JSON in uso in JSONLint.

Limite di frequenza

Le richieste API sono limitate a 120 richieste al minuto per azienda. Una volta superato il limite, le richieste successive otterranno una risposta con il codice di stato HTTP 429 Troppe richieste.

Inoltre, un'intestazione mostra quanti secondi che è necessario attendere prima di ripetere la richiesta:

Retry-After: <delay-seconds>

Procedure consigliate per gestire il limite di frequenza:

  • Distribuire le richieste in modo uniforme nel tempo per evitare picchi di utilizzo che possono dare luogo a risposte limitate

  • Sviluppare una logica che utilizzi le informazioni Retry-After per sapere quando è possibile ripetere la richiesta

  • Assicurarsi che ci siano integrazioni non necessarie in esecuzione in parallelo, perché tutte le integrazioni verranno conteggiate ai fini del limite

Formato data

Il formato dei campi della data dell'API segue la rappresentazione ISO 8601:

  • AAAA-MM-GGThh:mm:ssZ

In questo formato la lettera T funziona come delimitatore obbligatorio, mentre Z è un indicatore del fuso orario, se necessario. Quando Z non viene utilizzato, il fuso orario applicato alla data coincide con quello impostato dall'azienda Prodsmart. La Z sta per fuso orario Zero, in quanto c'è un offset pari a 0.

Esempio di utilizzo:

  • Se l'orario utilizzato è un'ora prima dell'UTC, l'indicatore di zona deve essere "+01:00", "+0100" o semplicemente "+01".

  • Se il fuso orario di un'azienda è impostato su -05:00 e la data inviata ha il seguente formato: 2020-07-20T09:15:15Z, la data verrà visualizzata in Prodsmart nel seguente modo: 07/20/2020 - 04:15:15

  • Se il formato inviato è: 2020-07-20T09:15:15, la data verrà visualizzata in Prodsmart nel seguente modo: 07/20/2020 - 09:15:15 (con fuso orario -05:00), il che significa che se il fuso orario di un utente è impostato su -04:00 verrà visualizzata in questo modo: 07/20/2020 - 10:15:15


Integrazioni ERP comuni

Gli scenari tipici per le integrazioni ERP sono principalmente la sincronizzazione degli ordini di produzione, del materiale grezzo e del catalogo dei prodotti.

Ordini di produzione

Quando si crea un ordine di produzione sul lato ERP, l'ERP deve inviare i dati dell'ordine di produzione in formato JSON all'API di Prodsmart, utilizzando il servizio di creazione degli ordini di produzione. Per aggiornare il lato ERP quando un ordine di produzione viene creato o aggiornato in Prodsmart, esistono due possibilità. L'ERP può essere contattato dall'esterno e in questo caso, in Prodsmart, è possibile configurare i webhook che verranno chiamati per creare, aggiornare ed eliminare gli ordini di produzione in Prodsmart. Se non è possibile contattare l'ERP dall'esterno, questo deve eseguire il polling attivo del servizio di elenco degli ordini di produzione per rilevare le modifiche.

Materiali grezzi

In genere, il materiale grezzo viene gestito dall'ERP (o da WMS), pertanto Autodesk offre un servizio (aggiornamento del materiale grezzo dei prodotti) che consente all'ERP o a WMS di aggiornare il materiale grezzo corrente di un prodotto a una determinata quantità. Talvolta, è possibile informare l'ERP o WMS sulle modifiche al materiale grezzo di produzione osservando le modifiche agli ordini di produzione, utilizzando i webhook o un servizio Web di materiale grezzo corrente (su richiesta).

Prodotti

Talvolta viene sincronizzato anche il catalogo dei prodotti. In questo caso, viene gestito sempre dall'ERP che può creare prodotti e operazioni utilizzando il servizio di creazione dei prodotti.


Webhook

I webhook sono disponibili per gli eventi relativi agli ordini di produzione nel menu delle integrazioni dell'applicazione. Per utilizzare questa funzionalità, aggiungere la richiamata dell'URL dell'endpoint con gli eventi di notifica che si desidera ascoltare. Autodesk si impegna a inviare notifiche tramite webhook non appena si verificano gli eventi nel sistema. Se si dispone di un numero elevato di ordini di produzione che sono stati modificati contemporaneamente, è possibile che venga inviata una serie di notifiche in un breve periodo di tempo. Attualmente Autodesk non supporta la ripetizione dei tentativi.

Intestazioni

Intestazioni del webhook

x-prodsmart-topic: "productionOrder/create"x-prodsmart-hmac-sha256: "c938fe31379c0d89b37468e1cae9e3aab2d56834"x-prodsmart-api-version: "1"x-prodsmart-webhook-uuid: "91cb972d-b476-4936-947c-4be471b9da5b"x-prodsmart-triggered-at: "2023-08-29T20:39:46.142Z"

Nota:

  • x-prodsmart-topic: consente di identificare l'argomento del webhook

  • xx-prodsmart-hmac-sha256: viene utilizzato per verificare l'origine del webhook

  • x-prodsmart-api-version: versione dell'API utilizzata per inviare il webhook

  • x-prodsmart-webhook-uuid: consente di identificare un webhook univoco

  • x-prodsmart-triggered-at: ora in cui è stato attivato il webhook

Come verificare il webhook?

  • Prima di rispondere con un codice di stato 200, è fondamentale verificare che il webhook sia stato creato da Prodsmart. Questa verifica si esegue calcolando una firma.

  • Ogni richiesta di webhook include un'intestazione specifica denominata x-prodsmart-hmac-sha1, codificata in formato base64. Questa intestazione viene generata utilizzando sia il segreto API che i dati inclusi nella richiesta del webhook.

  • Per verificare l'autenticità del webhook, l'utente deve calcolare una firma utilizzando lo stesso segreto API e i dati forniti.

  • Una volta ottenuta la firma calcolata, confrontarla con il valore trovato nell'intestazione x-prodsmart-hmac-sha1 della richiesta di webhook in entrata.

  • Se la firma calcolata corrisponde al valore nell'intestazione x-prodsmart-hmac-sha1, si può avere la certezza che il webhook è stato effettivamente inviato da Prodsmart e che si può procedere rispondendo con un codice di stato 200.

Ordini di produzione

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{    "products": [        {            "product": "V23076",            "quantity-ordered": 3500,            "observations": "",            "quantity-produced": 700        }    ],    "code": "Test Production Order",    "shipping": {        "code": "shipping 45"    },    "serial-number": "",    "description": "",    "start-date": "2023-04-20T09:15:15Z",    "due-date": "2023-05-16T17:15:15Z",    "workers-assigned": [        {            "number": 120        },        {            "number": 11        },        {            "number": 10        },        {            "number": 1        }    ],    "ended": false,    "machines": [        {            "code": "A32"        },        {            "code": "F1"        }    ],    "pieces-by-box": 20,    "status": "onschedule",    "running-status": "started",    "notes": "",    "id": 1}

Nota: Lo stato di esecuzione verrà eliminato quando viene eliminato l'ordine di produzione.

Timbro cartellino

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{    "id": 932015,    "date": "2022-05-19T14:35:30.000+01:00",    "notification": "punchClock_created",    "worker": {        "number": 0    },    "entry": 1}

  • valori possibili della voce:

    • 1 - In

    • 0 - Out

  • valori possibili della notifica:

    • punchClock_created

    • punchClock_updated

    • punchClock_deleted

Movimento di inventario di spedizione

Movimento di inventario di spedizione creato/aggiornato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "out",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "sales-order": {        "id": 555,        "code": "sales-order-code",        "client": {            "id": 777,            "code": "client-code"        },        "parameters": [{            "name": "parameterX",            "value": "valueX"        }]    },    "shipping": {        "id": 666,        "code": "shipping-code"    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valori possibili della notifica:

    • shipping_inventory_movement_created

    • shipping_inventory_movement_updated

Movimento di inventario di spedizione eliminato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 111}

  • valori possibili della notifica:

    • shipping_inventory_movement_deleted

Movimento di inventario di ricezione

Movimento di inventario di ricezione creato/aggiornato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "in",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "purchase-order": {        "id": 555,        "code": "purchase-order-code",        "supplier": "supplier-code",        "parameters": [{            "name": "parameterX",            "value": "valueX"        }]    },    "receiving": {        "id": 666,        "code": "receiving-code"    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valori possibili della notifica:

    • receiving_inventory_movement_created

    • receiving_inventory_movement_updated

Movimento di inventario di ricezione eliminato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 111}

  • valori possibili della notifica:

    • receiving_inventory_movement_deleted

Movimento di inventario interno

Movimento di inventario interno creato/aggiornato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "in",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valori possibili della notifica:

    • internal_inventory_movement_created

    • internal_inventory_movement_updated

Movimento di inventario interno eliminato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 111}

  • valori possibili della notifica:

    • internal_inventory_movement_deleted

Movimento di preparazione materiale

Preparazione materiale creata/aggiornata

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "production-order": {        "id": 333,        "code": "production-order-code"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valori possibili della notifica:

    • material_staging_created

    • material_staging_updated

Preparazione materiale eliminata

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 111}

  • valori possibili della notifica:

    • material_staging_deleted

Lotto

Lotto creato/aggiornato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

[{    "code": "lot-code",    "creation-date": "2022-02-21T00:00:00Z",    "expiration-date": "2022-02-21T00:00:00Z",    "supplier-lot": "supplier-lot-name",    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    }}]

  • valori possibili della notifica:

    • lot_created

    • lot_updated

Lotto eliminato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 111}

  • valori possibili della notifica:

    • lot_deleted

Tempo di inattività

Tempo di inattività creato/aggiornato/eliminato

  • Richiesta (applicazione/JSON)

    • Metodo: POST

    • Corpo

{  "id": 1,  "start-time": "2000-01-01T00:00:00.000+01:00",  "end-time": "2099-12-31T23:59:59.999+01:00",  "started-by": {},  "closed-by": {    "number": 0  },  "workers": [    {      "number": 0    }  ],  "machines": [],  "product": "",  "production-order": "",  "checked-out": true,  "downtime-type": "downtime1 type",  "time-spent": "08:00:00",  "event-type": "downTime_created"}

  • valori possibili della notifica:

    • downTime_created

    • downTime_updated

    • downTime_deleted

Modifica dei canali feed

Se per qualsiasi motivo non è possibile utilizzare i webhook, al momento Autodesk offre un'alternativa come stack di modifiche che memorizzerà le modifiche apportate nelle ultime 24 ore o dall'ultima richiesta di modifica tramite il servizio Web fornito. Per utilizzare questa funzionalità, è necessario creare un canale nel menu Integrazioni (https://app.prodsmart.com/admin/integrations). È possibile creare fino a 3 canali per organizzazione.

Sono disponibili sei tipi di canali di modifica:

  • DOWN_TIME

  • PRODUCT

  • PRODUCTION

  • PRODUCTION_ORDER

  • PUNCH_CLOCK

  • MATERIALE GREZZO

Come ottenere le modifiche

GET /api/changes/{channel}{?access_token}

Quando si chiama questo servizio, si ottiene un elenco di entità che sono state modificate perché sono state create/aggiornate/eliminate o perché il loro stato è cambiato. Si riceverà una serie con lo stato corrente delle entità (ordinate a partire dalle modifiche meno recenti a quelle più recenti), con un massimo di 25 per chiamata al servizio. Le entità ottenute dal servizio vengono rimosse dalla pila (fino a quando non vengono forniti nuovi aggiornamenti). Se non vengono apportate modifiche, il servizio restituisce una serie vuota ("[]").

URI di esempio

GET /api/changes/channel?access_token=

Parametri URI

canale

stringa (obbligatorio)

il canale a cui accedere

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

lavoratori

valore booleano (facoltativo)

mostra l'elenco dei lavoratori nella risposta al canale Ordini di produzione

Richiesta

Content-Type: application/json

TEMPI DI INATTIVITÀ

[    {        "id": 1435048,        "start-time": "2022-04-22T14:47:00.000+01:00",        "end-time": "2022-04-23T00:00:00.000+01:00",        "started-by": {},        "closed-by": {            "number": 1        },        "workers": [            {                "number": 1            }        ],        "machines": [],        "product": "",        "production-order": "",        "checked-out": true,        "downtime-type": "Maintenance",        "time-spent": "09:13:00",        "event-type": "downTime_deleted",    }]

Nota: Il campo event-type è presente solo quando viene eliminato un tempo di inattività.

ORDINI DI PRODUZIONE

[    {        "products": [            {                "product": "RN2",                "quantity-ordered": 30.0,                "observations": "",                "quantity-produced": 0.0            }        ],        "code": "Production Order 123",        "description": "",        "shipping": {},        "start-date": "2022-04-21T00:00:00.000+01:00",        "due-date": "2022-04-28T00:00:00.000+01:00",        "ended": false,        "machines": [],        "notes": "",        "is-active": true,        "running-status": "notstarted",        "status": "onschedule",        "material-staging-complete": false,        "id": 1379919    }]

Nota: Il campo running-status ha il valore deleted quando si elimina un ordine di produzione.

PRODOTTI

[    {        "code": "V23076",        "name": "V23076",        "observations": "",        "section": null,        "unit-cost": null,        "unit-price": null,        "families": [],        "operations": [],        "components": [],        "custom-fields": [],        "notification": null,        "serializable": null,        "shipping-package-types": [],        "external-stock": null,        "stock-max": null,        "min-quantity-reorder": null,        "quantity-multiple": null,        "scrap-allowance": null,        "shelf-life": null,        "parameters": []    }]

Nota: Il campo notification avrà il valore product_deleted quando viene eliminato un prodotto.

RECORD DI PRODUZIONE

[    {        "production-order": {            "code": "P1 - Week 14",            "id": 3641        },        "operation": {            "code": "CUT3",            "product": "P1"        },        "worker": {            "number": 6        },        "machine": {            "code": "WJC"        },        "quantity": 0.0,        "checked-out": false,        "produced-waste": [],        "consumptions": [],        "total-time-factor": 1.0,        "rework": false,        "work-time": "00H00m00s",        "start-time": "2022-04-22T14:43:00.000+01:00",        "end-time": "2022-04-22T14:43:00.000+01:00",        "status": "deleted",        "show-check-in-checklist-and-c-f": false,        "id": 12952533    }]

Nota: Il campo status sarà presente solo quando viene eliminato un record di produzione.

TIMBRO CARTELLINI

[  {      "id": 932015,      "date": "2022-05-19T14:35:30.000+01:00",      "notification": "punchClock_deleted",      "worker": {          "number": 0      },      "entry": 1  }]

Nota: Il campo notification sarà presente solo quando viene eliminata una voce Timbro cartellino.

MATERIALE GREZZO

[    {        "product-code": "P1",        "stock": 2395.0,        "lot": [            {                "code": "Lot 0086",                "stock": 500.0            }        ]    }]

Fornitore

Risorse per i fornitori dell'API Prodsmart.

FORNITORE

Un singolo oggetto Fornitore.

La risorsa Fornitore presenta i seguenti attributi:

  • id (fornito)

  • code (stringa, obbligatorio, univoco): codice del fornitore

  • name (stringa, obbligatorio): nome del fornitore

  • number (stringa, facoltativo): partita IVA del fornitore

  • expiration-date (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di scadenza del fornitore

  • addresses (serie, facoltativo)

  • code (stringa, obbligatorio, univoco): codice dell'indirizzo

  • name (stringa, facoltativo): nome dell'indirizzo

  • address (stringa, obbligatorio): riga dell'indirizzo

  • city (stringa, facoltativo): indirizzo della città

  • post-code (stringa, facoltativo): codice postale dell'indirizzo

  • state (stringa, facoltativo): stato/regione dell'indirizzo

  • country (stringa, obbligatorio): codice paese dell'indirizzo

  • default (valore booleano, facoltativo - impostato per default su false): se è true, è l'indirizzo di default del fornitore

  • contacts (serie, facoltativo)

  • phone-number (stringa, obbligatorio se non è presente alcun indirizzo e-mail): numero di telefono del contatto

  • e-mail (stringa, obbligatorio se non è presente un numero di telefono): e-mail del contatto

  • name (stringa, facoltativo): nome del contatto

  • default (valore booleano, facoltativo - impostato per default su false): se è true, è il contatto di default del fornitore

Regole di default per indirizzi/contatti:

  • Sia i contatti che gli indirizzi possono avere un solo contatto o indirizzo di default, rispettivamente

  • Se un fornitore ha più indirizzi, uno degli indirizzi deve essere quello di default

  • Se un fornitore ha più contatti, uno dei contatti deve essere quello di default

  • Durante la creazione/aggiornamento di un fornitore, se non viene fornito alcun contatto/indirizzo di default, il primo contatto/indirizzo sarà quello di default

Creazione di un fornitore

POST /api/suppliers{?access_token}

Stato: disponibile

Per creare un fornitore specificare un hash JSON degli attributi per il nuovo fornitore. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

POST /api/suppliers?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "email": "supplier@supplier.com", "phone-number": "12345678", "name": "Contact1", "default": true }, { "email": "supplier2@supplier2.com", "phone-number": "123456789", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "city": "Lisbon", "address": "Address 1 Street", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "city": "San Francisco", "address": "Address 1 Street", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 201

Corpo

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di fornitori

GET /api/suppliers{?access_token}

Come elencare i fornitori. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 fornitori per pagina.

URI di esempio

GET /api/suppliers?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

id

numero (facoltativo)

elenco fornitori filtrati in base all'ID

code

stringa (facoltativo)

elenco fornitori filtrati in base al codice

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[ { "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }, { "id": 987356124, "code": "Supplier2", "name": "Supplier2", "number": "213457", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier3@supplier3.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier4@supplier4.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address3", "name": "Address3", "address": "Address 3 Street", "city": "Paris", "post-code": "111-111", "state": "Paris", "country": "FR", "default": true }, { "code": "Address4", "name": "Address4", "address": "Address 4 Street", "city": "Madrid", "post-code": "111-111", "state": "Madrid", "country": "ES", "default": false } ] } ]

Risposta 400Show

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Recupero di un fornitore

GET /api/suppliers/{id}{?access_token}

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/suppliers/id?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

id

numerico (obbligatorio)

ID fornitore

Richiesta

Intestazioni

Content-Type: application/json

Risposta 201

Corpo

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Aggiornamento di un fornitore

PUT /api/suppliers/{id}{?access_token}

Per aggiornare un fornitore specificare un hash JSON degli attributi per il nuovo fornitore.

Contatti

  • I contatti del fornitore specificati sostituiranno i contatti correnti.

  • Se viene specificato un contatto con lo stesso nome di un contatto esistente, i valori del contatto con tale nome verranno sostituiti da quelli specificati.

  • Se non viene specificato alcun contatto, i contatti esistenti verranno rimossi.

Indirizzi

  • Gli indirizzi specificati sostituiranno gli indirizzi correnti.

  • Se viene fornito un indirizzo con lo stesso codice di un indirizzo esistente, i valori dell'indirizzo con tale codice saranno sostituiti da quelli specificati.

  • Se non viene specificato alcun indirizzo, gli indirizzi esistenti verranno rimossi.

  • Se ad un indirizzo sono associate delle entità, la richiesta non verrà eseguita poiché non è possibile rimuovere l'indirizzo.

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

PUT /api/suppliers/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID cliente

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 201

Corpo

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Rimozione di un fornitore

DELETE /api/suppliers/{id}{?access_token}

URI di esempio

DELETE /api/suppliers/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID fornitore.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Corpo

Supplier was deleted

Risposta 412

Corpo

It's not possible to delete this supplier. It has dependent entities.

Cliente

Risorse Cliente dell'API ProdSmart.

CLIENTE

Un singolo oggetto Cliente.

La risorsa Cliente presenta i seguenti attributi:

  • id (fornito)

  • code (stringa, obbligatorio, univoco): codice del cliente

  • name (stringa, obbligatorio): nome del cliente

  • number (stringa, facoltativo): numero del cliente

  • phone-number (stringa, facoltativo): numero di telefono del cliente

  • e-mail (stringa, facoltativo): e-mail del cliente

  • addresses (serie, facoltativo)

  • code (stringa, obbligatorio, univoco): codice dell'indirizzo

  • name (stringa, facoltativo): nome dell'indirizzo

  • address (stringa, obbligatorio): riga dell'indirizzo

  • city (stringa, facoltativo): indirizzo della città

  • post-code (stringa, facoltativo): codice postale dell'indirizzo

  • state (stringa, facoltativo): stato/regione dell'indirizzo

  • country (stringa, obbligatorio): codice paese dell'indirizzo

  • default (valore booleano, facoltativo - impostato per default su false): se è true, è l'indirizzo di default del cliente

  • contacts (serie, facoltativo)

  • phone-number (stringa, obbligatorio se non è presente alcun indirizzo e-mail): numero di telefono del contatto

  • e-mail (stringa, obbligatorio se non è presente un numero di telefono): e-mail del contatto

  • name (stringa, facoltativo): nome del contatto

  • default (valore booleano, facoltativo - impostato per default su false): se è true, è il contatto di default del cliente

Regole di default per indirizzi/contatti:

  • Sia i contatti che gli indirizzi possono avere un solo contatto o indirizzo di default, rispettivamente

  • Se un cliente ha più indirizzi, uno degli indirizzi deve essere quello di default

  • Se un cliente ha più contatti, uno dei contatti deve essere quello di default

  • Durante la creazione/aggiornamento di un cliente, se non viene fornito alcun contatto/indirizzo di default, il primo contatto/indirizzo sarà quello di default

Creazione di un cliente

POST /api/clients{?access_token}

Per creare un cliente specificare un hash JSON degli attributi per il nuovo cliente. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo cliente. In futuro, se la richiesta è una serie anziché una risorsa, tutti gli elementi della serie verranno salvati.

URI di esempio

POST /api/clients?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "email": "supplier@supplier.com", "phone-number": "12345678", "name": "Contact1", "default": true }, { "email": "supplier2@supplier2.com", "phone-number": "123456789", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "city": "Lisbon", "address": "Address 1 Street", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "city": "San Francisco", "address": "Address 1 Street", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 201

Corpo

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di clienti

GET /api/clients{?access_token}

Come elencare i clienti. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 clienti per pagina.

URI di esempio

GET /api/clients?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

id

numero (facoltativo)

elenco di clienti filtrati in base all'ID

code

stringa (facoltativo)

elenco di clienti filtrati in base al codice

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[ { "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }, { "id": 987356124, "code": "Supplier2", "name": "Supplier2", "number": "213457", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier3@supplier3.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier4@supplier4.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address3", "name": "Address3", "address": "Address 3 Street", "city": "Paris", "post-code": "111-111", "state": "Paris", "country": "FR", "default": true }, { "code": "Address4", "name": "Address4", "address": "Address 4 Street", "city": "Madrid", "post-code": "111-111", "state": "Madrid", "country": "ES", "default": false } ] } ]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Recupero di un cliente

GET /api/clients/{id}{?access_token}

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/clients/id?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

id

numerico (obbligatorio)

ID cliente

Richiesta

Intestazioni

Content-Type: application/json

Risposta 201

Corpo

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Aggiornamento di un cliente

PUT /api/clients/{id}{?access_token}

Per aggiornare un cliente specificare un hash JSON degli attributi per il nuovo cliente.

Contatti

  • I contatti del fornitore specificati sostituiranno i contatti correnti.

  • Se viene specificato un contatto con lo stesso nome di un contatto esistente, i valori del contatto con tale nome verranno sostituiti da quelli specificati.

  • Se non viene specificato alcun contatto, i contatti esistenti verranno rimossi.

Indirizzi

  • Gli indirizzi specificati sostituiranno gli indirizzi correnti.

  • Se viene fornito un indirizzo con lo stesso codice di un indirizzo esistente, i valori dell'indirizzo con tale codice saranno sostituiti da quelli specificati.

  • Se non viene specificato alcun indirizzo, gli indirizzi esistenti verranno rimossi.

  • Se ad un indirizzo sono associate delle entità, la richiesta non verrà eseguita poiché non è possibile rimuovere l'indirizzo.

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

PUT /api/clients/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID cliente

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "Supplier",  "name": "Supplier",  "number": "213456",  "expiration-date": "2020-01-01T00:00:00Z",   "contacts": [    {      "phone-number": "12345678",      "email": "supplier@supplier.com",      "name": "Contact1",      "default": true    },    {      "phone-number": "123456789",      "email": "supplier2@supplier2.com",      "name": "Contact2",      "default": false    }  ],  "addresses":[    {      "code": "Address1",      "name": "Address1",      "address": "Address 1 Street",      "city": "Lisbon",      "post-code": "111-111",      "state": "Lisbon",      "country": "PT",      "default": true    },    {      "code": "Address2",      "name": "Address2",       "address": "Address 1 Street",      "city": "San Francisco",      "post-code": "111-111",      "state": "California",      "country": "US",      "default": false    }  ]}

Risposta 201

Corpo

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Rimozione di un cliente

DELETE /api/clients/{id}{?access_token}

URI di esempio

DELETE /api/clients/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID cliente

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Corpo

Client was deleted

Risposta 412

Corpo

It's not possible to delete this client. It has dependent entities.

Ordine di vendita

Risorse ClientOrder dell'API ProdSmart.

ORDINE DI VENDITA

Un singolo oggetto Ordine di vendita. La risorsa Ordine di vendita è una delle risorse più importanti dell'API ProdSmart.

La risorsa Ordine di vendita presenta i seguenti attributi:

  • id (fornito)

  • code (stringa, obbligatorio): codice ordine di vendita

  • client (stringa, facoltativo): codice del cliente

  • observations (stringa, facoltativo): osservazioni sull'ordine di vendita

  • products (serie, obbligatorio, non vuoto)

    • code (stringa, obbligatorio, univoco): codice del prodotto

    • quantity (double, obbligatorio, >0): quantità ordinata

    • due-date (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di scadenza della spedizione

    • requested-date (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di richiesta della spedizione

    • location (stringa, facoltativo): posizione, se multisito

    • price (double, facoltativo): prezzo del prodotto

  • parameters (stringa, facoltativo): contiene un attributo specifico dell'ordine di vendita

Creazione di un ordine di vendita

POST /api/client-order/{?access_token}

Per creare un ordine di vendita, fornire un hash JSON degli attributi per il nuovo ordine di vendita. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo ordine di vendita. In futuro, se la richiesta è una serie anziché una risorsa, tutti gli elementi della serie verranno salvati.

URI di esempio

POST /api/client-order/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "billing-address": "San Francisco",  "delivery-address": "Delivery address code",  "location": "location code",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "delivery-address":"San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price":502,      "delivery-address":"Los Angeles"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Regular"    }  ]}

Risposta 201

Corpo

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "billing-address":"San Francisco",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "delivery-address":"San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price":502,      "delivery-address":"Los Angeles"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Regular"    }  ]}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di ordini di vendita

GET /api/client-order/{?access_token}

Per elencare gli ordini di vendita. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 ordini di vendita per pagina.

URI di esempio

GET /api/client-order/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

due-date-before

data (facoltativo)

elenco di ordini di vendita con data di scadenza precedente a questa

due-date-after

data (facoltativo)

elenco di ordini di vendita con data di scadenza successiva a questa

client

stringa (facoltativo)

codice macchina

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "id": 987356123,    "code": "CO123 - Week 47",    "creation-date": "2022-04-19T08:30:01Z",    "client": "Client X",    "observations": "Ready next week",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 100,        "due-date": "2019-08-16T17:15:15Z",        "requested-date": "2019-01-16T15:19:54Z",        "price": 200.3      },      {        "code": "V23077",        "quantity": 99,        "due-date": "2016-08-16T17:15:15Z",        "requested-date": "2019-01-16T15:19:54Z"      }    ],    "parameters": [      {        "name": "Sales Order Type",        "value": "Regular"      }    ]  },  {    "id": 987356124,    "code": "CO123 - Week 48",    "client": "Client X",    "observations": "",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 70,        "due-date": "2019-08-23T18:00:00Z",        "requested-date": "2019-01-16T15:19:54Z",        "price": 140      },      {        "code": "V23077",        "quantity": 69,        "due-date": "2016-08-23T18:00:00Z",        "requested-date": "2019-01-16T15:19:54Z"      }    ],    "parameters": [      {        "name": "Sales Order Type",        "value": "Priority"      }    ]  }]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Recupero di un ordine di vendita

GET /api/client-order/{id}{?access_token}

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/client-order/id?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

id

numerico (obbligatorio)

ID ordine di vendita

Richiesta

Intestazioni

Content-Type: application/json

Risposta 201

Corpo

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Priority"    }  ]}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Aggiornamento di un ordine di vendita

PUT /api/client-order/{?access_token}

Per aggiornare un ordine di vendita, fornire un hash JSON degli attributi per il nuovo ordine di vendita. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

PUT /api/client-order/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "billing-address": "San Francisco",  "location": "location code",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "billing-address": "San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "billing-address": "Los Angeles"    }  ]}

Risposta 201

Corpo

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "billing-address": "San Francisco",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "billing-address": "San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "billing-address": "Los Angeles"    }  ]}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Rimozione di un ordine di vendita

DELETE /api/client-order/{id}{?access_token}

URI di esempio

DELETE /api/client-order/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di vendita

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Corpo

Client order was deleted

Risposta 409

Corpo

Client order already has production orders created or other entities associated, cannot be removed.

Ordine d'acquisto

Risorse Ordine di acquisto dell'API ProdSmart.

ORDINE DI ACQUISTO

Un singolo oggetto Ordine di acquisto. La risorsa Ordine di acquisto è una delle risorse più importanti dell'API ProdSmart.

La risorsa Ordine di acquisto presenta i seguenti attributi:

  • id (fornito)

  • code (stringa, obbligatorio): codice dell'ordine fornitore

  • supplier (stringa, facoltativo): codice del fornitore

  • billing-address (stringa, facoltativo): indirizzo di fatturazione

  • observations (stringa, facoltativo): osservazioni sull'ordine di acquisto

  • products (serie, obbligatorio, non vuoto)

    • code (stringa, obbligatorio, univoco): codice del prodotto

    • quantity (double, obbligatorio, >0): quantità richiesta

    • due-date (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di scadenza della ricezione

    • requested-date (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di richiesta della ricezione

    • cost (double, facoltativo): costo del prodotto

    • uom (stringa, facoltativo): unità di misura del prodotto

  • delivery-address (stringa, facoltativo): indirizzo di consegna della ricezione

  • parameters (stringa, facoltativo): parametri dell'ordine di acquisto

  • approval-status (stringa, facoltativo): bozza, in revisione, approvato, confermato, rifiutato

Creazione di un ordine di acquisto

POST /api/purchase-orders/{?access_token}

Per creare un ordine di acquisto, specificare un hash JSON degli attributi per il nuovo ordine di acquisto. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo ordine di acquisto. In futuro, se la richiesta è una serie anziché una risorsa, tutti gli elementi della serie verranno salvati.

URI di esempio

POST /api/purchase-orders/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "billing-address": "Lisbon",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "uom": "Box",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "approval-status": "draft",  "active": true}

Risposta 201

Intestazioni

Content-Type: application/json

Corpo

{  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "billing-address": "Lisbon",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "uom": "Box",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "approval-status": "draft",  "active": true}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Recupero di un ordine di acquisto

GET /api/purchase-orders/{id}{?access_token}

Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/purchase-orders/id?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

id

numerico (obbligatorio)

ID ordine di acquisto

Richiesta

Intestazioni

Content-Type: application/json

Risposta 201

Corpo

{  "id": 987356123,  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Aggiornamento di un ordine di acquisto

PUT/api/purchase-orders/{id}{?access_token}

Per aggiornare un ordine di acquisto, specificare un hash JSON degli attributi per il nuovo ordine di acquisto. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

PUT /api/purchase-orders/id?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

id

numerico (obbligatorio)

ID ordine di acquisto

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Risposta 201

Corpo

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Rimozione di un ordine di acquisto

DELETE /api/purchase-orders/{id}{?access_token}

URI di esempio

DELETE /api/purchase-orders/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di acquisto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Corpo

Purchase order was deleted

Risposta 409

Corpo

Purchase order already has production orders created or other entities associated, cannot be removed.

Elenco degli ordini di acquisto

GET /api/purchase-orders{?access_token}

Come elencare gli ordini di acquisto. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 ordini di vendita per pagina.

URI di esempio

GET /api/purchase-orders?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

id

numero (facoltativo)

elenco ordini di acquisto filtrati in base all'ID ordine di acquisto

code

stringa (facoltativo)

elenco ordini di acquisto filtrati in base al codice ordine di acquisto

due-date-before

data (facoltativo)

elenco di ordini di acquisto con data di scadenza precedente a questa

due-date-after

data (facoltativo)

elenco di ordini di acquisto con data di scadenza successiva a questa

fornitore

stringa (facoltativo)

elenco ordini di acquisto filtrati in base al codice fornitore

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "id": 987356123,    "code": "PO123 - Week 47",    "creation-date": "2023-04-19T08:30:01Z",    "supplier": "Supplier X",    "observations": "Ready next week",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 100,        "due-date": "2023-08-16T17:15:15Z",        "requested-date": "2023-01-16T15:19:54Z",        "cost": 200.3      },      {        "code": "V23077",        "quantity": 99,        "due-date": "2023-08-16T17:15:15Z",        "requested-date": "2023-01-16T15:19:54Z"      }    ]  },  {    "id": 987356124,    "code": "PO123 - Week 48",    "supplier": "Supplier X",    "observations": "",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 70,        "due-date": "2023-08-23T18:00:00Z",        "requested-date": "2023-01-16T15:19:54Z",        "cost": 140      },      {        "code": "V23077",        "quantity": 69,        "due-date": "2023-08-23T18:00:00Z",        "requested-date": "2023-01-16T15:19:54Z"      }    ]  }]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Ordine di produzione

Risorse Ordine di produzione dell'API ProdSmart.

ORDINE DI PRODUZIONE

Un singolo oggetto Ordine di produzione. La risorsa Ordine di produzione è una delle risorse più importanti dell'API ProdSmart. Rappresenta l'ordine di gestione per la produzione di una quantità predeterminata di prodotti da parte di lavoratori definiti durante un periodo prestabilito.

La risorsa Ordine di produzione presenta i seguenti attributi:

  • id (fornito)

  • code (stringa, obbligatorio): codice dell'ordine di produzione

  • start-date (data, obbligatorio, formato AAAA-MM-GGTHH:MM:SSZ): data di pianificazione dell'inizio dell'ordine di produzione

  • due-date (data, obbligatorio, formato AAAA-MM-GGTHH:MM:SSZ): data di scadenza dell'ordine di produzione

  • products (serie, obbligatorio, non vuoto): prodotti e quantità ordinate

  • product (stringa, obbligatorio, univoco): codice del prodotto

  • quantity-ordered (numero intero, obbligatorio, >0): quantità ordinata

  • observations (facoltativo): nota relativa a questo prodotto

  • quantity-produced (numero intero, fornito, >0): quantità prodotta

  • description (facoltativo): descrizione per questo ordine di produzione

  • shipping (facoltativo): codice di spedizione per questo ordine

  • workers-assigned (serie, facoltativo) -

  • number: numero del lavoratore

  • machines (serie, facoltativo)

  • code: codice macchina

  • serial-number (facoltativo)

  • description (facoltativo)

  • note (facoltativo)

  • status (fornito): pianificato (prima di start_date e completezza = 0), in pianificazione (prima di end_date e completezza < 100%), in ritardo (dopo end_date completezza < 100%), completato (completezza >= 100%)

  • running-status (fornito): non avviato (nessuna produzione), avviato (con produzioni), chiuso (chiuso manualmente o per completamento), archiviato (archiviato manualmente)

L'ID dello stato viene assegnato dall'API ProdSmart al momento della creazione.

Recupero di un ordine di produzione

GET /api/production-orders/{id}{?access_token}

Per recuperare un ordine di produzione, è sufficiente eseguire una richiesta GET con l'ID dell'ordine di produzione. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/production-orders/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

lavoratori

valore booleano (facoltativo)

mostrare l'elenco di lavoratori nella risposta

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

{  "products": [    {      "product": "V23076",      "quantity-ordered": 3500,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location":    {      "id": "location id",      "code": "location code",      "name": "location name"    },  "material-staging-complete": true,  "id": 3990}

Aggiornamento/sostituzione di un ordine di produzione

PUT /api/production-orders/{id}{?access_token}

Per aggiornare un ordine di produzione, è sufficiente eseguire una richiesta PUT con l'ID dell'ordine di produzione. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

PUT /api/production-orders/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

lavoratori

valore booleano (facoltativo)

mostrare l'elenco di lavoratori nella risposta

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "products": [    {      "product": "V23076",      "quantity-ordered": 4000,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location": "location code",  "material-staging-complete": true,  "id": 3990}

Risposta 200

Corpo

{  "products": [    {      "product": "V23076",      "quantity-ordered": 4000,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location":    {      "id": "location id",      "code": "location code",      "name": "location name"    },  "material-staging-complete": true,  "id": 3990}

Rimozione di un ordine di produzione

DELETE /api/production-orders/{id}{?access_token}

URI di esempio

DELETE /api/production-orders/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Corpo

Production order was deleted

Creazione di un ordine di produzione

POST /api/production-orders/{?access_token}

Per creare un ordine di produzione specificare un hash JSON degli attributi per il nuovo ordine di produzione. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo ordine di produzione. In futuro, se la richiesta è una serie anziché una risorsa, tutti gli elementi della serie verranno salvati.

URI di esempio

POST /api/production-orders/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

lavoratori

valore booleano (facoltativo)

mostrare l'elenco di lavoratori nella risposta

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "products": [    {      "product": "productExample",      "quantity-ordered": 4500,      "observations": ""    }  ],  "code": "exampleCode",  "shipping": "shippingExample",  "serial-number": "",  "description": "",  "start-date": "2023-07-20T09:15:15Z",  "due-date": "2023-08-16T17:15:15Z",  "parameters": [    {      "name": "Custom Field Name",      "value": "123"    },    {      "name": "Custom Field Name 2",      "value": "456"    }  ],  "workers-assigned": [    {      "number": 1    },    {      "number": 3    }  ],  "worker-groups": [    {      "name": "All"    }  ],  "ended": false,  "machines": [    {      "code": "exampleMachine"    },    {      "code": "F1"    }  ],  "pieces-by-box": 20,  "notes": "",  "location": "location code",  "active": true}

Risposta 201

Corpo

{    "products": [      {        "product": "productExample",        "quantity-ordered": 4500,        "observations": "",        "quantity-produced": 0      }    ],    "code": "exampleCode",    "shipping": "shippingExample",    "serial-number": "",    "description": "",    "start-date": "2023-07-20T09:15:15Z",    "due-date": "2023-08-16T17:15:15Z",    "workers-assigned": [      { "number": 1 },      { "number": 2 }      { "number": 3 }      { "number": 4 }    ],    "ended": false,    "machines": [      {"code": "exampleMachine"},      {"code": "F1"}    ],    "pieces-by-box": 20,    "status": "scheduled",    "running-status": "notstarted",    "notes": "",    "location":      {        "id": "location id",        "code": "location code",        "name": "location name"      },    "active": true,    "id": 11110}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco degli ordini di produzione

GET /api/production-orders/{?access_token}

Come elencare gli ordini di produzione. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 ordini di produzione per pagina.

URI di esempio

GET /api/production-orders/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

start-date-before

data (facoltativo)

elenco ordini di produzione con data di inizio precedente a questa

start-date-after

data (facoltativo)

elenco ordini di produzione con data di inizio successiva a questa

due-date-before

data (facoltativo)

elenco ordini di produzione con data di scadenza precedente a questa

due-date-after

data (facoltativo)

elenco ordini di produzione con data di scadenza successiva a questa

running-status

stringa (facoltativo)

non avviato, avviato, chiuso, archiviato

attivo

valore booleano (facoltativo)

elenco dei soli ordini di produzione attivi (true) o non attivi (false)

prodotto

stringa (facoltativo)

codice prodotto

macchina

stringa (facoltativo)

codice macchina

lavoratori

valore booleano (facoltativo)

mostrare l'elenco di lavoratori nella risposta

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "products": [      {        "product": "exampleProduct",        "quantity-ordered": 4500,        "observations": "",        "quantity-produced": 0      }    ],    "code": "exampleCode",    "shipping": "Shipping 45",    "serial-number": "",    "description": "",    "start-date": "2023-07-20T09:15:15Z",    "due-date": "2023-08-16T17:15:15Z",    "workers-assigned": [      {        "number": 10      },      {        "number": 1      }    ],    "ended": false,    "machines": [      {        "code": "exampleMachine"      },      {        "code": "F1"      }    ],    "pieces-by-box": 20,    "status": "scheduled",    "running-status": "notstarted",    "notes": "",    "location":      {        "id": "location id",        "code": "location code",        "name": "location name"      },    "active": true,    "id": 8763990  }]

Notifica di un problema relativo all'ordine di produzione

POST /api/production-orders/{id}/notify{?access_token}

Servizio che invia un breve messaggio sul feed e aggiunge un messaggio sull'ordine di produzione.

  • short-message (stringa, obbligatorio): messaggio pubblicato nel feed, lunghezza massima 140 caratteri

  • message (stringa,facoltativo): messaggio aggiunto alla sezione delle note nel PO

URI di esempio

POST /api/production-orders/id/notify?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "short-message": "example",  "message": "complete message "}

Risposta 200

Attivazione di un ordine di produzione

POST /api/production-orders/{id}/activate{?access_token}

Servizio che attiva l'ordine di produzione.

URI di esempio

POST /api/production-orders/id/activate?access_token=

Parametri URI

id

numerico (obbligatorio)

ID ordine di produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{}

Risposta 200

Risposta 204

Corpo

Production Order was already active

Risposta 405

Corpo

Production Order was closed or archived and cannot be activated

Prodotti

Risorse del prodotto dell'API ProdSmart.

PRODOTTO

Un singolo oggetto Prodotto. La risorsa Prodotto è una delle risorse più importanti dell'API ProdSmart. Rappresenta i prodotti di una fabbrica e contiene le operazioni necessarie per la produzione. Questo metodo crea nuovi prodotti e le relative operazioni. Può essere utilizzato anche

La risorsa Prodotto presenta i seguenti attributi:

  • code (stringa, obbligatorio): codice del prodotto

  • name (stringa, obbligatorio): nome del prodotto

  • section (stringa, facoltativo)

  • families (serie, facoltativo)

  • operations (serie, facoltativo): operazioni per la produzione del prodotto

    • code (stringa, obbligatorio): codice dell'operazione

    • name (stringa, obbligatorio): nome dell'operazione

    • waste (serie, facoltativo)

    • task-durations (serie, facoltativo, max:1)

      • durata (tempo, facoltativo, ad esempio formato "10H59m59s"): tempo medio di esecuzione dell'operazione, in teoria

      • duration-customer (tempo, facoltativo, ad esempio formato "10H59m59s"): tempo previsto nel budget

      • ratio-quantity (double, facoltativo, default: 1.0): volume prodotto in ogni istanza di questa operazione

    • times-per-product (numero intero, facoltativo, default: 1): numero di volte in cui deve essere eseguita l'operazione per completare un'unità di prodotto

    • custom-fields (serie, facoltativo, deve esistere nel sistema): campi personalizzati da aggiungere all'operazione

      • name (stringa, obbligatorio): nome del campo personalizzato, già creato nel sistema

    • machines (serie, facoltativo, deve esistere nel sistema): macchine che possono essere utilizzate per eseguire l'operazione

      • code (stringa, obbligatorio): codice macchina, già creato nel sistema

    • disabled (valore booleano, facoltativo): disabilita l'operazione

    • optional (valore booleano, facoltativo): imposta l'operazione come facoltativa

    • recovery (valore booleano, facoltativo): imposta l'operazione come recupero

    • no-time (valore booleano, facoltativo): non registra i tempi di produzione

    • no-quantity (valore booleano, facoltativo): non registra la quantità di produzione

    • as-team (valore booleano, facoltativo): operazione da eseguire come team

    • max-waste-threshold (double, facoltativo):- rapporto massimo di sprechi da consentire

I campi non presenti nella richiesta verranno impostati con i valori di default. Quando si utilizza questo metodo per prodotti/operazioni esistenti, i campi non presenti verranno considerati eliminazioni.

Recupero di un prodotto

GET /api/products/{code}{?access_token}

Per recuperare un prodotto, è sufficiente eseguire una richiesta GET con il codice del prodotto. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/products/code?access_token=

Parametri URI

code

Stringa (obbligatorio)

Codice prodotto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

{  "code": "P11",  "name": "Product 11",  "section": null,  "families": null,  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": null,      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "custom-fields": null,      "machines": null,      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "max-waste-threshold": null,      "section": {        "name": "specialsection"      },      "id": 100    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "label": {    "code": "labelCode"  },  "serializable": true,  "id": 24}

Risposta 404

Corpo

If product with the provided code doesn't exist.

Creazione di un prodotto

POST /api/products{?access_token}

Per creare un prodotto, specificare un hash JSON degli attributi per il nuovo prodotto e le relative operazioni. Questa azione richiede un access_token con ambito productions_write. È possibile creare più operazioni contemporaneamente.

URI di esempio

POST /api/products?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": false,      "no-time": false,      "no-quantity": false,      "as-team": false,      "multi-po": false,      "print-production-barcode": false,      "prepare-batch-order": false,      "section": {        "name": "CUT"      }    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true}

Risposta 201

Corpo

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }      "id":560    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true  "id":120}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Aggiornamento di un prodotto

PUT /api/products/{code}{?access_token}

Per aggiornare un prodotto, specificare un codice e un hash JSON degli attributi per il prodotto esistente e le relative operazioni. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo prodotto, ma è possibile creare più operazioni contemporaneamente.

URI di esempio

PUT /api/products/code?access_token=

Parametri URI

code

stringa (obbligatorio)

Codice prodotto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true}

Risposta 201

Corpo

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }      "id":560    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true  "id":120}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Eliminazione di un prodotto

DELETE /api/products/{code}{?access_token}

Per eliminare un prodotto, specificare il codice del prodotto.

URI di esempio

DELETE /api/products/code?access_token=

Parametri URI

code

stringa (obbligatorio)

Codice prodotto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

Content-Type: application/json

Risposta 204

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di prodotti

GET /api/products{?access_token}

Come elencare i prodotti e le relative operazioni. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/products?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

product-family-code

stringa (facoltativo)

elenco di prodotti appartenenti alla famiglia di prodotti specificata

modification-date

data (facoltativo)

elenco di prodotti modificati tramite il back office successivamente alla data specificata

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

{  "code": "P11",  "name": "Product 11",  "observations": "",  "section": null,  "unit-cost": null,  "unit-price": 4.32000,  "families": [    {      "code": "FG",      "name": "Finished Goods"    }  ],  "operations": [    {      "code": "op1",      "name": "op1",      "waste": null,      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "custom-fields": null,      "parameters": [        {          "name": "parameter1",          "value": "value1"        }      ],      "machines": null,      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "max-waste-threshold": null,      "section": {        "name": "specialsection"      },      "id": 123    }  ],  "components": [    {      "code": "SUGAR",      "name": "Sugar",      "quantity": 0.0015,      "operation": "MIXING"    },    {      "code": "VANILLA",      "name": "Vanilla",      "quantity": 0.0008,      "operation": "MIXING"    }  ],  "serializable": false,  "custom-fields": null}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

DISTINTA COMPONENTI DEL PRODOTTO

La risorsa Distinta componenti del prodotto stabilisce i materiali utilizzati per la produzione di un prodotto specifico. La distinta componenti presenta i seguenti attributi:

  • product-code: prodotto principale

  • bom (serie, obbligatorio)

    • product-code (stringa, obbligatorio): codice prodotto del componente/consumo

    • quantity (double, obbligatorio): quantità

    • operation-code (stringa, facoltativo): codice dell'operazione in cui viene utilizzato il materiale definito in product-code. Se vuoto, il consumo si verifica durante la prima operazione del processo di produzione per questo prodotto.

Aggiornamento della distinta componenti del prodotto

POST /api/bom{?access_token}

Per aggiornare la distinta componenti di un prodotto, specificare un hash JSON degli attributi del nuovo prodotto e le relative operazioni. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

POST /api/bom?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "product-code": "bicycle",  "bom": [    {      "product-code": "wheel",      "quantity": 2,      "operation-code": "assemble"    },    {      "product-code": "seat",      "quantity": 1,      "operation-code": "assemble"    }  ]}

Risposta 201

{  "product-code": "bicycle",  "bom": [    {      "product-code": "wheel",      "quantity": 2,      "operation-code": "assemble"    },    {      "product-code": "seat",      "quantity": 1,      "operation-code": "assemble"    }  ]}

Risposta 404

Corpo

Main product not found

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

MATERIALE GREZZO PRODOTTI

La risorsa Materiale grezzo specifica l'inventario disponibile per un determinato prodotto.

  • product-code (stringa, obbligatorio)

  • stock (double, obbligatorio)

  • date (data, facoltativo): data di conteggio materiale grezzo

Aggiornamento materiale grezzo del prodotto

POST /api/stock{?access_token}

Per aggiornare il materiale grezzo di un prodotto, specificare un hash JSON degli attributi per il materiale grezzo corrente. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

POST /api/stock?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "product-code": "bicycle",  "stock": 200.5,  "date": "2023-08-16T17:15:15Z"}

Risposta 201

Corpo

Request successful

Risposta 404

Corpo

Product not found

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Famiglie di prodotti

Risorse del prodotto dell'API ProdSmart.

FAMIGLIA DI PRODOTTI

L'oggetto Famiglia di prodotti rappresenta la famiglia o le famiglie a cui appartiene un prodotto.

La risorsa Famiglia di prodotti presenta i seguenti attributi:

  • code (stringa, obbligatorio): codice della famiglia di prodotti

  • name (stringa, obbligatorio): nome della famiglia di prodotti

Creazione di una famiglia di prodotti

POST /api/product-families{?access_token}

Come creare una o più famiglie di prodotti Questa azione richiede un access_token con ambito productions_write.

URI di esempio

POST /api/product-families?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "product-families": [    {      "code": "FAM 1",      "name": "Family 1"    },    {      "code": "FAM 2",      "name": "Family 2"    }  ]}

Risposta 201

Corpo

[  {    "code": "FAM 1",    "name": "Family 1"  },  {    "code": "FAM 2",    "name": "Family 2"  }]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Eliminazione di una famiglia di prodotti

DELETE /api/product-family/{code}{?access_token}

Per eliminare una famiglia di prodotti, specificare il codice ProductFamily

URI di esempio

DELETE /api/product-family/code?access_token=

Parametri URI

code

stringa (obbligatorio)

Codice prodotto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

Content-Type: application/json

Risposta 204

Corpo

Product Family was deleted

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di famiglie di prodotti

GET /api/product-families{?access_token}

Come elencare le famiglie di prodotti. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/product-families?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

Richiesta

Intestazioni

Content-Type: application/json

Risposta 201

Corpo

[  {    "code": "FAM 1",    "name": "Family 1"  },  {    "code": "FAM 2",    "name": "Family 2"  }]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Macchine

Risorse di produzione dell'API ProdSmart.

CONTATORE

Aggiornamento del contatore

POST /api/machines/{machine_code}/counter{?access_token}

Per aggiornare il contatore corrente nella macchina, è sufficiente inviare la seguente richiesta. Per semplificare la connessione della macchina, è possibile utilizzare access_token o inviare le credenziali API nell'intestazione di autenticazione con l'autenticazione di base. Prodsmart aggiornerà automaticamente la produzione avviata dal lavoratore su tale macchina. Il numero della quantità e le quantità di sprechi devono essere incrementali (ossia sempre superiori alle quantità inviate in precedenza).

URI di esempio

POST /api/machines/machine_code/counter?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

machine_code

stringa (obbligatorio)

Codice macchina definito nella piattaforma Prodsmart

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "count": 500,  "waste": [    {      "code": "Waste1",      "quantity": 20    }  ],  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ]}

Risposta 200

Corpo

Returns the new value for the machine's counter.

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

PARAMETRI

Aggiornamento dei parametri

POST /api/machines/{machine_code}/parameters{?access_token}

Per aggiornare i parametri di una macchina, è sufficiente inviare la seguente richiesta. Per semplificare la connessione della macchina, è possibile utilizzare access_token o inviare le credenziali API nell'intestazione di autenticazione con l'autenticazione di base. Quando vengono passati questi parametri, se un record di produzione è

URI di esempio

POST /api/machines/machine_code/parameters?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

machine_code

stringa (obbligatorio)

Codice macchina definito nella piattaforma Prodsmart

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "parameters": [    {      "code": "temperature",      "value": 25    },    {      "code": "valid",      "value": "yes"    }  ]}

Risposta 200

TEMPO DI INATTIVITÀ

Aggiornamento del tempo di inattività

POST /api/machines/{machine_code}/startstop{?access_token}

Per aggiornare lo stato corrente nella macchina, è sufficiente inviare la seguente richiesta. Per semplificare la connessione della macchina, è possibile utilizzare access_token o inviare le credenziali API nell'intestazione di autenticazione con l'autenticazione di base. In base alle informazioni ricevute, Prodsmart registrerà automaticamente un tempo di inattività o lo interromperà. Inviare 0 se la macchina è stata arrestata, 1 se è attiva e specificare il tipo di tempo di inattività.

Per aggiornare lo stato di una macchina, specificare i seguenti attributi:

  • type (stringa, obbligatorio, deve essere un tipo di tempo di inattività già assegnato alla macchina): tipo di tempo di inattività

  • running (numero, obbligatorio, 0 o 1): la macchina è arrestata (0) o in esecuzione (1)

URI di esempio

POST /api/machines/machine_code/startstop?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

machine_code

stringa (obbligatorio)

Codice macchina definito nella piattaforma Prodsmart

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "type": "Maintenance",  "running": 0}

Risposta 200

Produzione

Risorse di produzione dell'API ProdSmart.

PRODUZIONE

Un singolo oggetto Produzione. La risorsa Produzione è la risorsa centrale dell'API ProdSmart. Rappresenta la manodopera di un lavoratore in una posizione durante un periodo di tempo.

La risorsa Produzione presenta i seguenti attributi:

  • id

  • start-time (data, obbligatorio, formato AAAA-MM-GGTHH:MM:SSZ): ora di inizio della produzione

  • end-time (data, obbligatorio, formato AAAA-MM-GGTHH:MM:SSZ): ora di fine della produzione

  • work-time (durata, specificato, formato 00H00m00s): tempo di lavoro della produzione (entro il tempo di pianificazione/timbro cartellini, esclusi i tempi di inattività)

  • production-order (facoltativo): ordine di produzione per il quale è stata eseguita la produzione

    • code (stringa, obbligatorio): codice dell'ordine di produzione

    • id (stringa, obbligatorio)

  • operation (obbligatorio): operazione eseguita in questa produzione

    • code (stringa, obbligatorio, univoco): codice dell'attività

    • product (obbligatorio): bene materiale utilizzato dal lavoratore in questa posizione

  • quantity (numero intero, obbligatorio, >0): quantità prodotta in questa produzione

  • worker (obbligatorio): persona che esegue le attività

    • number (lungo, obbligatorio, univoco): numero del lavoratore

  • produced-waste (serie, facoltativo): emissione di materiali difettosi in un'operazione

    • quantity (numerico, obbligatorio): codice di sprechi

      • waste: tipo di materiale difettoso

      • code (stringa, obbligatorio, univoco): codice di sprechi

      • description (stringa, obbligatorio): descrizione degli sprechi

      • flaw (stringa, obbligatorio): tipo di sprechi

      • quantity (numero intero, obbligatorio): quantità di sprechi prodotti

L'ID dello stato viene assegnato dall'API ProdSmart al momento della creazione.

Aggiornamento di una produzione

PUT /api/productions/{id}{?access_token}

Per aggiornare una produzione, specificare un codice e un hash JSON degli attributi per la produzione esistente. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo prodotto, ma è possibile creare più operazioni contemporaneamente.

URI di esempio

PUT /api/productions/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "shipping": {    "code": "shippingexamplecode00"  },  "production-order": {    "code": "productionorderexample00"  },  "operation": {    "product-code": "otherProductCode",    "code": "OtherOperationCode"  },  "worker": {    "number": "1000"  },  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "quantity": 100,  "start-time": "2023-07-20T09:15:15Z",  "end-time": "2023-07-20T09:15:16Z",  "lot-number": "other lot",  "finished": false}

Risposta 200

Corpo

{  "id": 4629374,  "production-order": {    "code": "productionorderexample00",    "id": 365315  },  "shipping": {    "code": "shippingexamplecode00",    "id": 41741  },  "operation": {    "code": "OtherOperationCode",    "product-code": "otherProductCode",    "id": 790486  },  "worker": {    "number": 1000,    "name": "Worker Name",    "id": 15890  },  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "quantity": 100,  "lot-number": "other lot",  "start-time": "2023-07-20T09:15:15.000Z",  "end-time": "2023-07-20T09:15:16.000Z",  "finished": false}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Eliminazione di una produzione

DELETE /api/productions/{id}{?access_token}

Per eliminare una produzione, specificare l'ID della produzione.

URI di esempio

DELETE /api/productions/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID produzione.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

Content-Type: application/json

Risposta 201

Corpo

{  "id": 4629376,  "production-order": {    "code": "productionorderexample00",    "id": 365315  },  "shipping": {    "code": "shippingexamplecode00",    "id": 41741  },  "operation": {    "code": "operationexample0001",    "product-code": "productcodeexample001",    "id": 790486  },  "worker": {    "number": 1000,    "name": "worker example",    "id": 15890  },  "parameters": [{    "name": "parameter1",    "value": "value1"  }, {    "name": "parameter2",    "value": "2022-12-19T00:00:00Z"  }, {    "name": "parameter3",    "value": 1.0  }],  "quantity": 100.0,  "lot-number": "lotX",  "start-time": "2023-07-20T09:15:15.000Z",  "end-time": "2023-07-20T09:15:16.000Z",  "finished": false}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body

Elenco di produzioni

GET /api/productions{?access_token}

Come elencare le produzioni. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 produzioni per pagina.

URI di esempio

GET /api/productions?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

production-order-id

numerico (facoltativo)

elenco di produzioni con questo ordine di produzione

production-order-code

stringa (facoltativo)

elenco di produzioni con questo (o questi) ordine di produzione

lavoratore

numerico (facoltativo)

elenco di produzioni con questo lavoratore (numero lavoratore)

start-time-before

data (facoltativo)

elenco di produzioni con ora di inizio precedente a questa

start-time-after

data (facoltativo)

elenco di produzioni con ora di inizio successiva a questa

end-time-before

data (facoltativo)

elenco di produzioni con ora di fine precedente a questa

end-time-after

data (facoltativo)

elenco di produzioni con ora di fine successiva a questa

start-time

data (facoltativo)

elenco di produzioni in esecuzione successiva a questa ora di inizio (non utilizzare in combinazione con -before -after)

checked-out

valore booleano (facoltativo)

elenco di produzioni estratte.

worker-name

valore booleano (facoltativo)

recupera il nome e il numero del lavoratore anziché il solo numero del lavoratore.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "production-order": {      "code": "PO1",      "id": 36530    },    "operation": {      "code": "2",      "product": "Product 1"    },    "worker": {      "number": 2    },    "machine": {      "code": "Machine Code"    },    "produced-waste": [      {        "quantity": 21,        "waste": {          "code": "Waste code",          "description": "Description of this type of waste",          "flaw": "Flaw",          "recoverable": true,          "billable": false,          "id": 333        }      }    ],    "parameters": [      {        "parameter1": "value1"      },      {        "parameter2": 2      }    ],    "quantity": 0,    "checked-out": false,    "work-time": "00H00m00s",    "start-time": "2023-09-20T17:55:32.000+01:00",    "end-time": "2023-09-20T18:45:00.000+01:00",    "id": 575354  }]

Tempo di inattività

Risorse Tempo di inattività dell'API ProdSmart.

TEMPI DI INATTIVITÀ

Elenco dei tempi di inattività

GET /api/downtimes{?access_token}

Come elencare i tempi di inattività. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/downtimes?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

start-time-before

data (facoltativo)

elenco dei tempi di inattività con ora di inizio precedente a questa

start-time-after

data (facoltativo)

elenco degli ordini con tempi di inattività con ora di inizio successiva a questa

end-time-before

data (facoltativo)

elenco dei tempi di inattività con ora di fine precedente a questa

end-time-after

data (facoltativo)

elenco dei tempi di inattività con ora di fine successiva a questa

macchina

numerico (facoltativo)

elenco dei tempi di inattività su questa macchina

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "id": 20146,    "start-time": "2017-12-21T10:30:21.000Z",    "end-time": "2017-12-21T10:32:21.000Z",    "started-by": {      "number": 2    },    "closed-by": {      "number": 2    },    "workers": [],    "machines": [      {        "code": "M2",        "name": "Machine 2"      }    ],    "product": "ProdX",    "production-order": "OP XPTO",    "checked-out": true,    "downtime-type": "Malfunction",    "time-spent": "00H02m00s"  }]

Timbro cartellino

Risorse Timbro cartellino dell'API ProdSmart.

TIMBRO CARTELLINO

I webhook sono disponibili per gli eventi relativi al timbro cartellino nel menu delle integrazioni nell'applicazione. Per utilizzare questa funzionalità, aggiungere la richiamata dell'URL dell'endpoint con gli eventi di notifica che si desidera ascoltare. Autodesk si impegna a inviare notifiche tramite webhook non appena si verificano gli eventi nel sistema. Attualmente Autodesk non supporta la ripetizione dei tentativi.

Elenco Timbro cartellini

GET /api/punchclocks{?access_token}

Come elencare i Timbro cartellini. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/punchclocks?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

date-before

data (facoltativo)

elenco di voci timbro cartellino con data precedente a questa

date-after

data (facoltativo)

elenco di voci timbro cartellino con data successiva a questa

lavoratore

numerico (facoltativo)

elenco di voci timbro cartellino per questo lavoratore

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[{    "id": 372179,    "date": "2018-09-21T09:24:06.000+01:00",    "worker": {        "number": 2    },    "type": 1},{    "id": 372180,    "date": "2018-09-21T16:34:12.000+01:00",    "worker": {        "number": 2    },    "type": 0}]"type": 0 ('out') or 1 ('in')

Movimento di inventario

Risorse Movimento di inventario dell'API ProdSmart.

MOVIMENTO DI INVENTARIO

Un singolo oggetto Movimento di inventario. La risorsa Movimento di inventario è una delle risorse più importanti dell'API ProdSmart.

La risorsa Movimento di inventario presenta i seguenti attributi:

  • id (fornito)

  • product (stringa, obbligatorio): codice del prodotto

  • date-time (data, facoltativo, formato AAAA-MM-GGTHH:MM:SSZ): data di creazione del movimento di inventario

  • quantity (double, obbligatorio): quantità del movimento di inventario

  • type (stringa, obbligatorio): tipo di movimento di inventario: in, out, consumo, produzione

  • lot (stringa, facoltativo): lotto del movimento di inventario da utilizzare

  • total-cost (bigdecimal, facoltativo): costo totale del movimento di inventario per la quantità

  • warehouse-location (stringa, facoltativo): codice di posizione magazzino

  • warehouse (stringa, facoltativo): codice del magazzino

  • location (stringa, facoltativo): posizione, se multisito

  • comment (stringa, facoltativo): commento del movimento di inventario

Recupero di un movimento di inventario

GET /api/inventory-movements/{id}{?access_token}

Per recuperare un movimento di inventario, è sufficiente eseguire una richiesta GET con l'ID del movimento di inventario. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/inventory-movements/id?access_token=

Parametri URI

id

numerico (obbligatorio)

ID movimento di inventario.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse-location": "Zone2",  "shipping": {    "code": "shippingCode",    "clientOrder": {      "code": "clientOrderCode",      "client": "clientCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  },  "receiving": {    "code": "receivingCode",    "purchaseOrder": {      "code": "purchaseOrderCode",      "supplier": "supplierCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  }}

Creazione di un movimenti di inventario

POST /api/inventory-movements/{?access_token}

Per creare un movimento di inventario, specificare un hash JSON degli attributi per il nuovo movimento di inventario. Questa azione richiede un access_token con ambito productions_write. Per ora è possibile salvare un solo movimento di inventario. In futuro, se la richiesta è una serie anziché una risorsa, tutti gli elementi della serie verranno salvati.

URI di esempio

POST /api/inventory-movements/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse": "A",  "warehouse-location": "Zone2",  "location": "location code",  "shipping": "shippingCode",  "client-order": "clientOrderCode",  "receiving": "receivingCode",  "purchase-order": "purchaseOrderCode"}

Risposta 200

Corpo

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse-location": "Zone2",  "id": 12345,  "shipping": {    "code": "shippingCode",    "clientOrder": {      "code": "clientOrderCode",      "client": "clientCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  },  "receiving": {    "code": "receivingCode",    "purchaseOrder": {      "code": "purchaseOrderCode",      "supplier": "supplierCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  }}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body.

Aggiornamento di un movimento di inventario

PUT /api/inventory-movements/{id}{?access_token}

Per aggiornare un movimento di inventario, fornire un JSON con gli attributi che si desidera aggiornare nel movimento di inventario (tutti gli attributi sono facoltativi). Questa azione richiede un access_token with productions_write scope.

URI di esempio

PUT /api/inventory-movements/id?access_token=

Parametri URI

id

numeric (obbligatorio)

ID movimento di inventario.

access_token

string (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Corpo

{ "product-code": "ProductCode", "date-time": "2018-07-20T09:15:15Z", "quantity": "10", "type": "in", "lot": "A", "total-cost": "1000", "comment": "OK", "warehouse": "A", "warehouse-location": "Zone2", "receiving": "receivingCode" }

Eliminazione di un movimento di inventario

DELETE /api/inventory-movement/{id}{?access_token}

Per eliminare un movimento di inventario, fornire un ID movimento di inventario.

URI di esempio

DELETE /api/inventory-movement/id?access_token=

Parametri URI

id

numeric (obbligatorio)

ID movimento di inventario.

access_token

string (obbligatorio)

Token di accesso dell'API ProdSmart.

Richiesta

Intestazioni

Content-Type: application/json

Risposta 204

Risposta 400

It's not possible to delete this inventory-movement.

Elenco di movimenti di inventario

GET /api/inventory-movements/{?access_token}

Come elencare i movimenti di inventario. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write. Questo servizio viene impaginato e restituisce 25 movimenti di inventario per pagina.

URI di esempio

GET /api/inventory-movements/?access_token=

Parametri URI

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

product-code

stringa (facoltativo)

codice prodotto

tipo

stringa (facoltativo)

tipo di movimento di inventario: in, out, consumo, produzione

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "product-code": "ProductCode",    "date-time": "2018-07-20T09:15:15Z",    "quantity": "10",    "type": "in",    "lot": "A",    "total-cost": "1000",    "comment": "OK",    "warehouse-location": "Zone2",    "id": 12345,    "shipping": {      "code": "shippingCode",      "clientOrder": {        "code": "clientOrderCode",        "client": "clientCode"      },      "location": {        "id": "location id",        "code": "location code",        "name": "location name"      }    },    "receiving": {      "code": "receivingCode",      "purchaseOrder": {        "code": "purchaseOrderCode",        "supplier": "supplierCode"      },      "location": {        "id": "location id",        "code": "location code",        "name": "location name"      }    }  }]

Materiale grezzo

Risorse Materiale grezzo dell'API ProdSmart.

Recupero del materiale grezzo del prodotto

GET /api/stock/{code}{?access_token}

Per recuperare il materiale grezzo di un prodotto, è sufficiente eseguire una richiesta GET con il codice del prodotto. Più parametri verranno trattati come condizione AND. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/stock/code?access_token=

Parametri URI

code

stringa (obbligatorio)

Codice prodotto.

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart.

lotto

stringa (facoltativo)

Recupero del codice del lotto e della quantità di materiale grezzo per i lotti del prodotto

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

{"product-code": "Example","stock": 35,"lot": [     {      "code": "A",      "stock": 10    },    {      "code": "B",      "stock": 5    }}

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body.

Rapporti

Risorse per la generazione di rapporti dell'API ProdSmart.

Orario di lavoro lavoratore

Orario di lavoro lavoratore GET/api/reports/worker-labor-time{?access_token}

Per recuperare un rapporto, è sufficiente eseguire una richiesta GET con un intervallo di tempo per estrarre il rapporto. È possibile aggiungere il parametro lavoratore e sezione per filtrare il rapporto. Inoltre, è possibile specificare alcuni flag per personalizzare il contenuto del rapporto. Il valore di default di tutti i flag è false. Questa azione richiede un access_token con ambito productions_write.

URI di esempio

GET /api/reports/worker-labor-time?access_token=

Parametri URI

start-time

stringa (obbligatorio)

Genera rapporti per le date successive a questa (inclusa)

end-time

stringa (obbligatorio)

Genera rapporti per le date precedenti a questa (inclusa)

access_token

stringa (obbligatorio)

Token di accesso dell'API ProdSmart

worker-number

stringa (facoltativo)

Specifica un numero di lavoratore per filtrare il rapporto

sezione

stringa (facoltativo)

Specifica un nome per il reparto. Tutti i lavoratori di questo reparto saranno inclusi nel rapporto

show-rework

valore booleano (facoltativo)

Include un nuovo campo con le operazioni di rilavorazione nel rapporto

show-weekend

valore booleano (facoltativo)

Include giorni di fine settimana nei dati

only-punch-clock

valore booleano (facoltativo)

Considera solo il tempo di presenza con le voci timbro cartellino

pagina

numerico (facoltativo)

indice pagina risultati, a partire da 1

Richiesta

Intestazioni

Content-Type: application/json

Risposta 200

Corpo

[  {    "worker": {      "number": "0",      "name": "John"    },    "presence-time": "08H00",    "work-time": "04H00m00s",    "percentage": "50%",    "calendar-downtimes": "00H00m00s"  },  {    "worker": {      "number": "1",      "name": "Mary"    },    "presence-time": "08H00",    "work-time": "08H00m00s",    "percentage": "100%",    "calendar-downtimes": "00H00m00s"  }]

Risposta 400

Corpo

If there's a problem with the request, the problem found will be reported on the Response Body.

Risposta 429

Corpo

Another request is ongoing for this endpoint. Please wait until the current request finishes before doing another.

Autorizzazione e controllo di accesso

Accesso e controllo del token di autenticazione di Prodsmart.

AUTORIZZAZIONE

La risorsa Autorizzazione rappresenta un'autorizzazione concessa all'azienda. È possibile accedere solo all'autorizzazione personale. L'autenticazione utilizzata è l'autenticazione di base, in cui l'intestazione dell'autenticazione si trova nella forma <base64 valore codificato di API_KEY:API_SECRET>. Per ottenere l'API Key e il segreto API, accedere a Prodsmart e modificare l'utente. (Nota: Per ottenerlo, è necessario disporre del ruolo di amministratore). La risorsa Autorizzazione presenta i seguenti attributi:

  • token

  • scopes

Dove token rappresenta un token e scopes è una serie di ambiti concessi per l'autorizzazione specificata. Attualmente l'unico ambito disponibile è productions_write.

Recupero dell'autorizzazione

GET /api/authorization

Utilizzare GET per recuperare un token di accesso esistente. Se non esiste ancora un token, è possibile generarne uno utilizzando il metodo POST.

URI di esempio

GET /api/authorization

Richiesta

Intestazioni

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Risposta 200

Intestazioni

Content-Type: application/jsonLink: <http:/api.prodsmart.com/api/authorizations>;rel="self"

Corpo

{    "_links": {        "self": { "href": "/api/authorizations" },    },    "scopes": [        "productions_write"    ],    "token": "abc123"}

Creazione di un'autorizzazione

POST /api/authorization

Utilizzare POST per generare un nuovo token di accesso.

URI di esempio

POST /api/authorization

Richiesta

Intestazioni

Content-Type: application/jsonAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Corpo

{ "scopes": [ "productions_write" ] }

Risposta 201

Intestazioni

Content-Type: application/jsonLink: <http:/api.prodsmart.com/api/authorizations>;rel="self"

Corpo

{    "_links": {        "self": { "href": "/api/authorizations" },    },    "scopes": [        "productions_write"    ],    "token": "abc123"}

Rimozione di un'autorizzazione

DELETE /api/authorization

URI di esempio

DELETE /api/authorization

Richiesta

Intestazioni

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Risposta 204

Hai ricevuto la risposta alla tua domanda?