API di Feedaty

In questo articolo:

Recensioni pubblicate

Recupero dei dati salienti sulle recensioni pubblicate

Informazioni generali

I servizi API resi disponibili dalla piattaforma Zoorate permettono i seguenti macro aspetti di interazione:

  1. Inserimento ordini Metodo per inserire uno o più ordini che poi Feedaty processerà per l’invio delle survey. Il metodo restituisce per ogni ordine processato l’esito (ordine inserito, ordine duplicato, utente ha fatto opt-out, ecc.)
  2. Recupero ordini Metodo per recuperare i dati degli ordini inseriti in Feedaty.
  3. Recupero recensioni Metodo per recuperare le recensioni attualmente pubblicate

Per facilitare il recupero degli ordini inseriti è possibile applicare i seguenti filtri:

  • Recupera per codice ordine
  • Recupera per codice cliente / indirizzo email cliente
  • Recupera per range di date nella quale sono state rilasciate

Per ogni ordine viene restituita anche l’informazione su quando verrà o è avvenuto l’invio dell’email survey. Invece per facilitare il recupero delle recensioni pubblicati è possibile applicare i seguenti filtri:

  • Recupera per codice prodotto
  • Recupera per codice cliente / indirizzo email cliente
  • Recupera per range di date nella quale sono state rilasciate

Sia per gli ordini che per le recensioni vengono forniti dei metodi per la paginazione dei risultati, così da poter gestire facilmente elenchi lunghi e recuperare solamente i dati che è necessario elaborare e/o mostrare. 

