Стандартизация
Стандартизация приводит уже введённые данные в порядок: разбирает строку на части, исправляет регистр и опечатки, дополняет тем, чего в ней не было. Это пакетный разбор того, что уже лежит в базе или пришло из файла, — для автодополнения при вводе есть подсказки.
У каждого метода два адреса. Первый — наш: ответ приходит в нашем формате, со всеми полями. Второй — совместимый с DaData: тот же метод, но ответ в их формате, чтобы при переезде не переписывать разбор ответа. Оба адреса принимают одинаковое тело запроса.
Стандартизация адреса
Приводит свободную строку адреса к структуре — той же, что в разделе «Адреса». Для разбора выгрузок: на входе список строк, на выходе по одному разобранному адресу на каждую.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| itemsrequired | array | Строки адреса для разбора, до 1 000 за запрос; либо тело запроса — сразу массив строк (ответ в формате DaData). |
// к нам — свой формат ответа, пакет в items
POST /v1/clean/address
{ "items": ["мск тверская 7", "спб невский 1"] }
// совместимо с DaData — телом массив строк, ответ в их формате
POST /api/v1/clean/address
["мск тверская 7", "спб невский 1"]Поля ответа
Поля описаны для записи внутри results — так отвечает наш адрес. По совместимому адресу приходит просто массив таких записей, без обёртки.
| Поле | Тип | Описание |
|---|---|---|
| source | string | Исходная строка адреса. |
| qc | integer | Качество разбора: 0 — адрес распознан, иначе разобран частично. |
| unparsed_parts | string | Части строки, которые не удалось разобрать; null — если разобрано полностью. |
| address | object | Разобранный адрес — та же структура, что в разделе «Адреса» (value, full, components, codes, geo и т.д.). |
Стандартизация ФИО
Разбирает ФИО на части, определяет пол и исправляет регистр. В нашем формате добавляет склонения по падежам — их можно сразу подставлять в документы. Для автодополнения при вводе есть подсказки ФИО.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| itemsrequired | array | Строки ФИО для разбора, до 10 000 за запрос; либо тело запроса — сразу массив строк (ответ в формате DaData). |
// к нам — свой формат ответа: пол male|female|unknown, падежи, признак транслитерации
POST /v1/clean/fio
{ "items": ["иванова мария сергеевна"] }
// совместимо с DaData — телом массив строк, ответ в их формате (пол М|Ж|НД, без падежей)
POST /api/v1/clean/name
["иванова мария сергеевна"]Поля ответа
Поля описаны для записи внутри results — так отвечает наш адрес. По совместимому адресу приходит просто массив таких записей, без обёртки.
| Поле | Тип | Описание |
|---|---|---|
| source | string | Исходная строка ФИО из запроса — для сопоставления ответа со входом. |
| result | string | Стандартизированное ФИО в правильном порядке и регистре; null, если распознать не удалось. |
| surname | string | Фамилия с корректной заглавной буквой; null, если не выделена. |
| name | string | Имя с корректной заглавной буквой; null, если не выделено. |
| patronymic | string | Отчество с корректной заглавной буквой; null, если отсутствует. |
| gender | string | Пол: male — мужской, female — женский, unknown — определить не удалось. |
| transliterated | bool | true, если ввод был на латинице и приведён к кириллице (результат — реконструкция исходного написания). |
| qc | integer | Код качества разбора: 0 — ФИО уверенно распознано, 1 — разобрано неуверенно (только фамилия, инициалы или часть определена по позиции). |
| cases | object | Склонения ФИО по падежам (ключи: nominative, genitive, dative, accusative, instrumental, prepositional) для подстановки в документы; null, если склонять нечего. |
| cases.{падеж}.surname | string | Фамилия в соответствующем падеже; null, если не выделена. |
| cases.{падеж}.name | string | Имя в соответствующем падеже; null, если не выделено. |
| cases.{падеж}.patronymic | string | Отчество в соответствующем падеже; null, если отсутствует. |
По совместимому адресу приходят поля source, result, surname, name, patronymic и qc; пол — как М, Ж или НД (нет данных). Полей cases и transliterated в нём нет.
Проверка телефона
Проверка номера и оператора
Проверяет тип номера, регион и часовой пояс по плану нумерации. Текущий оператор, перенос, ИНН и коды MCC/MNC доступны на тарифах «Бизнес» и «Корпоративный» (грант phone_mnp); на остальных тарифах эти поля отсутствуют. Нужен секретный ключ с правом find:phone (в настройках ключа — «Проверка номера»). Метод входит в дневной лимит: каждый номер, в том числе в пакете, считается одним запросом. Совместимого метода DaData для этой проверки нет.
| Поле | Тип | Описание |
|---|---|---|
| query | string | Один номер телефона. Нераспознанная строка возвращает пустой suggestions. |
| items | array | Пакет номеров. Ответ results сохраняет порядок и число входных строк; нераспознанный номер возвращает карточку с qc и пустыми полями. |
| mask | string | Формат вывода номера: e164, intl, national, intl_sp, dash, spaces, plain, plain8 или свой шаблон из 10 плейсхолдеров (#, X, x, 9, 0, N, n). Код страны и префикс задаются литералами. Например: +7 (XXX) XXX-XX-XX. Без маски — стандартный формат. |
Для query ответ имеет вид {query, suggestions}: один найденный номер или пустой список. Для items ответ {results} содержит карточку на каждую входную строку в том же порядке; нераспознанные строки помечены qc. Поля карточки описаны ниже. ИНН, MCC и MNC передаются строками и могут быть null, если сведений в источнике нет.
Стандартизация номера
Нормализует номера РФ и зарубежных стран: определяет страну, тип (мобильный/городской) и валидность. Для РФ дополнительно — оператор (с учётом переноса номера), регион и часовой пояс.
Формат вывода задаётся полем mask в теле запроса. Допустимые значения: имя пресета из списка ниже ("mask": "intl") или пользовательский шаблон ("mask": "+7 (XXX) XXX-XX-XX"), где плейсхолдер цифры — X, # или 9; остальные символы сохраняются без изменений. Маска накладывается на национальный номер любой страны:
e164→+79627302371intl→+7 (962) 730-23-71national→8 (962) 730-23-71intl_sp→+7 962 730-23-71dash→+7-962-730-23-71spaces→8 962 730 23 71plain→9627302371plain8→89627302371- свой шаблон, напр.
+7 (XXX) XXX-XX-XX
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| itemsrequired | array | Строки телефона для разбора, до 10 000 за запрос; либо тело запроса — сразу массив строк (ответ в формате DaData). |
| mask | string | Формат вывода номера: имя пресета (e164, intl, national, intl_sp, dash и др.) или свой шаблон вида +7 (XXX) XXX-XX-XX. |
// mask — ИМЯ пресета (intl / e164 / national …) ИЛИ свой шаблон "+7 (XXX) XXX-XX-XX"
POST /v1/clean/phone
{ "items": ["89627302371", "+375 29 491-19-11"],
"mask": "intl" }
// совместимо с DaData — телом массив строк, ответ в их формате
POST /api/v1/clean/phone
["89627302371", "+375 29 491-19-11"]Поля ответа
Поля описаны для записи внутри results — так отвечает наш адрес. По совместимому адресу приходит просто массив таких записей, без обёртки.
| Поле | Тип | Описание |
|---|---|---|
| source | string | Исходная строка телефона в том виде, как она была передана. |
| phone | string | Телефон в стандартизованном формате (для РФ — +7 (XXX) XXX-XX-XX, для других стран — международный формат); null, если номер не распознан. |
| type | string | Тип номера: mobile — мобильный, direct_mobile — прямой мобильный, landline — стационарный, toll_free — бесплатный (8-800), voip — IP-телефония, premium_rate — платный, unknown — не определён; null, если номер невалиден. |
| is_valid | bool | Валиден ли номер по плану нумерации страны: true — валиден, false — распознан, но невалиден. |
| country | string | Название страны номера (например, Россия, Беларусь); null, если номер не распознан. |
| country_code | string | Телефонный код страны без знака «+» (например, 7 — Россия, 375 — Беларусь); null, если номер не распознан. |
| city_code | string | Код города/оператора — часть номера после кода страны; null, если у плана нумерации страны его нет или номер не распознан. |
| number | string | Абонентский номер без кода страны и кода города/оператора. |
| extension | string | Добавочный (внутренний) номер, если он был в исходной строке; иначе null. |
| operator | string | Оператор связи номера с учётом переносимости (бренд, например МегаФон); только для номеров РФ. |
| operator_inn | string | ИНН текущего оператора по плану нумерации или базе перенесённых номеров; null, если сведений нет. |
| operator_original | string | Исходный оператор по плану нумерации; присутствует только при факте переноса номера к другому оператору. |
| ported | bool | Признак переноса номера к другому оператору: true — номер перенесён (текущий оператор отличается от исходного), false — не перенесён. |
| mcc | string | Код страны сети E.212, строка; заполняется вместе с mnc, иначе null. |
| mnc | string | Код мобильной сети E.212, строка с сохранением ведущих нулей; null, если код не определён. |
| region | string | Регион РФ, к которому относится номер; только для номеров РФ (для 8-800 пустой). |
| city | string | Город номера (для стационарных номеров РФ); иначе null. |
| timezone | string | Часовой пояс региона номера в формате IANA (например, Europe/Moscow); только для номеров РФ. |
| qc | integer | Код качества разбора: 0 — номер корректен и валиден, 1 — распознан с допущениями или невалиден по плану нумерации, 3 — пустой ввод или мусор. |
Проверка email
Проверяет синтаксис, исправляет опечатки в домене и определяет тип адреса. По флагу check_mx проверяет ещё, принимает ли домен почту.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| itemsrequired | array | Строки email для разбора, до 10 000 за запрос; либо тело запроса — сразу массив строк (ответ в формате DaData). |
| check_mx | bool | Проверить почтовый сервер домена (MX-запись) и заполнить поле mx. По умолчанию false. Проверка идёт в DNS, поэтому на весь запрос ждём её не дольше 1,5 с: домен, чей DNS не ответил, получает mx: null, ответ не задерживается. В формате DaData поля mx нет, и флаг там не действует. |
// к нам — свой формат ответа
POST /v1/clean/email
{ "items": ["maria@hintdata.ru", "info@bad..ru"], "check_mx": true }
// совместимо с DaData — телом массив строк, ответ в их формате
POST /api/v1/clean/email
["maria@hintdata.ru", "info@bad..ru"]Поля ответа
Поля описаны для записи внутри results — так отвечает наш адрес. По совместимому адресу приходит массив записей DaData без обёртки: source, email, local, domain, type (PERSONAL, CORPORATE, ROLE или DISPOSABLE) и qc с кодами DaData: 0 — корректен, 1 — некорректен, 2 — пусто или мусор, 3 — одноразовый, 4 — исправлены опечатки.
| Поле | Тип | Описание |
|---|---|---|
| source | string | Исходный адрес ровно в том виде, как он был передан на вход. |
| string | Очищенный и стандартизированный адрес; null, если адрес некорректен. | |
| local | string | Локальная часть адреса до символа @; null, если адрес некорректен. |
| domain | string | Доменная часть адреса после символа @; null, если адрес некорректен. |
| type | string | Класс домена: personal — личный почтовый сервис, corporate — корпоративный домен; null, если адрес некорректен. |
| role | bool | Ролевой адрес (info@, sales@, noreply@ и т.п.): true — служебный, не персональный; false — обычный. |
| disposable | bool | Одноразовый временный домен: true — да, false — нет; null, если адрес некорректен. |
| mx | bool | Домен принимает почту (есть MX-запись): true — да, false — нет. Заполняется только при check_mx: true; null без флага, для некорректного адреса и если DNS домена не ответил за отведённое время. |
| corrected | bool | Домен исправлен: true — устранена опечатка в домене (gmial → gmail), false — без изменений. |
| normalized | bool | Адрес нормализован: true — схлопнуты подряд идущие точки в локальной части, false — без изменений. |
| qc | integer | Код качества: 0 — корректен без замечаний; 1 — корректен с замечанием (домен исправлен, нормализован, одноразовый или ролевой); 2 — некорректен; 3 — пустой ввод. |
Стандартизация даты рождения
Приводит дату к виду ДД.ММ.ГГГГ, раскладывает на год, месяц и день и считает возраст с признаком совершеннолетия. Понимает запись цифрами и словом. Что не удалось разобрать — видно по коду качества в ответе.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| itemsrequired | array | Строки даты рождения для разбора, до 10 000 за запрос; либо тело запроса — сразу массив строк (ответ в формате DaData). |
// к нам — свой формат ответа
POST /v1/clean/birthdate
{ "items": ["04 февраля 1985 г."] }
// совместимо с DaData — телом массив строк, ответ в их формате
POST /api/v1/clean/birthdate
["04 февраля 1985 г."]Поля ответа
Поля описаны для записи внутри results — так отвечает наш адрес. По совместимому адресу приходит просто массив таких записей, без обёртки.
| Поле | Тип | Описание |
|---|---|---|
| source | string | Исходное значение даты в том виде, как оно было передано. |
| birthdate | string | Нормализованная дата рождения в формате ДД.ММ.ГГГГ; null, если дата не распознана. |
| year | integer | Год рождения числом; null, если дата не распознана. |
| month | integer | Месяц рождения числом 1–12; null, если дата не распознана. |
| day | integer | День рождения числом 1–31; null, если дата не распознана. |
| age | integer | Возраст в полных годах на текущую дату; null, если дата не распознана. |
| is_adult | bool | Совершеннолетие: true — 18 лет и более, false — менее 18; null, если дата не распознана. |
| qc | integer | Код качества разбора: 0 — распознана точно, 1 — распознана с допущением (двузначный год достроен до четырёхзначного либо день не указан и принят первым числом месяца), 2 — не распознана, 3 — пустой ввод. |
Несколько полей одной записью
Стандартизирует сразу несколько полей одной записи — ФИО, адрес, телефон, email и дату рождения — и возвращает результаты в том же порядке. Каждое поле обрабатывается так же, как отдельным методом этой страницы. Метод совместим с DaData, в том числе с их SDK для .NET.
В запросе одна запись. Полей одного типа — не больше: ФИО — 1, адресов — 3, телефонов — 3, email — 3, дат рождения — 1. Паспорт и транспортное средство не поддерживаются. Каждое поле, кроме AS_IS, оплачивается как отдельная стандартизация, а ключу нужен доступ к стандартизации всех типов полей в записи.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
| structurerequired | array | Типы полей записи по порядку: NAME — ФИО, ADDRESS — адрес, PHONE — телефон, EMAIL — email, BIRTHDATE — дата рождения, AS_IS — поле без обработки, возвращается как есть. |
| datarequired | array | Одна запись — массив строк в порядке structure, вложенный в массив: [["…", "…"]]. |
// совместимо с DaData — одна запись, поля по типам из structure
POST /api/v1/clean
{
"structure": ["AS_IS", "NAME", "PHONE"],
"data": [["id-1", "Федотов Алексей", "8 916 823 3454"]]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
| structure | array | Типы полей — те же, что в запросе. |
| data | array | Запись — массив результатов в порядке structure. Результат поля — объект того же вида, что отдаёт отдельный метод этого типа в формате DaData; для AS_IS — только source. |