documentation/pages/api-module.md
2025-03-04 17:15:57 +03:00

63 lines
3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Главная страница](./README.md)
# Взаимодействие с модулем через API
Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала.
- Файловый API
- ML-компонент
- Общая работа с пайплайнами
- Отдельный пайплайн
Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/<api>`.
Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения.
## Авторизация
## Файловый API
### Работа с файловым API
URL запросов к файловому API имеют вид `https://platform.stratpro.hse.ru/app-name/files/box-name/<path>`.
Здесь `box-name` - это имя компонента DataBox, к которому обращается запрос.
Файловый API позволяет загружать файлы в файловое хранилище и получать уже загруженные файлы. Загрузка папок со всем содержимым не предусмотрена, в таких случаях предполагается автоматизация запросов на загрузку отдельных файлов.
#### Пример загрузки и скачивания файла через сервис `files`.
Для загрузки файла можно использовать следующий запрос `PUT`:
```sh
curl -X PUT https://https://platform.stratpro.hse.ru/app-name/files/box-name/my_dir/my_file.txt -H "Content-Type: application/json" -u "developer:<password>"
```
Это запрос:
1. К приложению `app-name`.
2. К файловому API (у которого endpoint всегда `files`).
3. К ящику `box-name`.
4. К пути `my_dir/my_file.txt` внутри ящика.
5. От имени пользователя модуля `developer`, пароль которого - `<password>`.
Даже если запрос верный, сам файл на данном этапе не создаётся. Вместо этого должен прийти ответ в формате 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` - локальный путь к файлу.