L’autenticazione e autorizzazione avviene attraverso le specifiche OAuth 2 (http://oauth.net/2/) I dati di accesso sono disponibili nel back office alla specificazione sezione per la gestione delle API. 

Importante

è possibile abilitare o disabilitare l’accesso tramite API, questa opzione è contenuta nell'Area Riservata di Feedaty nella sezione Pubblica le recensioni - API.

Autenticazione

Per l’autenticazione è necessario disporre del codice Merchant Code e del codice Client Secret, entrambi i codici sono disponibili nella pagina "Pubblica le recensioni > API" dell'area riservata Feedaty. 

Esempio di credenziali di autenticazione: 

  • MerchantCode: 188727178 
  • Client Secret: 84d10d9d9def4bfdae66110889316113 

Per potersi autenticare è innanzi tutto necessario richiedere un Request Token:

POST /OAuth/RequestToken HTTP/1.1
Host: api.feedaty.com
Content-Type: application/x-www-form-urlencoded

Response:


HTTP/1.1 200 OK
Server: ngix/1.2.0
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Date: Tue, 13 Aug 2013 13:13:13 GMT
Content-Length: 164
{
"RequestToken": "5f8d57a9e0f44467bf8a0ed33161e47e",
"AccessToken": null,
"Expires": 300,
"RefreshToken": "a8741a605307426d9e13df9d914ca5ba",
"Scope": null,
"Error": null,
"Success": true,"RequireSsl": false
}

A questo punto è possibile utilizzare il RequestToken per “crittografare” le credenziali di accesso necessarie per richiedere il token di accesso. Occorre notare che il RequestToken rimane valido per un determinato numero di secondi dal momento del suo rilascio (nell’esempio 300 secondi), passati i quali il RequestToken non sarà più utilizzabile. La crittografia delle credenziali prevede che venga calcolato il valore di hashing della stringa risultante dal request token al quale deve essere accodata l’API Client Secret, e codificato infine in BASE64.

BASE64(MerchantCode:SHA256(RequestToken + APIClientSecret))

ovvero, ad esempio:

BASE64(188727178:SHA256(5f8d57a9e0f44467bf8a0ed33161e47e84d10d9d9def4bfdae661108893

Il risultato con i dati di esempio è il seguente:

MTg4NzI3MTc4OjA5ZDg2NWFlOWM4NDdkYmU4MWUyYjBkMjEzMGI0NjQwNmY4YjM3MjE0YWU2YTg5ZTUwZWE2NDU0ZWVmMjc1NzY

Ottenimento dell’Access Token

L’Access Token rappresenta la chiave di autorizzazione necessaria per invocare i metodi dell’API che necessitano che il client sia stato preventivamente autorizzato. Affinché l’Access Token venga rilasciato è necessario fornire attraverso il parametro Authorization il codice crittografato delle credenziali del merchant ottenuto precedentemente, specificando lo schema Basic in questo modo:

Authorization: Basic <codice>

Esempio di chiamata:

POST /OAuth/AccessToken HTTP/1.1
User-Agent: Fiddler
Host: api.feedaty.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic MTg4NzI3MTc4OjA5ZDg2NWFlOWM4NDdkYmU4MWUyYjBkMjEzMGI0NjQwNmY4YjM3MjE0YWU2YTg5ZTUwZWE2NDU0ZWVmMjc1NzY=

oauth_token=5f8d57a9e0f44467bf8a0ed33161e47e&grant_type=authorization

Esempio di Risposta

HTTP/1.1 200 OK
Server: ngix/1.2.0
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Date: Tue, 13 Aug 2013 13:13:14 GMT
Content-Length: 164

{
"RequestToken": "5f8d57a9e0f44467bf8a0ed33161e47e",
"AccessToken": "<AccessToken>",
"Expires": 300,
"RefreshToken": null,
"Scope": null,
"Error": null,
"Success": true,
"RequireSsl": false
}

La proprietà “Success” indica se l’operazione è stata eseguita con successo. In caso affermativo occorre prendere nota dei valori delle proprietà AccessToken e RefreshToken, nonchè eventulamente dei secondi rimanenti di validità dell’Access Token indicati nella proprietà Expires. Nell’esempio mostrato sopra il token scade dopo 300 secondi dal momento del rilascio, è cura dello sviluppatore determinare quando rinnovare il token, meglio se a token scaduto o al limite oltre i 3/4 della sua vita. L’AccessToken a questo punto deve essere utilizzato per tutte le chiamate ai metodi API non appartenenti al percorso /OAuth, al fine di identificare correttamente il merchant e le relativi autorizzazioni per l’espletamento della funzione richiesta. Il modo corretto per fornire al metodo dell’API l’AccessToken è di passarlo come parametro della richiesta, in questo modo:

Authorization: OAuth <AccessToken>

Esempio di header contenente il parametro Authorization

POST <path> HTTP/1.1
Host: api.feedaty.com
Content-Type: application/json
Authorization: OAuth 0d9b2c7d4d9c42688eab195cfce75292

Prolungamento della validità dell’Access Token

Qualora fosse necessario prolungare la vita del token di accesso, è sufficiente richiamare il metodo RefreshToken passando come unico parametro il valore di RefreshToken ottenuto con l’autenticazione. Questo può essere ripetuto quante volte si vuole.

POST /OAuth/RefreshToken HTTP/1.1
Host: api.feedaty.com
Content-Type: application/x-www-form-urlencoded
RefreshToken=a8741a605307426d9e13df9d914ca5ba

Risposta in caso di successo

HTTP/1.1 200 OK
Server: ngix/1.2.0
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Date: Tue, 13 Aug 2013 13:23:53 GMT
Content-Length: 194
Connection: Close
{
"RequestToken": null,
"AccessToken": "0d9b2c7d4d9c42688eab195cfce75292",
"Expires": 300,
"RefreshToken": "8aebef5be272432c9a55940c802218c2",
"Scope": null,
"Error": null,
"Success": true,
"RequireSsl": false
}

Ordini di acquisto

Gli ordini di acquisto rappresentano il dato base utilizzato dalla piattaforma zoorate per erogare il proprio servizio di survey.

Registrazione di nuovi ordini

Un ordine è identificato da un insieme minimo di informazioni:

ID (Obbligatorio) E’ un valore alfanumerico che identifica in modo univoco l’ordine.

Date (Obbligatorio) E’ la data di acquisto dell’ordine.

CustomerEmail (Obbligatorio) E’ l’indirizzo email del cliente che ha effettuato l’acquisto. Questo indirizzo email verrà utilizzato da Zoorate per inviare l’email relative alle survey.

CustomerID (Obbligatorio) E’ un valore alfanumerico che identifica in modo univoco il cliente che ha effettuato l’acquisto.

CustomerName (Opzionale) Nome del cliente che ha effettuato l’acquisto

Culture (Opzionale) Specifica la lingua predefinita da utilizzarsi nell’erogazione dell’email di survey. Valori ammessi sono: it, en, es, fr, de

LocationCode (Opzionale) con il quale è possibile specificare la location relativa all'acquisto effettuato (il parametro va specificato sullo stesso livello della proprietà CustomerEmail).

Products (Opzionale) Lista di ulteriori dati relativi ai prodotti o servizi acquistati dal cliente forniti al fine di raccogliere recensioni relativi ai singoli prodotti o servizi. Ogni singola informazione contenuta nella lista “Products” può contenere le seguenti informazioni:

  • SKU (Obbligatorio) Codice alfanumerico identificativo del prodotto.
  • Brand (Opzionale) Marca del prodotto. Opzionale.
  • Name (Obbligatorio) Nome o descrizione breve del prodotto/servizio.
  • Size (Opzionale) Taglia del prodotto (Max 20 caratteri consentiti).
  • Color (Opzionale) Colore Del Prodotto (Max 20 caratteri consentiti).
  • Category (opzionale) Categoria del prodotto, necessaria per attivare la survey verticale sui prodotti. Per maggiori informazioni su questa funzionalità contattare il nostro supporto tecnico.
  • ThumbnailURL (Opzionale) Indirizzo URL assoluto ad un immagine rappresentativa del prodotto/servizio.
  • URL ( Opzionale ) Indirizzo URL assoluto alla pagina di dettaglio del prodotto/servizio sulla propria piattaforma di e-commerce. E’ possibile registrare con un’unica chiamata uno o più ordini, per ognuno dei quali verrà restituito l’esito dell’operazione.
  • EAN (Opzionale) European Article Number

Esempio di chiamata

POST /Orders/Insert HTTP/1.1
Host: api.feedaty.com
Content-Type: application/json
Authorization: OAuth 65fbe612523b4c05b3f9f95b5da2af4f
[{
   "ID": "NO-004",
   "Date": "2013/08/07 15:29:00.000",
   "CustomerID": "MR-072",
   "CustomerEmail": "mario.rossi@hotmail.com",
   "CustomerName": "Mario Rossi","Culture": "it",
   "LocationCode": "MIL01"
   "Products": [{
       "SKU": "426865031d",
       "Brand": "Amazon",
       "Name": "THE COMPLETE SHERLOCK HOLMES",
       "Category": "Libri",
       "EAN": "6516846656460",
"ThumbnailURL":"http://ecx.imagesamazon.com/images/I/41LO0VIDDCL._AA258_PIkin4,BottomRight,-32,22_AA280_SH20_OU29_.jpg",     "URL":"http://www.amazon.it/gp/product/B004LE7PCM/ref=s9_qpp_gw_d99_g351_ir06pf_rd_m=A11IL2PNWYJU7H&pf_rd_s=center3&pf_rd_r=1YFCTJ4NH9W2WYYFT0XD&pf_rd_t=101&pf_rd_p=312234487&pf_rd_i=426865031"     
},     
{
       "SKU": "111140495463",
      "Brand": "Apple",
       "Name": "Apple iPhone 5 (Latest Model) - 32GB - White & Silver (Verizon) Smartphone",
       "Size": "128GB",
       "Color": "Black",
       "EAN": "8976846656460",
 "ThumbnailURL":"http://pics.ebaystatic.com/aw/pics/viewitem/imgSoldCvi_96x96.png",
"URL": "http://www.ebay.com/itm/Apple-iPhone-5-Latest-Model-32GB-White-Silver-Verizon-Smartphone-/111140495463"    
}]
},
{
      "ID": "NA-005",
      "Date": "2013/08/08 15:29:00.000",
      "CustomerID": "EC-002",
      "CustomerEmail": "antonio.bianchi@google.com",
      "CustomerName": "Antonio Bianchi",
      "Culture": "it",
      "Products": [{
           "SKU": "111140495463",
           "Brand": "Apple",
           "Name": "Apple iPhone 5 (Latest Model) - 32GB - White & Silver (Verizon) Smartphone",
           "Size": "128GB",
           "Color": "Blue",
           "EAN": "5476846656460",
"ThumbnailURL": "http://pics.ebaystatic.com/aw/pics/viewitem/imgSoldCvi_96x96.png",
"URL": "http://www.ebay.com/itm/Apple-iPhone-5-Latest-Model-32GB-White-Silver-Verizon-Smartphone-/111140495463"     
    }]
}]

Esempio di risposta

HTTP/1.1 200 OK
Server: ngix/1.2.0
Date: Mon, 19 Aug 2013 10:31:37 GMT
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 193
Connection: Close
{
   "Success": true,
   "Message": "Some issues was found during orders processing.",
   "Data": [{
             "OrderID": "NA-004",
             "SKU": "426865031d",
             "Status": 201      
     },      
     {
             "OrderID": "NA-004",
             "SKU": "111140495463",
             "Status": 201      
     },      
     {       "OrderID": "NA-005",
             "SKU": "111140495463",
             "Status": 1      
     }]
}

La proprietà Success è true qualora i dati forniti al metodo Insert siano sintatticamente corretti, diversamente ritorna false. La proprietà Message contiene una semplice descrizione sull’esito dell’operazione. Infine la proprietà Data contiene per ogni ordine e dettaglio su prodotto/servizio fornito un oggetto contenente le informazioni per identificare l’ordine (OrderID) ed eventualmente il prodotto/servizio (SKU) e l’esito dell’operazione (Status).

Codici di stato e loro significato

VALORE CODICE DESCRIZIONE
0 Failed Operazione non riuscita per cause tecniche
1 Success Operazione riuscita
101 CustomerIDNotValid Valore CustomerID nullo o non valido
102 CustomerEmailNotValid Valore CustomerID nullo o non valido
103 CustomerOptedOut L'email fornita in CustomerEmail risulta nella lista degli utenti che hanno effettuato l'opt-out
104 DateNotValid La data dell'ordine non è valida
105 CultureCodeNotValid Valore Culture non valido
201 Duplicate L'ordine è già presente (stesso OrderID e Stesso CustomerID)
202 OrderIDNotValid Valore SKU nullo o non valido
301 SKUNotValid Valore SKU nullo o non valido
303 Colore non valido Lunghezza superiore a 20 caratteri
401 SurveyFlowLimitExceeded Superato il limite impostato di survey inviabili al cliente in un determinato periodo di tempo
402 EmailAmazonDiscarded L'ordine proveniente da marketplace Amazon è stato scartato

Recupero degli ordini di acquisto

E’ possibile recuperare l’elenco di tutti gli ordini registrati in Feedaty o solamente di quelli che rispondo a dei criteri impostati, ad esempio quelli effettuati in un certo periodo oppure quelli per i quali sono già state inviate le email di survey. Gli ordini vengono recuperati sempre secondo l’ordine cronologico inverso di registrazione, ovvero restituendo per prima gli ultimi ordini registrati.

Paginazione dei risultati

Per recuperare solamente un set di ordini è possibile passare un oggetto json con due parametri: Row e Count. Row indica il primo (zero based) ordine da restituire tra tutti quelli presenti, mentre Count specifica al massimo quanti ordini restituire. Nel caso in cui non venga specificato un valore per la proprietà Row viene assunto 0 come valore di default. Così come per Count viene assunto come valore di default 50, questo inoltre è anche il numero massimo di elementi restituiti per ogni richiesta. Con ogni risposta nella proprietà TotalResults contenuta nell’oggetto assegnata alla proprietà Data viene restituito il numero totale di ordini registrati, questo valore può essere utilizzato per determinare il numero di pagine necessarie per visualizzare tutti gli ordini presenti.

Filtraggio degli ordini

E’ possibile specificare alcuni parametri con i quali limitare ulteriormente il set di ordini restituito, fornendo così la possibilità di recuperare solamente quelli di proprio interesse. I parametri disponibili sono tutti opzionali, e agiscono in congiunzione tra di loro (operatore booleano AND). Di seguito l’elenco dei parametri disponibili che è possibile specificare nell’apposita proprietà Filters: OrderID Valore alfanumerico identificante l’ordine che si vuole recuperare. SKU Valore alfanumerico identificare il codice del prodotto di cui si vuole recuperare l’ordine o gli eventuali ordini che lo contengono. Da notare che qualora venga specificato uno SKU verranno restituiti anche gli altri prodotti contenuti nell’ordine nel quale è presente quello avente il valore di SKU specificato. CustomerID Valore alfanumerico del cliente che ha effettuato l’ordine. CustomerEmail Indirizzo email del cliente che ha effettuato l’ordine. FromDate Data di acquisto a partire dalla quale recuperare gli ordini. ToDate Data di acquisto entro la quale recuperare gli ordini. Le date specificate nei filtri FromDate e ToDate devono essere nel seguente formato: yyyy/MM/dd HH:mm:ss ad esempio: 2013/08/16 11:06:30 Occorre notare che se non viene specificato alcuna parte oraria, es. 2013/08/16, viene assunto il seguente orario: 00:00:00.000.

Esempio di chiamata

POST /Orders/Get HTTP/1.1
Host: api.feedaty.com
Content-Type: application/json
Authorization: OAuth be7c51cf1dae4ae9ad82f3f7a075714d
{
      "Filters": {
          "SKU": "426865031d"      
     }
}

Esempio di risposta

HTTP/1.1 200 OK
Server: ngix/1.2.0
Date: Mon, 19 Aug 2013 13:43:03 GMT
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 1132
Connection: Close

{
       "Success": true,
       "Message": "Completed successfully",
       "Data": {
           "Orders": [{
                "ID": 9877,
                "OrderID": "NA-004",
                "CustomerID": "EC-001",
                "CustomerEmail": "antonio.bianchi@hotmail.com",
                "EntryDate": "\/Date(1376058583490)\/",
                "OrderDate": "\/Date(1375882140000)\/",
                "ScheduledDeliveryDate": "\/Date(1376058643440)\/",
                "SentDate": "\/Date(1376284658673)\/",
                "Platform": "Feedaty API",
                "OrderDetails": [{
                     "SKU": "111140495463",
                     "Brand": "Apple",
                     "Name": "Apple iPhone 5 (Latest Model) - 32GB - White \u0026 Silver (Verizon) Smartphone",
"ThumbnailURL":"http://pics.ebaystatic.com/aw/pics/viewitem/imgSoldCvi_96x96.png",
"URL": "http://www.ebay.com/itm/Apple-iPhone-5-Latest-Model-32GB-White-Silver-Verizon-Smartphone-/111140495463"                
         },                
         {
                     "SKU": "426865031d",
                     "Brand": "Amazon",
                     "Name": "THE COMPLETE SHERLOCK HOLMES",
                     "ThumbnailURL":"http://ecx.imagesamazon.com/images/I/41LO0VIDDCL._AA258_PIkin4,BottomRight,-32,22_AA280_SH20_OU29_.jpg",
"URL":"http://www.amazon.it/gp/product/B004LE7PCM/ref=s9_qpp_gw_d99_g351_ir06pf_rd_m=A11IL2PNWYJU7H\u0026pf_rd_s=center-3\u0026pf_rd_r=1YFCTJ4NH9W2WYYFT0XD\u0026pf_rd_t=101\u0026pf_rd_p=312234487\u0026pf_rd_i=426865031"               
        }]          
   }],
"TotalResults": 1      
  }
}

Nel risultato della chiamata è possibile notare che per ogni ordine oltre alle proprietà fornite durante la registrazione vengono passati anche altri valori, in particolare: ID Numero intero interno utilizzato per identificare l’ordine all’interno della piattaforma zoorate. Questo dato viene fornito solamente a scopo di debugging e di futuri riferimenti. EntryDate Data di registrazione dell’ordine nella piattaforma zoorate. ScheduledDeliveryDate Data programmata per l’invio dell’email di survey. SentDate Data effettiva nella quale è stata inviata l’email di survey. Se il valore è nullo è indice che non è stata ancora inviata alcuna email di survey. Platform Valore alfanumerico indicante la piattaforma o la metodologia con cui è stato inserito l’ordine.

Recensioni pubblicate

Attenzione

Al fine di evitare rallentamenti sul vostro sito o latenze indesiderate è necessario prevedere un sistema di caching che memorizzi le informazioni da mostrare.


Consigliamo di programmare una frequenza di aggiornamento almeno ogni ora (meglio ancora se ogni 24h) e di non collegare direttamente le pagine del sito web ai nostri webservices, ma di salvare i dati sincronizzati in un vostro database e collegare le pagine del sito al vostro sistema di caching. Senza queste accortezze in caso di manutenzioni o rallentamenti dei nostri sistemi si corre il rischio di avere il proprio sito web bloccato o rallentato.


Come frequenza massima di aggiornamento non è consentito superare le 500 chiamate/ora. Nel caso fosse necessario concordare un limite superiore bisognerà inviare una richiesta specifica all’indirizzo: support@feedaty.com

Anche se al momento non è prevista una politica di limitazione del numero di chiamte verso le API di feedaty, è comunque previsto un un tetto di chiamate da poter effettuare. 


Per un utilizzo normale dei webservices i limiti sono calcolati in modo da non creare problemi, ma faremo in modo che, se le nostre API vengono chiamate troppo di frequente, verranno applicati dei blocchi temporanei.


Suggerimenti per evitare le limitazioni all’accesso delle API:

  • Anziché generare un token di accesso per ogni transazione, riutilizzare il token valido.
  • Assicurarsi di non chiamare le API di Feedaty ogni volta che viene caricato il front-end del tuo sito web. Se desideri visualizzare recensioni o valutazioni sul tuo sito, assicurati che i dati siano archiviati nel tuo backend e aggiornati giornalmente.

E’ possibile recuperare le recensioni pubblicate riguardo al merchant e/o ai prodotti rilasciate dai clienti. Per far questo è sufficiente chiamare il metodo Reviews/Get, eventualmente fornendo parametri per la paginazione nonché per filtrare tutte le recensioni pubblicate affinché vengano restituite solo quelle di cui si ha interesse. Di default la singola chiamata è limitata a restituire solo le ultime 50 recensioni merchant e prodotto associate, per reperire i feedback successivi è necessario usare i filtri row e count necessari per la paginazione dei risultati.

Esempio di chiamata

GET /Reviews/Get HTTP/1.1
Host: api.feedaty.comC
ontent-Type: application/x-www-form-urlencoded
Authorization: OAuth be7c51cf1dae4ae9ad82f3f7a075714d

row=0&count=2

Esempio di risposta

HTTP/1.1 200 OK
Server: nginx/1.4.7
Date: Mon, 19 May 2014 14:34:58 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1755
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private

{ 
   "Success": true, 
   "Message": null, 
   "Data": {
      "Reviews": [{
           "ID": 86111,
           "Released": "\/Date(1382608357110)\/",
           "CustomerID": "mariorossi@email.com",
           "CustomerEmail": "mariorossi@email.com",
           "CustomerName": "Mario Rossi",
           "OrderID": "A7",
           "MerchantRating": 5,
           "MerchantReview": "eccellente",
           "FeedatyPageURL": "/feedaty/reviews/shopsite?review=806111",
           "ThumbsFeedback": {
             "Up": 0,
             "Down": 0    
},
   "ProductsReviews": [{
          "SKU": "PROD1",
          "Brand": "",
          "Name": "iPod shuffle - Colore : Verde",
          "ThumbnailURL": "/app_themes/feedaty/images/place-holder.png",
          "URL": "http://shopsite/prestashop/index.php?id_product=2\u0026controller=product\u0026id_lang=1",
          "FeedatyPageURL": "/feedaty/reviews/shopsite/parmigiano700gr/reviews",
          "Rating": 5,
          "Review": "eccellente",
          "ThumbsFeedback": {
             "Up": 3,
             "Down": 0      
         },
         "Size": "56GB"
         "Color": "Green"     
         }    
         ],
      "Source": null
      "Language": "it-IT",
      "LocationCode": "MIL01"   
         },   
         {
     "ID": 86113,
     "Released": "\/Date(1382608348343)\/",
     "CustomerID": "gianniverdi@email.com",
     "CustomerEmail": "gianniverdi@email.com",
     "CustomerName": "Gianni Verdi",
     "OrderID": "a9",
     "MerchantRating": 5,
     "MerchantReview": "Ottimo negozio, prezzi molto vantaggiosi.",
     "FeedatyPageURL": "/feedaty/reviews/shopsite?review=806113",
     "ThumbsFeedback": {
        "Up": 0,
        "Down": 0    
       },
      "ProductsReviews": null,
      "OtherQuestions": [{
          "Question": "Consegna",
          "Rating": 5     
       }, {
         "Question": "Servizio clienti",
         "Rating": 4     
       }, {
         "Question": "Sito web (semplicità e chiarezza)",
          "Rating": 3     
       }, {
         "Question": "Sistema di pagamento",
         "Rating": 5      
       }, {
         "Question": "Servizio di reso",
         "Rating": 3     
       }, {
         "Question": "Packaging",
         "Rating": 4    
       }, {
         "Question": "Lo consiglieresti ad un amico?",
         "Value": true     
       }    
      ],
         "Source": null,
         "Language": "it-IT",
         "LocationCode": "MIL01"  
 }  
],
 "TotalResults": 37
 "TotalProductReviews": 50 
 }
}

Il valore TotalResults indica il numero totale di recensioni merchant disponibili

Il valore TotalProductReviews indica il numero totale di recensioni prodotto disponibili

Volendo ricercare solo determinate recensioni è possibile specificare nella query string uno o più dei seguenti filtri:

retrieve: Usato per specificare se si vogliono recuperare solo le recensioni merchant (valore “onlymerchantreview”), solo le recensioni prodotto (“onlyproductreviews”) o entrambe (parametro non specificato o valore nullo o non valido)

customerEmail: Usato per recuperare solo le recensioni rilasciate dall’utente con l’email specificata

customerID: Usato per recuperare solo le recensioni rilasciate dall’utente con il codice cliente specificato

fromDate: Se specificata una data (formato yyyy/mm/dd, es. 2014/04/19) recupera le recensioni relative ad ordini effettuati  nella o dalla data specificata

toDate: Se specificata una data (formato yyyy/mm/dd, es. 2014/04/19)  recupera le recensione relativi ad ordini effettuati precedentemente o nella data specificata

sku: Usato per recuperare solo le recensioni relative a prodotti con il codice prodotto specificato. Nel caso in cui non si specifichi esplicitamente tramite il parametro retrieve di recuperare esclusivamente le recensioni prodotto, verranno restituite tutte le recensioni merchant relativi ad ordini per le quali sono state anche rilasciate recensioni per il prodotto con il codice specificato.

source: Usato per recuperare solo le recensioni importate da una specifica piattaforma, ad esempio “ebay”.

lang: Usato per recuperare solo le recensioni categorizzate nella lingua specificata, valori ammessi sono: it, en, fr, es, de

Qualora sia presente una risposta del negoziante ad un recensione merchant e/o prodotto, sarà restituita come valore di tipo stringa della proprietà MerchantReply, inoltre se insieme alla recensione è stata fornito anche un profilo d’indagine al quale l’utente ha fornito almeno una risposta, le relative domande e risposte saranno fornite nella proprietà OtherQuestions. Per ogni domanda con risposta verrà fornita il testo della domanda (proprietà Question), inoltre se è presente un rating questo verrà fornito nella proprietà Rating, una risposta testuale nella proprietà Answer, infine se la domanda prevede un si o un no, tale valore verrà restituito nella proprietà Value come valore boolean (true = si, false = no).

location: parametro opzionale di tipo stringa con il quale è possibile filtrare le recensioni per codice location

Esempio di query composta da più filtri

row=0&count=10&customerEmail=mariorossi@email.com&fromDate=2013/01/01&lang=it

Oggetto ThumbsFeedback restituito per ogni recensione

Per ogni recensione, sia merchant sia prodotto, viene fornito anche un oggetto ThumbsFeedback contenente due proprietà, “Up” e “Down”, le quali rappresentano rispettivamente il numero di risposte Si e No alla domanda “Hai trovato utile questa recensione?”. Proprietà TotalResults restituito per ogni richiesta Il numero indicato fornisce il numero di recensioni pubblicate che rispondono agli aventuali filtri applicati e che è possibile recuperare. Tale numero può essere utilizzato anche per calcolare il numero di “pagine” di recensione da visualizzare.

Proprietà TotalResults restituito per ogni richiesta

Il numero indicato fornisce il numero di recensioni pubblicate che rispondono agli aventuali filtri applicati e che è possibile recuperare. Tale numero può essere utilizzato anche per calcolare il numero di “pagine” di recensione da visualizzare.

Recupero dei dati salienti sulle recensioni pubblicate

Attenzione

Al fine di evitare rallentamenti sul vostro sito o latenze indesiderate è necessario prevedere un sistema di caching che memorizzi le informazioni da mostrare.


Consigliamo di programmare una frequenza di aggiornamento almeno ogni ora (meglio ancora se ogni 24h) e di non collegare direttamente le pagine del sito web ai nostri webservices, ma di salvare i dati sincronizzati in un vostro database e collegare le pagine del sito al vostro sistema di caching. Senza queste accortezze in caso di manutenzioni o rallentamenti dei nostri sistemi si corre il rischio di avere il proprio sito web bloccato o rallentato.


Come frequenza massima di aggiornamento non è consentito superare le 500 chiamate/ora. Nel caso fosse necessario concordare un limite superiore bisognerà inviare una richiesta specifica all’indirizzo: support@feedaty.com


Anche se al momento non è prevista una politica di limitazione del numero di chiamte verso le API di feedaty, è comunque previsto un un tetto di chiamate da poter effettuare. 


Per un utilizzo normale dei webservices i limiti sono calcolati in modo da non creare problemi, ma faremo in modo che, se le nostre API vengono chiamate troppo di frequente, verranno applicati dei blocchi temporanei.


Suggerimenti per evitare le limitazioni all’accesso delle API:

  • Anziché generare un token di accesso per ogni transazione, riutilizzare il token valido.
  • Assicurarsi di non chiamare le API di Feedaty ogni volta che viene caricato il front-end del tuo sito web. Se desideri visualizzare recensioni o valutazioni sul tuo sito, assicurati che i dati siano archiviati nel tuo backend e aggiornati giornalmente.

E’ possibile recuperare con un’unica chiamata i dati salienti sulle recensioni come voto medio Merchant/Prodotti e numero di recensioni Merchant/Prodotti Pubblicate

In questa chiamata è possibile utilizzare i seguenti filtri:

fromDate: Se specificata una data (formato yyyy/mm/dd, es. 2014/04/19) recupera il voto medio Merchant/Prodotti e numero di recensioni Merchant/Prodotti relative ad ordini effettuati  nella o dalla data specificata

toDate: Se specificata una data (formato yyyy/mm/dd, es. 2014/04/19)  recupera il voto medio Merchant/Prodotti e numero di recensioni Merchant/Prodotti relativi ad ordini effettuati precedentemente o nella data specificata.

sku: Usato per recuperare voto medio e numero di recensioni relativi al prodotto con il codice specificato.

LocationCode: Usato per recuperare voto medio e numero di recensioni merchant relativi alla location con il codice specificato.


Esempio di chiamata

GET /Reviews/AverageRatings HTTP/1.1
Host: api.feedaty.com
Content-Type: application/x-www-form-urlencoded
Authorization: OAuth ff476ee563d044d4b746368e1023442f

Esempio di risposta

{
"Success": true,
"Message": null,
"Data": {
  "Merchant": {
      "RatingsCount": 2553,
      "AverageValue": 4.9    
},
  "Products": {
      "RatingsCount": 1623,
      "AverageValue": 4.6    
    }   
  }
}
Questo ha risposto alla sua domanda? Grazie per il tuo Feedback Si è verificato un problema nell'invio del feedback. Riprova più tardi.