
Последнее обновление: 20 июля 2026 г.
Для двусторонней синхронизации между Quire и другим приложением нужен промежуточный сервер, который принимает вебхуки с обеих сторон и вызывает соответствующий API, чтобы отразить изменение. Архитектура: Quire ↔ ваше приложение ↔ другое приложение. Четыре шага реализации: разверните сервер для приёма вебхуков, зарегистрируйте его в Quire (добавив как подписчика проекта), зарегистрируйте его в другом приложении, а затем обрабатывайте события с помощью типов активности из документации Quire API. Два правила безопасности: помечайте источник каждого изменения, чтобы избежать бесконечных циклов, и ведите сопоставление ID задач Quire с ID элементов другого приложения. Рабочий пример — приложение Google Calendar Two-Way Sync.
Когда данные хранятся в двух приложениях, каждое действие приходится выполнять дважды, либо синхронизация незаметно нарушается. Двусторонняя синхронизация решает эту проблему двойного ввода, заставляя Quire и другое приложение автоматически обмениваться обновлениями через вебхуки. Открытый API Quire создан именно для такого сценария.
Цена разрозненных инструментов хорошо изучена. По данным исследования McKinsey о социальной экономике, работники умственного труда тратят почти 20% рабочей недели на поиск внутренней информации вместо выполнения непосредственных задач. Надёжная синхронизация автоматически убирает значительную часть этих накладных расходов.
Приложение Google Calendar Two-Way Sync — канонический пример: задачи Quire и события Google Календаря остаются согласованными без ручной сверки. В этой статье разберём, как построить такой же механизм для API любого другого приложения.
Google Calendar Two-Way Sync создан для подписок уровня Premium и выше. Подробнее можно узнать на нашей странице тарифов.
| Компонент | Роль |
|---|---|
| Приложение Quire | Предоставляет учётные данные API; зарегистрировано как подписчик проекта для получения вебхуков |
| Промежуточный сервер (ваше приложение) | Принимает вебхуки с обеих сторон; вызывает каждый API, чтобы отразить изменение |
| Другое приложение (например, Google Календарь) | Источник событий на своей стороне; цель записи через API |
| URL вебхука в настройках приложения Quire | Куда Quire отправляет POST-запросы с событиями активности |
| Таблица сопоставления ID | Сопоставляет ID задач Quire ↔ ID элементов другого приложения |
| Метка источника на каждом изменении | Предотвращает бесконечные циклы обновлений |
Представьте двустороннюю синхронизацию как диалог между двумя приложениями. Когда вы обновляете задачу в Quire, оно сообщает об изменении другому приложению. А когда что-то обновляется в этом другом приложении, оно сообщает об этом Quire. Так ваша информация остаётся согласованной везде.

Первый шаг — настройка вашего приложения Quire. Его нужно создать, чтобы получить учётные данные, необходимые для доступа к вашему проекту Quire через API.
Пошаговое руководство по созданию собственного приложения с Quire API можно найти в нашей статье блога.
Чтобы реализовать двустороннюю синхронизацию, вам нужно разработать промежуточное приложение (ваше приложение), которое выступит мостом между Quire и целевым приложением (например, Google Календарём). Представьте его как переводчика: оно получает информацию с одной стороны, обрабатывает её, а затем отправляет нужные команды на другую сторону. Поток выглядит так: Quire ↔ ваше приложение ↔ другое приложение.
Чтобы включить двустороннюю синхронизацию, сначала нужно настроить собственный сервер, который будет выполнять роль промежуточного слоя. Это приложение будет отвечать за приём POST-запросов вебхуков как от Quire, так и от другого приложения. Ваш сервер должен уметь:
Вы можете написать этот сервер на любой удобной технологии, например Node.js, Python или Ruby. В следующих разделах мы используем Node.js, чтобы показать простой пример приёма и обработки событий вебхуков. Убедитесь, что ваш сервер доступен из интернета, чтобы Quire и другое приложение могли отправлять на него события вебхуков.
Вот простой пример на Node.js с использованием Express:
const express = require('express');
const app = express();
app.use(express.json());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});Далее нужно создать маршрут на вашем сервере для приёма событий вебхуков от Quire.
app.post('/webhook', (req, res) => {
console.log('Received webhook event:', req.body);
// TODO: Handle the event and update Quire or other app via API
res.status(200).send('Event received');
});В этом примере маршрут вебхука — /webhook, поэтому полный URL будет ${your-host}/webhook.
Скопируйте этот URL вебхука и вставьте его в настройки приложения Quire, чтобы Quire знало, куда отправлять уведомления о событиях в ваше приложение.

