Con il tempo le API evolvono, vengono aggiunti nuovi metodi, tolti altri e modificate richieste e risposte. Alle applicazioni che usano le API di Open2b viene garantita la compatibilità con le precedenti versioni grazie al versionamento.
Le seguenti sono le versioni di Open2b con le versioni delle API supportate:
| Open2b | API |
|---|---|
| 2012 | v1 |
| 2013 | v1 e v2 |
| 2015 | v1 e v2 |
| 2016 | v2 e v3 |
| 2018 | v2, v3 e v4 |
| 2018 GDPR | v2, v3, v4 e v5 |
| 2018 Fattura Elettronica | v2, v3, v4, v5 e v6 |
| 2019 | v2, v3, v4, v5 e v6 |
| 7.0 e 7.1 | v3, v4, v5, v6 e v7 |
| 7.2 | v3, v4, v5, v6, v7, v8 |
| 7.3 | v3, v4, v5, v6, v7, v8 |
| 7.4 | v3, v4, v5, v6, v7, v8, v9 |
| 7.5 | v3, v4, v5, v6, v7, v8, v9, v10 |
| 7.6 | v3, v4, v5, v6, v7, v8, v9, v10, v11 |
| 7.7 | v3, v4, v5, v6, v7, v8, v9, v10, v11, v12 |
| 7.8 | v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13 |
Se state realizzando una nuova applicazione, valutate prima di tutto per quale versione di Open2b la dovete realizzare e dopodiché scegliete la versione più recente supportata delle API.
Se la versione di Open2b non è l'ultima allora valutate, o proponete al vostro cliente, di fare un aggiornamento alla versione più recente in modo che possiate da subito utilizzare l'ultima versione delle API.
La garanzia di compatibilità vi consente di realizzare applicazioni per il vostro negozio o per i vostri clienti con la tranquillità che continueranno a funzionare anche dopo gli aggiornamenti alla piattaforma di commerce elettronico, sempre che la nuova versione di Open2b supporti la versione delle API da voi usata e comunque tenendo conto di eventuali considerazioni fatte presenti al momento del rilascio dell'aggiornamento.
Con la garanzia di compatibilità ci impegniamo a non modificare i metodi, il formato delle richieste e delle risposte, non verranno cambiati i nomi dei campi, non ne verranno tolti o aggiunti di nuovi, non ne verrà cambiato il tipo e l'ordinamento e non cambieranno i tipi dei messaggi di errore ritornati.
Pur garantendo quanto indicato in precedenza, a volte le modifiche funzionali alle nuove versioni di Open2b possono essere tali da non poter garantire lo stesso identico comportamento delle API in tutte le circostanze. In questo caso verrà documentato in dettaglio quali comportamenti diversi delle API ci si deve aspettare, in questo modo potete valutare meglio tempi e condizioni per l'aggiornamento del negozio e dell'applicazione.
La versione 13 è stata introdotta con Open2b 7.8 a Settembre 2025. Se avete realizzato applicazioni che usano la versione 12 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v12 con v13 nella URL delle chiamate.
La versione 7.8 di Open2b introduce il supporto ai caratteri a 4 Byte (UTF8mb4), le chiamate all'API (qualsiasi versione) che restituiscono dei testi possono dunque restituire dei caratteri a 4 byte.
storefront.products, considerate che il campo departments potrebbe essere vuoto.storefront.cart, considerate che il campo departments degli items potrebbe essere vuoto.commerce.promotions.get e commerce.promotions.find, considerate che vengono restituiti i nuovi campi method e isOneTimePerCustomer.È ora possibile impostare un metodo di spedizione o pagamento per far scattare una promozione usando il campo method.
È anche possibile indicare che una promozione può essere usata solamente una volta da ogni cliente usando il campo isOneTimePerCustomer. Gli usi della promozione in questo caso possono essere gestiti usando la nuova API promotions-usages.
Se la vostra app utilizza il metodo commerce.promotions.find per recuperare le promozioni, nuovi campi hasCoupon, isOneTimePerCustomer, endTimeFrom, endTimeTo delle condizioni permettono una ricerca più efficace
La versione 12 è stata introdotta con Open2b 7.7 a Marzo 2025. Se avete realizzato applicazioni che usano la versione 11 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v11 con v12 nella URL delle chiamate.
commerce.products.get e commerce.products.find, considerate che viene restituito il nuovo campo showRequestsFor.commerce.returns.get e commerce.returns.find, considerate che il campo status dei resi e il campo approval delle righe di reso può assumere il nuovo valore "Completed".commerce.payment-methods.get e commerce.payment-methods.find, considerate che viene restituito il nuovo campo minAmountPayable.È ora possibile specificare quando al cliente deve essere mostrato nel carrello il campo per inserire delle richieste sui singoli prodotti, tramite il nuovo campo showRequestsFor.
È ora possibile indicare che il reso di un prodotto si è concluso, impostando a "Completed" il campo approval della riga di reso.
È ora possibile specificare il minimo importo pagabile per i metodi di pagamento, tramite il nuovo campo minAmountPayable.
La versione 11 è stata introdotta con Open2b 7.6 a Ottobre 2024. Se avete realizzato applicazioni che usano la versione 10 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v10 con v11 nella URL delle chiamate.
La lunghezza di tutti i campi city è stata portata da 25 a 35 caratteri.
La versione 10 è stata introdotta con Open2b 7.5 a Gennaio 2024. Se avete realizzato applicazioni che usano la versione 9 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v9 con v10 nella URL delle chiamate.
commerce.promotions.get e commerce.promotions.find, considerate che vengono restituiti i nuovi campi minQuantity e discountedQuantity
È ora possibile specificare la quantità di referenze nel carrello che fanno attivare una promozione e su quali referenze tale quantità va calcolata tramite il nuovo campo minQuantity.
È inoltre possibile, tramite il nuovo campo discountedQuantity specificare la quantità di referenze alle quali lo sconto verrà applicato e se la quantità minima deve essere scontata oppure vanno scontate solamente le quantità aggiuntive dopo la minima.
La versione 9 è stata introdotta con Open2b 7.4 a Maggio 2023. Se avete realizzato applicazioni che usano la versione 8 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v8 con v9 nella URL delle chiamate.
site.blog-post.get e site.blog-post.find, considerate che viene ritornato il nuovo campo tags.commerce.promotions.create e commerce.promotions.update, considerate che i campi startTime e endTime hanno cambiato tipo da date a datetime.
commerce.promotions.get e commerce.promotions.find, considerate che:
startTime e endTime hanno cambiato tipo da date a datetime.hourLimitsI tag possono essere assegnati agli articoli del blog per poterli categorizzare e renderne più semplice la consultazione.
La versione 9 dell'API aggiunge i seguenti metodi per operare sui tag a Site:
e il seguente metodo a Storefront
Inoltre le API del blog ritornano anche i tag associati agli articoli del blog.
È ora possibile specificare un orario per l'inizio o la fine delle promozioni. È inoltre possibile, tramite il nuovo campo hourLimits specificare una fascia oraria giornaliera di attivazione della promozione.
La versione 8 è stata introdotta con Open2b 7.2 a Marzo 2022. Se avete realizzato applicazioni che usano la versione 7 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v7 con v8 nella URL delle chiamate.
Se preferite continuare a usare una vecchia versione dalla 3 alla 7, allora considerate comunque quanto segue:
site.pages.get, site.pages.find, url-rewrites.find e site.urls.resolve ed in particolare leggete il campo resources che viene ritornato, considerate che il sotto-campo type potrebbe avere come valore "Collection" che prima non era mai ritornato.url-redirects.find ed in particolare leggete il campo target che viene ritornato, considerate che il sotto-campo type potrebbe avere come valore "Collection" che prima non era mai ritornato.commerce.items.get e commerce.items.find, considerate che sono ritornati i nuovi campi width, height e depth.commerce.attribute-values.get, considerate che è ritornato il nuovo campo products.commerce.tax-areas.get e commerce.tax-areas.find, considerate che è ritornato il nuovo campo code.commerce.shipping-methods.get e commerce.shipping-methods.find, considerate che è ritornato il nuovo campo code.commerce.customer-groups.get e commerce.customer-groups.find, considerate che è ritornato il nuovo campo collection.commerce.customers.get e commerce.customers.find, considerate che sono ritornati i nuovi campi collection e collections.commerce.customers.get e commerce.customers.find, considerate che sono ritornati i nuovi campi collection e collections.site.pages.get, site.pages.find, url-rewrites.find e site.urls.resolve ed in particolare leggete il campo resources che viene ritornato, considerate che il sotto-campo type potrebbe avere come valore "Collection" che prima non era mai ritornato.url-redirects.find ed in particolare leggete il campo target che viene ritornato, considerate che il sotto-campo type potrebbe avere come valore "Collection" che prima non era mai ritornato.La versione 8 aggiunge la nuova Batch API. Batch API consente di realizzare più facilmente procedure e applicazioni che accedono in lettura al catalogo prodotti. Consentono di realizzare più velocemente esportazioni di cataloghi, interfacciamenti con rivenditori, pubblicazione di prodotti su siti di comparazione e marketplace.
Le referenze hanno i nuovi campi width, height e depth che rappresentano rispettivamente larghezza, altezza e profondità di una referenza.
Le collezioni consentono di limitare quali prodotti sono visibili sul sito a specifici clienti o gruppi di clienti.
La versione 8 aggiunge i seguenti metodi a Commerce per operare sulle collezioni:
commerce.collections.findcommerce.collections.getcommerce.collections.countcommerce.collections.createcommerce.collections.updatecommerce.collections.deletee il seguente metodo a Storefront:
Le collezioni sono abilitate solo per l'edizione Advanced B2B, per le altre edizioni i metodi commerce.collections.create e commerce.collections.update ritornano uno specifico errore.
Ai gruppi clienti e ai clienti è stato aggiunto il campo collection che indica la collezione catalogo associata. Inoltre ai clienti è stato aggiunto il campo collections che indica le collezioni aggiuntive a cui il cliente può accedere.
Per leggere i prodotti che sono parte di una o più collezioni si può usare il campo collections come condizione al metodo commerce.products.find e il campo collection come condizione al metodo storefront.products.
Con la version 8 si possono leggere tutti i prodotti che hanno un determinato valore di attributo tramite il campo products ritornato dal metodo commerce.attribute-values.get.
Inoltre consente di assegnare un valore di attributo a tutti e soli determinati prodotti tramite il campo products del metodo commerce.attribute-values.update.
Quando si crea un ordine tramite il metodo commerce.orders.create, si può usare il parametro movements per creare assieme all'ordine anche i movimenti di magazzino. Per le righe d'ordine senza codice, o per le quali non esiste una referenza con il dato codice, non vengono creati movimenti.
Alle aree fiscali e ai metodi di spedizione è stato aggiunto il campo code.
Il nuovo metodo storefront.login-with dello Storefront consente di fare il login di un cliente tramite Facebook.
La versione 7 è stata introdotta con Open2b 7.0. Se avete realizzato applicazioni che usano la versione 2 delle API allora dovete aggiornare le vostre applicazioni, in quanto la versione 2 non è più supportata. Potete farlo passando prima alla versione 3 ( come indicato in passare dalla versione 2 alla versione 3 ). Se avete realizzato applicazioni che usano la versione 6 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v6 con v7 nella URL delle chiamate.
X-Key in X-Secret-Key.commerce.products.create dovete gestire l'errore nel caso in cui una variante o una opzione non esiste.commerce.products.create, commerce.items.create e commerce.items.update, siccome ora verificano per le opzioni che il prodotto abbia la rispettiva variante e che l'opzione appartenga alla variante, dovete gestire l'eventuale errore ritornato.get e find dei documenti, considerate che nel campo items sarà presente un nuovo campo id.commerce.orders.delete considerate che ritorna un errore se un ordine ha delle spedizioni.seoKeywords allora non potete più usarlo in quanto rimosso.Open2b 7.0 introduce la nuova Storefront API che riproduce l'esperienza di acquisto del negozio.
L'header HTTP X-Key, usato per autenticare le richieste, è stato rinominato in X-Secret-Key. Il precedente nome X-Key si può ancora usare ma non per le chiamate delle nuove Storefront API e sarà comunque rimosso in una delle prossime versioni.
Il campo code del prodotto, i campi sku e supplierSKU delle referenze e il campo sku dei documenti sono stati estesi da 32 a 40 caratteri.
Il metodo commerce.products.create ora ritorna un errore se una variante o una opzione non esistono.
I metodi commerce.products.create, commerce.items.create e commerce.items.update ora verificano per le opzioni che il prodotto abbia la rispettiva variante e che l'opzione appartenga alla variante. In caso contrario ritornano un errore.
Le categorie sono state rimosse dalla versione 7, pertanto i metodi sulle categorie non sono più disponibili.
La versione 7 consente la gestione dei multipli per gli ordini e i preventivi. Per ogni singola referenza si può indicare se il cliente può ordinare solo multipli della quantità della prima fascia di prezzo per i soli ordini, per i soli preventivi o sia per gli ordini che per i preventivi.
Ai seguenti metodi è stato aggiunto il nuovo campo quantityStepsOn che indica se gli ordini, i preventivi o entrambi sono consentiti solo per multipli:
commerce.products.createcommerce.items.createcommerce.items.updatecommerce.items.findcommerce.items.getÈ stato aggiunto il campo token ai documenti ( ordini, preventivi, fatture, ricevute e DDT ). Il token è lungo 32 caratteri ASCII e identifica univocamente un documento. Il token viene assegnato automaticamente ad un documento alla sua creazione e non cambia mai.
Ora le righe dei documenti ( ordini, preventivi, fatture, ricevute e DDT ) hanno un nuovo campo id che le identifica univocamente. Il campo id viene ritornato dai metodi get e find dei documenti.
Il nuovo campo id ha il suo principale uso nella gestione delle spedizioni e dei resi di un ordine:
items riporta tutti i prodotti che sono parte della spedizione e al suo interno il campo orderItem fa riferimento al campo id della riga di un ordineitems riporta tutti i prodotti che sono parte del reso e al suo interno il campo orderItem fa riferimento al campo id della riga di un ordinePer il metodo commerce.orders.update, se si modifica items, diventa importante indicare nel campo id di items l'identificativo dell'item dell'ordine che si sta modificando in quanto non è consentito rimuovere righe d'ordine per le quali sono presenti delle spedizioni o dei resi.
Con la nuova versione delle API è possibile gestire le spedizioni degli ordini. Per ogni ordine si possono creare una o più spedizioni indicando le righe dell'ordine che ne sono parte con la quantità spedita. È inoltre possibile gestire i tracking per ogni spedizione. Allo scopo sono stati aggiunti i seguenti metodi:
commerce.shipments.findcommerce.shipments.getcommerce.shipments.countcommerce.shipments.createcommerce.shipments.updatecommerce.shipments.deleteSiccome un ordine non può essere eliminato se ha delle spedizioni, il metodo commerce.orders.delete in questo caso ritorna un errore.
La nuova API introduce diversi metodi per la gestione dei resi. È possibile creare un reso per uno o più ordini e per tutte o solo alcune delle righe di un ordine. Allo scopo sono stati aggiunti i seguenti metodi:
commerce.returns.findcommerce.returns.getcommerce.returns.countcommerce.returns.createcommerce.returns.updatecommerce.returns.deleteI resi sono strettamente legati alle spedizioni in quanto si possono rendere solo i prodotti che sono stati effettivamente spediti e consegnati.
I motivi di reso indicano per ogni prodotto reso il motivo per il quale ne è stato fatto il reso. Allo scopo sono stati aggiunti i seguenti metodi:
commerce.return-reasons.findcommerce.return-reasons.getcommerce.return-reasons.countcommerce.return-reasons.createcommerce.return-reasons.updatecommerce.return-reasons.deleteLe regole di reso consentono di specificare le condizioni per le quali un cliente può chiedere un reso. Allo scopo sono stati aggiunti i seguenti metodi:
commerce.return-rules.findcommerce.return-rules.getcommerce.return-rules.countcommerce.return-rules.createcommerce.return-rules.updatecommerce.return-rules.deleteIl metodo commerce.returns.create non verifica le regole di reso. Deve essere premura dell'applicazione che crea un reso verificare, ad esempio qualora il reso venga fatto direttamente dal cliente, che le regole lo consentano.
Per verificare per una o più righe d'ordine se le regole consentono il reso è stato aggiunto il seguente metodo:
È stato aggiunto il campo locale.
È stato aggiunto il campo order che indica l'ordine creato dal preventivo.
Il campo seoKeywords è stato rimosso.
La versione 6 è stata introdotta con Open2b 2018 Fatturazione Elettronica. Se avete realizzato applicazioni che usano la versione 5 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v5 con v6 nella URL delle chiamate.
Con l'introduzione della fatturazione elettronica da Gennaio 2019, sono state apportate modifiche ai clienti e ai documenti per consentire la registrazione del codice e della PEC del destinatario della fattura elettronica.
Ai seguenti è stato aggiunto il nuovo campo invoiceRecipient che può contenere o il codice destinatario o l'indirizzo email della PEC a cui inviare la fattura elettronica:
La versione 5 è stata introdotta con Open2b 2018 GDPR. Se avete realizzato applicazioni che usano la versione 4 allora potete continuare a usare questa versione oppure potete passare alla nuova versione sostituendo v4 con v5 nella URL delle chiamate.
Come adeguamento alla nuova normativa sulla privacy (GDPR), la versione 5 delle API introduce nuovi metodi per gestire i trattamenti e i consensi sui dati personali dei clienti.
Si possono definire i trattamenti che vengono fatti sui dati personali dei clienti in modo da visualizzare sul sito la relativa informativa ed eventualmente richiedere il consenso al trattamento. Sono stati aggiunti alle API i seguenti metodi:
commerce.privacy-processings.findcommerce.privacy-processings.getcommerce.privacy-processings.countcommerce.privacy-processings.updatecommerce.privacy-processings.deletePer ogni trattamento e per ogni cliente, ordine e preventivo si possono raccogliere i consensi ricevuti e revocati. Per la loro gestione sono stati aggiunti i seguenti metodi:
commerce.privacy-consents.findcommerce.privacy-consents.givecommerce.privacy-consents.withdrawcommerce.privacy-consents.deleteCon la nuova versione di Open2b è possibile scegliere, per ogni reparto, se questo è visibile sul sito, se è visibile solo se contiene dei prodotti oppure se non deve essere per nulla visibile ad esempio perché lo si sta ancora allestendo.
Allo scopo è stato aggiunto il nuovo campo visibility ai metodi dei reparti.
Per le edizioni B2B è ora possibile scegliere per ogni gruppo clienti quali sono i metodi di pagamento e spedizione che il cliente può selezionare nel carrello e nella fase d'ordine.
Allo scopo ai gruppi clienti sono stati aggiunti i nuovi campi paymentMethods e shippingMethods che possono avere come valore una lista rispettivamente di metodi di pagamento e spedizione ai quali il cliente è limitato nella scelta.
La versione 4 è stata introdotta con Open2b 2018. Se avete realizzato applicazioni che usano la versione 1 delle API allora dovete aggiornare le vostre applicazioni affinché usino la versione 2, 3 o 4 delle API in quanto la versione 1 non è più supportata, in particolare dovete prima seguire le indicazioni per passare dalla versione 2 alla versione 3. Se avete realizzato applicazioni che usano la versione 3 allora potete:
commerce.price-lists.update allora considerate che non è più possibile leggere il listino base e il cambio ( sconto o ricarico ) di un listino derivato, il metodo ritorna un errore interno se viene passato come argomento baseList o change.commerce.price-lists.get allora considerate che non è più possibile leggere il listino base di un listino derivato, il metodo ritorna un errore interno se il campo fields è null o contiene il campo baseList.commerce.price-lists.find allora considerate che non è più possibile leggere il listino base di un listino derivato, il metodo ritorna un errore interno se il campo fields è null o contiene il campo baseList.commerce.price-lists.find allora considerate che non è più possibile ordinare i listini ritornati per il listino base, il metodo ritorna un errore interno se il campo order contiene il campo baseList.site.banners allora considerate che i banner non sono più disponibili. Le chiamate ai metodi di site.banners ritornano un errore interno.site.menus allora considerate che i menu non sono più disponibili. Le chiamate ai metodi di site.menus ritornano un errore interno.canonicalURL delle varie risorse con i metodi get e find della versione 4.v3 con v4 nella URL delle chiamate.find e non passate il campo limit oppure il campo limit è null allora considerate che questi metodi nella versione 4 vi potranno ritornare più risultati di quanti vi aspettavate in precedenza. Avete due alternative:
limit con valore massimo previsto dalla versione 3 del metodo chiamato, in genere è 100.limit o passarlo null e sfruttare il fatto che i metodi con la versione 4 ritornano più risultati di prima.commerce.price-lists allora considerate che quelle che erano le proprietà dei listini ora sono state suddivise tra i listini e i gruppi clienti e pertanto potrebbe essere necessario fare anche delle chiamate ai metodi di commerce.customer-groups.commerce.customers per leggere o modificare il campo priceList allora considerate che questo campo ora si chiama group.commerce.customers.create e commerce.customers.update per impostare la password dei clienti e usate il campo cryptedBy con valore "CommerceReady" allora dovete sostituirlo con il valore "Open2b".commerce.products.find con il campo order che comprende "position" allora aggiungete "id" dopo "position" per avere i prodotti ordinati nello stesso modo con cui venivano ordinati precedentemente.commerce.products.get, commerce.products.find, commerce.items.get e commerce.items.find e leggete il campo departments allora considerate che questo campo non contiene più i livelli di reparto dal reparto superiore fino al reparto finale ma contiene i reparti finali in cui si trova il prodotto. Questo perché ora un prodotto può stare in più reparti. Per avere tutti i reparti da quello di livello più superiore a quello di livello più inferiore si può chiamare il metodo commerce.departments.get leggendo il campo ancestors.commerce.products.create allora dovete rinominare il campo department in departments e il valore che passate va messo in un array. Ad esempio se department era 56 allora departments sarà [ 56 ].commerce.products.update e passate il campo department allora considerate che è stato rinominato in departments e ora non contiene solo un reparto ma contiene tutti i reparti del prodotto, fino a cinque. Se siete sicuri che il prodotto sta in un solo reparto allora basta seguire le indicazioni del precedente punto. Se il prodotto potrebbe stare in più reparti allora dovrete modificare il vostro programma perché passi al metodo tutti i reparti.0.000 come prezzo ora ritorna invece null.0.000 ora dovete usare il valore null per indicare che non ha prezzo.commerce.products.get e commerce.products.find per leggere il campo listPrice allora considerate che ora comprende anche le tasse se il relativo gruppo clienti include le tasse.commerce.products.get e commerce.products.find per leggere il campo sellingPrice allora considerate che questo campo non è più presente.commerce.products.get e commerce.products.find per leggere il campo price allora considerate che è stato rinominato in salePrice e ora comprende anche le tasse se il relativo gruppo clienti include le tasse.commerce.items.get e commerce.items.find per leggere il campo listPrice allora considerate che ora ritorna sia i prezzi per i listini prezzo che per i gruppi clienti e che i prezzi per i gruppi clienti comprendono anche le tasse se il relativo gruppo clienti include le tasse.commerce.products.get e commerce.products.find per leggere il campo sellingPrice allora considerate che questo campo non è più presente.commerce.items.get e commerce.items.find per leggere il campo price allora considerate che ora ritorna sia i prezzi per i listini prezzo che per i gruppi clienti e che i prezzi per i gruppi clienti comprendono anche le tasse se il relativo gruppo clienti include le tasse.commerce.items.get e commerce.items.find per leggere il campo costPrice allora considerate che questo campo non è più presente. Al momento dell'aggiornamento alla nuova versione 2018, se almeno un prodotto aveva il prezzo di costo maggiore di zero allora è stato creato un nuovo listino per il prezzo di costo. Pertanto per leggere il vecchio prezzo di costo bisogna leggere il campo price per il listino usato per il prezzo di costo. Il listino per il prezzo di costo è quello chiamato "Costo" ( a meno che non sia stato rinominato o eliminato dopo l'aggiornamento ).commerce.items.update-prices per aggiornare i prezzi delle referenze allora con la versione 4 dovete usare al suo posto il metodo commerce.item-prices.update.
commerce.tax-areas.get e commerce.tax-areas.find per leggere il campo isDefault allora considerate che questo campo non è più presente. L'area fiscale di default ora è l'area fiscale del gruppo clienti di default. Pertanto dovete richiamare il metodo commerce.customer-groups.find con la condizione isDefault a true e indicare taxArea nel campo fields.commerce.promotions.create o commerce.promotions.update allora verificate che il campo coupon non contenga spazi all'inizio o alla fine, che il campo elements non contenga elementi duplicati e che la data del campo startTime sia maggiore della data del campo endTime.commerce.categories allora considerate che le categorie potrebbero essere state convertite in valori di un attributo ( questo avviene automaticamente all'aggiornamento, se non sono presenti categorie, o in un momento successivo ). Se sono state convertite allora dovete usare al loro posto i metodi di commerce.attribute-values usando come valore per il campo attribute l'identificatore dell'attributo usato per le categorie ( lo si riconosce in quanto la conversione gli assegna il codice "CATEGORY" ).commerce.departments.get e commerce.departments.find e leggete il campo parent allora dove vi aspettavate il valore 0 ora viene ritornato null.commerce.departments.get e commerce.departments.find e leggete il campo parents allora dovrete modificare il codice in quanto questo campo ora compreden solo gli identificatori dei reparti. Per avere anche i nomi dovete fare una successiva chiamata al metodo commerce.departments.find passando gli identificatori nel campo ids di conditions.id in quanto il tipo è cambiato da bigint a int. Se avete dei vecchi identificatori da convertire ai nuovi allora eseguite una operazione di shift a destra di 32 bit ( id >> 32 ) sui vecchi identificatori per ricavare i nuovi. Il viceversa non è possibile. Si noti che l'operazione deve essere eseguita su un intero a 64 bit e pertanto in base al linguaggio di programmazione utilizzato potrebbe essere necessario utilizzare una libreria apposita.find dei documenti con il campo address in conditions allora considerate che vi vengono ritornati anche i documenti che hanno come indirizzo email quello indicato in address.find e get dei documenti allora considerate che il campo taxClass in items, shippingMethod e paymentMethod non è più presente, al suo posto potete leggere il campo taxCode per poi determinare il corrispondente taxClass chiamando il metodo commerce.tax-classes.find.site.languages.delete allora considerate che ora vengono cancellati tutti i testi per le lingue eliminate.site.templates.find-files allora ponete attenzione che adesso vi ritorna anche i file che contengono più di un punto nel nome (ma comunque non consecutivi).site.banners.create, site.banners.delete, site.banners.update o site.menus.update allora non le riceverete più.Quasi tutti i metodi find consentono di indicare, con il parametro limit, il numero massimo di risultati da ritornare.
Se limit è presente ed è compreso tra 1 e 100 allora vengono ritornati al più limit risultati. Se ne vengono ritornati meno di limit allora significa che non ne sono presenti altri. Questo comportamento è lo stesso per tutte le versioni delle API.
Se invece limit non è presente oppure è null allora con le precedenti versioni 2 e 3 la find li ritorna tutti o al più 100, mentre con la versione 4 li ritorna tutti o al più un multiplo di 100.
Con la nuova versione delle API è possibile assegnare delle etichette, eventualmente visibili nel gestionale, ai prodotti, ai clienti e ai documenti ( ordini, preventivi, fatture, ricevute e DDT ). Allo scopo sono stati aggiunti i seguenti metodi:
Se una etichetta deve essere mostrata nel gestionale allora è possibile da JavaScript chiamare il metodo Admin.Labels.set tramite Admin SDK per impostarne nome e colore.
Con la nuova versione è possibile gestire le URL del sito tramite i seguenti metodi:
È stato aggiunto il campo canonicalURL a prodotti, reparti, produttori, promozioni, valori di attributo (ex opzioni), pagine e articoli del blog. Il nuovo campo riporta per ogni lingua del sito l'indirizzo canonico della relativa pagina del sito. L'indirizzo canonico viene inizialmente assegnato da Open2b in base al nome ( del prodotto, reparto ecc... ) e per cambiarlo bisogna o modificare il nome oppure creare un rewrite tramite il metodo site.url-rewrites.set.
Con la nuova versione 2018 è possibile aggiungere un prodotto a più reparti, fino a cinque.
Allo scopo il campo department dei prodotti ora si chiama departments ed è la lista di tutti i reparti del prodotto. L'ordine dei reparti viene mantenuto. Inoltre il campo departments ha cambiato significato, mentre prima era il percorso dal reparto superiore al reparto finale in cui si trova il prodotto, nella versione 4 è invece la lista di tutti i reparti del prodotto.
I gruppi clienti sostituiscono i vecchi listini prezzi con la differenza che un gruppo clienti non definisce nessun nuovo prezzo per i prodotti e le referenze. I prezzi da gestire si continuano a definire tramite i listini prezzo mentre nei gruppi clienti sono indicati i listini a utilizzare per i clienti del gruppo. Dove prima si assegnava ad un cliente un listino prezzi ora si assegna un gruppo clienti. Un cliente pertanto come prezzi avrà i prezzi dei listini del gruppo clienti a cui è stato assegnato.
Per ogni gruppo clienti, tramite il campo taxArea, è possibile indicare l'area fiscale da utilizzare per i prezzi mostrati ai clienti.
Per gestire i gruppi clienti sono stati aggiunti i seguenti metodi:
commerce.customer-groups.findcommerce.customer-groups.getcommerce.customer-groups.countcommerce.customer-groups.createcommerce.customer-groups.updatecommerce.customer-groups.deleteLa somma del numero di listini prezzo e del numero dei gruppi clienti non può essere maggiore di 255.
Parte delle funzioni dei listini prezzo sono ora state trasferite ai nuovi gruppi clienti. Aggiungere un nuovo listino ora significa avere la possibilità di gestire un nuovo prezzo liberamente modificabile con eventualmente più fasce prezzo per ogni referenza. Non è più possibile associare un listino prezzi ai clienti, per questo ora ci sono i gruppi clienti.
I campi dei prezzi per i prodotti e per le referenze sono cambiati. Per le referenze i campi listPrice, sellingPrice e costPrice sono stati accorpati nell'unico campo price.
Il nuovo campo price delle referenze riporta i prezzi per i listini liberi, derivati e per i gruppi clienti. I prezzi per i listini liberi e derivati sono sempre iva esclusa mentre i prezzi per i gruppi clienti sono iva esclusa o inclusa in base al valore del campo includeTaxes del gruppo clienti.
Per i prodotti il campo price è stato rinominato in salePrice e il campo sellingPrice è stato rimosso. Pertanto i campi dei prezzi dei prodotti ora sono listPrice e salePrice che riportano rispettivamente i prezzi di listino e vendita per i gruppi clienti. I prezzi sono iva esclusa o inclusa in base al valore del campo includeTaxes del gruppo clienti.
Il valore "position" del campo order del metodo commerce.products.find ordinava i prodotti per posizione e a parità di posizione per id del prodotto. Nella versione 4, "position" ordina i prodotti solo per posizione.
Il campo priceList è stato cambiato in group e ora indica il gruppo clienti invece del listino prezzi.
Per le aree fiscali è stato rimosso il campo isDefault in quanto ora l'area fiscale di default per i clienti non registrati è quella indicata nel gruppo clienti di default.
Nella precedente versione un prezzo di una referenza poteva essere zero ( "0.000" ) per un listino e in tal caso la referenza e il suo prodotto non erano visibili ai clienti del listino. Nella nuova versione una referenza può non avere prezzo ( null ) per un listino e in tal caso la referenza non sarà visibile ai clienti del listino. Il prodotto, diversamente dalla precedente versione, non sarà visibile solo se nessuna referenza è visibile.
La nuova versione consente di gestire gli sconti quantità ossia definire più fasce di prezzo per ogni referenza e listino in base alla quantità ordinata dal cliente.
Per leggere i prezzi delle referenze sono stati aggiunti i seguenti metodi:
Il metodo find ritorna esclusivamente i prezzi della prima fascia, ossia quella con quantità minore, mentre il metodo find-tiers ritorna i prezzi per tutte le fasce compresa la quantità minima di ogni fascia.
Il metodo find è più comodo da usare quando non si gestiscono gli sconti quantità o serve leggere solo il prezzo della prima fascia.
Per aggiornare i prezzi delle referenze sono stati aggiunti i seguenti metodi:
Il metodo update aggiorna esclusivamente il prezzo della prima fascia, ossia quella con quantità minore, mentre il metodo update-tiers aggiorna i prezzi per tutte le fasce compresa la quantità minima di ogni fascia.
Si fa notare che se si assegna ad un prezzo il valore null, allo scopo di rimuovere una referenza da un listino, allora verranno rimossi i prezzi per tutte le fasce. Questo avverrà sia che sia usi il metodo update che il metodo update-tiers.
Con l'introduzione di questi nuovi metodi è stato rimosso il metodo commerce.items.update-prices, al suo posto può essere usato commerce.item-prices.update con le dovute differenze.
Le promozioni si possono ora applicare a tutti i clienti o solo ai clienti di specifici gruppi. Siccome un prodotto di conseguenza può avere più promozioni applicate, una diversa per gruppo clienti, è stato rimosso dal prodotto il campo promotion ed è stato aggiunto il campo promotions che riporta la promozione, o null se non presente, per ogni gruppo clienti.
È stato aggiunto un nuovo tipo di promozione: Shippings. Le promozioni di tipo Shippings vengono applicate alle spedizioni e possono consistere di uno sconto in percentuale, uno sconto fisso o un prezzo fisso sulle spedizioni indicate.
Alle promozioni è stato aggiunto il campo priority per indicare una priorità che può variare da 0 a 100. Se si hanno più promozioni applicabili ora la scelta viene fatta in base a quale promozione ha priorità maggiore mentre nella precedente versione era a discrezione del sistema.
Per le promozioni sui prodotti, reparti e produttori è ora possibile indicare, tramite il nuovo campo discountList, se lo sconto fisso deve essere applicato al prezzo di listino invece che a quello di vendita. Nelle precedenti versioni di Open2b era possibile applicarlo solo al prezzo di listino.
Nella nuova versione, se il gruppo clienti ha una area fiscale o meno determina alcuni comportamenti delle promozioni ad esso applicate:
minSubtotal e maxSubtotal), per il quale una promozione è applicata, sono da intendersi iva inclusa se il gruppo clienti ha un'area fiscale e iva esclusa se non ha area fiscale.discountAmount) è da intendersi iva inclusa se il gruppo clienti ha un'area fiscale e iva esclusa se non ha area fiscale. Lo stesso vale per le promozioni sulle spedizioni.Il metodo commerce.promotions.find ora consente di leggere solo le promozioni con gli identificatori indicati nel campo ids di conditions.
La versione 4 dei metodi commerce.promotions.create e commerce.promotions.update ritornano un errore se:
/\s+/), seelements contiene elementi ripetuti e sestartTime è maggiore della data del campo endTime.Ad ogni prodotto è ora possibile associare degli attributi, con i risperttivi valori, da mostrare nella scheda del singolo prodotto sul sito e da usare per l'applicazione dei filtri.
Quelle che prima erano le varianti ora sono gli attributi, il termine variante indica ora un attributo utilizzato in un prodotto come variante. Quelle che prima erano le opzioni ora sono i valori di attributo e, come per le varianti, il termine opzione viene usato per un valore di attributo quando è usato come opzione per una referenza.
I metodi sulle varianti e sulle opzioni sono stati pertanto rinominati in:
commerce.attributes.findcommerce.attributes.getcommerce.attributes.countcommerce.attributes.createcommerce.attributes.updatecommerce.attributes.deletecommerce.attribute-values.findcommerce.attribute-values.getcommerce.attribute-values.countcommerce.attribute-values.createcommerce.attribute-values.updatecommerce.attribute-values.deleteRispetto alle varianti, agli attributi è stato aggiunto il campo position per indicare la posizione dell'attributo nelle URL.
Se il campo keywords di conditions del metodo commerce.products.find contiene uno o più codici a barre allora verranno ritornati anche i prodotti che hanno almeno una referenza con uno dei codici a barre indicati. Se la ricerca è per rilevanza questi prodotti saranno i primi nei risultati della ricerca.
I campi parent e parents ritornati dai metodi commerce.departments.get e commerce.departments.find sono cambiati. Per i reparti principali, ossia che non hanno reparto genitore, parent è null invece di 0. Invece parents non comprende più i nomi dei reparti genitori ma solo i loro identificatori.
Il metodo commerce.departments.find ora consente di leggere solo i reparti con gli identificatori indicati nel campo ids del nuovo parametro conditions. Il parametro parent è ora un campo di conditions.
Il metodo commerce.producers.find ora consente di leggere solo i produttori con gli identificatori indicati nel campo ids del nuovo parametro conditions.
L'identificatore dei documenti ( ordini, preventivi, fatture, ricevute e DDT ) ha cambiato tipo da bigint a int e sono cambiati di conseguenza anche gli identificatori dei documenti. Le API v2 e v3 accettano e ritornano i vecchi identificatori mentre le API v4 accettano e ritornano i nuovi identificatori.
I vecchi identificatori sono convertibili ai nuovi identificatori attraverso una operazione di shift a destra di 32 bit: id >> 32. Il viceversa non è possibile. Si noti che l'operazione deve essere eseguita su un intero a 64 bit e pertanto in base al linguaggio di programmazione utilizzato potrebbe essere necessario utilizzare una libreria apposita.
I documenti ora sono ricercabili per email dell'indirizzo di fatturazione tramite il campo address del parametro conditions.
Agli ordini è stato aggiunto il campo ip che indica il numero IP del dispositivo da cui è stato concluso l'ordine.
Ai documenti di trasporto (DDT) sono stati aggiunti i campi goodsAppearance, trackingNumber e transportReason.
Quando si cancella una lingua, tramite il metodo site.languages.delete ora vengono rimossi tutti i testi che sono stati in precedenza inseriti per la lingua cancellata.
Il metodo site.pages.find ora consente di leggere solo le pagine con gli identificatori indicati nel campo ids del nuovo parametro conditions.
Al parametro conditions del metodo site.blog-posts.find è stato aggiunto il campo ids per leggere gli articoli con gli identificatori indicati.
I banner e i menù sono stati rimossi dalla versione 4. Tutti i relativi metodo non sono più disponibili.
Un path ora può contenere più caratteri punto "." ma comunque sempre non consecutivi.
Sono state aggiunte le seguenti notifiche:
commerce.customer-groups.createcommerce.customer-groups.deletecommerce.customer-groups.updatesite.url-redirects.deletesite.url-redirects.setsite.url-rewrites.deletesite.url-rewrites.setSono state rimosse le seguenti notifiche:
site.banners.createsite.banners.deletesite.banners.updatesite.menus.updateLa versione 3 è stata introdotta con Open2b a Febbraio 2016. Se avete realizzato applicazioni che usano la versione 1 delle API allora dovete aggiornare le vostre applicazioni affinché usino la versione 2 o 3 delle API in quanto la versione 1 non è più supportata. Se invece avete realizzato applicazioni che usano la versione 2 allora potete:
stock considerate che internamente ha cambiato tipo da int a decimal con 2 cifre decimali. I metodi delle API versione 2 per compatibilità non ritornano le cifre decimali, ad esempio invece di 23.67 verrà ritornato 23. Inoltre se assegnate a stock un valore maggiore di 999999999 verrà assegnato comunque 999999999.commerce.movements.create può ritornare un errore InvalidValue se adjustment è minore di -999999999 o maggiore di 999999999.commerce.movements.get e commerce.movements.find ritornano adjustment senza le cifre decimali.minOrder, maxOrder e minQuote considerate che internamente hanno cambiato tipo da int a decimal con 2 cifre decimali. I metodi delle API versione 2 per compatibilità non ritornano le cifre decimali, ad esempio invece di 23.67 verrà ritornato 23.commerce.promotions.create e commerce.promotions.update con i campi discountAmount e discountPercent allora verificate che abbiano rispettivamente tipo decimal[8,2](0..) e int(0..99).v2 con v3 nella URL delle chiamate.commerce.products.find e commerce.products.count e in questi usate il campo conditions.keywords allora mettetene il valore all'interno di un array: [ "shirt" ] invece di "shirt" come indicato anche in seguito.code del prodotto o i campi sku e supplierSKU delle referenze o il campo sku dei documenti allora considerate che in una delle prossime versioni di Open2b la lunghezza aumenterà da 32 a 40 caratteri. Affinché la vostra applicazione sia compatibile con questo cambiamento, quando verrà introdotto, deve fin da subito gestire una lunghezza massima per questi campi di 40 caratteri anche se al momento è di fatto 32.stock considerate che ha cambiato tipo da int a decimal con 2 cifre decimali e il range dei possibili valori è passato dal precedente 0 → 2147483647 al nuovo 0.00 → 999999999.99.minOrder, maxOrder e minQuote considerate che hanno cambiato tipo da int a decimal con 2 cifre decimali e il range dei possibili valori è passato dal precedente 1 → 2147483647 al nuovo 0.01 → 999999.99.commerce.items.update-stock considerate che il parametro itemsStock ora si chiama stock e che la quantità ha cambiato tipo da int a decimal con 2 cifre decimali e il range dei possibili valori è passato dal precedente 0 → 2147483647 al nuovo 0.00 → 999999999.99.productsLayout considerate che non ha più columnsOnFirstRow, rows, imageSizeOnFirstRow e showDescriptionOnFirstRow mentre è stato aggiunto products. Ai valori consentiti per imageSize si sono aggiunti Optimal e Large. columns non può più prendere il valore 5 ma solo 1, 2, 3, 4 e 6.adjustment ha cambiato tipo da intero a decimale e il range dei possibili valori è cambiato dal precedente -2147483648 → 2147483647 al nuovo -999999999.99 → 999999999.99.commerce.product-images.find allora:
resized invece di sizes.commerce.product-images.get per leggere l'immagine originale di un prodotto allora adesso dovete usare al suo posto il metodo commerce.product-images.find, individuare l'immagine tra quelle ritornate e quindi recuperare l'immagine originale facendo una GET HTTP direttamente alla sua URL presente nel campo original.commerce.product-files.find o commerce.product-files.get per leggere il contenuto di un file di un prodotto allora adesso dovete recuperare il file facendo una GET HTTP direttamente alla sua URL presente nel campo address.commerce.product-files.count per leggere il numero di file di un prodotto allora dovrete cambiate la richiesta da {"product":281} a {"conditions":{"product":281}}.commerce.departments.update allora considerate che ora il campo largeImage non accetta più immagini di dimensioni fino a 32767 pixel ma solo fino a 2500 pixel. Inoltre il formato GIF non è più supportato.commerce.promotions.get e commerce.promotions.find, il campo discountAmount ora ha 3 cifre decimali invece di 2 e il campo discountPercent ha cambiato tipo da int a decimal con 3 cifre decimali.commerce.promotions.get e commerce.promotions.find, il campo smallImage può ritornare una immagine con larghezza e altezza fino a 255 pixel invece dei precedenti 200 pixel, e il campo largeImage può ritornare una immagine con larghezza e altezza fino a 2500 pixel invece dei precedenti 500 pixel.commerce.tax-areas.create e commerce.tax-areas.update verificate di non impostare a false il campo isActive per l'area fiscale di default perché ritornerebbero un errore.commerce.shipping-methods allora rinominate il campo percentCost di shippingRates in unitCost.site.menus.get [ Rimosso dalla versione 4 ] e site.menus.find [ Rimosso dalla versione 4 ] rinominate il campo openAsPopup in openAsModal.create o update dei documenti (ordini, preventivi, fatture, ricevute e DDT) allora dovete rimuovere il campo taxArea in quanto rimosso. Nelle precedenti versioni anche se il campo era presente non era comunque utilizzato.Aggiunti i metodi per la gestione dei templates. In particolare sono stati aggiunti i metodi:
site.templates.findsite.templates.find-filessite.templates.read-text-filesite.templates.write-text-filesite.templates.delete-filesPer consentire una ricerca sui prodotti per parole chiave con i risulati ordinati per rilevanza, nei metodi commerce.products.find e commerce.products.count il tipo del campo conditions.keywords è cambiato da string ad array di string ed è stato
aggiunto relevance come possibile valore per order.
Al campo conditions dei metodi commerce.products.find e commerce.products.count sono stati aggiunti i campi promotion per ritornare solo i prodotti che hanno una determinata promozione applicata, codes per ritornare solo quelli con i codici prodotto indicati e hasZeroPrice per ritornare i prodotti che hanno o meno prezzo zero per il listino indicato.
Al metodo commerce.products.count è stato aggiunto il campo priceList da utilizzare in combinazione con il campo hasZeroPrice di conditions per indicarne il listino prezzi.
Per supportare al meglio i template responsive, al campo productsLayout, utilizzato da diversi metodi, è stato aggiunto products e sono stati invece rimossi i campi columnsOnFirstRow, rows, imageSizeOnFirstRow e showDescriptionOnFirstRow.
Ai valori consentiti per il campo imageSize di productsLayout si sono aggiunti Optimal e Large.
Ai valori consentiti per il campo columns di productsLayout è stato tolto 5, pertanto i valori consentiti ora sono 1, 2, 3, 4 e 6.
Se si ha bisogno di leggere o aggiornare i vecchi campi di productsLayout, non più presenti nella versione 3, allora si possono chiamare gli stessi metodi ma con la versione 2 delle API.
È stato aggiunto il metodo commerce.items.update-prices [ Rimosso dalla versione 4 ] per aggiornare i prezzi di listino e vendita di più referenze assieme. Si possono aggiornare i prezzi, di un unico listino, per 100 referenze con una sola chiamata.
Per quanto riguarda il campo code del prodotto, i campi sku e supplierSKU delle referenze e il campo sku dei documenti, la lunghezza massima che possono ritornare i metodi per questi campi passa da 32 a 40 caratteri. Invece la lunghezza massima che accettano i metodi nelle richieste rimane di 32.
Ad esempio, come conseguenza di quanto detto, la vostra applicazione deve aspettarsi che un metodo ritorni una referenza con sku lungo 40 caratteri e deve gestire il fatto di non poterla modificare in quanto al momento i metodi nella richiesta consentono solo sku con al massimo 32 caratteri.
Questo particolare comportamento delle API è richiesto per compatibilità con la versione 2. Nel momento in cui la versione 2 non sarà più supportata, verrà introdotta una nuova versione delle API che rimuove queste limitazioni.
Per i metodi commerce.products.find, commerce.products.get, commerce.items.find e commerce.items.get ai campi thumbnailImage, smallImage, mediumImage e largeImage è stato aggiunto il campo url2x con l'URL dell'immagine per gli schermi a doppia risoluzione.
Il metodo commerce.product-images.find è stato modificato di conseguenza. Ora ritorna i nuovi campi original e resized. Sono stati invece rimossi i campi baseURL e sizes. Sono stati inoltre aggiunti alla nuova versione del metodo i campi limit e first che limitano il numero di immagini da ritornare a 1000. Le versioni precedenti ritornavano tutte le immagini che soddisfavano le condizioni.
Le immagini dei prodotti ora possono avere una dimensione massima di 2 MB. Nelle precedenti versioni il limite era 1 MB.
È stato aggiunto il metodo commerce.product-images.resize per scalare le immagini dei prodotti alle dimensioni indicate di default nel gestionale.
Il metodo commerce.product-images.get non è più presente.
Il campo stock delle referenze ha cambiato tipo da int a decimal consentendo di gestire giacenze con due cifre decimali. Il range dei possibili valori è passato dal precedente 0 → 2147483647 al nuovo 0.00 → 999999999.99. Oltre ai metodi di commerce.items è coinvolto nella modifica anche il metodo commerce.products.create.
Di conseguenza sono cambiati i tipi dei campi minOrder, maxOrder e minQuote del prodotto da int a decimal con 2 cifre decimali. Il range dei possibili valori è passato dal precedente 1 → 2147483647 al nuovo 0.01 → 999999.99.
I metodi commerce.movements.get e commerce.movements.find ritornano adjustment con due cifre decimali e anche il metodo commerce.movements.create accetta adjustment con due cifre decimali.
Inoltre per il metodo commerce.items.update-stock il parametro itemsStock ora si chiama stock e la quantità ha cambiato tipo da int a decimal con 2 cifre decimali e il range dei possibili valori è passato dal precedente 0 → 2147483647 al nuovo 0.00 → 999999999.99.
Per i prodotti è disponibile il nuovo campo unitOfMeasure che indica l'unità di misura della quantità. L'unità di misura consente sia di mostrare l'unità di misura su cui si basa un prezzo ( es: "23,99/kg", "12,15 a confezione" ) e sia di ordinare quantità con uno o più decimali ( es: "3,19 Kg", "55,9 mq" ). Per la gestione delle unità di misura sono state aggiunti i seguenti metodi:
commerce.units-of-measure.findcommerce.units-of-measure.getcommerce.units-of-measure.countcommerce.units-of-measure.createcommerce.units-of-measure.updatecommerce.units-of-measure.deleteIl metodo commerce.items.find ora prende in order anche barcode e -barcode per poter ordinare le referenze in base al codice a barre.
Il parametro description del metodo commerce.product-files.update ora non è più obbligatorio.
Il campo file dei metodi commerce.product-files.find e commerce.product-files.get è stato rimosso e adesso dovete recuperare il file facendo una GET HTTP direttamente alla sua URL presente nel campo address.
Il parametro conditions del metodo commerce.product-files.find non è più obbligatorio ed ora è possibile utilizzare il metodo commerce.product-files.count per avere il numero totale dei file e non solo quelli di un determinato prodotto.
Per il metodo commerce.departments.update il campo smallImage ora può prendere una immagine fino a 2500 pixel invece dei precedenti 255 pixel. Se l'immagine è comunque superiore a 255 pixel viene scalata mantenendone le proporzioni. Il campo largeImage ora può prendere una immagine fino a solo 2500 pixel invece dei precedenti 32767 pixel.
Non sono più supportate le immagini in formato GIF, lo sono quelle in formato JPEG e PNG.
Per le promozioni sul carrello si può fare in modo che vengano applicate solo se il costo totale del carrello è maggiore o uguale ad un minimo importo oppure se è minore o uguale ad un massimo importo. Allo scopo sono stati aggiunti alle promozioni i campi minSubtotal e maxSubtotal.
Nelle promozioni il campo discountAmount ora ha 3 cifre decimali invece di 2 e il campo discountPercent ha cambiato tipo da int a decimal con 3 cifre decimali.
È possibile ora modificare le immagini piccola e larga delle promozioni. Sono stati aggiunti i nuovi campi smallImage e largeImage al metodo commerce.promotions.update. La dimensione massima dell'immagine da caricare è di 2500 pixel. Per l'immagine piccola se la dimensione dell'immagine caricata è superiore a 255 pixel allora l'immagine viene scalata preservandone le proporzioni.
Per i metodi commerce.promotions.get e commerce.promotions.find, il campo smallImage può ritornare una immagine con larghezza e altezza fino a 255 pixel invece dei precedenti 200 pixel, e il campo largeImage può ritornare una immagine con larghezza e altezza fino a 2500 pixel invece dei precedenti 500 pixel.
Il parametro name del metodo commerce.promotions.create non è più obbligatorio.
Aggiunto il parametro language ai metodi commerce.producers.get e commerce.producers.find per ritornare i campi del SEO per una sola lingua.
Inoltre il campo name del produttore ora più avere lunghezza zero.
Aggiunto il campo showName alle varianti per indicare se il nome della variante deve essere visualizzato o meno assieme ai nomi delle opzioni.
Aggiunto il campo canLogin alle condizioni del metodo commerce.customers.find per ritornare solo i clienti che possono fare il login al sito.
Ora viene ritornato un errore se si cerca di impostare a non attiva l'area fiscale di default.
Il campo taxArea passato come parametro ai metodi create e update dei documenti (ordini, preventivi, fatture, ricevute e DDT) è stato rimosso. Nelle precedenti versioni anche se il campo era presente non era comunque utilizzato.
Nei metodi di commerce.shipping-methods il campo percentCost di shippingRates è stato rinominato in unitCost e il range di valori è stato esteso dal precendente 0.00 → 99.99 al nuovo 0.000 → 9999999.999.
Ai metodi di site.pages sono stati aggiunti due nuovi campi: image e isAlwaysVisible.
I metodi site.pages.find e site.pages.get ora ritornano ProductLayout anche per la pagina di template wish-list.html. Nelle versioni precedenti veniva ritornato null.
È stato aggiunto il nuovo campo isDefault al metodo site.languages.find che indica se la lingua è quella di default del sito.
Per ogni gestore del negozio è possibile ora indicare la lingua del gestionale. Per questo è stato aggiunto il campo locale ai gestori site.accounts.
È stato aggiunto il metodo site.menus.update [ Rimosso dalla versione 4 ] per aggiornare un menù. Sono stati aggiunti i campi description e showTo alle voci dei menù e il campo openAsPopup è stato rinominato in openAsModal.
I banner ora possono avere una dimensione massima di 500 KB invece di 200 KB. Inoltre il campo link, oltre alle URL che iniziano con http:// e https://, consente ora anche le URL che iniziano con /.
Sono state aggiunte le seguenti notifiche:
commerce.contacts.deletecommerce.currencies.deletecommerce.customers.deletecommerce.departments.deletecommerce.invoices.deletecommerce.items.deletecommerce.movements.deletecommerce.notes.deletecommerce.options.deletecommerce.orders.deletecommerce.packing-slips.deletecommerce.payment-methods.deletecommerce.price-lists.deletecommerce.producers.deletecommerce.products.deletecommerce.product-files.deletecommerce.product-images.deletecommerce.product-reviews.deletecommerce.promotions.deletecommerce.quotes.deletecommerce.receipts.deletecommerce.shipping-methods.deletecommerce.suppliers.deletecommerce.tax-areas.deletecommerce.tax-classes.deletecommerce.units-of-measure.createcommerce.units-of-measure.deletecommerce.units-of-measure.updatecommerce.variants.deletesite.accounts.deletesite.banners.deletesite.languages.deletesite.menus.updatesite.newsletter-lists.deletesite.newsletter-members.deletesite.pages.deleteDiversamente dalle versioni 1 e 2, viene ritornato un errore UnknownField se l'oggetto passato nella richiesta presenta un campo che non è presente nella documentazione del metodo.
La versione 2 delle API introduce nuovi metodi e alcuni piccoli cambiamenti. Se avete realizzato applicazioni che usano la versione 1 delle API allora potete:
v1 con v2 nella URL delle chiamate.commerce.items.count e commerce.items.find e in questi usate il campo conditions.product allora sostituitelo con il campo conditions.products come indicato in seguito.La versione 2 è stata introdotta con Open2b a Settembre 2013. Le seguenti sono le differenze rispetto alla prima versione.
Nei metodi commerce.items.count e commerce.items.find il campo conditions.product è diventato conditions.products e ora prende più identificatori di prodotto invece che uno solo.
È stato aggiunto il nuovo campo sortOrder per gestire l'ordinamento dei prodotti nelle pagine reparti, produttori, promozioni, home e novità.
È stato aggiunto il nuovo campo position per gestire l'ordinamento dei reparti.
Aggiunti i metodi per la gestione dei contatti. In particolare sono stati aggiunti i metodi:
commerce.contacts.findcommerce.contacts.getcommerce.contacts.countcommerce.contacts.createcommerce.contacts.updatecommerce.contacts.deleteAlle promozioni sono stati aggiunti i campi per la gestione del SEO:
seoTitleseoKeywordsseoDescriptionÈ stato aggiunto il nuovo campo isDefault ai metodi di pagamento e ai metodi di spedizione per indicare il metodo selezionato di default nel carrello.
Sono state aggiunte le recensioni ai prodotti. In particolare sono stati aggiunti i metodi:
commerce.product-reviews.findcommerce.product-reviews.countcommerce.product-reviews.createcommerce.product-reviews.deleteInoltre è stato aggiunto il campo rating per i prodotti e il relativo metodo per aggiornare il rating di più prodotti con una sola chiamata:
Diversamente dalla versione 1, viene ritornato un errore (HTTP 400) se sono presenti nel corpo della chiamata dei caratteri non UTF-8.