Формат ответа

В зависимости от значения параметра 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.

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