Προδιαγραφές XML

Για να μπορεί να γίνει δεκτό το Data Feed θα πρέπει να περιέχει όλα τα υποχρεωτικά πεδία που πληρούν τις προδιαγραφές όπως αυτές ορίζονται παρακάτω.

XML Declaration

Το XML θα πρέπει να περιλαμβάνει οπωσδήποτε το encoding του αρχείου και την ημερομηνία δημιουργίας. Η ημερομηνία δημιουργίας χρησιμοποιείται για να εξακριβώσουμε αν κάποιο αρχείο περιέχει ενημερωμένα δεδομένα ή όχι.

Παράδειγμα:

<?xml version="1.0" encoding="UTF-8"?>
<mywebstore>
   <created_at>2010-04-08 12:32</created_at>
   ......
</mywebstore>
To encoding που δηλώνετε στο declaration πρέπει να είναι το πραγματικό. Αν π.χ. δηλώνετε ISO-8859-7, το αρχείο δεν πρέπει να περιέχει χαρακτήρες από άλλο character set γιατί υπάρχει ενδεχόμενο να μην είναι έγκυρο, με αποτέλεσμα τη μη ανανέωση των προϊόντων.
Αν τα αρχεία δεν παράγονται σε πραγματικό χρόνο, θα πρέπει να φροντίσετε η διαδικασία αυτή να γίνεται τουλάχιστον μία φορά την ημέρα.

Υποχρεωτικά πεδία

Τα παρακάτω πεδία πρέπει να υπάρχουν υποχρεωτικά στο data feed και να έχουν έγκυρες τιμές.

Unique ID

abc <200 NOHTML

To πεδίο αυτό είναι το μοναδικό αναγνωριστικό του προϊοντος στο κατάστημά σας. Η τιμή του πεδίου αυτού πρέπει να παραμείνει ίδια καθ' όλη τη διάρκεια "ζωής" του προϊόντος.

Αν αλλάξει o τίτλος ενός προϊόντος ώστε να αφορά διαφορετικό μοντέλο (π.χ. από Sony LDF700, γίνει Sony LDF800), το προϊόν θα απενεργοποιηθεί. Τα Unique ID πρέπει πάντα να αφορούν το ίδιο προϊόν.
Το Unique ID δεν μπορεί να υπάρχει σε παραπάνω από ένα προϊόν. Αν υπάρχει παραπάνω από μία φορά μέσα στο feed, τότε το προϊόν θα αποθηκευθεί με τα στοιχεία της τελευταίας σε σειρά εμφάνισης.
Σε περίπτωση που το commerce engine σας υποστηρίζει παραπάνω από μία γλώσσες, τα προϊόντα θα πρέπει να περιλαμβάνονται ΜΟΝΟ μία φορά και κατά προτίμηση στα Ελληνικά.

Παράδειγματα:

<UniqueID>32</UniqeID>
<product id="44">...</product>
<PRODUCTID>232AD</PRODUCTID>

Name

abc <300 NOHTML

Είναι ο τίτλος του προϊόντος. Στον τίτλο πρέπει να περιλαμβάνονται όλα τα χαρακτηριστικά που αφορούν το προϊόν όπως π.χ. κατασκευαστής, μοντέλο, χρώμα, έκδοση, κατάσταση. Όσο πιο ακριβής είναι ο τίτλος του προϊόντος, τόσο πιο γρήγορα θα γίνει η ταξινόμησή του.

Ο τίτλος των προϊόντων που δεν είναι καινούρια θα πρέπει οπωσδήποτε να αναφέρει την κατάστασή τους (ανακατασκευασμένα, μεταχειρισμένα, εκθεσιακά κτλ), διαφορετικά θα απενεργοποιούνται από τη διαχείριση.

Παραδείγματα:

<Name>Nokia 5800 XpressMusic</Name>
<title>Nokia 5800 XpressMusic</title>
Στον τίτλο των προϊόντων δεν επιτρέπεται η αναφορά σε πληροφορίες που αφορούν στην εγγύηση του προϊόντος, στο κόστος των μεταφορικών εξόδων ή του τρόπου πληρωμής του, σε ασαφή δώρα / γενικές προσφορές που έχει επιλέξει το κατάστημα για να ενισχύσει την πώληση του προϊόντος και σε κάθε είδους προωθητική (marketing) ενέργεια.

Link

abc <400

Είναι ο σύνδεσμος που οδηγεί στη σελίδα του καταστήματός σας για το συγκεκριμένο προϊόν. Θα πρέπει να είναι έγκυρος σύνδεσμος και να ξεκινάει με http ή https.

