# Взаимодействие с модулем через API Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала. - [Файловый API](#файловый-api) - [ML-компонент](#ml-компонент) - [Общая работа с пайплайнами](#общая-работа-с-пайплайнами) - Отдельный пайплайн Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/`. Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения. ## Файловый API ### Работа с файловым API URL запросов к файловому API имеют вид `https://platform.stratpro.hse.ru/app-name/files/box-name/`. Здесь `box-name` - это имя компонента DataBox, к которому обращается запрос. Файловый API позволяет загружать файлы в файловое хранилище и получать уже загруженные файлы. Загрузка папок со всем содержимым не предусмотрена, в таких случаях предполагается автоматизация запросов на загрузку отдельных файлов. #### Пример загрузки и скачивания файла через сервис `files`. Для загрузки файла можно использовать следующий запрос `PUT`: ```sh curl -X PUT https://platform.stratpro.hse.ru/app-name/files/box-name/my_dir/my_file.txt -H "Content-Type: application/json" -u "developer:" ``` Это запрос: 1. К приложению `app-name`. 2. К файловому API (у которого endpoint всегда `files`). 3. К ящику `box-name`. 4. К пути `my_dir/my_file.txt` внутри ящика. 5. От имени пользователя модуля `developer`, пароль которого - ``. Даже если запрос верный, сам файл на данном этапе не создаётся. Вместо этого должен прийти ответ в формате JSON: ```json { "name": "app-name/files/box-name/my_dir/my_file.txt", "presigned_put_url": "<Длинная pre-signed ссылка загрузки>" } ``` С помощью pre-signed ссылки можно уже загрузить сам файл следующим запросом: ```sh curl -X PUT -T local/path/to/my_file.txt "<Длинная pre-signed ссылка загрузки>" ``` Здесь `local/path/to/my_file.txt` - локальный путь к файлу. ## ML-компонент ML-компоненты проводят расчёты при получении соответствующих запросов и присылают результат в ответе на запрос. Каждый развёрнутый ML-компонент содержит OpenAPI спецификацию запросов к себе. Её можно получить следующим запросом: ``` curl -X GET https://platform.stratpro.hse.ru/app-name/API_NAME/modelversion -H "Content-Type: application/json" -u ":" ``` Тело запроса на выполнения расчёта - это объект с полями, которые в точности копируют поля из функции inference в [MLComponent](mlcmp.md#функция-inference). ### Пример запроса Пример тела запроса к ML-компоненту ``` { "inputs": [ { "name": "image", "data": "uploads/test_image.png", "datatype": "FILE", "content_type": "image/png", "shape": [128, 128] } ], "output_fields": [ { "name": "predict", "datatype": "INT32" } ] } ``` Запрос, с файлом `data.json` в его теле и базовой аутентификацией. ``` curl -X POST -d @data.json https://platform.stratpro.hse.ru/app-name/API_NAME/predict -H "Content-Type: application/json" -u ":" ``` ## Общая работа с пайплайнами Каждый развёрнутый пайплайн содержит OpenAPI спецификацию запросов к себе. Её можно получить следующим запросом: ``` curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines/PIPELINE_NAME/version -H "Content-Type: application/json" -u ":" ``` Основная работа происходит с конкретными пайплайнами. Из общих команд полезны: ``` # Получить список пайплайнов curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines -H "Content-Type: application/json" -u ":" ``` ``` # Получить список запусков пайплайнов curl -X GET https://platform.stratpro.hse.ru/app-name/trials -H "Content-Type: application/json" -u ":" ```