Выдаёт временную signed URL для PUT большого файла напрямую в Supabase Storage — без проксирования через API.
Зачем нужен метод
Выдаёт временную signed URL для PUT большого файла напрямую в Supabase Storage — без проксирования через API. Удобно для тяжёлых файлов и server-to-server интеграций internal-контура.
Когда использовать
Когда файл > нескольких МБ или клиент не поддерживает multipart через gateway.
Эндпоинт
POST /v1/internal/promo-code-incoming/upload-url
Аутентификация: JWT — заголовок Authorization: Bearer <token>. Пользователь должен иметь доступ к проекту и permission inventory_promo_codes.
Permission: inventory_promo_codes.import
Пример запроса
{
"meta": { "requestId": "optional-uuid" },
"data": { "projectId": "a1b2…", "incomingId": "f47ac10b-…", "fileName": "codes.xlsx", "fileSizeBytes": 5242880 }
}
Пример ответа
{
"success": true,
"data": {
"incomingId": "f47ac10b-…",
"uploadUrl": "https://supabase.promanta.ru/storage/v1/object/upload/sign/…",
"uploadMethod": "PUT",
"expiresAt": "2026-07-13T10:15:00Z",
"maxFileSizeBytes": 52428800
}
}
Ошибки
UNAUTHORIZED/ACCESS_DENIED— нет доступаVALIDATION_ERROR— некорректное телоNOT_FOUND— сущность не найденаRATE_LIMIT_EXCEEDED(429) — превышен лимит
cURL
curl -X POST "https://api-external.promanta.ru/v1/internal/promo-code-incoming/upload-url" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT" \
-d '{"data": { "projectId": "a1b2…", "incomingId": "f47ac10b-…", "fileName": "codes.xlsx", "fileSizeBytes": 5242880 }}'