homepage.blocks.data

Scope: homepage

Кто может вызывать: Авторизованный пользователь, которому блок доступен по rights

Возвращает данные блока для мобильного приложения и внешних клиентов по контракту mobile блока (он хранится в настройках блока и задаётся через homepage.blocks.update). Блок должен быть активен на сайте.

HTTP: GET
Побочные эффекты: нет

Параметры метода

Параметр Тип Обяз. Описание
code string да Код блока.
zone string да Зона: center или right.
siteId string нет Код сайта; по умолчанию текущий.

Возвращаемые данные

result - объект:

Поле Тип Описание
code, zone string Адрес блока
type string mobile.type блока: webview-url или native-json
url string Для webview-url - ссылка из настроек блока (mobile.url), иначе пусто
absoluteUrl string Для webview-url - абсолютная ссылка (относительная дополняется адресом портала), иначе пусто
dataMethod string Для native-json: имя REST-метода <scope>.<entity>.<action>, который приложение вызывает само (сервер его не вызывает), иначе пусто
data object или null Для native-json: данные из события OnBlockMobileData, иначе null

Источник данных для native-json:

  1. Опрашивается событие ithive.homepage:OnBlockMobileData (параметры code, zone, userId, siteId); первый ответ EventResult с параметром data (массив) попадает в data.
  2. Если событие данных не дало, а у блока задан mobile.dataMethod - имя REST-метода, оно возвращается в поле dataMethod, data = null; приложение вызывает этот метод само.

Серверные вызовы PHP-методов по строке Class::method не выполняются: такой mobile.dataMethod отклоняется при сохранении настроек блока в homepage.blocks.update.

total, next - null; error - null при успехе.

Обработка ошибок

Код Описание
UNAUTHORIZED Пользователь не авторизован
ACCESS_DENIED Блок недоступен пользователю по rights
NOT_FOUND Блок не найден или не активен на сайте
NOT_SUPPORTED У блока mobile.type = none либо для native-json нет ни ответа события OnBlockMobileData, ни dataMethod
VALIDATION_ERROR Не передан code/zone или zone не center/right
INTERNAL_ERROR Подписчик события вернул значение, которое нельзя представить в JSON, либо внутренняя ошибка

Примеры кода

Пример запроса

curl -G "https://{portal}/rest/{user_id}/{webhook_code}/homepage.blocks.data.json" \
          --data-urlencode "code=acme_news_side" \
          --data-urlencode "zone=right" \
          -H "Accept: application/json"
        

Пример ответа

webview-url:

{
          "result": {
            "result": {
              "code": "acme_news_side",
              "zone": "right",
              "type": "webview-url",
              "url": "/m/news/",
              "absoluteUrl": "https://portal.example.com/m/news/",
              "dataMethod": "",
              "data": null
            },
            "next": null,
            "error": null
          },
          "total": null
        }
        

native-json с данными из события OnBlockMobileData:

{
          "result": {
            "result": {
              "code": "acme_event_block",
              "zone": "right",
              "type": "native-json",
              "url": "",
              "absoluteUrl": "",
              "dataMethod": "",
              "data": {"items": [{"title": "Пункт 1"}]}
            },
            "next": null,
            "error": null
          },
          "total": null
        }
        

См. также

Предыдущая
Следующая