# Интеграция Baserow и Power Automate: коннектор и API

> Свободный REST API Baserow принимает вызовы коннектора Power Automate: действия со строками, аутентификация по токену, типичные ошибки и запуск по вебхуку.

Source: https://opennix.org/docs/baserow/integrations/power-automate-integration/


Данные в таблицах Baserow можно превратить в автоматические письма, обновления списков SharePoint или документы Word - для этого в Microsoft Power Automate собирается пользовательский коннектор, который обращается к свободному REST API Baserow через токен базы данных; ниже пошагово разобрана сборка коннектора, действия со строками, устранение типичных ошибок и два практических сценария, включая запуск по вебхуку вместо расписания.

## Архитектура интеграции

Схема интеграции состоит из трёх частей:

1. **Baserow** - хранит данные таблиц.
2. **Пользовательский коннектор** - переводит действия Power Automate («создать строку», «получить строки») в вызовы REST API Baserow.
3. **Поток (Flow)** - содержит саму логику автоматизации, например «если статус изменился на Done, отправить письмо».

Коннектор можно заменить обычными HTTP-запросами, но тогда каждый поток пришлось бы собирать вручную из JSON-кода. Пользовательский коннектор даёт готовое меню с полями для заполнения, которое можно переиспользовать во всей команде - это и есть его практическая ценность.

## Что потребуется

- **Аккаунт Baserow** с [database-токеном](/docs/baserow/webhook-api/personal-api-tokens/). Baserow различает действия с данными строк, для которых достаточно токена базы данных, и действия с пользователем или файлами, для которых нужен JWT-токен.
- **Аккаунт Power Automate** с правом создавать потоки.

![Схема интеграции Baserow и Power Automate через пользовательский коннектор](/images/baserow/integrations/power-automate-integration-overview.png)

## Сборка коннектора через OpenAPI

