{"openapi": "3.0.3", "info": {"title": "API de direcciones de la IDE, compatible con SUDIR", "version": "1.0 (desarrollo)", "description": "Las mismas rutas, parámetros y formato que https://direcciones.ide.uy (v1 y v0), sobre el buscador de direcciones de la plataforma de la IDE. En desarrollo, para que los organismos la prueben.", "contact": {"name": "Infraestructura de Datos Espaciales de Uruguay", "email": "ideuy@ide.gub.uy"}}, "servers": [{"url": "https://direcciones-dev.ide.uy"}], "paths": {"/api/v1/geocode/direcUnica": {"get": {"summary": "Geocodificar una dirección: la mejor ubicación primero, con coordenadas.", "tags": ["v1"], "parameters": [{"name": "q", "in": "query", "required": true, "description": "Texto libre: calle y número, esquina, manzana y solar, ruta y km, lugar, con localidad y departamento separados por coma", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados", "schema": {"type": "integer", "default": 1}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/candidates": {"get": {"summary": "Candidatos para autocompletar mientras se escribe. Las calles sin coordenadas (usar find después).", "tags": ["v1"], "parameters": [{"name": "q", "in": "query", "required": true, "description": "Texto libre: calle y número, esquina, manzana y solar, ruta y km, lugar, con localidad y departamento separados por coma", "schema": {"type": "string"}}, {"name": "soloLocalidad", "in": "query", "required": false, "description": "Solo localidades", "schema": {"type": "boolean", "default": false}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 10}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/fuzzyGeocode": {"get": {"summary": "Geocodificar con tolerancia a errores de escritura (igual que direcUnica, con más resultados).", "tags": ["v1"], "parameters": [{"name": "q", "in": "query", "required": true, "description": "Texto libre: calle y número, esquina, manzana y solar, ruta y km, lugar, con localidad y departamento separados por coma", "schema": {"type": "string"}}, {"name": "soloLocalidad", "in": "query", "required": false, "description": "Solo localidades", "schema": {"type": "boolean", "default": false}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 10}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/find": {"get": {"summary": "Buscar por identificadores (después del autocompletado). type: calle, calleyportal, esquina, localidad, solar, manzanaysolar, inmueble, ruta, rutaykm, olc.", "tags": ["v1"], "parameters": [{"name": "type", "in": "query", "required": true, "description": "Tipo de búsqueda", "schema": {"type": "string"}}, {"name": "idcalle", "in": "query", "required": false, "description": "idCalle", "schema": {"type": "string"}}, {"name": "portal", "in": "query", "required": false, "description": "Número de puerta", "schema": {"type": "string"}}, {"name": "letra", "in": "query", "required": false, "description": "Letra (BIS, A…)", "schema": {"type": "string"}}, {"name": "idcalleEsq", "in": "query", "required": false, "description": "idCalle de la otra calle (type=esquina)", "schema": {"type": "string"}}, {"name": "nomvia", "in": "query", "required": false, "description": "Nombre de la calle (sin idcalle), o el Plus Code (type=olc)", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": false, "description": "Localidad", "schema": {"type": "string"}}, {"name": "departamento", "in": "query", "required": false, "description": "Departamento", "schema": {"type": "string"}}, {"name": "manzana", "in": "query", "required": false, "description": "Manzana", "schema": {"type": "string"}}, {"name": "solar", "in": "query", "required": false, "description": "Solar", "schema": {"type": "string"}}, {"name": "inmueble", "in": "query", "required": false, "description": "Nombre del punto notable", "schema": {"type": "string"}}, {"name": "ruta", "in": "query", "required": false, "description": "Número de ruta", "schema": {"type": "string"}}, {"name": "km", "in": "query", "required": false, "description": "Kilómetro", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/findEsq": {"get": {"summary": "Las esquinas de una calle: las calles que la cruzan y el punto de cada cruce.", "tags": ["v1"], "parameters": [{"name": "idcalle", "in": "query", "required": true, "description": "idCalle", "schema": {"type": "integer"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/cruces": {"get": {"summary": "Las calles que cruzan una calle dada por su nombre, en una localidad.", "tags": ["v1"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": true, "description": "Localidad", "schema": {"type": "string"}}, {"name": "calle", "in": "query", "required": true, "description": "Nombre de la calle", "schema": {"type": "string"}}, {"name": "q", "in": "query", "required": false, "description": "Filtra por el nombre de la calle que cruza", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/crucesPorIdCalle": {"get": {"summary": "Las calles que cruzan una calle dada por su idCalle.", "tags": ["v1"], "parameters": [{"name": "idcalle", "in": "query", "required": true, "description": "idCalle", "schema": {"type": "integer"}}, {"name": "q", "in": "query", "required": false, "description": "Filtra por el nombre de la calle que cruza", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/crucesConRadio": {"get": {"summary": "Como cruces, solo los cruces a menos de `radio` metros del punto.", "tags": ["v1"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": true, "description": "Localidad", "schema": {"type": "string"}}, {"name": "calle", "in": "query", "required": true, "description": "Nombre de la calle", "schema": {"type": "string"}}, {"name": "latitud", "in": "query", "required": true, "description": "Latitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "longitud", "in": "query", "required": true, "description": "Longitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "radio", "in": "query", "required": true, "description": "Radio en metros", "schema": {"type": "number"}}, {"name": "q", "in": "query", "required": false, "description": "Filtra por el nombre de la calle que cruza", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/rutakm": {"get": {"summary": "Un punto sobre una ruta nacional en un kilómetro (mojón del MTOP o calculado entre dos).", "tags": ["v1"], "parameters": [{"name": "ruta", "in": "query", "required": true, "description": "Número de ruta", "schema": {"type": "string"}}, {"name": "km", "in": "query", "required": true, "description": "Kilómetro", "schema": {"type": "number"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/reverse": {"get": {"summary": "Geocodificación inversa: las puertas y los puntos notables más cercanos (hasta 2 × limit).", "tags": ["v1"], "parameters": [{"name": "latitud", "in": "query", "required": true, "description": "Latitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "longitud", "in": "query", "required": true, "description": "Longitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 10}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/direcPadron": {"get": {"summary": "Las direcciones de un padrón (solares de SUDIR; si no hay, el padrón de Catastro).", "tags": ["v1"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": true, "description": "Localidad", "schema": {"type": "string"}}, {"name": "padron", "in": "query", "required": true, "description": "Número de padrón", "schema": {"type": "integer"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados", "schema": {"type": "integer", "default": 100}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/direcManzaSolar": {"get": {"summary": "La dirección de una manzana y solar.", "tags": ["v1"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": true, "description": "Localidad", "schema": {"type": "string"}}, {"name": "manzana", "in": "query", "required": true, "description": "Manzana", "schema": {"type": "integer"}}, {"name": "solar", "in": "query", "required": true, "description": "Solar", "schema": {"type": "integer"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados", "schema": {"type": "integer", "default": 100}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/direcPuntoNotable": {"get": {"summary": "Los puntos notables de un departamento por su nombre.", "tags": ["v1"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "nombre", "in": "query", "required": true, "description": "Nombre o parte del nombre", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados", "schema": {"type": "integer", "default": 100}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/capasPoligonales": {"get": {"summary": "Las capas de polígonos disponibles para el servicio poligono.", "tags": ["v1"], "parameters": [], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CapaPoligonalResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/poligono": {"get": {"summary": "Las direcciones dentro de un polígono de una capa (ver capasPoligonales).", "tags": ["v1"], "parameters": [{"name": "capa", "in": "query", "required": true, "description": "Capa (tabla)", "schema": {"type": "string"}}, {"name": "id", "in": "query", "required": true, "description": "Identificador del polígono", "schema": {"type": "integer"}}, {"name": "tipoDirec", "in": "query", "required": false, "description": "portal, poi o solar", "schema": {"type": "string", "default": "portal"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 100}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/direcEnPoligono": {"get": {"summary": "Las direcciones dentro de un polígono GeoJSON (EPSG:4326).", "tags": ["v1"], "parameters": [{"name": "poligono", "in": "query", "required": true, "description": "Polygon o MultiPolygon en GeoJSON", "schema": {"type": "string"}}, {"name": "tipoDirec", "in": "query", "required": false, "description": "Contiene portal, poi y/o solar", "schema": {"type": "string", "default": "portales"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 100}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v1/geocode/tramosCalle": {"get": {"summary": "Los tramos de una calle como GeoJSON (FeatureCollection).", "tags": ["v1"], "parameters": [{"name": "idCalle", "in": "query", "required": true, "description": "idCalle", "schema": {"type": "integer"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "object", "description": "FeatureCollection GeoJSON"}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v0/geocode/BusquedaDireccion": {"get": {"summary": "Formato del servicio anterior: dirección → resultados con puntoX y puntoY.", "tags": ["v0"], "parameters": [{"name": "calle", "in": "query", "required": true, "description": "Calle y número (o esquina, manzana y solar, nombre de un lugar)", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": false, "description": "Localidad", "schema": {"type": "string"}}, {"name": "departamento", "in": "query", "required": false, "description": "Departamento", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}, "post": {"summary": "Formato del servicio anterior: dirección → resultados con puntoX y puntoY.", "tags": ["v0"], "parameters": [{"name": "calle", "in": "query", "required": true, "description": "Calle y número (o esquina, manzana y solar, nombre de un lugar)", "schema": {"type": "string"}}, {"name": "localidad", "in": "query", "required": false, "description": "Localidad", "schema": {"type": "string"}}, {"name": "departamento", "in": "query", "required": false, "description": "Departamento", "schema": {"type": "string"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v0/geocode/SugerenciaCalleCompleta": {"get": {"summary": "Formato del servicio anterior: sugerencias de calles para autocompletar.", "tags": ["v0"], "parameters": [{"name": "entrada", "in": "query", "required": true, "description": "Texto escrito", "schema": {"type": "string"}}, {"name": "todos", "in": "query", "required": false, "description": "Sin uso (como en SUDIR)", "schema": {"type": "boolean"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/SugerenciaResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}, "post": {"summary": "Formato del servicio anterior: sugerencias de calles para autocompletar.", "tags": ["v0"], "parameters": [{"name": "entrada", "in": "query", "required": true, "description": "Texto escrito", "schema": {"type": "string"}}, {"name": "todos", "in": "query", "required": false, "description": "Sin uso (como en SUDIR)", "schema": {"type": "boolean"}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/SugerenciaResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v0/geocode/localidades": {"get": {"summary": "Formato del servicio anterior: las localidades de un departamento.", "tags": ["v0"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "alias", "in": "query", "required": false, "description": "Incluir los otros nombres", "schema": {"type": "boolean", "default": false}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/LocalidadResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}, "post": {"summary": "Formato del servicio anterior: las localidades de un departamento.", "tags": ["v0"], "parameters": [{"name": "departamento", "in": "query", "required": true, "description": "Departamento", "schema": {"type": "string"}}, {"name": "alias", "in": "query", "required": false, "description": "Incluir los otros nombres", "schema": {"type": "boolean", "default": false}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/LocalidadResultV0"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}, "/api/v0/geocode/reverse": {"get": {"summary": "Geocodificación inversa (respuesta en el formato v1).", "tags": ["v0"], "parameters": [{"name": "latitud", "in": "query", "required": true, "description": "Latitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "longitud", "in": "query", "required": true, "description": "Longitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 10}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}, "post": {"summary": "Geocodificación inversa (respuesta en el formato v1).", "tags": ["v0"], "parameters": [{"name": "latitud", "in": "query", "required": true, "description": "Latitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "longitud", "in": "query", "required": true, "description": "Longitud en EPSG:4326", "schema": {"type": "number"}}, {"name": "limit", "in": "query", "required": false, "description": "Cantidad máxima de resultados (más de 200 → 406)", "schema": {"type": "integer", "default": 10}}], "responses": {"200": {"description": "Resultados (lista vacía si no hay)", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GeocoderResult"}}}}}, "400": {"description": "Falta un parámetro obligatorio o no se puede convertir", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "406": {"description": "limit mayor que 200", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Más de 600 pedidos por minuto desde la misma IP"}}}}}, "components": {"schemas": {"GeocoderResult": {"type": "object", "properties": {"type": {"type": "string", "description": "CALLE, CALLEyPORTAL, ESQUINA, POI, MANZANAySOLAR, RUTAyKM, LOCALIDAD u OLC"}, "id": {"type": "string", "description": "Identificador del punto (el de SUDIR; otras fuentes: 1.000.000.000 + IUD)"}, "address": {"type": "string", "description": "La dirección como texto"}, "idCalle": {"type": "integer", "description": "idcalle de SUDIR"}, "nomVia": {"type": "string", "description": "Nombre de la calle"}, "postalCode": {"type": "string", "description": "Código postal"}, "idLocalidad": {"type": "integer", "description": "Localidad de SUDIR"}, "localidad": {"type": "string", "description": "Localidad"}, "idDepartamento": {"type": "integer", "description": "Departamento de SUDIR"}, "departamento": {"type": "string", "description": "Departamento"}, "manzana": {"type": "integer", "description": "Manzana"}, "solar": {"type": "integer", "description": "Solar"}, "inmueble": {"type": "string", "description": "Nombre del punto notable"}, "idCalleEsq": {"type": "integer", "description": "idCalle de la otra calle de una esquina"}, "km": {"type": "number", "description": "Kilómetro"}, "priority": {"type": "integer", "description": "Siempre 0"}, "geom": {"type": "string", "description": "Siempre null"}, "tip_via": {"type": "string", "description": "Siempre null"}, "lat": {"type": "number", "description": "Latitud (EPSG:4326); 0.0 = sin coordenadas"}, "lng": {"type": "number", "description": "Longitud (EPSG:4326); 0.0 = sin coordenadas"}, "portalNumber": {"type": "integer", "description": "Número de puerta"}, "letra": {"type": "string", "description": "Letra"}, "stateMsg": {"type": "string", "description": "\"\" exacto, \"Aproximado\""}, "source": {"type": "string", "description": "Siempre ide_uy"}, "ranking": {"type": "number", "description": "Orden (de mayor a menor)"}, "state": {"type": "integer", "description": "1 exacto, 2 aproximado"}}}, "GeocoderResultV0": {"type": "object", "properties": {"direccion": {"type": "object", "properties": {"departamento": {"type": "object", "properties": {"idDepartamento": {"type": "integer", "description": ""}, "nombre_normalizado": {"type": "string", "description": ""}}}, "localidad": {"type": "object", "properties": {"idLocalidad": {"type": "integer", "description": ""}, "nombre_normalizado": {"type": "string", "description": ""}}}, "calle": {"type": "object", "properties": {"idCalle": {"type": "integer", "description": ""}, "nombre_normalizado": {"type": "string", "description": ""}}}, "numero": {"type": "object", "properties": {"nro_puerta": {"type": "integer", "description": ""}}}, "inmueble": {"type": "object", "properties": {"nombre": {"type": "string", "description": ""}, "idPuntoNotable": {"type": "integer", "description": ""}}}}}, "codigoPostal": {"type": "integer"}, "codigoPostalAmpliado": {"type": "integer"}, "puntoX": {"type": "number"}, "puntoY": {"type": "number"}, "idPunto": {"type": "integer"}, "srid": {"type": "integer"}, "idTipoClasificacion": {"type": "integer"}, "error": {"type": "string"}}}, "SugerenciaResultV0": {"type": "object", "properties": {"calle": {"type": "string", "description": ""}, "departamento": {"type": "string", "description": ""}, "localidad": {"type": "string", "description": ""}, "idCalle": {"type": "integer", "description": ""}, "idLocalidad": {"type": "integer", "description": ""}}}, "LocalidadResultV0": {"type": "object", "properties": {"id": {"type": "integer"}, "nombre": {"type": "string"}, "codigoPostal": {"type": "integer"}, "alias": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "integer", "description": ""}, "nombre": {"type": "string", "description": ""}}}}}}, "CapaPoligonalResult": {"type": "object", "properties": {"tabla": {"type": "string", "description": ""}, "descripcion": {"type": "string", "description": ""}, "campo_id": {"type": "string", "description": ""}}}, "Error": {"type": "object", "properties": {"timestamp": {"type": "string", "description": ""}, "status": {"type": "integer", "description": ""}, "error": {"type": "string", "description": ""}, "message": {"type": "string", "description": "Siempre vacío"}, "path": {"type": "string", "description": ""}}}}}}