Skip to content
On this page

Справочник API

Полное описание endpoint для работы с датасетами.

Base URL

https://workbench.ab-labz.com/api/v1

POST /datasets/initiate/

Генерирует presigned URL для прямой загрузки датасета в облачное хранилище.

Аутентификация

Authorization: Bearer abn_xxxxxxxxxxxxxxxxxxxxx

Request

json
{
  "experiment_id": "homepage_test"
}

Параметры:

ПараметрТипОбязательныйОписание
experiment_idstringДаID эксперимента. Макс 128 символов, только A-Za-z0-9._-

Response 200

json
{
  "upload_url": "https://fra1.digitaloceanspaces.com/...",
  "bucket": "ab-labz-datasets",
  "key": "org/1/experiments/homepage_test/latest.csv",
  "experiment_id": "homepage_test",
  "expires_in": 900
}

Поля:

ПолеТипОписание
upload_urlstringPresigned URL для PUT запроса (действителен 15 минут)
bucketstringИмя бакета в облачном хранилище
keystringПуть к файлу в хранилище
experiment_idstringID эксперимента из запроса
expires_inintegerTTL ссылки в секундах (900 = 15 минут)

Загрузка файла

Используйте полученный upload_url для загрузки CSV файла:

bash
curl -X PUT "{upload_url}" \
  -H "Content-Type: text/csv" \
  --data-binary @dataset.csv

Важно:

  • Метод: PUT (не POST)
  • Content-Type: text/csv
  • Тело запроса: raw bytes файла (не multipart)
  • TTL: ссылка действительна 15 минут

Response:

  • 200 OK - файл успешно загружен
  • 403 Forbidden - ссылка истекла (получите новую через /initiate)

Ошибки

КодОписаниеРешение
400Невалидный experiment_idИспользуйте только A-Za-z0-9._-, макс 128 символов
401Неверный API ключПроверьте формат: Bearer abn_...
403Организация деактивированаСвяжитесь с администратором
500Ошибка сервераПовторите запрос через несколько секунд

Структура хранения

Файлы сохраняются по пути:

org/{org_id}/experiments/{experiment_id}/latest.csv

Особенности:

  • org_id определяется автоматически по API ключу
  • Каждая новая загрузка перезаписывает предыдущий файл
  • Версионирование не поддерживается
  • Имя файла всегда latest.csv
  • После загрузки файл сразу доступен для анализа в UI

Пример полного процесса

python
import requests

API_KEY = 'abn_xxxxxxxxxxxxxxxxxxxxx'
BASE_URL = 'https://workbench.ab-labz.com/api/v1'

# 1. Получить URL для загрузки
response = requests.post(
    f'{BASE_URL}/datasets/initiate/',
    headers={'Authorization': f'Bearer {API_KEY}'},
    json={'experiment_id': 'homepage_test'}
)
upload_url = response.json()['upload_url']

# 2. Загрузить файл
with open('dataset.csv', 'rb') as f:
    requests.put(upload_url, data=f, headers={'Content-Type': 'text/csv'})

# 3. Анализ в UI: Подготовка данных → Получить по API

AB-Labz - Лаборатория продуктовых экспериментов