---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.2
alternate:
  - https://yandex.ru/dev/direct/doc/dg-v4/en/reference/GetChanges.md
  - https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetChanges.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/direct/doc/dg-v4/ru/llms.txt

# GetChanges
Проверяет наличие изменений в кампаниях, объявлениях и персональных данных клиентов, а также в справочнике регионов, справочнике временных зон, в Яндекс Каталоге.
Для метода существует версия [GetChanges (Live)](https://yandex.ru/dev/direct/doc/dg-v4/live/GetChanges.html).

Метод сообщает о наличии или отсутствии изменений после указанной даты без детализации, что именно изменилось. Рекомендуется использовать метод следующим образом:

1. При первом запуске приложения вызовите метод без входных параметров для синхронизации текущего времени.
    
    Метод возвращает параметр `Timestamp` — текущее время на сервере по UTC.
    
1. При каждом последующем вызове метода укажите логины, кампании и объявления, для которых требуется проверить изменения, а также значение параметра `Timstamp`, полученное при предыдущем вызове метода. Это гарантирует непрерывность интервалов для проверки изменений вне зависимости от возможных задержек, а также разницы во времени сервера и приложения.
1. В случае получения ответа о наличии изменений актуальные данные можно получить с помощью соответствующих методов:
    - [GetCampaignsParams](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetCampaignsParams.md)
    - [GetBanners](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetBanners.md)
    - [GetClientInfo](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetClientInfo.md)
    - [GetRegions](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRegions.md)
    - [GetTimeZones](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetTimeZones.md)
    - [GetRubrics](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRubrics.md)
    


{% note info %}

В некоторых случаях параметры кампаний, объявлений и др. остаются прежними, но метод `GetChanges` сообщает об изменениях. Это связано с наличием скрытых параметров, которые не доступны через API, но проверяются при вызове метода.

{% endnote %}



## Входные данные {#input}

Ниже показана структура входных данных в формате JSON. Параметры `CampaignIDS`, `BannerIDS`, `Logins` являются взаимоисключающими — только один из них может присутствовать в запросе.

```javascript
{
   "method": "GetChanges",
   "param": {
      /* GetChangesRequest */
      "CampaignIDS": [
         (int)
         ...
      ],
      "BannerIDS": [
         (long)
         ...
      ],
      "Logins": [
         (string)
         ...
      ],
      "Timestamp": (string)
   }
}
```

Ниже приведено описание параметров.


#|
||
**<sup >Параметр</sup>**
|
**<sup >Описание</sup>**
|
**<sup >Требуется</sup>**
||

||
**<sub >Объект GetChangesRequest</sub>**
||
||
`CampaignIDS`
|
Массив, содержащий идентификаторы кампаний (не более 100).
|
Нет
||
||
`BannerIDS`
|
Массив, содержащий идентификаторы объявлений (не более 1000). Объявления могут принадлежать разным кампаниям.
|
Нет
||
||
`Logins`
|
Массив, содержащий логины клиентов (агентств).
|
Нет
||
||
`Timestamp`
|
Момент времени, начиная с которого проверяются изменения. Указывается в формате `YYYY-MM-DDThh:mm:ssZ` (согласно ISO 8601), например `2014-05-24T23:59:59Z`. Если метод вызван без параметра `Timestamp`, остальные параметры игнорируются, возвращается только текущее время на сервере.
|
Нет
||
|#


## Результирующие данные {#output}

Ниже показана структура результирующих данных в формате JSON. Структура содержит все возможные данные, которые могут присутствовать в ответе. Действительный состав данных зависит от входных параметров и описывается далее.

```javascript
{
   "data": {
      /* GetChangesResponse */
      "Campaigns": {
         /* GetChangesIntData */
         "Updated": [
            (int)
            ...
         ],
         "NotUpdated": [
            (int)
            ...
         ],
         "NotFound": [
            (int)
            ...
         ]
      },
      "Banners": {
         /* GetChangesLongData */
         "Updated": [
            (long)
            ...
         ],
         "NotUpdated": [
            (long)
            ...
         ],
         "NotFound": [
            (long)
            ...
         ]
      },
      "Logins": {
         /* GetChangesStringData */
         "Updated": [
            (string)
            ...
         ],
         "NotUpdated": [
            (string)
            ...
         ],
         "NotFound": [
            (string)
            ...
         ]
      },
      "CampaignsStatChange": [
         {  /* CampaignStatChangeItem */
            "CampaignID": (int),
            "BorderDate": (date)
         }
         ...
      ],
      "Timestamp": (string),
      "RubricsChanged": (string),
      "TimeZonesChanged": (string),
      "RegionsChanged": (string)
   }
}
```

Ниже приведено описание параметров.


#|
||
**<sup >Параметр</sup>**
|
**<sup >Описание</sup>**
||

||
**<sub >Объект GetChangesResponse</sub>**
||
||
`Campaigns`
|
Присутствует в ответе, если при вызове метода задан массив `CampaignIDS`. Показывает наличие или отсутствие изменений в кампаниях либо что кампании с указанными идентификаторами не найдены.

Под изменением кампании подразумевается изменение параметров, которые возвращает метод [GetCampaignsParams](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetCampaignsParams.md), в том числе значимое изменение статуса кампании.
||
||
`Banners`
|
Присутствует в ответе, если при вызове метода задан массив `CampaignIDS` или массив `BannerIDS`. В первом случае показывает наличие или отсутствие изменений в объявлениях, принадлежащих указанным кампаниям, во втором — то же самое для указанных объявлений либо что объявления с такими идентификаторами не найдены.

Под изменением объявления подразумевается изменение параметров, которые возвращает метод [GetBanners](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetBanners.md), в том числе значимое изменение статуса объявления.
||
||
`Logins`
|
Присутствует в ответе, если при вызове метода задан массив `Logins`. Показывает наличие или отсутствие изменений в персональных данных клиентов.
||
||
`CampaignsStatChange`
|
Массив объектов `CampaignStatChangeItem`. Объекты содержат дату актуальности статистики (`BorderDate`) для кампаний, у которых в течение проверяемого периода статистика была скорректирована. Если таких кампаний нет, параметр не выводится.

Проверяемые кампании указываются явно в массиве `CampaignIDS` или определяются по принадлежности клиентам, логины которых указаны в массиве `Logins`.
||
||
`Timestamp`
|
Момент времени, когда выполнялся метод `GetChanges`. Выводится в формате `YYYY-MM-DDThh:mm:ssZ`, например `2014-05-24T23:59:59Z`. Это время указывают при следующем вызове метода `GetChanges`, чтобы проверять изменения после данного момента.
||
||
`RubricsChanged`
|
Показывает наличие или отсутствие изменений в Яндекс Каталоге — Yes/No.
||
||
`TimeZonesChanged`
|
Показывает наличие или отсутствие изменений в справочнике временных зон — Yes/No.
||
||
`RegionsChanged`
|
Показывает наличие или отсутствие изменений в справочнике регионов — Yes/No.
||

||
**<sub >Объект GetChangesIntData</sub>**
||
||
`NotUpdated`
|
Содержит указанные при вызове идентификаторы кампаний, по которым не было изменений.
||
||
`Updated`
|
Содержит указанные при вызове идентификаторы кампаний, по которым произошли изменения.
||
||
`NotFound`
|
Содержит указанные при вызове идентификаторы кампаний, которые удалены или не существовали.
||

||
**<sub >Объект GetChangesLongData</sub>**
||
||
`NotUpdated`
|
Содержит указанные при вызове идентификаторы объявлений, по которым не было изменений.
||
||
`Updated`
|
Содержит указанные при вызове идентификаторы объявлений, по которым произошли изменения.
||
||
`NotFound`
|
Содержит указанные при вызове идентификаторы объявлений, которые удалены или не существовали.
||

||
**<sub >Объект GetChangesStringData</sub>**
||
||
`NotUpdated`
|
Содержит указанные при вызове логины, по которым не было изменений в персональных данных клиентов.
||
||
`Updated`
|
Содержит указанные при вызове логины, по которым изменились персональные данные клиентов.
||
||
`NotFound`
|
Содержит указанные при вызове логины, которые удалены или не существовали.
||

||
**<sub >Объект CampaignStatChangeItem</sub>**
||
||
`CampaignID`
|
Идентификатор кампании.
||
||
`BorderDate`
|
Дата актуальности статистики. Выводится для кампаний, статистика по которым была скорректирована в течение проверяемого периода. Как правило, корректировка связана с уменьшением количества кликов и увеличением баланса кампании.

Сформированные ранее отчеты по статистике могут оказаться не актуальными, если в них отражены данные после даты `BorderDate`. Такие отчеты рекомендуется переформировать.
||
|#


## Примеры входных данных {#examples}

## Python

```python
{
   'CampaignIDS': [1327944,1327967],
   'Timestamp': '2011-05-24T23:59:59Z'
}
```

## PHP

```php
array(
   'BannerIDS' => array(1974642, 20920155, 20155899, 64654),
   'Timestamp' ='2011-05-24T23:59:59Z'
)
```

## Perl

```perl
{
   'Logins' => ['agrom', 'john_smith', 'john_smith_old'],
   'Timestamp' ='2011-05-24T23:59:59Z'
}
```


## Примеры результирующих данных {#examples-out}

Состав результирующих данных зависит от входных параметров. Во всех случаях метод возвращает текущее время на сервере в параметре `Timestamp`.

## Вызов без параметров

Возвращается текущее время на сервере.

```javascript
{
   "data": {
      "Timestamp": "2011-05-24T23:59:59Z"
   }
}
```

## Вызовов c параметром Timestamp

Возвращается информация о наличии изменений в Яндекс Каталоге, справочнике регионов и справочнике временных зон.

```javascript
{
   "data": {
      "Timestamp": "2011-05-24T23:59:59Z",
      "RubricsChanged": "Yes",
      "TimeZonesChanged": "No",
      "RegionsChanged": "No"
   }
}
```

## Вызов c параметрами BannerIDS и Timestamp

Возвращается информация о наличии изменений в объявлениях после указанной даты.

```javascript
{
   "data": {
      "Banners": {
         "Updated": [1974642, 20920155],
         "NotUpdated": [20155899],
         "NotFound": [64654]
      },
      "Timestamp": "2011-05-24T23:59:59Z",
      "RubricsChanged": "Yes",
      "TimeZonesChanged": "No",
      "RegionsChanged": "No"
   }
}
```

## Вызов c параметрами CampaignIDS и Timestamp

Возвращается информация о наличии изменений в кампаниях и объявлениях после указанной даты, а также даты актуальности статистики.

```javascript
{
   "data": {
      "Campaigns": {
         "Updated": [1327944]
      },
      "Banners": {
         "Updated": [123123,123123],
         "NotUpdated": [43532452],
      },
      "CampaignsStatChange": [
         {
            "CampaignID": 1327944,
            "BorderDate": "2011-03-17"
         }
      ],
      "Timestamp": "2011-05-24T23:59:59Z",
      "RubricsChanged": "Yes",
      "TimeZonesChanged": "No",
      "RegionsChanged": "No"
   }
}
```

## Вызов c параметрами Logins и Timestamp

Возвращается информация о наличии изменений в персональных данных клиентов, а также даты актуальности статистики для кампаний, принадлежащих клиентам.

```javascript
{
   "data": {
     "Logins": {
         "Updated": ["agrom"],
         "NotUpdated": ["john_smith"],
         "NotFound": ["john_smith_old"]
      },
     "CampaignsStatChange": [
         {
            "CampaignID": 1327944,
            "BorderDate": "2011-03-17"
         },
         {
            "CampaignID": 23667919,
            "BorderDate": "2011-05-17"
         }
      ],
      "Timestamp": "2011-05-24T23:59:59Z",
      "RubricsChanged": "No",
      "TimeZonesChanged": "No",
      "RegionsChanged": "No"
   }
}
```