Τα links ΔΕΝ πρέπει να είναι URL-encoded.
O σύνδεσμος αυτός θα πρέπει να οδηγεί σε σελίδα προϊόντος και όχι σε κατηγορία ή συλλογή προϊόντων.
Στο σύνδεσμο του εκάστοτε προϊόντος δεν πρέπει να περιέχεται το session id της σύνδεσης!

Λάθος (περιέχει session id):

<url>http://www.mydomain.com/products/product.php?itemid=1&osCsid=77777d01474f6df1e9d0775900409ddd&page=1</url>

Σωστό (το session id έχει αφαιρεθεί):

<url>http://www.mydomain.com/products/product.php?itemid=1&page=1</url>

Παραδείγματα:

<link>http://www.mydomain.com/products/1</link>
<url>http://www.mydomain.com/products/product.php?itemid=1</url>
<url><![CDATA[http://www.mydomain.com/products/product.php?itemid=1&somevar=3]]></url>
<url><http://www.mydomain.com/products/product.php?itemid=1&amp;somevar=3</url>

Image

abc <400

Είναι η εικόνα (φωτογραφία) του προϊόντος. Πρέπει να είναι σύνδεσμος σε εικόνα και να ξεκινάει με http. Script που παράγουν εικόνες υπάρχει πιθανότητα να μη λειτουργούν σωστά, γι' αυτό και είναι προτιμητέο ο σύνδεσμος να οδηγεί στο πραγματικό αρχείο.

Όσο πιο μεγάλη είναι η εικόνα, τόσο το καλύτερο. Οι εικόνες αποθηκεύονται από εμάς και δημιουργείται ένα κατάλληλου μεγέθους thumbnail.

Τα links ΔΕΝ πρέπει να είναι URL-encoded.
Αποφύγετε να βάζετε "Νο Image" εικόνες γιατί αν αργότερα την αλλάξετε, το Skroutz.gr δεν θα την ανανεώσει. Αν κάποιο προϊόν σας δεν έχει φωτογραφία, στείλτε ως σύνδεσμο το κενό string. Όταν αργότερα προστεθεί η εικόνα, το σύστημα θα καταλάβει τη διαφορά και θα την ανανεώσει.

Παραδείγματα:

<image>http://www.mydomain.com/photos/1.jpg</image>
<imageurl>http://www.mydomain.com/photos/b&amp;b.jpg</imageurl>
<url><![CDATA[http://www.mydomain.com/photos/b&b.jpg]]></url>

Category

abc <300 NOHTML

Είναι η κατηγορία του προϊόντος. Πρέπει να έχει όλη τη διαδρομή μέχρι την κατηγορία του προϊόντος. Π.χ. αν το προϊόν ανήκει στην κατηγορία "Εσωτερικος Σκληρός Δίσκος", το πεδίο θα πρέπει να έχει τιμή "Ηλεκτρονικοί Υπολογιστές > Hardware > Εσωτερικοί Σκληροί Δίσκοι".

Αποφύγετε διφορούμενες κατηγορίες που περιλαμβάνουν διαφορετικά προϊόντα μεταξύ τους (π.χ. "Εκτυπωτές & Scanner"), όπου η ταξινόμηση θα καθυστερεί λόγω των επιπλέον ελέγχων που πρέπει να γίνονται για να τοποθετούνται τα προϊόντα στις σωστές κατηγορίες.

Παραδείγματα:

<category>Κινητή Τηλεφωνία &gt; Bluetooth</category>
<category_path>Ηλεκτρονικοί Υπολογιστές - Hardware - Επεξεργαστές</category_path>

Price

123.0

Είναι η τιμή του προϊόντος με Φ.Π.Α.. Αν η τιμή δεν περιλαμβάνει Φ.Π.Α., θα προστεθεί το ανώτατο ποσοστό για όλα τα είδη των προϊόντων.

Η τιμή θα πρέπει να είναι ίδια για όλους και να μην έχει προϋποθέσεις εφαρμογής.

ISBN

abc <100 NOHTML

Αν το προϊόν είναι βιβλίο, το πεδίο αυτό είναι υποχρεωτικό και πρέπει να περιέχει τον αριθμό ISBN του βιβλίου. Αν δεν πρόκεται για βιβλίο, το πεδίο αυτό δεν είναι υποχρεωτικό.

Βιβλία που δεν περιέχουν ISBN δεν θα ταξινομούνται.

InStock

ΥN

Η κατάσταση του αποθέματος (stock) του προϊόντος.

Όταν δεν υπάρχει πληροφορία από το κατάστημα, το πεδίο αυτό θεωρείται ότι έχει την τιμή N.

Availability

abc <60 NOHTML

Το πεδίο αυτό πρέπει να αναφέρει την έκφραση διαθεσιμότητας που χρησιμοποιείτε και στο site σας.

Το Skroutz.gr διαθέτει συγκεκριμένα λεκτικά τα οποία αντιστοιχεί σε λεκτικά καταστημάτων:

  • Σε απόθεμα αφορά ετοιμοπαράδοτα προϊόντα τα οποία υπάρχουν στο κατάστημα
  • 1 έως 3 ημέρες αφορά προϊόντα τα οποία υπάρχουν στην αποθήκη και αποστέλλονται στον χρήστη σε 1 έως 3 ημέρες
  • 4 έως 7 ημέρες αφορά προϊόντα τα οποία υπάρχουν στην αποθήκη και αποστέλλονται στον χρήστη σε 4 έως 7 ημέρες
  • 7+ ημέρες αφορά προϊόντα τα οποία υπάρχουν στην αποθήκη και αποστέλλονται στον χρήστη σε περισσότερες από 7 ημέρες
  • Κατόπιν Παραγγελίας αφορά προϊόντα τα οποία δεν υπάρχουν σε απόθεμα και παραδίδονται μόνο κατόπιν παραγγελίας
  • Προ-παραγγελία αφορά προϊόντα τα οποία αναμένονται και μπορούν να παραγγελθούν 15 μέρες πριν την άφιξη του προϊόντος
Όσα προϊόντα δεν διαθέτουν λεκτικό διαθεσιμότητας ή αναγράφουν λεκτικά τύπου "εξαντλημένο", "μη διαθέσιμο", "κατόπιν συνεννόησης", "επικοινωνήστε μαζί μας", "άγνωστη διαθεσιμότητα" κτλ, δεν θα εμφανίζονται στο Skroutz.gr.

MPN

abc <100 NOHTML

Είναι ο μοναδικός κωδικός που δίνει ο κατασκευαστής στα προϊόντα του. Χρησιμοποιείται για την ταυτοποίηση των προϊόντων σε περίπτωση που αυτό δεν είναι εμφανές από το μοντέλο.

Υποχρεωτικό πεδίο για προϊόντα που ανήκουν σε βασικές κατηγορίες τεχνολογίας (τηλεοράσεις, tablets, ηχοσυστήματα, υπολογιστές, φωτογραφικές μηχανές, hardware, βάσεις, κεραίες, κονσόλες, αξεσουάρ κτλ).

Category ID

123

To ID της κατηγορίας του προϊόντος. Ο αριθμός αυτός βοηθάει στην αναγνώριση κάθε κατηγορίας ανεξάρτητα από την ονομασία της, μειώνοντας δραματικά τον χρόνο επεξεργασίας σε περίπτωση αλλαγής ονόματος. Αν π.χ. η κατηγορία μετονομαστεί από "Ηλ. Υπολογιστές" σε "Ηλεκτρονικοί Υπολογιστές" και έχει το ίδιο ID, δεν θα υπάρξει καμία επιπλέον καθυστέρηση στην ταξινόμηση των προϊόντων, κάτι που δεν ισχύει στην αντίθετη περίπτωση.

Το ID αυτό θα πρέπει να είναι μοναδικό και να μην αλλάζει ποτέ για την ίδια κατηγορία.

Manufacturer

abc <100 NOHTML

Ο κατασκευαστής του προϊόντος.

Ο κατασκευαστής θα πρέπει να περιλαμβάνεται και στον τίτλο, ανεξάρτητα από το αν περιλαμβάνεται και στο πεδίο κατασκευαστή.

Προαιρετικά πεδία

Τα παρακάτω πεδία είναι προαιρετικά με μόνη εξαίρεση τα βιβλία όπου το ISBN είναι υποχρεωτικό για την ταξινόμησή τους.

Description

abc NOHTML

Λεπτομερής περιγραφή του προϊόντος. Η εμφάνισή της εξαρτάται από την κατηγορία του προϊόντος.

Weight

123

Το βάρος του προϊόντος σε γραμμάρια.

Το πεδίο αυτό προς το παρόν δεν χρησιμοποιείται, αλλά ενδέχεται να χρησιμοποιηθεί στο μέλλον για τον υπολογισμό μεταφορικών.

Shipping

123.0

Αν γνωρίζετε το ακριβές κόστος παράδοσης (π.χ. έχετε σταθερά μεταφορικά 5 ευρώ), μπορείτε να το βάλετε εδώ. Για δωρεάν μεταφορικά, η τιμή του πεδίου πρέπει να είναι 0.

Το κόστος αυτό είναι ΑΝΕΞΑΡΤΗΤΟ του βάρους και της τοποθεσίας αποστολής. Αν τα μεταφορικά σας έχουν προυποθέσεις, αυτό το πεδίο πρέπει να είναι κενό.
Αν τα μεταφορικά δεν ισχύουν έστω και για ένα προϊόν, θα απενεργοποιηθούν για όλα τα προϊόντα του data feed.

Υπόμνημα

  • abc = Αλφαριθμητικό
  • 123 = Ακέραιος
  • 123.0 = Δεκαδικός
  • <X = Μικρότερο από X χαρακτήρες
  • NOHTML = Δεν επιτρέπεται η HTML
  • XY = Επιλογή X ή Y

Παράδειγμα XML

<?xml version="1.0" encoding="UTF-8"?>
<mywebstore>
   <created_at>2010-04-08 12:32</created_at>
   <products>
      <product>
          <id>322233</id>
          <name><![CDATA[MadBiker 600]]></name>
          <link><![CDATA[http://www.mywebstore.gr/product/322233]]></link>
          <image><![CDATA[http://www.mywebstore.gr/product/322233.jpg]]></image>
          <category id="23"><![CDATA[Αθλητικά > Extreme Sports]]></category>
                <price_with_vat>322.33</price_with_vat>
          <manufacturer><![CDATA[SuperGlasses]]></manufacturer>
          <description><![CDATA[Πρωτοποριακά γυαλιά με .....]]></description>
          <weight>350</weight>
          <mpn>ZHD332</mpn>
          <instock>N</instock>
          <availability>Κατόπιν Παραγγελίας</availability>
      </product>
      ..........
      ..........
      ..........
   </products>
</mywebstore>

Μπορείτε επίσης να βρείτε ένα ολοκληρωμένο δείγμα στο http://demo.skroutzstore.gr/feed.xml

Ενδεικτικό XSD

  <?xml version="2.0" encoding="UTF-8"?>

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- required elements -->
    <!-- created at -->
    <xs:element name="created_at" type="xs:dateTime" />

    <!-- unique id -->
    <xs:element name="uid">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="200" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- name -->
    <xs:element name="name">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="300" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- link -->
    <xs:element name="link">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="400" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- image -->
    <xs:element name="image">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="400" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- price -->
    <xs:element name="price" type="xs:decimal" />

    <!-- category -->
    <xs:element name="category">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="300" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- optional fields -->
    <!-- category id -->
    <xs:element name="category_id" type="xs:positiveInteger" />

    <!-- manufacturer -->
    <xs:element name="manufacturer">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="100" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- manufacturer part number -->
    <xs:element name="mpn">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="100" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- manufacturer part number -->
    <xs:element name="isbn">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="30" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- description -->
    <xs:element name="description" type="xs:string" />
    <!-- weight -->
    <xs:element name="weight" type="xs:positiveInteger" />

    <!-- instock -->
    <xs:element name="instock">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Y" />
          <xs:enumeration value="N" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- shipping -->
    <xs:element name="shipping" type="xs:decimal" />

    <!-- availability -->
    <xs:element name="availability">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="100" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

    <!-- basic structure -->
    <xs:element name="storedata">
      <xs:complexType>
        <xs:sequence>
          <!-- created at -->
          <xs:element ref="created_at" minOccurs="0" />

          <!-- products -->
          <xs:element name="products">
            <xs:complexType>
              <xs:sequence>
                <!-- product -->
                <xs:element name="product" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:all>

                      <!-- required fields -->
                      <xs:element ref="uid"/>
                      <xs:element ref="name"/>
                      <xs:element ref="link"/>
                      <xs:element ref="image"/>
                      <xs:element ref="price"/>
                      <xs:element ref="category"/>

                      <!-- optional fields -->
                      <xs:element ref="category_id" minOccurs="0"/>
                      <xs:element ref="description" minOccurs="0"/>
                      <xs:element ref="weight" minOccurs="0"/>
                      <xs:element ref="manufacturer" minOccurs="0" />
                      <xs:element ref="mpn"  minOccurs="0"/>
                      <xs:element ref="shipping"  minOccurs="0"/>
                      <xs:element ref="availability"  minOccurs="0"/>
                      <xs:element ref="instock"  minOccurs="0"/>
                      <xs:element ref="isbn"  minOccurs="0"/>

                    </xs:all>

                  </xs:complexType>
                </xs:element>
                <!-- end product -->
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        <!-- end products -->
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:schema>