HTTP API¶
Методы API¶
POST /jobs/features¶
Отправляет задание на расчёт факторов.
Пример запроса:
POST /jobs/features HTTP/1.1
Authorization: test5ab853b308th539test
Content-Type: application/json
{
"points": [
{
"id": 1,
"geopos": {
"type": "Point",
"coordinates": [30.33, 59.86]
}
}
],
"features": {
"apartments_r500": {
"type": "circle",
"dataset": "ru-pub-households/apartments",
"limit": 500,
"field": "price",
"agg": "mean"
}
}
}
Пример ответа:
HTTP/1.1 200 OK
Authorization: test5ab853b308th539test
Content-Type: application/json
{
"job_id": "6665eb015d8001bf2e92",
"total": 1
}
Заголовки запроса
Authorization- Авторизационный токен.
GET /jobs/{job_id}¶
Возвращает статус задания.
Пример запроса:
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json
{
"job_id": "6665eb015d8001bf2e92",
"total": 1,
"progress": 1,
"failed": 0,
"status": "completed"
}
Параметры пути
job_id- Идентификатор отправленного задания.
Заголовки запроса
Authorization- Авторизационный токен.
GET /jobs/{job_id}/result¶
Возвращает результат завершённого задания.
Пример запроса:
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json
{
"result": [
{
"id": 1,
"apartments_r500": 252500.2
}
],
"total": 1,
"progress": 1,
"failed": 0,
"status": "completed"
}
Параметры пути
job_id- Идентификатор отправленного задания.
Заголовки запроса
Authorization- Авторизационный токен.
DELETE /jobs/{job_id}¶
Прерывает выполняющееся задание.
Прерывание происходит не мгновенно: уже начатые точки завершаются, остальные не рассчитываются. После завершения задания будет доступен частичный результат, с баланса спишутся только успешно рассчитанные факторы.
Пример запроса:
Пример ответа:
Параметры пути
job_id- Идентификатор отправленного задания.
Заголовки запроса
Authorization- Авторизационный токен.
GET /balance¶
Возвращает текущий баланс ресурсов пользователя.
Пример запроса:
Пример ответа:
Заголовки запроса
Authorization- Авторизационный токен.
Пример¶
Пример с использованием Python-библиотеки requests:
import requests
FAAS_URL = 'https://faas.example.com'
FAAS_TOKEN = 'test5ab853b308th539test'
config = {
'points': [
{
'id': 1,
'geopos': {
'type': 'Point',
'coordinates': [30.33, 59.86]
}
},
],
'features': {
'apartments_r500': {
'type': 'circle',
'dataset': 'ru-pub-households/apartments',
'limit': 500,
'field': 'price',
'agg': 'mean',
},
},
}
# Отправляем задание.
response = requests.post(
f'{FAAS_URL}/jobs/features',
headers={'Authorization': FAAS_TOKEN},
json=config,
)
response.raise_for_status()
job_id = response.json()['job_id']
# Проверяем ход выполнения.
response = requests.get(
f'{FAAS_URL}/jobs/{job_id}',
headers={'Authorization': FAAS_TOKEN},
)
response.raise_for_status()
data = response.json()
print(
f"{data['progress'] / data['total'] * 100}% done",
f"{data['progress']} points done",
f"{data['total']} total points",
sep='\n'
)
# Получаем результат завершённого задания.
response = requests.get(
f'{FAAS_URL}/jobs/{job_id}/result',
headers={'Authorization': FAAS_TOKEN},
)
response.raise_for_status()
result = response.json()['result']
# Преобразуем результат в DataFrame.
import pandas as pd
df = pd.DataFrame(result)