> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cattix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Авто-регенерація RSA

> Як Responsive Search Ads автоматично перегенеровуються при зміні груп оголошень або ключових слів

<Note>
  This page is also available in [English](/guides/rsa-auto-regeneration).
</Note>

Коли користувач редагує групи оголошень або ключові слова в майстрі створення
кампанії, бекенд може автоматично перегенерувати Responsive Search Ads (RSA), щоб
вони відповідали актуальному вмісту групи оголошень. Це відбувається через
**фонові задачі** — API повертає відповідь одразу, а RSA генеруються асинхронно.

## Як це працює

Кожен endpoint мутації груп оголошень та ключових слів приймає опціональний
query-параметр:

```
?regenerate_rsas=true   (за замовчуванням)
?regenerate_rsas=false  (вимкнути)
```

Коли `regenerate_rsas=true` (за замовчуванням) **і** мутація впливає на поля,
релевантні для RSA, бекенд:

1. Визначає назву та опис компанії з пов'язаного `AssistantKnowledgeItem`
2. Збирає активні (не видалені) ключові слова для кожної зміненої групи оголошень
3. Ставить у чергу фонову задачу `generate_rsas_for_ad_group` для кожної зміненої групи
4. Повертає звичайну відповідь одразу — генерація RSA відбувається асинхронно

<Note>
  Якщо до Google Ads акаунту чернетки не прив'язана компанія, регенерація RSA
  пропускається без помилки. Це може статися для нещодавно підключених акаунтів,
  які ще не мають сутності компанії.
</Note>

***

## Які endpoints це запускають

### Endpoints з авто-регенерацією

| Endpoint                                             | Метод    | Коли запускається регенерація RSA                                  |
| ---------------------------------------------------- | -------- | ------------------------------------------------------------------ |
| `.../drafts/{id}/ad-groups`                          | `PATCH`  | Змінюється **назва** групи оголошень або **текст** ключового слова |
| `.../drafts/{id}/ad-groups`                          | `POST`   | Створюється нова група **хоча б з одним ключовим словом**          |
| `.../drafts/{id}/ad-groups/{ag_id}`                  | `PUT`    | Змінюється **назва** групи оголошень                               |
| `.../drafts/{id}/ad-groups/{ag_id}/keywords`         | `POST`   | Завжди (додано нове ключове слово)                                 |
| `.../drafts/{id}/ad-groups/{ag_id}/keywords/{kw_id}` | `PUT`    | Змінюється **текст** ключового слова                               |
| `.../drafts/{id}/ad-groups/{ag_id}/keywords/{kw_id}` | `DELETE` | Завжди (ключове слово видалено)                                    |

### Що НЕ запускає регенерацію

Ці зміни **не** вважаються релевантними для RSA:

* Зміна `cpc_bid_micros` групи оголошень або ключового слова
* Зміна `match_type` ключового слова
* Зміна `final_url` ключового слова
* Створення групи оголошень **без** ключових слів

<Tip>
  Правило: RSA перегенеровуються, коли змінюється **контент**, що впливає на текст
  оголошень (назва групи, текст ключового слова, наявність ключових слів). Зміни
  ставок та таргетингу не впливають на текст оголошень.
</Tip>

***

## Як вимкнути

Передайте `?regenerate_rsas=false` на будь-якому з вищезгаданих endpoints, щоб
пропустити автоматичну регенерацію. Використовуйте це, коли:

* Користувач робить швидкі пакетні редагування, і ви плануєте запустити
  регенерацію вручну в кінці
* Ви оновлюєте лише ставки або метадані і хочете гарантувати, що фонові задачі
  не запускаються
* Користувач вручну редагував текст RSA і не хоче, щоб він був перезаписаний

<CodeGroup>
  ```bash cURL theme={null}
  # Перейменувати групу оголошень без регенерації RSA
  curl -X PATCH "https://dev-api.cattix.com/api/v1/campaigns/drafts/42/ad-groups?regenerate_rsas=false" \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "ad_groups": [
        { "id": 988, "name": "Оновлені брендові терміни" }
      ]
    }'
  ```

  ```typescript TypeScript theme={null}
  // Перейменувати групу оголошень без регенерації RSA
  const resp = await fetch(
    `${API_BASE}/api/v1/campaigns/drafts/42/ad-groups?regenerate_rsas=false`,
    {
      method: "PATCH",
      headers: {
        Authorization: `Bearer ${token}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        ad_groups: [{ id: 988, name: "Оновлені брендові терміни" }],
      }),
    }
  );
  ```
</CodeGroup>

***

## Ручна регенерація

Ви також можете запустити генерацію RSA явно, незалежно від параметра
`regenerate_rsas`:

| Endpoint                                              | Що робить                                              |
| ----------------------------------------------------- | ------------------------------------------------------ |
| `POST .../drafts/{id}/ad-groups/{ag_id}/rsa/generate` | Згенерувати RSA для однієї групи оголошень             |
| `POST .../drafts/{id}/rsas/generate-all`              | Згенерувати RSA для **всіх** груп оголошень у чернетці |

Обидва endpoints не потребують **тіла запиту** — назва компанії, опис та URL
цільової сторінки автоматично визначаються з прив'язаної компанії чернетки та
`AssistantKnowledgeItem`. Обидва повертають `task_id` для полінгу. RSA
створюються асинхронно фоновим воркером.

<Note>
  Якщо до Google Ads акаунту чернетки не прив'язана компанія, ці endpoints
  повертають **400** з повідомленням про помилку. Це відрізняється від
  авто-регенерації (яка пропускається без помилки).
</Note>

***

## Коротка довідка: блок-схема рішень

```
Запит на мутацію надходить
  │
  ├─ regenerate_rsas=false? ──► Пропустити. Готово.
  │
  ├─ Чи змінилося RSA-релевантне поле?
  │    │
  │    ├─ Назва групи оголошень змінилася?      ──► Так ──► Регенерація для цієї групи
  │    ├─ Текст ключового слова змінився?        ──► Так ──► Регенерація для батьківської групи
  │    ├─ Ключове слово створено?                ──► Так ──► Регенерація для батьківської групи
  │    ├─ Ключове слово видалено?                ──► Так ──► Регенерація для батьківської групи
  │    ├─ Група створена з ключовими словами?    ──► Так ──► Регенерація для нової групи
  │    └─ Тільки ставки/match_type/url?          ──► Ні  ──► Пропустити
  │
  └─ Поставити фонову задачу в чергу
       └─ Відповідь повертається одразу
```

<Warning>
  Авто-регенерація **замінює** існуючі RSA для змінених груп оголошень. Якщо
  користувач вручну редагував заголовки або описи RSA, ці зміни будуть
  перезаписані. Використовуйте `?regenerate_rsas=false`, щоб зберегти ручні
  редагування.
</Warning>
