Data Transfer

We support two main ways of transferring product data between your shop and our infrastructure.

Pull

We periodically download your product data files from a given origin using any of the following protocols:

  • HTTP(S)

    • requires a "Content-Type" header indicating the feed format, e.g. text/csv

    • supports optional gzip compression, if specified in a "Content-Encoding" header

  • (S)FTP

    • requires a file extension indicating the feed format, e.g. .csv

  • AWS S3

    • requries a "Content-Type" metadata indicating the feed format, e.g. text/csv

Each of these protocols can be used with and without credentials β€” if you have non-standard requirements, just talk to us and we'll find a way πŸ’›

Push

You upload your product data files whenever something updates to our S3 bucket. You request a signed upload URL from our API and can then upload your file. You just need to make 2 simple HTTP calls for that.

Your files are encrypted on our side and can not be accessed from the outside.

How it works

  1. Send a HTTP POST request to api.8select.io/feeds/uploads to retrieve a pre-signed upload request, i.e. a JSON object containing the following properties:

    • headers: A map of string key-value pairs

    • method: A HTTP method, e.g. PUT

    • url: A presigned URL

  2. Send a second HTTP request using the method and url, and including all headers returned by the previous request, as well as the file to be uploaded in the HTTP body.

API

get a pre-signed request for product feed upload

POST https://api.8select.io/feeds/uploads

Headers

NameTypeDescription

x-api-id*

String

Your API ID provided by us.

x-api-secret*

String

Your API SECRET provided by us.

content-type*

application/json

Request Body

NameTypeDescription

identifier*

String

The field by which a record can be uniquely identified, e.g. "sku" or "productId"

format*

Object

{ "options": { "delimiter": "," }, "type": "csv" }

Response

{
    "headers": {
        "Content-Type": "text/csv; charset=utf-8", // depending on the request parameters
        "X-Amz-Meta-Delimiter": ",", // depending on the request parameters
        "X-Amz-Meta-Sku-Field-Name": "sku", // depending on the request parameters
        ... // could be more
    },
    "method": "PUT",
    "url": "https://s3.eu-central-1.amazonaws.com/..."
}

API usage example via cURL

This is just for demonstration purposes. You can use this method to make a test upload. For production use you should do this programatically with code on your server. 😎

Replace your-api-secret and your-api-secret with your credentials.

curl -v -X POST "https://api.8select.io/feeds/uploads" -d '{ "identifier": "sku", "format": { "type": "csv","options": { "delimiter": ","}}}' -H "x-api-id:your-api-id" -H "x-api-secret:your-api-secret" -H "content-type:application/json"

Last updated