REST API#
Web-интерфейс платформы REPEAT VISION позволяет взаимодействовать с программами пользователей, которые могут создаваться с применением любых языков программирования, обладающих поддержкой взаимодействия между программами через web посредством подхода REST.
Далее приводится справка по web-интерфейсу REPEAT VISION.
Важно
В справке web-интерфейса REPEAT VISION используется адрес приложения https://app.repeat.vision
Если на предприятии используется дистрибутив REPEAT VISION, то адрес приложения будет таким, какой указан в строке BASE_URL в файле conf.env.
1. Список проектов#
Интерфейс возвращает список проектов, доступных пользователю для моделирования и редактирования.
Адрес
https://app.repeat.vision/backend/api/v1/public/project/getAll
1.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
Значение заголовка user_token_value требуется заменить на уникальный API ключ, который пользователь может получить в разделе API ключи личного кабинета.
1.2. Ответ#
Тело ответа Body
Ответом запроса является структура JSON следующего вида.
[
{
"userId": 1,
"projectId": 1,
"createdAt": "DATE",
"updatedAt": "DATE",
"projectName": "NAME",
}
]
Каждая запись { } содержит информацию об одном проекте в виде пар ключ - значение.
Описание записи для каждого проекта REPEAT VISION приведены в таблице ниже.
Ключ - тип строка |
Описание значения |
Тип значения |
|---|---|---|
|
Идентификатор пользователя в REPEAT VISION |
Целое число |
|
Уникальный идентификатор проекта |
Целое число |
|
Дата создания проекта |
Строка |
|
Дата последнего обновления проекта |
Строка |
|
Имя проекта, присвоенное пользователем |
Строка |
Пример ответа платформы REPEAT VISION на запрос для случая, когда у пользователя доступен для моделирования и редактирования 1 проект с именем [DEMO] EV.
[
{
"userId": 1234,
"projectId": 456,
"createdAt": "2024-03-04T10:15:31.546814Z",
"updatedAt": "2024-03-15T07:53:57.069585Z",
"projectName": "[DEMO] EV",
}
]
Пример запроса списка проектов на Python
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key авторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/project/getAll"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
try:
response = requests.get(
url,
auth = APIKeyAuth(token)
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запроса списка проектов")
else:
projects = response.json()
print(projects)
# [
# {
# "userId": 1234,
# "projectId": 456,
# "projectName": "[DEMO] EV",
# ...
2. Состояние модели#
Интерфейс возвращает информацию о состоянии процесса расчёта выбранной модели.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/statusModel
2.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Значение заголовка user_project_id требуется заменить на строковое значение идентификатора проекта REPEAT VISION. Идентификатор необходимого проекта можно получить следующими способами:
В описании проекта при непосредственной работе над проектом,
В разделе управления проектами в меню
...действий с проектом.В GET запросе списка проектов через web интерфейс.
Примечание
Подробное описание получения идентификатора проекта из графического интерфейса приложения REPEAT VISION смотрите в нашем уроке.
2.2. Ответ#
Тело ответа Body
Ответом запроса является структура JSON. В теле ответа содержится запись { } c ключом типа строка следующего вида.
{
"statusModel" : "VALUE"
}
Ключ - тип строка |
Описание значения |
Тип значения |
|---|---|---|
|
Состояние процесса расчёта выбранной модели |
Строка |
"statusModel" может принимать значения в соответствии с таблицей ниже.
Значение statusModel |
Описание |
|---|---|
«0» |
Расчёт успешно завершён по условию (приказ блока STOP и т.д.) |
«1» |
Расчёт в процессе |
«2» |
Расчёт остановлен пользователем из графического интерфейса |
«3» |
Расчёт остановлен по кнопке PAUSE |
«20» |
Не удалось запустить расчёт. Проект не найден расчётным модулем |
«21» |
Расчёт успешно завершён по времени моделирования, установленного в проектных настройках |
«51» |
Расчёт не завершён из-за ограничения оперативной памяти |
«52» |
Расчёт не завершён из-за ограничений памяти |
«100» |
Возникла ошибка в процессе расчёта |
Пример тела ответа
{
"statusModel" : "21"
}
Коды ошибок HTTP ответов
Код |
Описание |
Рекомендации по исправлению |
|---|---|---|
410 |
Не запущен расчёт модели. Или потеряно соединение с расчётным модулем |
Требуется запустить расчёт модели |
Пример Python запроса состояния модели
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key авторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/statusModel"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
project = 456 # Требуется заменить данный номер на идентификатор вашего проекта
try:
response = requests.get(
url,
auth = APIKeyAuth(token),
headers = {"ProjectId" : str(project)}
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запроса состояния модели")
else:
status = response.json()
print(status)
# {
# "statusModel": "1"
# }
3. Список глобальных переменных модели#
Интерфейс возвращает список глобальных переменных модели, добавленных ранее при создании модели.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/globals
3.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Описание формирования значения для ключа ProjectId смотрите в разделе
состояние модели.
3.2. Ответ#
Тело ответа Body
Ответом на запрос является структура JSON. В теле ответа содержится запись { } следующего вида.
{
"VARIABLE_NAME" : "VALUE"
}
Описание ключей |
Описание значений |
|---|---|
Строка имени глобальной переменной модели |
Строка значения глобальной переменной на момент создания |
Пример ответа платформы REPEAT VISION на запрос списка переменных модели.
{
"density": "998.21",
"pressure": "50000"
}
Пример Python запроса списка переменных модели
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/globals"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
project = 456 # Требуется заменить данный номер на идентификатор вашего проекта
try:
response = requests.get(
url,
auth = APIKeyAuth(token),
headers = {"ProjectId" : str(project)}
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запроса списка переменных модели")
else:
variables = response.json()
print(variables)
# {
# "density": "998.21",
# "pressure": "50000"
# }
4. Доступность расчётных модулей#
Интерфейс возвращает информацию о наличии доступных расчётных модулей. Данный запрос рекомендуется использовать в следующих случаях:
Количество пользователей, которые выполняют запуск моделей на расчёт превышает доступное количество расчётных модулей на платформе REPEAT VISION. В таком случае допускается ожидание свободного расчётного модуля;
Выполнение параметрических исследований, решения задач оптимизации или выполнение расчётных циклов в дистрибутиве платформы REPEAT VISION в локальной сети предприятия с ограниченным количеством доступных расчётных модулей. В таком случае необходимо дождаться хотя бы одного доступного расчётного модуля.
Адрес
https://app.repeat.vision/backend/api/v1/public/controllervm/status
4.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
4.2. Ответ#
Тело ответа Body
Ответом на запрос является структура JSON. В теле ответа содержится запись { } следующего вида.
{
"isAvailableSolvers" : true
}
Ключ - тип строка |
Описание значения |
Тип значения |
|---|---|---|
|
Наличие доступных расчётных модулей. Если значение |
Логическое значение |
Пример запроса количества расчётных модулей на Python
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key авторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/controllervm/status"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
try:
response = requests.get(
url,
auth = APIKeyAuth(token)
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запроса количества расчётных модулей")
else:
status = response.json()
print(status)
# {
# "isAvailableSolvers": True
# }
5. Запуск расчёта модели#
Интерфейс позволяет отправить команду на запуск расчёта модели REPEAT VISION с возможностью управления следующими настройками проекта:
Значения глобальных переменных модели;
Флаг синхронизации с реальным временем;
Время моделирования;
Шаг интегрирования;
Шаг дискретизации.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/run
Важно
При использовании интерфейса запуска расчёта модели REPEAT VISION в циклах работы ваших программ требуется останавливать расчёт на этапе завершения цикла с очисткой результатов расчёта и с завершением работы расчётного модуля. Описание соответствующего запроса приведено в разделе Остановка расчёта с очисткой результатов
5.1. Запрос#
Метод POST
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Описание формирования значения для ключа ProjectId смотрите в разделе состояние модели.
Тело запроса Body
Телом запроса является структура JSON следующего вида.
{
"header" : {
"globalVariables" : {
"NAME" : "VALUE"
},
"isRealTimeSync" : true,
"modellingTime" : "100",
"integrationStep" : "50",
"discretizationStep" : "50"
}
}
Изменено в версии 2.6.0: Настройки запуска расчёта модели должны содержаться в записи { } с ключом "header".
Глобальные переменные модели REPEAT VISION описываются в записи { } по ключу "globalVariables".
Значением для "globalVariables" также должна быть запись { } с информацией о всех передаваемых в модель актуальных значениях глобальных переменных в соответствии с описанием в таблице ниже.
Описание ключей |
Описание значений |
|---|---|
Строка имени существующей глобальной переменной в модели |
Строка нового значения глобальной переменной |
Все ключи и значения структуры должны быть типа строка.
Изменено в версии 2.6.0: При запуске модели требуется передать значения всех глобальных переменных, присутствующих в проекте. В ином случае платформа REPEAT VISION вернёт ответ с кодом ошибки 400.
Предупреждение
Данный web-интерфейс не предназначен для создания глобальных переменных. Web-интерфейс допускает передачу значений глобальных переменных уже существующих в модели.
Пример тела запроса, содержащего значения глобальных переменных модели. Тело запроса позволит выполнить запуск модели.
{
"header" : {
"globalVariables": {
"density": "500.1",
"pressure": "10000"
}
}
}
При этом остальные настройки (флаг синхронизации с реальным временем, время моделирования, шаг интегрирования и дискретизации) платформа REPEAT VISION будет использовать из ранее сохранённого проекта.
Добавлено в версии 2.6.0: Тело запроса запуска модели на расчёт может содержать флаг синхронизации с реальным временем, время моделирования, шаг интегрирования и шаг дискретизации.
Ключ - тип строка |
Описание значения |
Тип значения |
|---|---|---|
|
Синхронизация с реальным временем. При выключенной синхронизации вычисление будет производиться с максимально возможной скоростью и обычно опережает реальное время. При включенной синхронизации один шаг модельного времени будет ориентировочно соответствовать одному шагу реального времени. При большом объёме вычислений модельное время может отставать от реального |
Логический тип |
|
Значение времени моделирования (размерность значения - секунды), после которого расчёт будет остановлен |
Строка |
|
Значение шага интегрирования (размерность значения - миллисекунды) между соседними рассчитываемыми состояниями модели |
Строка |
|
Значение шага времени (размерность значения - миллисекунды) между ближайшими занесениями результатов расчёта в базу данных |
Строка |
Важно
Если необходимо использовать настройки времени моделирования, шага интегрирования или шага времени между ближайшими занесениями результатов расчёта в базу данных, тогда в тело запроса требуется передавать значения трём обязательным ключам: "modellingTime", "integrationStep", "discretizationStep".
В ином случае значения настроек используются из ранее сохранённого проекта REPEAT VISION.
Значения времени моделирования, шага интегрирования и шага дискретизации должны устанавливаться в соответствии с правилами проверки графического приложения REPEAT VISION.
Пример тела запроса, содержащего значения глобальных переменных модели, настройки времени моделирования, шага интегрирования, шага дискретизации и флага синхронизации с реальным временем. Тело запроса позволит выполнить запуск модели на расчёт.
{
"header" : {
"globalVariables": {
"density": "500.1",
"pressure": "10000"
},
"isRealTimeSync" : true,
"modellingTime" : "100",
"integrationStep" : "50",
"discretizationStep" : "50"
}
}
5.2. Ответ#
При запуске модели на расчёт платформа REPEAT VISION формирует ответ со списком блоков, присутствующих на схеме.
Тело ответа Body
Тело ответа представляет собой структуру JSON следующего вида.
{
"elements" : {
"BLOCK_ID_NUMBER_1" : {
"customName" : "INPUT_USER_NAME_VALUE",
"params" : [
{
"description" : "Input",
"name" : "in_1",
"modelName" : "1708415414912_IN_1",
"value" : "",
"unit" : ""
}
]
},
"BLOCK_ID_NUMBER_2" : {
"params" : [
{
"description" : "Value",
"name" : "out_1",
"modelName" : "1708415430657_OUT_1",
"value" : "",
"unit" : ""
}
]
}
}
}
Ключ - тип строка |
Значение - тип запись |
|---|---|
|
Набор блоков модели REPEAT VISION |
Описание записи { } с набором блоков модели REPEAT VISION приведено в таблице ниже.
Ключ - тип строка |
Значение - тип запись |
|---|---|
Идентификатор блока |
Атрибуты блока |
Примечание
Описание способа получения идентификатора блока в графическом интерфейсе REPEAT VISION приведено в разделе ниже
Описание атрибутов блока приведено в таблице ниже.
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
|
Пользовательское название, применимо только для блока Выходной порт |
строка |
|
Набор параметров блока |
список |
Внимание
Если блок не является выходным портом, то в записи { } ответа не будет ключа "customName"
Описание параметра блока приведено в таблице ниже.
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
Описание параметра. Примеры значений: «Input», «Output», «Mass flow» |
|
Имя параметра. Имя начинается с приставки |
|
Идентификатор параметра. Значение состоит из приставки в виде идентификатора блока и корня в виде имени параметра |
|
Значение параметра. Заполняется при завершении шага расчёта. Пустое значение на момент начала расчёта. |
|
Единицы измерения значения параметра |
Примечание
Описание способа получения идентификатора параметра в графическом интерфейсе REPEAT VISION приведено в разделе ниже
Пример тела ответа
{
"elements" : {
"1713869940863": {"index": 0,
"params": [{"description": "Mass flow",
"name": "out_1",
"modelName": "1713869940863_OUT_1",
"value": "",
"unit": "kg/s"}]},
"1713869965162": {"index": 0, "params": []},
"1714987426651": {"index": 0,
"customName": "FlowRate",
"params": [{"description": "Input",
"name": "in_1",
"modelName": "1713869940863_OUT_1",
"value": "",
"unit": ""}]}},
}
Коды ошибок HTTP ответов
Код |
Описание |
Рекомендации по исправлению |
|---|---|---|
400 |
Модель содержит ошибки в реализации схемы или настроек блоков. |
Проверьте вашу модель в приложении REPEAT VISION. Выполните запуск модели на расчёт из графического интерфейса REPEAT VISION, выполните анализ сообщений в журнале приложения |
400 |
В записи по ключу |
Проверьте передаваемый набор переменных на соответствие существующему набору глобальных переменных модели |
403 |
Отсутсвуют права на использование модулей платформы REPEAT VISION. В теле ответа перечисляются модули, на которые отсутствует право на использование. |
Обратитесь в службу технической поддержки для активации модулей |
423 |
Модель уже в процессе расчёта |
Остановите ранее запущенный расчёт и повторите запуск вашей программы |
504 |
Сетевые проблемы при запуске модели на расчёт |
Попробуйте перезапустить расчёт |
510 |
Заняты все расчётные модули |
Необходимо освободить расчётный модуль для вашей модели |
Пример Python запроса на запуск процесса расчёта модели REPEAT VISION
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/run"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
project = 456 # Требуется заменить данный номер на идентификатор вашего проекта
# Требуется заменить имена и значения исходных данных на соответствующие значения глобальных переменных вашей модели
input_data = {
"header" : {
"globalVariables" : {
"density": "500.1",
"pressure": "10000"
},
# 4 следующих параметра допускается исключить из запроса,
# если настройки времени и шагов нужно использовать из ранее сохранённого проекта
"isRealTimeSync" : True,
"modellingTime" : "100",
"integrationStep" : "50",
"discretizationStep" : "50"
}
}
try:
response = requests.post(
url,
auth = APIKeyAuth(token),
json = input_data,
headers = {"ProjectId" : str(project)}
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запуска процесса расчёта")
else:
return response.json()
6. Расчётный модуль, выполняющий моделирование#
Интерфейс для получения информации о расчётном модуле, который занят выполнением расчёта модели.
Адрес
https://app.repeat.vision/backend/api/v1/public/controllervm/getUserVM
Важно
Для успешного получения информации о расчётном модуле требуется предварительно запустить расчёт модели REPEAT VISION по одному из следующих вариантов:
Из интерфейса приложения REPEAT VISION для расчёта модели кнопкой
Запустить моделированиеИз web API запросом на запуск модели на расчёт
6.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
6.2. Ответ#
В ответе формируется описание расчётного модуля REPEAT VISION.
Тело ответа Body
Тело ответа представляет собой структуру JSON следующего вида.
{
"addr" : "10.151.201.142",
"portSolver" : "8000",
"solverType" : "mdcore",
"userId" : 1234,
"projectId" : 567
}
Описание ключей и значений с информацией о расчётном модуле REPEAT VISION приведено в таблице ниже.
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
|
Адрес расчётного модуля, выполняющего моделирование |
Строка |
|
Порт расчётного модуля |
Строка |
|
Тип расчётного модуля |
Строка |
|
Идентификатор пользователя, который запустил расчёт |
Целое число |
|
Идентификатор проекта REPEAT VISION, который рассчитывается модулем |
Целое число |
Значения ключей "addr" и "portSolver" далее могут использоваться для решения следующих задач:
Получение результатов расчётов
Получение сводной информации о рассчитанных параметрах модели REPEAT VISION
Коды ошибок HTTP ответов
Код |
Описание |
Рекомендации по исправлению |
|---|---|---|
400 |
Не запущен расчёт модели |
Требуется запустить расчёт модели |
Пример Python запроса для получения информации о расчётном модуле
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/controllervm/getUserVM"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
try:
response = requests.get(
url,
auth = APIKeyAuth(token)
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе запроса информации о расчётном модуле")
else:
return response.json()
7. Расчётные значения параметров модели#
Интерфейс возвращает всю доступную информацию о расчётных значениях параметров модели REPEAT VISION
Адрес
https://app.repeat.vision/backend/api/v1/public/model/parameters/getAll
7.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Для ключа "addressVM" необходимо значение с информацией об расчётном модуле, выполняющем моделирование. Значения адреса address и порта port должны быть заранее получены запросом об используемом расчётном модуле. Смотрите таблицу с описанием ответа адреса и порта расчётного модуля выше.
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
7.2. Ответ#
Тело ответа Body
Ответ на запрос содержит информацию о блоках, параметрах и расчётных значениях параметров в следующей структуре JSON
{
"Model" : {
"StatusModel": 1,
"TimeModel": 300.0
},
"Elements" : {
"1713869811928": {
"1713869811928_OUT_2": 0.0,
"1713869811928_IN_1": 0.0,
"Name": "1713869811928"
}
}
}
В корне структуры используются следующие ключи и значения
Ключ - тип строка |
Значение - тип запись |
|---|---|
|
Краткая информация о состоянии модели |
|
Сводная информация об актуальных значениях параметров модели |
Информация о состоянии модели содержит следующие значения
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
|
Состояние процесса расчёта модели |
Целое число |
|
Время моделирования процесса расчёта в миллисекундах на момент запроса |
Вещественное число |
Примечание
Подробное описание состояний процесса расчёта модели смотрите в соответствующей таблице
Информация о блоках модели, доступная по ключу "Elements", приведена в таблице ниже
Ключ - тип строка |
Значение - тип запись |
|---|---|
Идентификатор блока |
Параметры блока |
Идентификатор блока можно найти в графическом интерфейсе REPEAT VISION. Выбирая необходимый блок, идентификатор будет отображён в настройках блока, как на рисунке ниже.

При указании идентификатора блока в качестве ключа доступна сводная информация о параметрах блока в соответствии с таблицей ниже
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
Идентификатор параметра |
Расчётное значение параметра блока |
Вещественное число |
|
Значение имени соответствует идентификатору блока, например, |
Строка |
|
Расчётное значение параметра для входного или выходного порта |
Вещественное число |
Идентификатор параметра доступен в приложении REPEAT VISION. Идентификатор параметра будет отображён в настройках выбранного блока после запуска модели на расчёт, как на рисунке ниже.

Пример ответа
{
"Model" : {
"StatusModel": 1,
"TimeModel": 300.0
},
"Elements" : {
"1714987426651": {
"1713869940863_OUT_1": -4378.034,
"Port": -4378.034,
"Name": "1714987426651"
},
"1713869809228": {
"1713869809228_IN_1": -4378.034,
"1713869809228_OUT_2": 50000.0,
"Name": "1713869809228"
},
"1713869965162": {
"Name": "1713869965162"
}
}
}
Коды ошибок HTTP ответов
Код |
Описание |
Рекомендации по исправлению |
|---|---|---|
100 или 101 |
Остановлен расчёт модели REPEAT VISION |
Требуется запустить расчёт модели с применением графического приложения REPEAT VISION для отладки модели |
Пример Python запроса расчётных значений параметров
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/parameters/getAll"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
# Значение переменных address и port требуется подготовить на основе
# результата запроса о расчётном модуле, выполняющего моделирование
address = "10.151.201.142"
port = "8000"
try:
response = requests.get(
url,
auth = APIKeyAuth(token),
headers = {"addressVM" : f"{address}:{port}"}
)
response.raise_for_status()
except HTTPError as error:
error("Возникла ошибка на этапе запроса расчётных значений параметров")
else:
return response.json()
8. Результаты расчёта#
Интерфейс возвращает временной ряд результатов расчёта для заданного параметра модели.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/parameters/getRange
8.1. Запрос#
Метод POST
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Для ключа "addressVM" необходимо значение с информацией о расчётном модуле, выполняющем моделирование. Значения адреса address и порта port должны быть заранее получены запросом об используемом расчётном модуле. Смотрите таблицу с описанием ответа адреса и порта расчётного модуля выше.
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Тело запроса Body
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
|
Идентификатор параметра |
Строка |
|
Начальный момент интервала времени в миллисекундах |
Целое число |
|
Конечный момент интервала времени в миллисекундах |
Целое число |
Примечание
Способ получения идентификатора параметра в графическом интерфейсе REPEAT VISION приведён в разделе выше
Пример тела запроса
{
"varName" : "1713869940863_OUT_1",
"timeStart" : 0.0,
"timeEnd" : 1050.0
}
8.2. Ответ#
Тело ответа Body
Ответ на запрос содержит временной ряд результатов расчёта для заданного параметра модели в следующей структуре JSON
{
"searchSpan" : {
"varName" : "1713869940863_OUT_1",
"timeStart" : 0.0,
"timeEnd" : 1050.0
},
"dataValues" : [
0.0,
403.68878,
403.68875,
403.68875
],
"dataTimes" : [
0.0,
50.0,
100.0,
1000.0
]
}
В корне структуры используются следующие ключи и значения
Ключ - тип строка |
Значение |
Тип значения |
|---|---|---|
|
Информация о запрошенном параметре с результатами расчёта |
Запись |
|
Временной ряд значений результатов расчёта параметра |
Список |
|
Значения времени для соответствующих значений параметра |
Список |
Ключи и значения записи "searchSpan" соответствуют запросу Body, описание которого приведено в разделе выше.
По ключу "dataValues" в списке [ ] доступны значения (вещественные числа) результатов расчёта параметра для соответствующих им значений времени (вещественные числа) для ключа "dataTimes".
Коды ошибок HTTP ответов
Код |
Описание |
Рекомендации по исправлению |
|---|---|---|
406 |
Не выполнен расчёт значений параметра для заданного интервала времени |
Требуется повторить запрос позднее. Рекомендуется оценить время ожидания завершения расчёта при отладке модели через графический интерфейс REPEAT VISION |
410 |
Не запущен расчёт модели. Или потеряно соединение с расчётным модулем |
Принудительно остановите расчёт и выполните повторный запуск расчёта. |
Пример Python запроса результата расчёта параметра
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/parameters/getRange"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
# Значение переменных address и port требуется подготовить на основе
# результата запроса о расчётном модуле, выполняющего моделирование
address = "10.151.201.142"
port = "8000"
# Значения словаря требуется заполнить в соответствии с вашими
# пожеланиями к результату расчёта параметра модели REPEAT VISION
parameter = {
"varName" : "NESTED_BLOCK_ID_OUT_INDEX",
"timeStart" : 0.0,
"timeEnd" : 10_000.0,
}
try:
response = requests.post(
url,
auth = APIKeyAuth(token),
json = parameter,
headers = {"addressVM" : f"{address}:{port}"}
)
response.raise_for_status()
except HTTPError as error:
error("Возникла ошибка на этапе запроса результатов расчёта параметра")
else:
return response.json()
9. Журнал процесса расчёта#
Интерфейс передаёт текстовое описание процесса расчёта модели.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/status
9.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Описание формирования значения для ключа ProjectId смотрите в разделе
состояние модели.
9.2. Ответ#
Тело ответа Body
Ответ на запрос содержит описание процесса расчёта и сводную информацию модели в следующей структуре JSON
{
"stack": "MULTILINE_MESSAGES_OF_SOLVING_PROCESS",
}
Ключ - тип строка |
Значение - тип значения |
|---|---|
|
Многострочный текст с описанием процесса расчёта. Описание включает дату, уровни сообщений и суть процесса расчёта модели. |
Пример Python запроса журнала процесса расчёта
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/status"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
# Значение переменных address и port требуется подготовить на основе
# результата запроса о расчётном модуле, выполняющего моделирование
address = "10.151.201.142"
port = "8000"
try:
response = requests.get(
url,
auth = APIKeyAuth(token),
headers = {"addressVM" : f"{address}:{port}"}
)
response.raise_for_status()
except HTTPError as error:
error("Возникла ошибка на этапе запроса журнала процесса расчёта модели")
else:
return response.json()
10. Остановка расчёта#
Интерфейс для остановки процесса расчёта модели REPEAT VISION с возможностью выгрузки результатов расчёта.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/softStop
10.1. Запрос#
Метод POST
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Описание формирования значения для ключа ProjectId смотрите в разделе
состояние модели.
Пример Python запроса на остановку расчёта
import requests
from requests.exceptions import HTTPError
from requests.auth import AuthBase
class APIKeyAuth(AuthBase):
"""API-Key aвторизация для запросов модулем requests"""
def __init__(self, token : str):
self.token = token
def __call__(self, request):
request.headers["Api-Key"] = f"Api-Key {self.token}"
return request
url = "https://app.repeat.vision/backend/api/v1/public/model/softStop"
token = "требуется_заменить_данную_строку_на_API_ключ_из_личного_кабинета"
project = 456 # Требуется заменить данный номер на идентификатор вашего проекта
try:
response = requests.post(
url,
auth = APIKeyAuth(token),
headers = {"ProjectId" : str(project)}
)
response.raise_for_status()
except HTTPError as error:
raise error("Возникла ошибка на этапе остановки расчёта модели")
11. Остановка расчёта с очисткой результатов#
Интерфейс для остановки процесса расчёта модели REPEAT VISION с очисткой результатов расчёта на стороне расчётного модуля, а также завершением работы самого расчётного модуля.
Адрес
https://app.repeat.vision/backend/api/v1/public/model/stop
11.1. Запрос#
Метод POST
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Описание формирования значения для ключа ProjectId смотрите в разделе
состояние модели.
Пример на Python смотрите в разделе с описанием запроса остановки расчёта
12. Публичный Импорт#
Интерфейс для публичного импорта модели REPEAT VISION.
Адрес
https://app.repeat.vision/backend/api/v1/public/project/import
12.1. Запрос#
Метод POST
Параметр запроса Query - folderId.
Пример запроса с folderId:
https://app.repeat.vision/backend/api/v1/public/project/import?folderId=efgsdfgsdfg
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
|
|
Content-Range - используется при разбиении большого файла на части. До / указывается диапазон bytes, после / их общее количество в файле.
Описание формирования значения для ключа Api-Key смотрите в разделе список проектов.
Поле file (обязательное) - значение binary. Содержимое файла проекта или его части.
Пример запроса через curl
curl -X 'POST' \
'https://app.repeat.vision/backend/api/v1/public/project/import' \
-H 'accept: * / *' \
-H 'Api-Key: {token}' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@project.rpt'
12.2. Ответ#
Тело ответа Body
Ответ на запрос содержит статус, id проекта и его имя в следующей структуре JSON
{
"status": "completed",
"projectId": "c6128d47-ffb9-4ff9-bbca-647040ce3cf2",
"projectName": "BMS"
}
Если файл разбит на части (используется Content-Range), то структуры JSON до финальной части файла выглядят так:
{
"uuid": "6827d06e-f120-4374-afa6-9b2e6b70ee04",
"status": "uploading"
}
12.3. Пример подключения к REPEAT VISION через публичный REST API с помощью Python и пакета requests для импорта проекта#
from pathlib import Path
Внутренний модуль для работы с путями и файлами
import requests
from repeat.repeat_connection import APIKeyAuth
Внешний пакет для REST запросов. Устанавливается вместе с repeat.
Исходные данные
user_api_key = "Paste your key here"
АПИ ключ пользователя
https://app.repeat.vision/id/account/api-keys
project_path = r"./Truboprovod_s_mestnim_soprotivleniem_import_01.rpt"
Путь к проекту REPEAT VISION
Код программы
endpoint = "https://app.repeat.vision/backend/api/v1/public/project/import"
адрес REST API для загрузки проекта
project = Path(project_path).read_bytes()
data = { "file" :
(
"Truboprovod_s_mestnim_soprotivleniem_import_01.rpt",
project
)
}
response = requests.post(
endpoint,
auth = APIKeyAuth(user_api_key),
files = data,
verify = False,
)
print(response.text)
Чтение в байтовую структуру файла проекта REPEAT VISION
13. Публичный Экспорт#
Интерфейс для публичного экспорта модели REPEAT VISION.
Адрес
https://app.repeat.vision/backend/api/v1/public/project/export
13.1. Запрос#
Метод GET
Заголовок запроса Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
ProjectId - получить его можно, нажав ПКМ по необходимому проекту в списке и выбрав ЛКМ - Скопировать id проекта
Пример запроса через curl
curl -X GET 'https://app.repeat.vision/backend/api/v1/public/project/export' \
-H 'ProjectId: a91ea532-619b-4f21-b6dc-d92aa463f126' \
-H 'Api-Key: {token}' \
--output project.rpt
13.2. Ответ#
Тело ответа Body
Содержимое файла проекта в бинарном виде.
Заголовок ответа Header
Ключ - тип строка |
Значение - тип строка |
|---|---|
|
|
|
|
|
|