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:
- Опрашивается событие
ithive.homepage:OnBlockMobileData(параметрыcode,zone,userId,siteId); первый ответEventResultс параметромdata(массив) попадает вdata. - Если событие данных не дало, а у блока задан
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
}
См. также
Предыдущая
Следующая