{
  "openapi": "3.0.1",
  "info": {
    "title": "paid-api/route",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "/"
    },
    {
      "url": "https://api.ati.su"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/gw/gis-rm/v1/distance": {
      "post": {
        "tags": [
          "Route"
        ],
        "summary": "Получение расстояния (платный)",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/oauth2/gis-rm/v1/distance": {
      "post": {
        "tags": [
          "Route"
        ],
        "summary": "Получение расстояния (платный)",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetDistanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DistanceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/gis-rm/v1/route-info": {
      "post": {
        "tags": [
          "Route"
        ],
        "summary": "Получение маршрута (платный)",
        "parameters": [
          {
            "name": "visual-route",
            "in": "query",
            "description": "В ответе надо вернуть координаты маршрута",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "route-info",
            "in": "query",
            "description": "В ответе надо вернуть информацию о попутных трассах и населённых пунктах",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Параметры маршрута",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/oauth2/gis-rm/v1/route-info": {
      "post": {
        "tags": [
          "Route"
        ],
        "summary": "Получение маршрута (платный)",
        "parameters": [
          {
            "name": "visual-route",
            "in": "query",
            "description": "В ответе надо вернуть координаты маршрута",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "route-info",
            "in": "query",
            "description": "В ответе надо вернуть информацию о попутных трассах и населённых пунктах",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Параметры маршрута",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetRouteInfoIntegratorRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/gis-rm/v1/nearest-cities/with-roads-distance": {
      "post": {
        "tags": [
          "NearestCities"
        ],
        "summary": "Получение ближайших населённых пунктов с расстоянием по дорогам (платный)",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/oauth2/gis-rm/v1/nearest-cities/with-roads-distance": {
      "post": {
        "tags": [
          "NearestCities"
        ],
        "summary": "Получение ближайших населённых пунктов с расстоянием по дорогам (платный)",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetNearestCitiesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityWithDistanceResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/gis-rm/v1/cities-in-radius": {
      "post": {
        "tags": [
          "NearestCities"
        ],
        "summary": "Поиск в радиусе. Получение всех населённых пунктов, до которых можно доехать по дорогам, не превышая заданное расстояние (платный)",
        "requestBody": {
          "description": "GeoService.Models.Request.CitiesInRadiusRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/gw/oauth2/gis-rm/v1/cities-in-radius": {
      "post": {
        "tags": [
          "NearestCities"
        ],
        "summary": "Поиск в радиусе. Получение всех населённых пунктов, до которых можно доехать по дорогам, не превышая заданное расстояние (платный)",
        "requestBody": {
          "description": "GeoService.Models.Request.CitiesInRadiusRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CitiesInRadiusRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CityIdWithDistance"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CitiesInRadiusRequest": {
        "required": [
          "cities_key",
          "city_id",
          "radius"
        ],
        "type": "object",
        "properties": {
          "city_id": {
            "type": "integer",
            "description": "Идентификатор населённого пункта",
            "format": "int32",
            "example": 1
          },
          "cities_key": {
            "type": "string",
            "description": "Ключ списка населённых пунктов для дополнительной фильтрации",
            "example": "active-cities"
          },
          "within_country": {
            "type": "boolean",
            "description": "Искать населённые пункты только внутри страны\r\n\r\nЗначение по умолчанию: `true`",
            "example": true
          },
          "limit": {
            "maximum": 10000,
            "minimum": 0,
            "type": "integer",
            "description": "Максимальное количество результатов\r\n\r\nМинимальное значение: `0`\r\nМаксимальное значение: `10000`\r\nЗначение по умолчанию: `0` без лимита",
            "format": "int32",
            "example": 10
          },
          "radius": {
            "maximum": 300000,
            "minimum": 1000,
            "type": "integer",
            "description": "Максимальное расстояние в метрах\r\n\r\nМинимальное значение: `1 000`\r\nМаксимальное значение: `300 000`",
            "format": "int32",
            "example": 300000
          }
        },
        "additionalProperties": false
      },
      "CityIdWithDistance": {
        "type": "object",
        "properties": {
          "c": {
            "type": "integer",
            "description": "Идентификатор населённого пункта",
            "format": "int32"
          },
          "d": {
            "type": "integer",
            "description": "Расстояние до населённого пункта в метрах",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Информация о населённом пункте"
      },
      "CityInfo": {
        "type": "object",
        "properties": {
          "city_id": {
            "type": "integer",
            "description": "Идентификатор города",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Название города"
          },
          "city_size": {
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6
            ],
            "type": "integer",
            "description": "Размер города<p>Members:</p><ul><li><i>1</i> - Менее 10 000 жителей</li > <li><i>2</i> - От 10 000 до 50 000 жителей</li > <li><i>3</i> - От 50 000 до 100 000 жителей</li > <li><i>4</i> - От 100 000 до 500 000 жителей</li > <li><i>5</i> - От 500 000 до 1 000 000 жителей</li > <li><i>6</i> - Более 1 000 000 жителей</li > </ul>",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Информация о населённом пункте"
      },
      "CityWithDistanceResponse": {
        "type": "object",
        "properties": {
          "city_id": {
            "type": "integer",
            "description": "Идентификатор населённого пункта",
            "format": "int32"
          },
          "distance": {
            "type": "integer",
            "description": "Расстояние до населённого пункта по дорогам в метрах",
            "format": "int32"
          },
          "time": {
            "type": "integer",
            "description": "Время в пути до населённого пункта в секундах",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Информация о ближайшем населённом пункте"
      },
      "CountryInfoResponse": {
        "type": "object",
        "properties": {
          "country_id": {
            "type": "integer",
            "description": "Идентификатор страны",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Название страны"
          }
        },
        "additionalProperties": false,
        "description": "Информация о стране"
      },
      "DistanceResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "success - нашли маршрут по всем параметрам фильтра. without_restrictions - не нашли маршрут по всем параметрам фильтра, но нашли маршрут без ограничений"
          },
          "platon_rate": {
            "type": "number",
            "description": "Стоимость проезда по Платону в рублях РФ",
            "format": "double",
            "readOnly": true
          },
          "platon_distance": {
            "type": "integer",
            "description": "Общее расстояние, преодоленное по Платону в метрах",
            "format": "int32"
          },
          "toll_distance": {
            "type": "integer",
            "description": "Общее расстояние платных дорог в метрах",
            "format": "int32"
          },
          "total_distance": {
            "type": "integer",
            "description": "Расстояние в метрах",
            "format": "int32",
            "readOnly": true
          },
          "travel_time": {
            "type": "integer",
            "description": "Время в пути в секундах с учетом параметров и задержек",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Расстояние в метрах"
      },
      "GeoPoint": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Широта",
            "format": "double"
          },
          "lon": {
            "type": "number",
            "description": "Долгота",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Координаты точки"
      },
      "GeoPointRequestModel": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Широта",
            "format": "double",
            "example": 59.8913
          },
          "lon": {
            "type": "number",
            "description": "Долгота",
            "format": "double",
            "example": 30.3727
          }
        },
        "additionalProperties": false,
        "description": "Координаты точки"
      },
      "GeoPointResponseModel": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Широта",
            "format": "double"
          },
          "lon": {
            "type": "number",
            "description": "Долгота",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "GetDistanceRequest": {
        "required": [
          "nodes"
        ],
        "type": "object",
        "properties": {
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Node"
            },
            "description": "Точки маршрута в порядке следования",
            "example": [
              {
                "geo_point": {
                  "lat": 59.974007,
                  "lon": 30.333006
                },
                "node_id": 1,
                "type": 1
              },
              {
                "geo_point": {
                  "lat": 55.80513,
                  "lon": 37.506607
                },
                "node_id": 3611,
                "type": 2
              }
            ]
          },
          "options": {
            "$ref": "#/components/schemas/RouteOptionsRequest"
          }
        },
        "additionalProperties": false,
        "description": "Фильтр маршрута"
      },
      "GetNearestCitiesRequest": {
        "required": [
          "start_point"
        ],
        "type": "object",
        "properties": {
          "start_point": {
            "$ref": "#/components/schemas/Node"
          },
          "radius": {
            "maximum": 300000,
            "minimum": 1000,
            "type": "integer",
            "description": "Радиус поиска в метрах\r\n\nЗначение по умолчанию: `200000`\nМаксимальное значение: `300000`",
            "format": "int32",
            "example": 200000
          },
          "cities_count": {
            "maximum": 20,
            "minimum": 1,
            "type": "integer",
            "description": "Количество населённых пунктов в выдаче\r\n\nЗначение по умолчанию: `5`\nМаксимальное значение: `20`",
            "format": "int32",
            "example": 5
          },
          "large_cities_count": {
            "maximum": 20,
            "minimum": 0,
            "type": "integer",
            "description": "Количество крупных населённых пунктов в выдаче (население от 100 000 человек)\r\n\nЗначение по умолчанию: `3`\nМаксимальное значение: `20`",
            "format": "int32",
            "example": 3
          }
        },
        "additionalProperties": false
      },
      "GetRouteInfoIntegratorRequest": {
        "required": [
          "nodes"
        ],
        "type": "object",
        "properties": {
          "options": {
            "$ref": "#/components/schemas/RouteOptionsRequest"
          },
          "map_bounds": {
            "$ref": "#/components/schemas/MapBounds"
          },
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RouteInfoNode"
            },
            "description": "Точки маршрута в порядке следования",
            "example": [
              {
                "geo_point": {
                  "lat": 59.974007,
                  "lon": 30.333006
                },
                "node_id": 1,
                "type": 1
              },
              {
                "geo_point": {
                  "lat": 55.80513,
                  "lon": 37.506607
                },
                "node_id": 3611,
                "type": 2
              }
            ]
          },
          "exclude_regions": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Не заезжать в указанные регионы",
            "nullable": true,
            "example": [
              15
            ]
          },
          "exclude_countries": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Не заезжать в указанные страны",
            "nullable": true,
            "example": [
              2
            ]
          }
        },
        "additionalProperties": false,
        "description": "Фильтр маршрута"
      },
      "MapBounds": {
        "type": "object",
        "properties": {
          "north_east": {
            "$ref": "#/components/schemas/MapBoundsNorthEastGeoPointRequestModel"
          },
          "south_west": {
            "$ref": "#/components/schemas/MapBoundsSouthWestGeoPointRequestModel"
          }
        },
        "additionalProperties": false,
        "description": "Границы видимой части карты"
      },
      "MapBoundsNorthEastGeoPointRequestModel": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Широта",
            "format": "double",
            "example": 60.86631
          },
          "lon": {
            "type": "number",
            "description": "Долгота",
            "format": "double",
            "example": 44.121094
          }
        },
        "additionalProperties": false,
        "description": "Координаты точки"
      },
      "MapBoundsSouthWestGeoPointRequestModel": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Широта",
            "format": "double",
            "example": 54.591164
          },
          "lon": {
            "type": "number",
            "description": "Долгота",
            "format": "double",
            "example": 23.192139
          }
        },
        "additionalProperties": false,
        "description": "Координаты точки"
      },
      "Node": {
        "type": "object",
        "properties": {
          "node_id": {
            "type": "integer",
            "description": "Идентификатор населённого пункта",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "geo_point": {
            "$ref": "#/components/schemas/GeoPointRequestModel"
          }
        },
        "additionalProperties": false,
        "description": "Точка"
      },
      "RegionInfoResponse": {
        "type": "object",
        "properties": {
          "region_id": {
            "type": "integer",
            "description": "Идентификатор региона",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Название региона"
          }
        },
        "additionalProperties": false,
        "description": "Информация о регионе"
      },
      "RouteDetailsResponse": {
        "type": "object",
        "properties": {
          "track_names": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Названия трасс, которые есть в сегменте",
            "readOnly": true
          },
          "ferry_distance": {
            "type": "integer",
            "description": "Расстояние по парому в метрах",
            "format": "int32",
            "readOnly": true
          },
          "other_type_distance": {
            "type": "integer",
            "description": "Расстояние, преодоленное по дорогам второго класса и ниже в метрах",
            "format": "int32",
            "readOnly": true
          },
          "winter_road_distance": {
            "type": "integer",
            "description": "Расстояние по зимнику в метрах",
            "format": "int32",
            "readOnly": true
          },
          "common_distance": {
            "type": "integer",
            "description": "Расстояние по дорогам общего пользования в метрах",
            "format": "int32",
            "readOnly": true
          },
          "trunk_distance": {
            "type": "integer",
            "description": "Расстояние по трассам в метрах",
            "format": "int32",
            "readOnly": true
          },
          "motorway_distance": {
            "type": "integer",
            "description": "Расстояние по автомагистралям в метрах",
            "format": "int32",
            "readOnly": true
          },
          "platon_distance": {
            "type": "integer",
            "description": "Расстояние, преодоленное по Платону в метрах",
            "format": "int32",
            "readOnly": true
          },
          "toll_distance": {
            "type": "integer",
            "description": "Расстояние, преодоленное по платным дорогам в метрах",
            "format": "int32",
            "readOnly": true
          },
          "mkad_distance": {
            "type": "integer",
            "description": "Расстояние, преодоленное по МКАДу в метрах",
            "format": "int32",
            "readOnly": true
          },
          "total_distance": {
            "type": "integer",
            "description": "Общее расстояние сегмента в метрах",
            "format": "int32",
            "readOnly": true
          },
          "total_time": {
            "type": "integer",
            "description": "Общее время проезда по сегменту в секундах",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Информация об отрезке"
      },
      "RouteInfoNode": {
        "type": "object",
        "properties": {
          "node_id": {
            "type": "integer",
            "description": "Идентификатор населённого пункта",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "geo_point": {
            "$ref": "#/components/schemas/GeoPointRequestModel"
          },
          "type": {
            "enum": [
              0,
              1,
              2,
              4,
              8,
              16,
              32,
              64
            ],
            "type": "integer",
            "description": "Тип точки маршрута. Может быть маской.<p>Members:</p><ul><li><i>0</i> - Просто город, который проезжаем мимо не заезжая в него.</li > <li><i>1</i> - Начало маршрута</li > <li><i>2</i> - Конец маршрута</li > <li><i>4</i> - Точка загрузки</li > <li><i>8</i> - Точка разгрузки</li > <li><i>16</i> - Промежуточная точка</li > <li><i>32</i> - Таможня</li > <li><i>64</i> - На следующем отрезке в машине есть груз</li > </ul>",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "RouteInfoResponse": {
        "type": "object",
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RouteInfoSegmentResponse"
            },
            "description": "Сегменты маршрута",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Информация о попутных городах маршрута и названиях дорог"
      },
      "RouteInfoSegmentResponse": {
        "type": "object",
        "properties": {
          "route_point": {
            "$ref": "#/components/schemas/RoutePointResponse"
          },
          "route_details": {
            "$ref": "#/components/schemas/RouteDetailsResponse"
          }
        },
        "additionalProperties": false,
        "description": "Сегмент маршрута"
      },
      "RouteOptionsRequest": {
        "type": "object",
        "properties": {
          "within_country": {
            "type": "boolean",
            "description": "Строить маршрут внутри одной страны\r\n\nЗначение по умолчанию: `true`"
          },
          "exclude_mkad": {
            "type": "boolean",
            "description": "Не заезжать на МКАД\r\n\nЗначение по умолчанию: `false`"
          },
          "exclude_ukraine": {
            "type": "boolean",
            "description": "Не заезжать в Украину\r\n\nЗначение по умолчанию: `true`"
          },
          "allow_ferry": {
            "type": "boolean",
            "description": "Разрешить проезд по паромам\nПри передаче значения по умолчанию будет учитываться расписание (пока расписания нет, поэтому всегда разрешены)\r\n\nЗначение по умолчанию: `null`",
            "nullable": true
          },
          "allow_winter_road": {
            "type": "boolean",
            "description": "Разрешить проезд по зимникам\nПри передаче значения по умолчанию будет учитываться расписание (декабрь, январь, февраль - зимники разрешены, остальные месяцы - запрещены)\r\n\nЗначение по умолчанию: `null`",
            "nullable": true
          },
          "allow_toll_road": {
            "type": "boolean",
            "description": "Разрешить проезд по платным трассам\r\n\nЗначение по умолчанию: `true`"
          },
          "strategy": {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "description": "Тип маршрута для поиска\r\n\nЗначение по умолчанию: `2`<p>Members:</p><ul><li><i>1</i> - Самый короткий</li > <li><i>2</i> - Самый быстрый</li > </ul><p>Members:</p><ul></ul>",
            "format": "int32",
            "example": 1
          },
          "customs_delay": {
            "maximum": 10080,
            "minimum": 0,
            "type": "integer",
            "description": "Задержка при пересечении границы в минутах\r\n\nЗначение по умолчанию: `120`",
            "format": "int32",
            "example": 120
          },
          "ferry_delay": {
            "maximum": 10080,
            "minimum": 0,
            "type": "integer",
            "description": "Задержка при использовании паромов в минутах\r\n\nЗначение по умолчанию: `120`",
            "format": "int32",
            "example": 120
          },
          "max_speed": {
            "maximum": 150,
            "minimum": 30,
            "type": "integer",
            "description": "Максимальная скорость транспортного средства в км/ч\r\n\nЗначение по умолчанию: `110`",
            "format": "int32",
            "example": 110
          },
          "weight": {
            "maximum": 120000,
            "minimum": 1,
            "type": "integer",
            "description": "Полная масса транспортного средства в килограммах\r\n\nЗначение по умолчанию: `10 000`",
            "format": "int32",
            "example": 10000
          }
        },
        "additionalProperties": false,
        "description": "Ограничения маршрута"
      },
      "RoutePointResponse": {
        "type": "object",
        "properties": {
          "node_types": {
            "enum": [
              0,
              1,
              2,
              4,
              8,
              16,
              32,
              64
            ],
            "type": "integer",
            "description": "Тип точки маршрута. Может быть маской.<p>Members:</p><ul><li><i>0</i> - Просто город, который проезжаем мимо не заезжая в него.</li > <li><i>1</i> - Начало маршрута</li > <li><i>2</i> - Конец маршрута</li > <li><i>4</i> - Точка загрузки</li > <li><i>8</i> - Точка разгрузки</li > <li><i>16</i> - Промежуточная точка</li > <li><i>32</i> - Таможня</li > <li><i>64</i> - На следующем отрезке в машине есть груз</li > </ul>",
            "format": "int32",
            "readOnly": true
          },
          "city_info": {
            "$ref": "#/components/schemas/CityInfo"
          },
          "geo_point": {
            "$ref": "#/components/schemas/GeoPointResponseModel"
          },
          "region_info": {
            "$ref": "#/components/schemas/RegionInfoResponse"
          },
          "country_info": {
            "$ref": "#/components/schemas/CountryInfoResponse"
          }
        },
        "additionalProperties": false
      },
      "RouteResponse": {
        "required": [
          "platon_distance",
          "platon_rate",
          "status",
          "toll_distance",
          "total_distance",
          "travel_time"
        ],
        "type": "object",
        "properties": {
          "route_info": {
            "$ref": "#/components/schemas/RouteInfoResponse"
          },
          "visual_route": {
            "$ref": "#/components/schemas/VisualRouteResponse"
          },
          "status": {
            "type": "string",
            "description": "success - нашли маршрут по всем параметрам фильтра. without_restrictions - не нашли маршрут по всем параметрам фильтра, но нашли маршрут без ограничений"
          },
          "platon_rate": {
            "type": "number",
            "description": "Стоимость проезда по Платону в рублях РФ",
            "format": "double"
          },
          "platon_distance": {
            "type": "integer",
            "description": "Общее расстояние, преодоленное по Платону в метрах",
            "format": "int32"
          },
          "toll_distance": {
            "type": "integer",
            "description": "Общее расстояние платных дорог в метрах",
            "format": "int32"
          },
          "total_distance": {
            "type": "integer",
            "description": "Общее расстояние в метрах",
            "format": "int32"
          },
          "travel_time": {
            "type": "integer",
            "description": "Время в пути в секундах с учетом параметров и задержек",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SingleErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Текстовый код ошибки"
          },
          "reason": {
            "type": "string",
            "description": "Человекочитаемое описание ошибки"
          },
          "details": {
            "type": "object",
            "additionalProperties": {},
            "description": "Дополнительная информация об ошибке",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "ValidationErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "readOnly": true
          },
          "reason": {
            "type": "string",
            "readOnly": true
          },
          "error_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SingleErrorResponse"
            }
          },
          "details": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VisualRouteResponse": {
        "type": "object",
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualRouteSegmentResponse"
            },
            "description": "Координаты отрезка маршрута"
          }
        },
        "additionalProperties": false,
        "description": "Координаты точек маршрута"
      },
      "VisualRouteSegmentResponse": {
        "type": "object",
        "properties": {
          "fare_visualization_type": {
            "enum": [
              1,
              2,
              4,
              8
            ],
            "type": "integer",
            "description": "Тип платности дороги для визуализации (раскраска дорог)<p>Members:</p><ul><li><i>1</i> - Платон</li > <li><i>2</i> - Платная</li > <li><i>4</i> - Просто дорога</li > <li><i>8</i> - Машина без груза</li > </ul><p>Members:</p><ul></ul>",
            "format": "int32"
          },
          "geo_points": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/GeoPoint"
              }
            },
            "description": "Координаты точек отрезка маршрута"
          },
          "distance": {
            "type": "integer",
            "description": "Расстояние в метрах",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Отрезок маршрута"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Authorization: Bearer {authorizationToken}"
      }
    }
  }
}