Налаштування Retool для роботи з REST/GraphQL API
Retool підключається до будь-якого REST або GraphQL API як до ресурсу. Це дозволяє будувати внутрішні інструменти поверх існуючого API без прямого доступу до БД.
REST API Resource
У Retool → Resources → REST API:
Base URL: https://api.example.com/v1
Headers:
Authorization: Bearer {{ retoolContext.userInfo.email }}
Content-Type: application/json
X-Service: retool-internal
Для динамічного токена використовуйте Custom Auth з OAuth2 або запит токена через окремий query.
REST запити в Retool
// Query: getUsers
{
"method": "GET",
"path": "/users",
"queryParams": {
"search": "{{ searchInput.value }}",
"status": "{{ statusFilter.value }}",
"page": "{{ currentPage.value }}",
"limit": "20"
}
}
// Query: updateUserStatus
{
"method": "PATCH",
"path": "/users/{{ usersTable.selectedRow.data.id }}",
"body": {
"status": "{{ newStatusSelect.value }}",
"reason": "{{ reasonInput.value }}"
}
}
GraphQL Resource
# Query: fetchDashboardData
query GetDashboard($userId: ID!, $ordersLimit: Int!) {
user(id: $userId) {
id
name
email
subscription { plan, status, expiresAt }
orders(limit: $ordersLimit) {
id
status
total
createdAt
}
}
}
Змінні в Retool:
{
"userId": "{{ userIdInput.value }}",
"ordersLimit": 10
}
Transformers
JavaScript для перетворення відповідей API:
// Transformer для форматування даних таблиці
return data.users.map(user => ({
...user,
createdAt: new Date(user.createdAt).toLocaleDateString('uk-UA'),
statusLabel: { active: 'Активний', blocked: 'Заблокований' }[user.status] || user.status,
lifetimeValue: `${user.lifetimeValue.toLocaleString('uk-UA')} ₴`
}));
Webhook-тригери
Retool Workflows можуть бути запущені через Webhook з зовнішніх систем. Приклад: коли скарга надходить в Zendesk, автоматично відкрити профіль користувача в інструменті підтримки Retool.
Графік
Підключення REST/GraphQL ресурсів та 5–10 запитів з transformers — 1–2 дні.







