Search code examples
shopware

What are the REST calls to import a CSV file into Shopware 6?


We saw https://developer.shopware.com/docs/guides/integrations-api but couldn't find a detailed documentation of the APIs.

EDIT: I found https://my-shop-host.example/api/v2/_info/swagger.html which describes all available APIs and import-export-file endpoints, but it is not clearly described how to use them (and which ones to use).

I believe we need to call (extracted from the admin panel work flow)

  • /api/v2/_action/import-export/prepare

and then

  • /api/v2/_action/import-export/process

to trigger an import.

But how are the files uploaded?

Is there an easier way, for example in one call?


Solution

  • I start with the authentication

    curl 'http://example.com/api/oauth/token'\
      -H 'Accept: pplication/vnd.api+json'\
      -H 'Content-Type: application/json' \
      --data '{
        "grant_type": "client_credentials",
        "client_id": "<my client ID from the integration>",
        "client_secret": "<my secret>"
      }'  | jq .access_token
    

    This returns and auth token which is valid for 10 minutes.

    I store it to the variable $B

    Next I upload the file and set the expiry date to 10 days in the future:

    curl 'http://example.com/api/v2/_action/import-export/prepare' \
      -H 'Accept: application/vnd.api+json' \
      -H "Authorization: Bearer $B"
      --form "file=@\"products.csv\"" --form "profileId=d4ec3999a33242a690ca5c213a7145cd" --form "expireDate=+10 days"    | jq .log.id
    

    This returns a log.id field

    This field must be passed to the process call

    curl 'http://example.com/api/v2/_action/import-export/process'  \
     -H 'Accept: application/vnd.api+json' \ 
     -H 'Content-type: application/json' \
     -H "Authorization: Bearer $B"  --data '{"logId":"1410eaa1ca434744a8c211b60f65a3c5","offset":0}'
    

    EDIT: Each chunk has to be triggered separately by using the last returned offset and pass it again to the process call.