Я создал профиль для экспорта товаров.
Есть ли способ начать экспорт с API? А затем загрузить этот файл .csv с помощью API?
Да есть способ. См. ImportExportActionController.
Используя свои учетные данные API администратора, вы можете запросить следующие конечные точки в указанном порядке с соответствующими полезными нагрузками:
POST /api/_action/import-export/prepare
{
"profileId": "...",
"expireDate": "2022-12-12 12:00:00"
}
profileId
будет идентификатором профиля, который вы хотите использовать для экспорта. expireDate
— это дата, после которой экспорт будет считаться просроченным и готовым к удалению. Установите его когда-нибудь в будущем. Также есть параметр file
, который будет содержать файл, который вы пытаетесь импортировать, но, поскольку вы хотите экспортировать, вы просто опускаете его.
Эта конечная точка вернет logId
, который вам понадобится на следующем шаге.
POST /api/_action/import-export/process
{
"logId": "..."
}
Запрос этой конечной точки с помощью logId
, полученного в предыдущем запросе, фактически запустит экспорт/импорт.
Импорт/экспорт будет выполняться в очереди сообщений, поэтому вам придется дождаться завершения процесса на этом этапе.
POST /api/search/import-export-log
{
"filter": [
{
"type": "equals",
"field": "id",
"value": "..."
}
]
}
Используйте конечную точку поиска для import_export_log
сущностей с logId
, которую вы получили ранее, в качестве фильтра. Вы можете сделать это, чтобы проверить state
процесса, чтобы продолжить после его завершения. Для загрузки вам также понадобится fileId
из этой записи.
POST /api/_action/import-export/file/prepare-download/{fileId}
Используйте fileId
, который вы получили ранее, чтобы запросить эту конечную точку. Он вернет accessToken
, который вам понадобится для окончательного запроса.
GET /api/_action/import-export/file/download?accessToken=...&fileId=...
Используя как fileId
, так и accessToken
ранее, запросите эту конечную точку, которая должна дать поток загрузки экспортированного файла.
Спасибо! это сработало. Есть ли документация по этому поводу? я не нашел ни одного