Коннектор описывает операции и структуры данных API, чтобы Power Automate понимал, как их вызывать. Собрать его можно с нуля, как показано ниже, либо импортировать готовое [OpenAPI-описание Baserow](https://api.baserow.io/api/redoc/) - файл должен быть меньше 1 МБ и в формате OpenAPI 2.0 (Swagger).

### Шаг 1. Создание коннектора

1. Откройте `make.powerautomate.com` и войдите в аккаунт.
2. В боковой панели выберите **Data** → **Custom Connectors** (либо **...More**, если пункта не видно).
3. Нажмите **+ New** → **Custom connector** → **Create from blank**.
4. Введите имя коннектора `Baserow` и нажмите **Continue**.

Дальше нужно заполнить пять разделов мастера: General, Security, Definition, Code (необязательно) и Test.

### Шаг 2. Общие данные

В разделе *General* задаются иконка, описание, схема, хост и базовый URL:

| Параметр | Значение |
|---|---|
| Description | «Simplified Baserow API for Power Automate with Webhook Trigger and Row Actions» |
| Connector's URL scheme | HTTPS |
| Host | `api.baserow.io` (или домен самостоятельно размещённого инстанса) |
| Base URL | `/` |

Base URL - это отправная точка для всех вызовов API коннектора. Загрузите логотип Baserow (PNG или JPG, до 1 МБ) и переходите к разделу **Security**.

![Раздел General при создании пользовательского коннектора Baserow в Power Automate](/images/baserow/integrations/power-automate-integration-create-connector.jpg)

### Шаг 3. Аутентификация

Baserow использует аутентификацию по API-ключу. В разделе *Security* выберите тип **API Key** и укажите:

| Параметр | Значение | Назначение |
|---|---|---|
| Parameter label | `Authorization` | Отображается пользователю при первом подключении |
| Parameter name | `Authorization` | Точное имя заголовка, которое ожидает Baserow |
| Parameter location | Header | Ключ передаётся в заголовке запроса |

После этого переходите к разделу **Definition**.

![Настройка аутентификации по API-ключу для коннектора Baserow в Power Automate](/images/baserow/integrations/power-automate-integration-authentication.jpg)

Раздел *Definition* показывает уже заданные действия, триггеры и общие параметры (references) коннектора - их удобно переиспользовать между несколькими действиями.

![Раздел Definition пользовательского коннектора Baserow со списком действий](/images/baserow/integrations/power-automate-integration-definition.jpg)

### Шаг 4. Настройка действий

Действия определяют операции, доступные пользователю потока. Для каждого действия в разделе **General** указываются summary, description и operation ID, а видимость (**Visibility**) настраивается как `none` (обычное отображение), `advanced` (скрыто в подменю), `internal` (скрыто от пользователя) или `important` (показывается первым).

Базовый набор действий для работы со строками таблицы:

- **List tables** (`list_database_tables`)
- **List fields** (`list_database_table_fields`)
- **List rows** (`list_database_table_rows`)
- **Get row** (`get_database_table_row`)
- **Create row** (`create_database_table_row`)
- **Update row** (`update_database_table_row`)
- **Delete row** (`delete_database_table_row`)

Для каждого действия выберите **Import from sample** и вставьте образец запроса и ответа из [документации REST API Baserow](https://api.baserow.io/api/redoc/) - например, для списка строк:

```
https://api.baserow.io/api/database/rows/table/{table_id}/?user_field_names=true&page=1&size=100&search="string"
```

Параметр `user_field_names=true` важен отдельно: без него Baserow возвращает технические имена вида `field_45` вместо читаемых названий столбцов. Аутентификация во всех действиях выполняется заголовком `Authorization: Token your_token_here` с database-токеном. После заполнения запроса и примера ответа мастер проверит определение - раздел **Validation** должен показать зелёную галочку без ошибок.

![Определение действий List rows и Create row у коннектора Baserow](/images/baserow/integrations/power-automate-integration-define-actions.jpg)

### Шаг 5. Проверка подключения

1. Откройте вкладку **Test**.
2. Нажмите **New Connection**.
3. Введите ключ в формате `Token your_token_here` (со словом «Token» и пробелом перед самим ключом).
4. Нажмите **Create Connection**, затем обновите вкладку Test.
5. Выберите действие, укажите значение [ID таблицы](/docs/baserow/webhook-api/database-and-table-id/) и нажмите **Test operation**.

Успешный запрос возвращает статус `200`. После этого коннектор готов к использованию в потоках, а также его можно передать другим участникам команды.

![Тестовый запрос коннектора Baserow в Power Automate со статусом 200](/images/baserow/integrations/power-automate-integration-test-connection.jpg)

## Устранение неполадок

| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | В подключении указан только сам ключ, без слова «Token» | Отредактируйте подключение и укажите значение в формате `Token [ключ]` |
| Ошибка на шаге «Apply to Each» | Для цикла выбран не тот список | Выберите `results` из динамического содержимого, а не тело ответа целиком |
| Названия столбцов нечитаемы | Не задан параметр `user_field_names` | Добавьте `user_field_names=true` в запрос действия List rows |
| Таймаут или «Bad Gateway» | Слишком большой объём данных в ответе | Добавьте пагинацию или фильтр в действие List rows |

## Рекомендации

- **Фильтруйте данные на стороне Baserow.** Не забирайте в поток тысячи строк, чтобы отфильтровать их условием Power Automate - используйте фильтры REST API прямо в действии List rows (например, `filter__Status__equal=Done`), это экономит лимит действий (Action Credits).
- **Защищайте токен.** Не публикуйте скриншоты потока, на которых виден API-ключ.
- **Используйте ID полей в критичных потоках.** Параметр `user_field_names=true` удобен, но переименование столбца в Baserow ломает поток, который ищет поле по старому названию. Для критичных сценариев обращайтесь к полю по числовому ID (например, `field_123`), который не меняется при переименовании.

## Практические сценарии

### Сценарий 1. Утренний отчёт по расписанию

1. Создайте **Scheduled Cloud Flow** с повтором раз в сутки.
2. Добавьте действие коннектора **Baserow** → **List rows**, укажите ID таблицы.
3. При необходимости добавьте фильтр, например `filter__field_123__equal=Active`.
4. Добавьте шаг **Apply to each**, в качестве входных данных выберите `results` из предыдущего шага.
5. Внутри цикла добавьте действие **Send an email (V2)**: тема и тело письма формируются из полей строки, например `[Name]` и `[Status]`.

### Сценарий 2. Мгновенный запуск через вебхук

Расписание подходит не всегда - когда нужна реакция сразу после создания строки, вместо опроса API используется [вебхук Baserow](/docs/baserow/webhook-api/webhooks/):

**Часть A. Подготовка Power Automate.** Создайте **Automated Cloud Flow** с триггером **When an HTTP request is received**, сохраните поток и скопируйте сгенерированный URL для POST-запросов.

**Часть B. Настройка Baserow.** Откройте раздел **Webhooks** в боковой панели таблицы, создайте вебхук, вставьте URL из Power Automate, выберите метод **POST** и событие `rows.created` (или `updated`/`deleted`).

**Часть C. Логика потока.** Добавьте шаг **Parse JSON**, чтобы разобрать данные, которые прислал Baserow, а затем любые дальнейшие действия - например, отправку сообщения в Teams.

## Часто задаваемые вопросы

**Обязательно ли использовать пользовательский коннектор, а не обычный HTTP-запрос?** Нет, действие «HTTP» в Power Automate тоже подключается к [REST API Baserow](/docs/baserow/webhook-api/database-api/), но каждый запрос придётся собирать вручную в JSON. Коннектор превращает это в готовое меню с полями и переиспользуется всей командой.

**Чем токен базы данных отличается от JWT-токена в этой интеграции?** Токен базы данных предназначен именно для действий со строками таблицы и используется во всех примерах выше; JWT-токен нужен только для операций с пользователем или файлами и получается через обычный вход в аккаунт.

**Работает ли коннектор с самостоятельно размещённым (self-hosted) Baserow?** Да - в разделе General коннектора достаточно указать домен своего инстанса вместо `api.baserow.io`, остальная настройка не меняется.

**Что произойдёт, если переименовать столбец после настройки потока?** Поток, использующий `user_field_names=true`, перестанет находить поле по старому названию и сломается - отсюда рекомендация использовать числовые ID полей для критичных сценариев.

Следующий шаг - статья [«Интеграция Baserow с Tally»](/docs/baserow/integrations/tally-integration/): похожая схема с вебхуком, но со стороны формы, а не расписания.

