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)
and then
to trigger an import.
But how are the files uploaded?
Is there an easier way, for example in one call?
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.