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

# contact.attributes_changed

> Происходит при изменении атрибутов контакта.

Используйте `contact.attributes_changed` для обработки этого события на вашей конечной точке Webhook.

## Триггеры

Происходит при изменении атрибутов контакта.

Подпишитесь на `contact.attributes_changed`, когда будете [настраивать конечную точку Webhook](https://docs.ycloud.com/ru/api-reference/guides/api-fundamentals/configure-webhooks.md).

## Синтаксис

YCloud отправляет HTTP-запрос `POST` на настроенный вами URL-адрес Webhook. Ниже показан один из вариантов полезной нагрузки. Значения в угловых скобках являются заполнителями; их типы перечислены в разделе **Параметры**. Необязательные поля и другие варианты описаны ниже.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "<ID>",
  "type": "contact.attributes_changed",
  "apiVersion": "<API_VERSION>",
  "createTime": "<CREATE_TIME>",
  "contactAttributesChanged": {
    "id": "<ID>",
    "updateTime": "<UPDATE_TIME>",
    "changedAttributes": {
      "remark_name": {
        "oldValue": "<OLD_VALUE>",
        "newValue": "<NEW_VALUE>"
      },
      "email": {
        "oldValue": "<OLD_VALUE>",
        "newValue": "<NEW_VALUE>"
      },
      "tags": {
        "oldValue": [
          "<OLD_VALUE>"
        ],
        "newValue": [
          "<NEW_VALUE>"
        ],
        "extra": [
          {
            "action": "<ACTION>",
            "id": "<ID>",
            "value": "<VALUE>"
          }
        ]
      }
    }
  }
}
```

## Параметры

Проверяйте HTTP-заголовок `YCloud-Signature` перед обработкой тела JSON. См. раздел [проверка подписи](https://docs.ycloud.com/ru/api-reference/guides/api-fundamentals/configure-webhooks.md).

### Конверт события

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `id` | string | Да | Уникальный идентификатор события. Минимальная длина: `6`. Максимальная длина: `128`. |
| `type` | string | Да | Всегда `contact.attributes_changed`. |
| `apiVersion` | string | Да | Версия API, используемая для формирования этого события. |
| `createTime` | string (date-time) | Да | Время создания этого события, отформатированное в [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). Например, `2022-06-01T12:00:00.000Z`. |

### Полезная нагрузка события

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `contactAttributesChanged` | object | Нет | Полезная нагрузка, специфичная для события `contactAttributesChanged`. |

Четыре общих поля конверта являются обязательными. Поля полезной нагрузки зависят от варианта события. В каждой таблице объектов значение **Обязательный** применяется, когда присутствует его родительский объект. Необязательные поля могут быть опущены; наличие примера не делает поле обязательным.

#### contactAttributesChanged

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `id` | string | Да | Идентификатор контакта, чьи атрибуты были изменены. |
| `updateTime` | string (date-time) | Да | Время обновления атрибутов контакта, отформатированное в [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). Например, `2022-06-01T12:00:00.000Z`. |
| `changedAttributes` | object | Да | Объект, содержащий измененные атрибуты. Каждый ключ представляет собой имя измененного атрибута, а значение содержит старое значение, новое значение и действия по изменению. Ключи используют имена из каталога атрибутов Contact, включая такие системные ключи, как `remark_name`, `country_code` и `meta_username`. |

## Пример

Следующий JSON представляет собой тело, доставленное вашему получателю. Идентификаторы, номера телефонов и другие значения учетной записи приведены для наглядности.

> [accordion] Событие изменения атрибутов контакта
>
> Пример полезной нагрузки при изменении атрибутов контакта
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_1234567890",
>   "type": "contact.attributes_changed",
>   "apiVersion": "v2",
>   "createTime": "2024-01-01T12:00:00.000Z",
>   "contactAttributesChanged": {
>     "id": "1824266594102064128",
>     "updateTime": "2024-01-01T12:00:00.000Z",
>     "changedAttributes": {
>       "remark_name": {
>         "oldValue": "Standard customer",
>         "newValue": "Priority customer"
>       },
>       "email": {
>         "oldValue": "john.doe@example.com",
>         "newValue": "johnny.doe@example.com"
>       },
>       "tags": {
>         "oldValue": [
>           "premium",
>           "newsletter"
>         ],
>         "newValue": [
>           "premium",
>           "newsletter",
>           "vip"
>         ],
>         "extra": [
>           {
>             "action": "ADDED",
>             "id": "686dd294334be8606a5bf312",
>             "value": "vip"
>           }
>         ]
>       }
>     }
>   }
> }
> ```

> [accordion] Пример изменения тегов (добавление тегов)
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_1234567892",
>   "type": "contact.attributes_changed",
>   "apiVersion": "v2",
>   "createTime": "2024-01-01T12:00:00.000Z",
>   "contactAttributesChanged": {
>     "id": "1824266594102064128",
>     "updateTime": "2024-01-01T12:00:00.000Z",
>     "changedAttributes": {
>       "tags": {
>         "oldValue": [
>           "premium",
>           "newsletter"
>         ],
>         "newValue": [
>           "premium",
>           "newsletter",
>           "vip"
>         ],
>         "extra": [
>           {
>             "action": "ADDED",
>             "id": "686dd294334be8606a5bf312",
>             "value": "vip"
>           }
>         ]
>       }
>     }
>   }
> }
> ```

> [accordion] Пример изменения тегов (удаление тегов)
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_1234567893",
>   "type": "contact.attributes_changed",
>   "apiVersion": "v2",
>   "createTime": "2024-01-01T12:00:00.000Z",
>   "contactAttributesChanged": {
>     "id": "1824266594102064128",
>     "updateTime": "2024-01-01T12:00:00.000Z",
>     "changedAttributes": {
>       "tags": {
>         "oldValue": [
>           "premium",
>           "newsletter",
>           "vip"
>         ],
>         "newValue": [
>           "premium",
>           "newsletter"
>         ],
>         "extra": [
>           {
>             "action": "REMOVED",
>             "id": "686dd294334be8606a5bf312",
>             "value": "vip"
>           }
>         ]
>       }
>     }
>   }
> }
> ```

> [accordion] Пример изменения
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_1234567900",
>   "type": "contact.attributes_changed",
>   "apiVersion": "v2",
>   "createTime": "2024-01-01T12:00:00.000Z",
>   "contactAttributesChanged": {
>     "id": "1824266594102064128",
>     "updateTime": "2024-01-01T12:00:00.000Z",
>     "changedAttributes": {
>       "waba_id": {
>         "oldValue": "waba_old_123456",
>         "newValue": "waba_new_789012",
>         "extra": [
>           {
>             "action": "CHANGED"
>           }
>         ]
>       }
>     }
>   }
> }
> ```

После проверки подписи и надежного принятия события верните ответ `2xx`. Трудоемкие задачи выполняйте асинхронно.

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

Пошаговые разборы сценариев см. в разделе [примеры с пояснениями](https://docs.ycloud.com/ru/api-reference/guides/examples/webhook-examples/contact-attributes-changed-webhook-examples).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.