Возобновить прогон
POST /api/v1/runs/{run}/resume
Создаёт продолжение завершённого прогона с сохранённым состоянием, если это поддерживается его состоянием.
Доступ
Bearer API-ключ своего пространства, с разрешением записи. Дополнительно проверяются права владельца на ресурс и действие. Для чужого объекта доступ не предоставляется.
Параметры
Параметры пути: run. Подставьте идентификаторы из ответов своей установки.
Тело запроса не требуется.
Для незавершённого или неподходящего прогона ответ 422. Полученный ID может отличаться от исходного.
Ответ 202
Сокращённый пример ответа. Дополнительные поля могут присутствовать; числовые идентификаторы условные.
{
"id": 4,
"status": "queued",
"site": {
"id": 1,
"code": "catalog",
"name": "Каталог"
},
"is_trial": false
}
Как отправить запрос
В серверном окружении задайте BASE (адрес установки без завершающего слеша) и API_KEY. Секрет не вставляется в исходник. Подготовка клиентов и браузерный JavaScript.
curl
curl --fail-with-body -X POST "$BASE/api/v1/runs/4/resume" \
-H "Authorization: Bearer $API_KEY" \
-H "Accept: application/json"
Node.js · сервер
// Node.js, сервер. Сохраните как request.mjs.
const response = await fetch(process.env.BASE + "/api/v1/runs/4/resume", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.API_KEY}`,
Accept: "application/json"
},
signal: AbortSignal.timeout(120000)
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
console.log(await response.json());
Python
import json
import os
import urllib.request
import urllib.error
request = urllib.request.Request(
os.environ["BASE"] + "/api/v1/runs/4/resume",
method="POST",
headers={"Authorization": "Bearer " + os.environ["API_KEY"],
"Accept": "application/json"},
)
try:
with urllib.request.urlopen(request, timeout=120) as response:
print(json.load(response))
except urllib.error.HTTPError as error:
print(error.code, error.read().decode("utf-8", errors="replace"))
raise
PHP · внешний клиент
<?php
$handle = curl_init(getenv("BASE") . "/api/v1/runs/4/resume");
curl_setopt_array($handle, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("API_KEY"),
"Accept: application/json",
],
]);
$content = curl_exec($handle);
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
if ($content === false) {
throw new RuntimeException(curl_error($handle));
}
curl_close($handle);
if ($status < 200 || $status >= 300) {
throw new RuntimeException("HTTP $status: $content");
}
print_r(json_decode($content, true, 512, JSON_THROW_ON_ERROR));
Go
package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
request, err := http.NewRequest("POST", os.Getenv("BASE") + "/api/v1/runs/4/resume", nil)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer " + os.Getenv("API_KEY"))
request.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
content, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, content))
}
fmt.Println(string(content))
}
Если запрос не выполнен
401: проверьте ключ и срок. 403: права, режим чтения/записи и 2FA. 404: идентификатор и пространство. 422: поля запроса или состояние объекта. 429: подождите Retry-After. Подробно об ошибках и повторах.