Sending Analytics Data Using Other Providers
Introduction
The purpose of this document is to describe how to format, structure, and send a pre-defined custom data upload to an instance using the Fredhopper Data API.
The custom upload process sends additional data/content to your Fredhopper environment and prepares it to be enriched with the main product data that comes in via the feed. It's important to note that the newly added data doesn't get added into the existing Fredhopper index immediately when the upload job has completed successfully. This happens when the system processes the subsequent full product feed that takes place afterwards. The last successful custom file is always maintained by the system for all future product feed updates until a new file is sent and successfully processed via the custom upload process.
This document focuses on standard functionality and best practices that should be implemented in all integrations. It does not cover any customer-specific requirements that are defined with the assistance of your Technical Consultant.
If you do not have a custom data requirement for your Fredhopper solution then this process is not applicable to you. If you would like to find out more about the possibility of setting up a custom data upload solution with your Fredhopper implementation, please contact your Customer Success Manager.
Upload
The following section details the standard data input format expected by the Upload service. It also explains how these files should be transmitted to Fredhopper's Managed Services environment and for the data to be triggered on the instance. Once the additional data is successfully uploaded and processed, it is then integrated with the next product feed update (full or incremental). The same custom data is maintained for all subsequent load-data triggers until a new version of the custom data is uploaded using this process.
Uploading and Triggering the processing of data using Upload
Once the custom file(s) is/are ready in the predefined format, it then needs to be compressed using the zip archive specification (application/zip) before it can be uploaded. An MD5 checksum of the newly created ZIP file also needs to be generated to verify the file.
Fredhopper offers a REST and File (FTP) API. The File (FTP) API is suitable for development purposes, while for production use we strongly recommend using the REST API.
EU
All
https://my.eu1.fredhopperservices.com/upload:[service_instance]/data/input/
The service_instance is either live1, test1, test2 or test3, depending on the environments that are available for you.
Steps:
Compress the data file(s) into one data.zip file.
Create MD5 checksum of data.zip file to validate that upload file is not corrupt, e.g.:
Upload the data.zip file and the MD5 checksum to environment. REST URL via HTTP PUT: https://my.eu1.fredhopperservices.com/upload:[service_instance]/data/input/data.zip?checksum=[checksum] cURL example:
curl -D - -u "[cloud_username]":"[cloud_password]" -X PUT -H "Content-Type: application/zip" --data-binary @data.zip https://my.eu1.fredhopperservices.com/upload:live1/data/input/data.zip\?checksum=19afc8c99ec7ea27f0dba8e1c4fcff1f
Save the data-id value from the response body for tracking purposes.
HTTP/1.1 100 Continue HTTP/1.1 201 Created
Date: Fri, 21 Feb 2020 15:31:55 GMT
Server: Jetty(9.4.22.v20191022)
Location: https://my.eu1.fredhopperservices.com/upload:live1/data
/input/2020-02-21_15-31-55
Content-Type: text/plain
Content-Length: 28
Connection: close
data-id=2020-02-21_15-31-55
Trigger the processing of the newly uploaded data by creating a trigger that included the data-id value that was captured in step 4. REST URL: https://my.eu1.fredhopperservices.com/upload:[service_instance]/trigger/finalize cURL example:
curl -D - -u "[cloud_username]":"[cloud_password]" -X PUT -H "Content-Type: text/plain" --data-binary "data-id=[data-id]https://my.eu1.fredhopperservices.com/upload:[service_instance]/trigger/finalize curl -D - -u "[cloud_username]":"[cloud_password]" -X PUT -H "Content-Type: text/plain" --data-binary "data-id=2020-02-21_15-31-55"https://my.eu1.fredhopperservices.com/upload:live1/trigger/finalize
Example response:
HTTP/1.1 200 OK
Date: Fri, 21 Feb 2020 15:49:09 GMT
Server: Jetty(9.4.22.v20191022)
Content-Type: text/plain
Content-Length: 57
Connection: close
RUNNING
Started execution at Fri Feb 21 15:47:17 UTC 2020
... and when successfully completed, the response should appear as follows:
HTTP/1.1 200 OK
Date: Fri, 21 Feb 2020 15:51:15 GMT
Server: Jetty(9.4.22.v20191022)
Content-Type: text/plain
Content-Length: 8
Connection: close
Monitor the process by using the value of the 'Location' in the previous step and viewing the newly-created status file until the content is either SUCCESS or FAILURE. REST URL: https://my.eu1.fredhopperservices.com/upload:[service_instance]/trigger/finalize/[trigger-id]/status cURL example:
curl -s -D - -u "[cloud_username]":"[cloud_password]" https://my.eu1.fredhopperservices.com/upload:[service_instance]/t
rigger/finalize/[trigger-id]/status
curl -s -D - -u "[cloud_username]":"[cloud_password]" https://my.eu1.fredhopperservices.com/upload:live1/trigger/finalize
/2020-02-21_15-47-17/status
Example response:HTTP/1.1 200 OK
Date: Fri, 21 Feb 2020 15:49:09 GMT
Server: Jetty(9.4.22.v20191022)
Content-Type: text/plain
Content-Length: 57
Connection: close
RUNNING
Started execution at Fri Feb 21 15:47:17 UTC 2020
When successfully completed, the response should appear as follows:HTTP/1.1 200 OK
Date: Fri, 21 Feb 2020 15:51:15 GMT
Server: Jetty(9.4.22.v20191022)
Content-Type: text/plain
Content-Length: 8
Connection: close
SUCCESS
Last updated