Prodotti
Il flusso prodotti è il più complesso in quanto coinvolge la maggior parte dei dati e richiede attenzione sulle tipologie del dato, soprattutto sui metafields configurati lato Shopify.
La singola chiamata di inserimento prodotti contiene al suo interno una semplificazione delle API di Shopify frutto di 6 anni di esperienza sull'applicativo. Questo adapter soprattutto integra all'interno circa 23 chiamate per ogni prodotto, che aumentano a seconda dei casi (nuove immagini, nuovi file, modifiche sui markets etc...).
Anagrafica prodotti Json
Informazioni sul tracciato relativo all'inserimento prodotti
- Le informazioni saranno nella lingua principale di Shopify
- I dati indispensabili per creare un prodotto (in draft come da procedura Puro/SBS) sono title e sku
- Per l'aggiornamento del prodotto è necessario SKU
- Gli attributi non presenti sui json non verranno aggiornati su Shopify (intendendo con attributi i campi base, i metafields e i files)
- Gli attributi con valore NULL o vuoto verranno sbiancati anche su Shopify
- L'attributo variants quando presente deve comprendere tutte le varianti (quelle non presenti sono rimosse)
- Ordinamento varianti può essere fatto implicito, tramite ordine sull'array oppure esplicito tramite il metadato "sortingNumber"
- L'attributo optionValues delle varianti contiene gli attributi che definiscono la configurabilità del prodotto (colore, taglia etc...). Possono essere al massimo 3 livelli di configurazione
- Le immagini possono essere associate al prodotto principale o alle varianti.
- In aggiornamento l'elenco immagini deve essere completo, le immagini mancanti verranno rimosse.
- Se nessuna immagine viene inviata, né sul prodotto principale né sulle varianti, la galleria immagini non viene aggiornata. (Questo soprattutto per evitare rimozioni erronee delle immagini)
- I metafield sono tipizzati già nel tracciato di esempio, il tipo deve essere mantenuto per preservare il successo dell'integrazione
- La sezione metaobjects contiene l'associazione con entità create su Shopify. E' possibile utilizzare l'handle del metaobject (es: "app-test-con-link") oppure tramite resourceId
- La sezione markets indica la lista dei mercati su cui un prodotto è visibile, nel caso sia assente il prodotto sarà visibile su tutti i mercati
- Per quanto riguarda la parte di invetory item, supportiamo le seguenti proprietà: weight, weightUnit, harmonizedSystemCode, countryCodeOfOrigin, provinceCodeOfOrigin, costPerItem e isDigitalItem. Possono essere specificate sia a livello di prodotto (ad esempio se il peso è lo stesso per tutte le varianti è possibile specificarlo solo lì) sia a livello di variante. Nel caso dell'harmonizedSystemCode, del countryCodeOfOrigin, provinceCodeOfOrigin, costPerItem e isDigitalItem se nella richiesta esistono delle varianti, è necessario specificare tali dati a livello di variante. (N.B. i valori che possono essere associati a weightUnit sono: 'g' e 'kg'. Se omesso, il valore di default è kg. Invece, il valore di default di isDigitalItem è 'false', ovvero il prodotto è considerato come fisico e non digitale)
- Le informazioni riguardanti la SEO possono essere inserite utilizzando i campi metaTitle e metaDescription.
- Il barcode, se specificato a livello di prodotto, viene inserito solo in assenza di varianti o nel caso di una singola variante. Se il prodotto presenta più varianti, è necessario assegnare il barcode a ciascuna variante specifica.
- È possibile configurare l'URL di reindirizzamento tramite il campo not-found-handle per gestire i casi di archiviazione o esclusione del prodotto da un catalogo (market), solo nel caso di prodotto attivo. Inoltre, aggiorna automaticamente il reindirizzamento del prodotto all'URL (handle) quando questo viene modificato. (N.B. Quando il prodotto viene archiviato e successivamente riattivarto su Shopify, l'URL di reindirizzamento viene cancellato da Shopify)
- I tag possono essere gesatini in due modalità:
- Inserimento/Aggiornamento completo: i tag presenti su Shopify saranno sostituiti interamente da quelli specificati nel campo tags del tracciato.
- Inserimento/Aggiornamento parziale: i tag indicati nel campo tagsDomain vengono aggiunti o modificati senza alterare quelli esistenti, inseriti manualmente o da altri applicativi.
Tracciato
Tracciato per inserimento prodotti con tutti esempio di metafield tipizzati.
{
"sku": "BGSM001C210",
"title": "Product Test 1 Con Varianti",
"barcode": "14785985742",
"handle": "product-product-1",
"not-found-handle": "/collections/all",
"description": "Description of product",
"price": 12,
"vendor": "SBS",
"tags": [
"tagprimo",
"tag2"
],
"markets": [
"81543987507",
"81544020275",
"81544053043",
"81544085811",
"82294604083"
],
"media": [
{
"alternativeText": "image test",
"url": "https://demo.sintra-soh.com/csv-import-images/BGSM001C005/BGSM001C005.jpg"
},
{
"alternativeText": "image test 1",
"url": "https://demo.sintra-soh.com/csv-import-images/BGSM001C005/BGSM001C005_1.jpg"
}
],
"metaobjects": {
"app": [
"app-test-senza-link",
"app-test-con-link"
],
"tech": "test-da-cancellare"
},
"files": {
"certification_file": "http://demo.sintra-soh.com/LdV/samplepdf.pdf",
"documents_file": "http://demo.sintra-soh.com/LdV/samplepdf_1.pdf",
"gallery_images_file": "http://demo.sintra-soh.com/ShippingLabels/1002-816-0.pdf",
"manual": "http://demo.sintra-soh.com/ShippingLabels/1006-867-0.pdf"
},
"metafields": {
"accessories_included": "value",
"addition_features": "value",
"attachment": "value",
"attachment_system": "value",
"audio_output": "value",
"audio_power": "value",
"audio_power_unit": "value",
"logistic_depth": 1,
"type_product": "[\"tipo1\",\"tipo2\"]",
"video": "https://www.youtube.com/watch?v=WqDiH5bnZ4s",
"volume_control_position": "value",
"warrentyupgrade": false
},
"variants": [
{
"sortingNumber": 1,
"sku": "BGSM001C210-1",
"barcode": "1478598574258",
"optionValues": {
"color": "Blue"
},
"media": [
{
"alternativeText": "image test 1 facoltativo",
"url": "http://demo.sintra-soh.com/csv-import-images/BGSM003C014/BGSM003C014.jpg"
},
{
"alternativeText": "image test 2 facoltativo",
"url": "http://demo.sintra-soh.com/csv-import-images/BGSM003C014/BGSM003C014_1.jpg"
}
],
"metafields": {
"subtitle": "value"
},
"files": {
"gallery_images_file": "http://demo.sintra-soh.com/ShippingLabels/1006-867-0.pdf"
},
"harmonizedSystemCode": "147856923",
"countryCodeOfOrigin": "IT",
"provinceCodeOfOrigin": "IT-52",
"costPerItem": 14.95,
"isDigitalItem": true
},
{
"sortingNumber": 2,
"sku": "BGSM001C210-2",
"barcode": "1478598574259",
"optionValues": {
"color": "Lilac"
},
"media": [
{
"alternativeText": "lilla davanti",
"url": "http://demo.sintra-soh.com/csv-import-images/BGSM003C015/BGSM003C015.jpg"
},
{
"alternativeText": "lilla sopra",
"url": "http://demo.sintra-soh.com/csv-import-images/BGSM003C015/BGSM003C015_1.jpg"
}
],
"metafields": {
"subtitle": "value"
},
"files": {
"gallery_images_file": "http://demo.sintra-soh.com/ShippingLabels/1006-867-0.pdf"
},
"weight": "1.09",
"weightUnit": "kg",
"harmonizedSystemCode": "123456789",
"countryCodeOfOrigin": "IT",
"provinceCodeOfOrigin": "IT-52",
"costPerItem": 14.95,
"isDigitalItem": true
}
],
"weight": "1090",
"weightUnit": "g",
"metaTitle": "SEO Product metaTile",
"metaDescription": "SEO Product metaDescription",
"harmonizedSystemCode": "987456321",
"countryCodeOfOrigin": "IT",
"provinceCodeOfOrigin": "IT-52",
"costPerItem": 14.95,
"isDigitalItem": true
}
Configurazioni flusso prodotto
Oltre alle configurazioni base del flusso dati
aggiungere le seguenti impostazioni sui Settings Override:
Campo | Valore | Note |
---|---|---|
Resource Path | /api/adp/shopify/egress/sync-product-to-shopify | path dell'adapter per i prodotti |
Headers :: x-active-product | true/false | determina se i prodotti vengono creati come attivi (true) o draft (false) |
Headers :: x-publish-product | true/false | determina se i prodotti vengono pubblicati su online store (true) oppure no (false) |
Headers :: x-avoid-title-update | true/false | determina se il titolo del prodotto deve essere aggiornato (false) oppure no (true) |