Кроме того, вам нужно зарегистрировать ваше приложение Quire как подписчика проекта, который вы хотите синхронизировать. Это гарантирует, что ваше приложение будет получать уведомления о соответствующих обновлениях.
Пошаговое руководство о том, как получать уведомления через Quire API, можно найти в нашем руководстве.
Чтобы синхронизировать обновления из другого приложения с Quire, вам также нужно создать на сервере маршрут для приёма событий вебхуков от этого приложения. Процесс регистрации аналогичен примеру, показанному выше для Quire. Просто настройте другое приложение так, чтобы оно отправляло уведомления о событиях на конечную точку вебхука вашего промежуточного приложения, и убедитесь, что ваш сервер может корректно принимать и обрабатывать эти входящие события.
Как только ваше приложение начнёт получать события вебхуков и от Quire, и от другого приложения, вам нужно реализовать логику для обработки этих событий и синхронизации данных между двумя платформами. Как правило, это включает:
Внимательно обрабатывая входящие события и обновляя данные через API, ваше приложение гарантирует, что изменения точно отражаются с обеих сторон, поддерживая надёжную двустороннюю синхронизацию.
Вот пример на Node.js с использованием axios:
const axios = require('axios');
app.post('/webhook', (req, res) => {
const { type } = req.body.data;
// Reference of activity types:
// https://github.com/quire-api/quire-api/blob/master/docs/activity_types.md
switch (type) {
case 0: //Quire task created
onQuireTaskCreate();
break;
case 1: //Quire task deleted
onQuireTaskDelete();
break;
}
res.status(200).send('Event received');
});
// Route for handling events from another app to Quire
app.post('/anotherwebhook', async (req, res) => {
const { isCreate, id, name, projectId } = req.body;
if (isCreate) {
// Create a task in the Quire project
await axios.post(`https://quire.io/api/task/${projectId}`, { name });
// Optionally, store the mapping between your app's id and Quire's task id
} else {
// Retrieve the corresponding Quire task id using your mapping logic
const taskOid = getTaskIdByAppEventId(id, projectId);
// Delete the task from the Quire project
await axios.delete(`https://quire.io/api/task/${taskOid}`);
}
res.status(200).send('Event processed successfully');
});Этот пример показывает, как обрабатывать события создания и удаления из другого приложения и синхронизировать их с Quire. Обязательно реализуйте корректную обработку ошибок и поддерживайте сопоставление ID для надёжной синхронизации.
Два правила безопасности закрывают проблемы, которые возникают почти в каждой первой реализации:
Открытый API вместе с вебхуками превращает Quire и другие ваши инструменты в единый источник достоверных данных вместо двух конкурирующих. Начните с минимально жизнеспособной синхронизации (один тип события, одно направление) и убедитесь, что цикл работает от начала до конца, прежде чем расширять его.
По теме: Интеграция внешних инструментов с Quire через Quire API — на примере n8n — готовый пример, если вы предпочитаете начать с no-code инструмента автоматизации, а не с собственного сервера.
Двунаправленное соединение, при котором обновления идут в обе стороны: изменения в Quire отправляются в другое приложение, а изменения там — обратно в Quire. Рабочий пример — приложение Google Calendar Two-Way Sync.
Приложение Quire с учётными данными API, промежуточный сервер, доступный из интернета для приёма вебхуков, и логика для преобразования событий между двумя API. Подойдёт любой серверный язык.
Оно выступает переводчиком между Quire и другим сервисом: принимает события вебхуков, решает, какие вызовы API сделать, и поддерживает сопоставление между ID задач Quire и ID элементов другого приложения.
Отслеживайте, откуда произошло каждое изменение, и игнорируйте обновления, вызванные вашим собственным процессом синхронизации. Без этой защиты каждое обновление будет бесконечно перекидываться между двумя приложениями.
Premium и выше. Актуальные ограничения тарифов можно посмотреть на странице цен.