Формат ответа
В зависимости от значения параметра only_errors ответ может быть:
- Стандартный — содержит информацию о всех полях проверяемого документа.
- Только ошибки — содержит информацию исключительно о полях, в которых выявлены ошибки. Применяется, если целью пользователя является только проверка документа на наличие ошибок.
Стандартный
Возвращается, если параметр only_errors
не задан или имеет значение «false».
Ответ формируется в формате JSON. Содержит следующие поля:
-
id — идентификатор запроса (подробнее).
-
data — данные, извлеченные из микроразметки: microformats, microdata, RDFa и JSON-LD (подробнее).
{
"id": "...",
"data":{
"microformat": [{},{},..,{}],
"rdfa": [{},{},..,{}],
"microdata": [{},{},..,{}],
"json-ld": [{},{},..,{}]
}
}
Ключевые слова JSON-LD в ответе обозначены символом @
(например, @type
, @value
).
Служебные слова обозначены символом #
(например, #location
, #message
, #error_code
, #type
).
id
Значение идентификатора запроса (параметр id
).
Если идентификатор не был задан, то возвращается значение «null».
"id":null
data
Значения полей, извлеченных из микроразметки: microformats, microdata, RDFa и JSON-LD. Каждое из этих полей представляет собой массив объектов.
Объекты в массиве соответствуют объектам в исходном HTML и, как правило, имеют @type
(массив строк, содержащий информацию о типах).
"@type": ["http://schema.org/PostalAddress"]
Объекты содержат поля, извлеченные из микроразметки, и информацию об ошибках (#error
).
"#error": [
{
"#message": "Текстовое описание ошибки на языке, заданном в параметре lang",
"#location": "Местоположение ошибки в исходном HTML-коде (номер строки,содержащей тег с ошибкой)",
"#error_code": "Код ошибки",
"#type": "Тип ошибки: error — ошибка, warning — предупреждение, yandex — несоответствие требованиям Яндекса".
}
]
Значения полей могут быть:
-
Массивами объектов, имеющих собственный тип (
@type
).[{ "@type": ["http://schema.org/ListenAction"], "property1":{} }, { "@type": ["http://schema.org/ListenAction"], "property2":{} }],
-
Массивами нетипизированных объектов (в исходном коде тип указан не был).
-
Массивами объектов вида:
[{"@value": "Текст"}]
. В исходном коде представлены текстовыми полями или массивами."http://ogp.me/ns#audio": [{"@value": "текст", "#location": "2:13"}]
Для каждого поля, имеющего значение (@value),
указывается его местоположение (#location
) в исходном HTML-коде — номер строки и столбца.
"#location": "18:47"
Ссылка на ресурс (@resource
) возвращается, если адрес документа задан параметром URL, или атрибут resource
содержится в HTML-коде документа в явном виде. Например: <span resource="http://www.kinopoisk.ru/film/607608/"></span>
.
"@resource":["http://www.kinopoisk.ru/film/607608/"]
Особенности обработки микроразметки RDFa:
-
извлеченные поля группируются в объекты в соответствии с префиксом словаря к которому они относятся: Open Graph (og), Facebook (fb), AppLink (al).
-
структурированные поля, заданные посредством словаря OpenGraph, в ответе оборачиваются в служебный объект
_:content
."http://ogp.me/ns#image": [{ "http://ogp.me/ns#image:height": [{ "#location": "19:48", "@value": "300" }], "http://ogp.me/ns#image:width": [{ "#location": "18:47", "@value": "300" }], "_:content": [{ "#location": "17:65", "@value": "http://example.com/site.jpg" }] }]
Пример
В примере рассмотрены POST-запрос и возвращаемый ответ.
URL запроса:
https://validator-api.semweb.yandex.ru/v1.1/document_parser?apikey=12345a12-3b4c-5123-d4ef-g51h23ij451&pretty=true&id=1a&lang=ru
Тело запроса:
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "LocalBusiness", "address": { "@type": "PostalAddress", "addressLocality": "Россия, Москва", "streetAddress": "ул. Профсоюзная, д. 3" }, "name": "Название компании" } </script> <meta property="og:type" content="website" /> <meta property="og:url" content="http://www.example.com/" /> <meta property="og:site_name" content="Название сайта" /> <meta property="og:description" content="Описание сайта"/> <meta property="og:image" content="http://example.com/site.jpg" /> <meta property="og:image:width" content="300" /> <meta property="og:image:height" content="300" /> <div class="item" itemscope itemtype="http://schema.org/LocalBusiness"> <h2><span itemprop='name'>Название компании</span></h2> <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" <span itemprop='postalCode'>111111</span>, <span itemprop='addressLocality'>Россия, Москва</span>, <span itemprop='streetAddress'>ул. Профсоюзная, д. 3</span> </div> </div>
Ответ:
{ "data": { "microdata": [{ "http://schema.org/name": [{ "#location": "21:29", "@value": "Название компании" }], "@type": ["http://schema.org/LocalBusiness"], "http://schema.org/address": [{ "http://schema.org/addressLocality": [{ "#location": "24:45", "@value": "Россия, Москва" }], "@type": ["http://schema.org/PostalAddress"], "http://schema.org/postalCode": [{ "#location": "23:40", "@value": "111111" }], "http://schema.org/streetAddress": [{ "#location": "25:43", "@value": "ул. Профсоюзная, д. 3" }] }], "#error": [{ "#message": "ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс.Справочника: для данной категории организаций необходимо указать <b>telephone</b>", "#location": "20:71", "#error_code": "org_field_missing", "#type": "yandex" }] }], "rdfa": [{ "http://ogp.me/ns#type": [{ "#location": "13:44", "@value": "website" }], "http://ogp.me/ns#site_name": [{ "#location": "15:56", "@value": "Название сайта" }], "@type": ["og"], "#error": [{ "#message": "ОШИБКА: поле <b>http://ogp.me/ns#title</b> отсутствует или пусто", "#location": "-1:-1", "#error_code": "missing_empty", "#type": "error" }], "http://ogp.me/ns#description": [{ "#location": "16:57", "@value": "Описание сайта" }], "http://ogp.me/ns#image": [{ "http://ogp.me/ns#image:height": [{ "#location": "19:48", "@value": "300" }], "http://ogp.me/ns#image:width": [{ "#location": "18:47", "@value": "300" }], "_:content": [{ "#location": "17:65", "@value": "http://example.com/site.jpg" }] }], "http://ogp.me/ns#url": [{ "#location": "14:59", "@value": "http://www.example.com/" }] }], "microformat": [], "json-ld": [{ "http://schema.org/name": [{ "#location": "10:12", "@value": "Название компании" }], "@type": ["http://schema.org/LocalBusiness"], "http://schema.org/address": [{ "http://schema.org/addressLocality": [{ "#location": "7:25", "@value": "Россия, Москва" }], "@type": ["http://schema.org/PostalAddress"], "http://schema.org/streetAddress": [{ "#location": "8:23", "@value": "ул. Профсоюзная, д. 3" }] }] }] }, "id": "1a" }
Подробнее о словарях микроразметки http://habrahabr.ru/company/yandex/blog/211638. Подробнее о синтаксисе микроразметки http://habrahabr.ru/company/yandex/blog/221881.
Только ошибки
Возвращается, если параметр only_errors
имеет значение «true».
В случае отсутствия ошибок в проверяемом документе сервер возвращает код «204 No Content».
Если ошибки обнаружены, то ответ имеет стандартную структуру, но при этом:
- поля, которые не содержат вложенных объектов или ошибок, не отображаются;
- поля со вложенными объектами, но без ошибок, имеют значение «[{}]».
Информация об обнаруженных ошибках содержится в поле #error
.
"#error": [
{
"#message": "Текстовое описание ошибки на языке, заданном в параметре lang",
"#location": "Местоположение ошибки в исходном HTML-коде (номер строки,содержащей тег с ошибкой)",
"#error_code": "Код ошибки",
"#type": "Тип ошибки: error — ошибка, warning — предупреждение, yandex — несоответствие требованиям Яндекса".
}
]
Пример
В примере рассмотрены POST-запрос и возвращаемый ответ.
URL запроса:
https://validator-api.semweb.yandex.ru/v1.1/document_parser?apikey=12345a12-3b4c-5123-d4ef-g51h23ij451&pretty=true&id=1a&lang=ru&only_errors=true
Тело запроса:
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "LocalBusiness", "address": { "@type": "PostalAddress", "addressLocality": "Россия, Москва", "streetAddress": "ул. Профсоюзная, д. 3" }, "name": "Название компании" } </script> <meta property="og:type" content="website" /> <meta property="og:url" content="http://www.example.com/" /> <meta property="og:site_name" content="Название сайта" /> <meta property="og:description" content="Описание сайта"/> <meta property="og:image" content="http://example.com/site.jpg" /> <meta property="og:image:width" content="300" /> <meta property="og:image:height" content="300" /> <div class="item" itemscope itemtype="http://schema.org/LocalBusiness"> <h2><span itemprop='name'>Название компании</span></h2> <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" <span itemprop='postalCode'>111111</span>, <span itemprop='addressLocality'>Россия, Москва</span>, <span itemprop='streetAddress'>ул. Профсоюзная, д. 3</span> </div> </div>
Ответ:
{ "data": { "microdata": [{ "http://schema.org/address": [{}], "#error": [{ "#message": "ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс.Справочника: для данной категории организаций необходимо указать <b>telephone<\/b>", "#location": "20:71", "#error_code": "org_field_missing", "#type": "yandex" }] }], "rdfa": [{ "http://ogp.me/ns#type": [{}], "http://ogp.me/ns#site_name": [{}], "#error": [{ "#message": "ОШИБКА: поле <b>http://ogp.me/ns#title<\/b> отсутствует или пусто", "#location": "-1:-1", "#error_code": "missing_empty", "#type": "error" }], "http://ogp.me/ns#description": [{}], "http://ogp.me/ns#image": [{ "http://ogp.me/ns#image:height": [{}], "http://ogp.me/ns#image:width": [{}], "_:content": [{}] }], "http://ogp.me/ns#url": [{}] }], "microformat": [], "json-ld": [{ "http://schema.org/name": [{}], "http://schema.org/address": [{ "http://schema.org/addressLocality": [{}], "http://schema.org/streetAddress": [{}] }] }] }, "id": "1a" }
Подробнее о словарях микроразметки http://habrahabr.ru/company/yandex/blog/211638. Подробнее о синтаксисе микроразметки http://habrahabr.ru/company/yandex/blog/221881.