This page is also available in English .
Огляд
Новий Connections endpoint дозволяє одним API-запитом отримати всі
підключені сервіси користувача — акаунти Google Ads та локації Google Business
Profile (GBP) — згруповані по компаніях.
Раніше: фронтенд мав викликати окремі ендпоінти для Google Ads і GBP
локацій, часто повторюючи запити для кожної компанії (проблема N+1).
Тепер: один виклик GET /api/v1/companies/me/connections повертає все.
Ендпоінти
Ендпоінт Повертає Коли використовувати GET /api/v1/companies/me/connectionslist[CompanyWithConnections]Дашборд / сайдбар — отримати всі підключення по всіх компаніях GET /api/v1/companies/me/{company_id}/connectionsCompanyWithConnectionsСторінка компанії — підключення конкретної компанії
Обидва потребують валідний заголовок Authorization: Bearer <token>.
Формат відповіді
Обидва ендпоінти повертають однакову структуру — об’єкт компанії з двома
масивами підключень. Ендпоінт “усі підключення” обгортає це у список.
CompanyWithConnections
date_added
string (ISO 8601)
required
Коли компанію було створено.
date_updated
string (ISO 8601)
required
Коли компанію було востаннє оновлено.
google_ads_customers
GoogleAdsCustomer[]
required
Підключені акаунти Google Ads. Порожній масив, якщо підключень немає. Show Поля GoogleAdsCustomer
Наприклад, "America/New_York".
Чи це менеджер (MCC) акаунт.
date_added
string (ISO 8601)
required
Коли підключено.
date_updated
string (ISO 8601)
required
Останнє оновлення.
Завжди true у цій відповіді.
Завжди false у цій відповіді.
google_business_locations
GoogleBusinessLocation[]
required
Підключені GBP локації. Порожній масив, якщо підключень немає. Show Поля GoogleBusinessLocation
Google ідентифікатор локації.
Назва локації (наприклад, назва бізнесу).
Зовнішній ідентифікатор локації.
Посилання на локацію в Google Maps.
Фізична адреса. CLDR код регіону (наприклад, "UA", "US").
Рядки адреси (вулиця тощо).
Приклад запиту та відповіді
curl -X GET "https://api.cattix.com/api/v1/companies/me/connections" \
-H "Authorization: Bearer YOUR_TOKEN"
Відповідь (200 OK):
[
{
"id" : 1 ,
"name" : "Моє агентство" ,
"date_added" : "2025-06-15T10:30:00" ,
"date_updated" : "2025-12-01T14:22:00" ,
"google_ads_customers" : [
{
"id" : 1234567890 ,
"descriptive_name" : "Магазин клієнта" ,
"currency_code" : "USD" ,
"time_zone" : "America/New_York" ,
"status" : "ENABLED" ,
"manager" : false ,
"date_added" : "2025-07-01T09:00:00" ,
"date_updated" : "2025-11-20T08:15:00" ,
"is_active" : true ,
"is_deleted" : false
}
],
"google_business_locations" : [
{
"id" : "locations/abc123" ,
"title" : "Магазин клієнта — Центр" ,
"store_code" : "STORE-001" ,
"maps_uri" : "https://maps.google.com/?cid=123456" ,
"storefront_address" : {
"region_code" : "US" ,
"language_code" : "en" ,
"postal_code" : "10001" ,
"administrative_area" : "NY" ,
"locality" : "New York" ,
"sublocality" : null ,
"address_lines" : [ "123 Main St" ]
}
}
]
},
{
"id" : 2 ,
"name" : "Сайд-проєкт" ,
"date_added" : "2025-09-10T12:00:00" ,
"date_updated" : "2025-09-10T12:00:00" ,
"google_ads_customers" : [],
"google_business_locations" : []
}
]
Компанії без підключень все одно присутні у відповіді — їхні масиви
google_ads_customers та google_business_locations порожні.
Це дозволяє показувати “Ще немає підключень” без додаткової логіки.
Ендпоінт для однієї компанії
Щоб отримати підключення конкретної компанії, вкажіть її ID у шляху:
curl -X GET "https://api.cattix.com/api/v1/companies/me/42/connections" \
-H "Authorization: Bearer YOUR_TOKEN"
Повертає один об’єкт (не масив):
{
"id" : 42 ,
"name" : "Моє агентство" ,
"date_added" : "2025-06-15T10:30:00" ,
"date_updated" : "2025-12-01T14:22:00" ,
"google_ads_customers" : [ ... ],
"google_business_locations" : [ ... ]
}
Що фільтрується автоматично
Бекенд автоматично виключає неактивні та видалені ресурси. Вам не потрібно
фільтрувати на фронтенді. Виключаються:
Виключається коли… Приклад Компанію м’яко видалено Компанію видалив адмін Членство користувача неактивне Користувача прибрали з компанії Зв’язок підключення неактивний Google Ads акаунт було від’єднано Сам ресурс неактивний / видалений Google Ads акаунт було призупинено
Кешування
Відповіді кешуються на бекенді (Redis). Вам не потрібно реалізовувати
кешування на фронтенді.
Кеш автоматично інвалідується коли:
Компанію створено, оновлено або видалено
Учасника додано або прибрано з компанії
Google Ads акаунт або GBP локацію підключено / від’єднано
Це означає, що виклик ендпоінту після будь-якої мутації поверне актуальні дані.
Гайд з міграції
Якщо ви зараз отримуєте Google Ads акаунти та GBP локації з окремих ендпоінтів:
Замініть кілька запитів одним
Замініть окремі виклики Google Ads та GBP ендпоінтів на один запит до
GET /api/v1/companies/me/connections.
Оновіть модель даних
Відповідь групує підключення по компаніях. Налаштуйте стан UI відповідно: interface CompanyWithConnections {
id : number ;
name : string ;
date_added : string ;
date_updated : string ;
google_ads_customers : GoogleAdsCustomer [];
google_business_locations : GoogleBusinessLocation [];
}
// Ендпоінт "усі підключення" повертає:
type AllConnections = CompanyWithConnections [];
Приберіть фільтрацію на клієнті
Бекенд вже фільтрує неактивні / видалені ресурси. Приберіть перевірки
is_active / is_deleted на фронтенді.
Спростіть кешування на клієнті (опціонально)
Якщо у вас було клієнтське кешування даних підключень, його можна спростити
або прибрати, бо бекенд тепер кешує відповідь.