Найти координаты по адресу
Порядок работы для агента · Методы API и схема OpenAPI.
Назначение
Преобразуйте введённый пользователем адрес или название места в варианты координат. Если проверенные координаты уже известны, переходите к поиску заказов. Если подходят несколько вариантов, покажите минимум подписей, нужных для выбора, и уточните место у пользователя.
Метод:
POST /api/geocoder/v2
Доступ
| Аутентификация | Не требуется |
| Роли организаций | — |
| Права пользователя | — |
| Область доступа | — |
| Эффект | Только чтение |
| Повтор вызова | Безопасно повторять |
| Повтор после ошибки | Только после временных ошибок |
| Автоматизация | Требуется подтверждение |
| Чувствительность данных | Содержит чувствительные данные |
Геокодер доступен без токена, роли организации и прав пользователя. При поиске заказов учитывайте отдельную область доступа соответствующего метода.
Вызывайте метод, когда пользователь явно просит определить место или выполнить поиск по нему. Такой запрос подтверждает этот вызов на чтение.
Входные данные
В data.requestText передайте минимальное описание места, достаточное для поиска. Включайте город, регион, улицу и номер дома, если пользователь их указал или они нужны для уточнения. Исключите имена, телефоны, комментарии к заказу, идентификаторы организаций и сведения вне задачи.
- Для конкретного места передайте непустой текст.
- Пустая строка или строка из пробелов возвращает до 50 популярных вариантов. Используйте её по явной просьбе предложить места. Выбор города согласуйте с пользователем.
- Радиус задаётся в запросе поиска заказов. Если он влияет на результат и пользователь его не назвал, уточните радиус.
Результат
data.foundAddresses содержит независимые варианты. Для поиска подходят конечные числа lat в диапазоне [-90, 90] и lon в диапазоне [-180, 180].
Показывайте display_address как подпись варианта. Она может содержать больше подробностей, чем address.
address содержит краткое представление адреса. В фильтр по радиусу передавайте координаты.
lat — широта, lon — долгота. Копируйте значения без преобразований. В фильтре поиска заказов поле долготы называется long.
Необязательные province, area, locality, street и house помогают уточнить вариант. Если компонент отсутствует, он недоступен или неприменим для этого результата. Координаты проверяйте отдельно.
postalCode — необязательный почтовый индекс. Он помогает различать варианты.
countryCode — необязательный код страны. Вариант может содержать подходящие координаты и без него.
Значение accuracy |
Как использовать |
|---|---|
exact |
Самая точная категория. Проверьте, что подпись соответствует месту пользователя. |
near |
Координаты приблизительные. Уточните место, если погрешность влияет на результат поиска. |
substituted |
Геокодер сопоставил введённую подпись с приблизительными координатами. Для поиска в узком радиусе получите подтверждение. |
low |
Привязка грубая или неуверенная. Уточните место или согласуйте больший радиус. |
Пустой массив означает, что геокодер не вернул подходящего варианта. Уточните requestText или спросите пользователя о более общем месте. О наличии заказов судите после поиска.
Передать координаты в поиск заказов
- Вызовите
POST /api/geocoder/v2и выберите один подтверждённый вариант. - Для поиска заказчика используйте
POST /api/orders/v0/transferOrder/getOrderIdsForCustomer, для исполнителя —POST /api/orders/v0/transferOrder/getOrderIdsForExecutor. - Если нужна любая точка погрузки груза, используйте
data.filter.loadPoint. Для любой точки выгрузки используйтеdata.filter.unloadPoint. Если пользователь указал именно первую погрузку или последнюю выгрузку всего маршрута, используйте соответственноdata.filter.orderWayFirstLoadingWayPointилиdata.filter.orderWayLastUnloadingWayPoint. Если пользователь задал два условия, передайте оба в одном запросе. - Скопируйте
latв.lat,lonв.long. В.radiusMпередайте согласованный радиус в метрах. - Передайте выбранные идентификаторы как
data.exactOrderIdsвPOST /api/orders/v0/transferOrder/getFlatForCustomerдля заказчика илиPOST /api/orders/v0/transferOrder/getFlatForExecutorдля исполнителя. Описывайте заказ по полям ответа метода деталей.
Повтор запроса
Метод только читает данные. Повторяйте запрос после временных сетевых ошибок или ошибок сервера. Исправьте недопустимые параметры перед повтором. При неоднозначном результате уточните адрес у пользователя.
Работа с чувствительными данными
requestText может содержать домашний адрес, место работы или адрес склада.
| Поле | Класс данных | Субъект | По умолчанию | Ограничения |
|---|---|---|---|---|
request.data.requestText |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
Подписи, компоненты адреса и точные координаты могут указывать на человека, организацию или коммерческий объект.
| Поле | Класс данных | Субъект | По умолчанию | Ограничения |
|---|---|---|---|---|
response.data.foundAddresses[].address |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].area |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].display_address |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].house |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].lat |
Точное местоположение | Смешанный или неизвестный | Показывать агрегированно | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].locality |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].lon |
Точное местоположение | Смешанный или неизвестный | Показывать агрегированно | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].postalCode |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].province |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
response.data.foundAddresses[].street |
Чувствительный адрес | Смешанный или неизвестный | Маскировать | Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения |
Передавайте исходный адрес или точные координаты в контекст ИИ или внешний запрос только по явной просьбе о географическом поиске, если это необходимо для задачи. Оставляйте только выбранный вариант и нужные поля. В остальных случаях используйте маскированную подпись и обобщённое местоположение. Исключите исходные значения из журналов, трассировок, метрик, ошибок и диагностики. Используйте синтетические адреса и координаты в примерах.
Проверенные примеры
Получить координаты синтетического адреса · синтетический пример
Адрес, координаты и все компоненты ответа полностью синтетические.
Запрос
{
"data": {
"requestText": "Example City, Test Street, 1"
}
}
Сокращённый ответ
{
"data": {
"foundAddresses": [
{
"display_address": "Example Region, Example City, Test Street, 1",
"address": "Test Street, 1",
"lat": 55.0001,
"lon": 37.0001,
"province": "Example Region",
"area": "Example District",
"locality": "Example City",
"street": "Test Street",
"house": "1",
"accuracy": "exact",
"postalCode": "123456",
"countryCode": "RU"
}
]
}
}
Подходящих вариантов нет
Подходящий адрес не найден · синтетический пример
Успешный запрос без подходящей подсказки возвращает пустой список.
Запрос
{
"data": {
"requestText": "example-address-with-no-match"
}
}
Сокращённый ответ
{
"data": {
"foundAddresses": []
}
}
Блоки запроса и ответов ниже сгенерированы из OpenAPI. Подстановки вроде
exampleпоказывают структуру JSON. Для вызова возьмите значения из сценария, справочников или предыдущих ответов API.
Request
POST
https://partner-test-yamagistrali.ru/api/geocoder/v2
Тестовый стенд
Body
application/json
{
"data": {
"requestText": "example"
}
}
|
Name |
Description |
|
data |
Type: GeocoderV2Request Example
|
GeocoderV2Request
|
Name |
Description |
|
requestText |
Type: string текст запроса Example: |
Example
{
"requestText": "example"
}
Responses
200 OK
OK
Body
application/json
{
"data": {
"foundAddresses": [
{
"accuracy": "example",
"address": "example",
"area": "example",
"countryCode": "example",
"display_address": "example",
"house": "example",
"lat": 0.5,
"locality": "example",
"lon": 0.5,
"postalCode": "example",
"province": "example",
"street": "example"
}
]
}
}
|
Name |
Description |
|
data |
Type: GeocoderV2Response Example
|
GeocoderV2FoundAddress
|
Name |
Description |
|
accuracy |
Type: string уровень точности Example: |
|
address |
Type: string адрес, например Example: |
|
display_address |
Type: string адрес для основного отображения, например Example: |
|
lat |
Type: number широта |
|
lon |
Type: number долгота |
|
area |
Type: string | null район Example: |
|
countryCode |
Type: string | null код страны Example: |
|
house |
Type: string | null дом Example: |
|
locality |
Type: string | null город Example: |
|
postalCode |
Type: string | null почтовый индекс Example: |
|
province |
Type: string | null провинция Example: |
|
street |
Type: string | null улица Example: |
Example
{
"accuracy": "example",
"address": "example",
"area": "example",
"countryCode": "example",
"display_address": "example",
"house": "example",
"lat": 0.5,
"locality": "example",
"lon": 0.5,
"postalCode": "example",
"province": "example",
"street": "example"
}
GeocoderV2Response
|
Name |
Description |
|
foundAddresses |
Type: GeocoderV2FoundAddress[] | null найденные адреса Example
|
Example
{
"foundAddresses": [
{
"accuracy": "example",
"address": "example",
"area": "example",
"countryCode": "example",
"display_address": "example",
"house": "example",
"lat": 0.5,
"locality": "example",
"lon": 0.5,
"postalCode": "example",
"province": "example",
"street": "example"
}
]
}
400 Bad Request
Bad Request
Body
application/json
{
"error": {
"info": {},
"message": "example",
"message_code": "example"
}
}
|
Name |
Description |
|
error |
Type: Error Example
|
Error
|
Name |
Description |
|
info |
Type: object Example
|
|
message |
Type: string Example: |
|
message_code |
Type: string Example: |
Example
{
"info": {},
"message": "example",
"message_code": "example"
}
403 Forbidden
Forbidden
Body
application/json
{
"error": {
"info": {},
"message": "example",
"message_code": "example"
}
}
|
Name |
Description |
|
error |
Type: Error Example
|
500 Internal Server Error
Internal Server Error
Body
application/json
{
"error": {
"info": {},
"message": "example",
"message_code": "example"
}
}
|
Name |
Description |
|
error |
Type: Error Example
|