{"openapi":"3.1.0","info":{"title":"ISOCAP","description":"\n**ISOCAP** — Herramienta web para el cálculo de ISÓcronas para la delimitación de perímetros de protección de CAPtaciones de aguas subterráneas.\n\nAPI para el cálculo de perímetros de protección de captaciones de aguas\nsubterráneas mediante **9 métodos analíticos** en 3 grupos, implementados y\nvalidados conforme a la guía de referencia:\n\n*Perímetros de protección para captaciones de agua subterránea destinada al consumo humano. Metodología y aplicación al territorio* (Martínez Navarrete, C. y García García, A., IGME, 2003,\nISBN 84-7840-496-1) — [PDF en MITECO](https://www.miteco.gob.es/content/dam/miteco/es/agua/temas/estado-y-calidad-de-las-aguas/esquema-ppsa/Perimetros_de_Proteccion_2003_I.S.B.N._84-7840-496-1.pdf).\n\nCada método del catálogo (`GET /api/methods`) incluye su epígrafe, páginas,\nfiguras y tablas en esa guía. Las páginas citadas son las impresas (página\nPDF = impresa + 6).\n\n### Autenticación\nLos endpoints `/api/*` requieren un token Bearer personal:\n`Authorization: Bearer <token>`. El token se obtiene y rotа desde la página\n**/tokens** de la aplicación web (requiere sesión iniciada).\n\n### Flujo típico\n1. `GET /api/methods` — catálogo de métodos con sus parámetros, unidades y ejemplos.\n2. `POST /api/perimeter` — ejecuta el cálculo; devuelve `job_id`, URL de descarga\n   (SHAPE o GEODATABASE) y URL del GeoJSON (EPSG:4326).\n\n### Manuales\nLa documentación completa (usuario, desarrollador e infraestructura) se\ndistribuye con la aplicación en el directorio `docs/`:\n`MANUAL_USUARIO.md`, `MANUAL_DESARROLLADOR.md`,\n`MANUAL_INFRAESTRUCTURA_DESPLIEGUE.md`.\n\n**Nota legal**: los perímetros calculados son orientativos y deben ser\nrevisados por un hidrogeólogo antes de su uso en expedientes con efectos\njurídicos sobre el territorio.\n","contact":{"name":"ISOCAP — CN IGME (CSIC)"},"version":"4.7.1"},"paths":{"/health":{"get":{"tags":["Salud"],"summary":"Liveness + diagnóstico de componentes","description":"Estado del servicio y de la comunicación con cada dependencia.\n\nSiempre responde 200 (liveness: el proceso está vivo); el campo\n`status` distingue `ok` de `degraded` y cada componente incluye su\nlatencia y, en su caso, el error. Pensado para healthchecks de Docker\ny para diagnóstico manual/monitorización.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/ready":{"get":{"tags":["Salud"],"summary":"Readiness","description":"Preparación para servir tráfico (readiness).\n\nDevuelve 503 si la BD o el almacenamiento fallan (dependencias\ncríticas). Una caída de Redis NO bloquea la preparación: el limitador\nde tasa conmuta a memoria local (v3.19.0) y el servicio sigue operativo,\naunque el estado se reporta como `degraded`.","operationId":"health_ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","description":"Página de inicio: portada pública de ISOCAP.\n\nv4.0.0: la portada se muestra SIEMPRE, también con sesión iniciada\n(antes redirigía a /app, de modo que el logotipo de la cabecera nunca\nllevaba a la portada). Con sesión, la portada ofrece el acceso directo\na la aplicación en lugar del registro.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/login":{"get":{"summary":"Login Get","operationId":"login_get_login_get","parameters":[{"name":"desactivada","in":"query","required":false,"schema":{"type":"string","default":"","title":"Desactivada"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Login Post","operationId":"login_post_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logout":{"get":{"summary":"Logout","operationId":"logout_logout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/register":{"get":{"summary":"Register Get","operationId":"register_get_register_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"summary":"Register Post","operationId":"register_post_register_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app":{"get":{"summary":"App Form","operationId":"app_form_app_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/submit":{"post":{"summary":"Submit","operationId":"submit_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/result/{job_id}":{"get":{"summary":"Result","operationId":"result_result__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/igme_info/{job_id}":{"get":{"summary":"Cartografía IGME e IGN en la captación (JSON)","description":"v4.1.0: devuelve ``capas_igme.json`` del trabajo. Si aún no existe,\nlanza (o sigue) la consulta en segundo plano y responde\n``{\"estado\": \"pendiente\"}`` para que la ficha de resultados vuelva a\npreguntar. Con ``IGME_INFO_ENABLED=false`` responde ``desactivado``.","operationId":"igme_info_igme_info__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/download/{job_id}/capas_igme.csv":{"get":{"summary":"CSV con la cartografía IGME e IGN en la captación","operationId":"download_capas_igme_csv_download__job_id__capas_igme_csv_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recalculate":{"post":{"summary":"Recalculate","description":"Carga los datos del cálculo en el formulario para recalcular con modificaciones.\n\nFuentes de datos (en orden de prioridad):\n1. Sesión (pending_calc) — cálculo recién calculado, aún no guardado\n2. Base de datos — cálculo ya guardado previamente","operationId":"recalculate_recalculate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/save_calc":{"post":{"summary":"Save Calc","description":"Persiste en BD un cálculo que hasta ahora solo estaba en sesión.","operationId":"save_calc_save_calc_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/delete_calc":{"post":{"summary":"Delete Calc","description":"Elimina un cálculo del histórico del usuario.","operationId":"delete_calc_delete_calc_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/geojson/{job_id}":{"get":{"summary":"Geojson","operationId":"geojson_geojson__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reproject":{"get":{"summary":"Reproyección puntual a EPSG:4326 (asistencia IGME)","description":"Reproyecta un punto del formulario a EPSG:4326.\n\nv3.21.0: usado por la asistencia IGME del formulario (igme_assist.js)\npara consultar los servicios identify de mapas.igme.es, que trabajan\nen 4326. Se hace en el servidor con pyproj (la misma matemática que el\nmotor de cálculo) para no duplicar definiciones de CRS en JavaScript.\nAutenticación dual: sesión web o token Bearer del API.","operationId":"api_reproject_api_reproject_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"epsg","in":"query","required":true,"schema":{"type":"integer","title":"Epsg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/igme_tiles/{service}":{"get":{"summary":"Proxy de teselas WMS del IGME (visor)","operationId":"igme_tiles_igme_tiles__service__get","parameters":[{"name":"service","in":"path","required":true,"schema":{"type":"string","title":"Service"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/download/{job_id}":{"get":{"summary":"Download","operationId":"download_download__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/download/{job_id}/parametros.csv":{"get":{"summary":"CSV con los parámetros de entrada y salida del cálculo","description":"v4.0.0: descarga del CSV (UTF-8 con BOM, separador «;») con las\nentradas (valor, unidad, unidad elegida por el usuario) y las salidas\ndel cálculo. El mismo fichero viaja dentro del ZIP del shapefile y como\ntabla `parametros` en el GeoPackage. Autenticación dual (sesión o token).","operationId":"download_parametros_csv_download__job_id__parametros_csv_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/history":{"get":{"summary":"History","operationId":"history_history_get","parameters":[{"name":"q_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Id"}},{"name":"q_method","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Method"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/history":{"get":{"summary":"Admin History","operationId":"admin_history_admin_history_get","parameters":[{"name":"q_user","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q User"}},{"name":"q_method","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Method"}},{"name":"q_tipo","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Tipo"}},{"name":"export","in":"query","required":false,"schema":{"type":"string","default":"","title":"Export"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users":{"get":{"summary":"Admin Users","operationId":"admin_users_admin_users_get","parameters":[{"name":"q_tipo","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Tipo"}},{"name":"q_nombre","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Nombre"}},{"name":"q_apellidos","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Apellidos"}},{"name":"q_email","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Email"}},{"name":"q_empresa","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Empresa"}},{"name":"q_zona","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Zona"}},{"name":"q_estado","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Estado"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"registro","title":"Sort"}},{"name":"dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Dir"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users/{user_id}/toggle":{"post":{"summary":"Admin Users Toggle","description":"Activa o desactiva una cuenta (v4.6.0). El administrador no puede\ndesactivarse a sí mismo. Vuelve a la lista conservando filtros y orden.","operationId":"admin_users_toggle_admin_users__user_id__toggle_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users/{user_id}/delete":{"post":{"summary":"Admin Users Delete","description":"Elimina una cuenta (v4.7.0). Solo con ADMIN_PUEDE_ELIMINAR_USUARIOS y\nnunca administradores, la propia cuenta ni la centinela. Los cálculos\nguardados pasan a «Usuario eliminado» y la auditoría se anonimiza; los\ntokens se borran en cascada.","operationId":"admin_users_delete_admin_users__user_id__delete_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/usage.csv":{"get":{"summary":"Exporta el registro completo de uso del motor de cálculo (CSV)","description":"Exporta en CSV la tabla calculation_audit (TODAS las invocaciones al\nmotor de cálculo: web y API, guardadas o no, con éxito o con error).\n\nFiltros opcionales por querystring:\n  - q_source: web | api_post | api_get\n  - q_status: ok | validation_error | calc_error | export_error | auth_error | legacy_gone\n  - q_method: subcadena del nombre del método","operationId":"admin_usage_csv_admin_usage_csv_get","parameters":[{"name":"q_source","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Source"}},{"name":"q_status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Status"}},{"name":"q_method","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q Method"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tokens":{"get":{"summary":"Tokens Page","operationId":"tokens_page_tokens_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tokens/rotate":{"post":{"summary":"Tokens Rotate","operationId":"tokens_rotate_tokens_rotate_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tokens/revoke":{"post":{"summary":"Tokens Revoke","operationId":"tokens_revoke_tokens_revoke_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/metrics":{"get":{"summary":"Metrics","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/methods":{"get":{"summary":"Catálogo de métodos y parámetros","description":"Devuelve los métodos disponibles y la definición de sus parámetros (nombres, unidades, rangos típicos y ejemplos). Útil para clientes y para autocompletado.","operationId":"api_methods_catalog_api_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodsCatalog"}}}}}}},"/api/perimeter":{"get":{"summary":"Cálculo de perímetro (GET legado)","description":"Endpoint legado. Para documentación completa de parámetros por método, usa POST /api/perimeter o consulta /api/methods.","operationId":"api_perimeter_get_api_perimeter_get","deprecated":true,"parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"epsg","in":"query","required":false,"schema":{"type":"integer","default":4326,"title":"Epsg"}},{"name":"out_format","in":"query","required":false,"schema":{"type":"string","description":"Formato vectorial de salida.","enum":["SHAPE","GEODATABASE"],"default":"SHAPE","title":"Out Format"},"description":"Formato vectorial de salida."},{"name":"method","in":"query","required":true,"schema":{"type":"string","description":"Método de cálculo. Para ver parámetros específicos usa POST /api/perimeter o GET /api/methods.","enum":["Wyssling","Jacobs y Bear","RFC Ec. volumétrica","RFC Método de la recarga","RFC Función del descenso","Análisis sist. de flujo","Ec. flujo uniforme","Solución analítica simple","Krijgsman y Lobo Ferreira"],"title":"Method"},"description":"Método de cálculo. Para ver parámetros específicos usa POST /api/perimeter o GET /api/methods."},{"name":"flow_azimuth_deg","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Flow Azimuth Deg"}},{"name":"params","in":"query","required":true,"schema":{"title":"Params"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Cálculo de perímetro (POST recomendado)","description":"Endpoint recomendado para integración. A diferencia del GET legado, aquí Swagger puede mostrar todas las opciones de `method`, `out_format` y los parámetros requeridos para cada método.\n\nAutenticación: `Authorization: Bearer <TOKEN>`.","operationId":"api_perimeter_post_api_perimeter_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PerimeterRequestWyssling"},{"$ref":"#/components/schemas/PerimeterRequestJacobsBear"},{"$ref":"#/components/schemas/PerimeterRequestRFCVolumetrica"},{"$ref":"#/components/schemas/PerimeterRequestRFCRecarga"},{"$ref":"#/components/schemas/PerimeterRequestRFCDescenso"},{"$ref":"#/components/schemas/PerimeterRequestAnalisisFlujo"},{"$ref":"#/components/schemas/PerimeterRequestFlujoUniforme"},{"$ref":"#/components/schemas/PerimeterRequestSolucionAnaliticaSimple"},{"$ref":"#/components/schemas/PerimeterRequestKrijgsmanLF"}],"title":"Payload"},"examples":{"Wyssling (San Bartolomé, tabla 26)":{"summary":"Wyssling — Sondeo San Bartolomé, t = 50 días","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"Wyssling","params":{"Q_m3_s":0.003,"K_m_s":3.7e-06,"b_m":93,"i":0.025,"me":0.002,"t_d":50}}},"Jacobs y Bear (San Bartolomé, tabla 33)":{"summary":"Jacobs y Bear — Sondeo San Bartolomé, isocrona de 50 días","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"Jacobs y Bear","params":{"Q_m3_d":151.2,"T_m2_d":30,"b_m":93,"i":0.025,"me":0.002,"t_d":50}}},"RFC Ec. volumétrica (tabla 22)":{"summary":"Radio fijo calculado — ecuación volumétrica, t = 50 días","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"RFC Ec. volumétrica","params":{"Q_m3_d":151.2,"b_m":93,"me":0.002,"t_d":50}}},"Ec. flujo uniforme (San Bartolomé, tabla 31)":{"summary":"Ecuación de flujo uniforme — X_L = −56 m, Y_L = ±174 m","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"Ec. flujo uniforme","params":{"Q_m3_d":259.2,"K_m_d":0.32,"b_m":93,"i":0.025,"dist_divisoria_m":1000}}},"Solución analítica simple (San Bartolomé, tabla 34)":{"summary":"Solución analítica simple — t = 50 días → X_L = 272 m","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"Solución analítica simple","params":{"Q_m3_d":151.2,"K_m_d":0.32,"b_m":93,"i":0.025,"me":0.002,"t_d":50}}},"Krijgsman y Lobo Ferreira (San Bartolomé, tabla 36)":{"summary":"Krijgsman y Lobo Ferreira — t = 50 días → r aguas arriba = 279 m","value":{"lat":40.7761,"lon":-4.4104,"epsg":4326,"out_format":"SHAPE","flow_azimuth_deg":0,"method":"Krijgsman y Lobo Ferreira","params":{"Q_m3_d":151.2,"K_m_d":0.32,"b_m":93,"i":0.025,"me":0.002,"t_d":50}}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerimeterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/legal/uso":{"get":{"summary":"Legal Uso","operationId":"legal_uso_legal_uso_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/legal/privacidad":{"get":{"summary":"Legal Privacidad","operationId":"legal_privacidad_legal_privacidad_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/legal/accesibilidad":{"get":{"summary":"Legal Accesibilidad","operationId":"legal_accesibilidad_legal_accesibilidad_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/mapa-web":{"get":{"summary":"Mapa Web","description":"Mapa del sitio (v4.6.1). No es una página legal: vive fuera de /legal.","operationId":"mapa_web_mapa_web_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AnalisisFlujoParams":{"properties":{"K_m_d":{"type":"number","exclusiveMinimum":0.0,"title":"K M D","description":"Conductividad hidráulica saturada K [m/día].","examples":[0.32]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico i [-].","examples":[0.025]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-].","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de tránsito t [días].","examples":[50]}},"type":"object","required":["K_m_d","i","me","t_d"],"title":"AnalisisFlujoParams","description":"Análisis del sistema de flujo combinado con el cálculo del tiempo de\ntránsito (guía IGME 2003, §6.3.2). d = Ve·t = (K·i/me)·t. Círculo."},"FlujoUniformeParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal de bombeo Q [m³/día].","examples":[259.2]},"K_m_d":{"type":"number","exclusiveMinimum":0.0,"title":"K M D","description":"Conductividad hidráulica saturada K [m/día].","examples":[0.32]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado b [m].","examples":[93]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico sin bombeo i [-].","examples":[0.025]},"dist_divisoria_m":{"type":"number","exclusiveMinimum":0.0,"title":"Dist Divisoria M","description":"Distancia aguas arriba desde la captación a la divisoria hidrogeológica [m] (cierre del polígono).","examples":[1000]}},"type":"object","required":["Q_m3_d","K_m_d","b_m","i","dist_divisoria_m"],"title":"FlujoUniformeParams","description":"Análisis del sistema de flujo combinado con la ecuación de flujo\nuniforme (guía IGME 2003, §6.3.6).\n\nX_L = −Q/(2π·K·b·i), Y_L = ±Q/(2·K·b·i). No depende del tiempo de\ntránsito ni de la porosidad. La zona de llamada, abierta aguas arriba,\nse cierra a la distancia a la divisoria hidrogeológica."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JacobsBearParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal de bombeo ficticio continuo (24 h) Q [m³/día].","examples":[151.2]},"T_m2_d":{"type":"number","exclusiveMinimum":0.0,"title":"T M2 D","description":"Transmisividad T [m²/día].","examples":[30]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado b [m].","examples":[93]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico i [-].","examples":[0.025]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-].","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Isocrona que se quiere calcular t [días].","examples":[50]}},"type":"object","required":["Q_m3_d","T_m2_d","b_m","i","me","t_d"],"title":"JacobsBearParams","description":"Parámetros del método de Jacobs y Bear (guía IGME 2003, §6.3.7).\n\nVariables reducidas adimensionales: cualquier sistema de unidades\ncoherente vale. Canónicas de ISOCAP: Q [m³/día] (caudal ficticio\ncontinuo 24 h), T [m²/día], b [m], i [-], me [-], t [días]."},"KrijgsmanLoboFerreiraParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal bombeado Q [m³/día].","examples":[151.2]},"K_m_d":{"type":"number","exclusiveMinimum":0.0,"title":"K M D","description":"Conductividad hidráulica saturada K [m/día].","examples":[0.32]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado b [m].","examples":[93]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico i [-].","examples":[0.025]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-].","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de tránsito t [días].","examples":[50]}},"type":"object","required":["Q_m3_d","K_m_d","b_m","i","me","t_d"],"title":"KrijgsmanLoboFerreiraParams","description":"Método de Krijgsman y Lobo Ferreira (guía IGME 2003, §6.3.9).\n\nPolinomios empíricos para acuíferos libres. Distancia mínima: 25 m."},"MethodSpec":{"properties":{"method":{"type":"string","title":"Method"},"title":{"type":"string","title":"Title","default":""},"short_title":{"type":"string","title":"Short Title","default":""},"group":{"type":"string","title":"Group","default":""},"shape":{"type":"string","title":"Shape","default":""},"summary":{"type":"string","title":"Summary","default":""},"params":{"items":{"$ref":"#/components/schemas/ParamSpec"},"type":"array","title":"Params"},"outputs":{"items":{"$ref":"#/components/schemas/ParamSpec"},"type":"array","title":"Outputs","default":[]},"reference":{"anyOf":[{"$ref":"#/components/schemas/Reference"},{"type":"null"}]}},"type":"object","required":["method","params"],"title":"MethodSpec"},"MethodsCatalog":{"properties":{"out_format_options":{"items":{"type":"string"},"type":"array","title":"Out Format Options"},"groups":{"items":{"type":"string"},"type":"array","title":"Groups","default":[]},"reference_source":{"additionalProperties":true,"type":"object","title":"Reference Source","default":{}},"methods":{"items":{"$ref":"#/components/schemas/MethodSpec"},"type":"array","title":"Methods"}},"type":"object","required":["out_format_options","methods"],"title":"MethodsCatalog"},"OutFormatEnum":{"type":"string","enum":["SHAPE","GEODATABASE"],"title":"OutFormatEnum","description":"Formatos vectoriales de salida soportados por la aplicación."},"ParamSpec":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label","default":""},"units":{"type":"string","title":"Units"},"description":{"type":"string","title":"Description"},"example":{"anyOf":[{},{"type":"null"}],"title":"Example"},"unit_options":{"items":{"$ref":"#/components/schemas/UnitOption"},"type":"array","title":"Unit Options","default":[]}},"type":"object","required":["name","units","description"],"title":"ParamSpec"},"PerimeterRequestAnalisisFlujo":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Análisis sist. de flujo","title":"Method","default":"Análisis sist. de flujo"},"params":{"$ref":"#/components/schemas/AnalisisFlujoParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestAnalisisFlujo"},"PerimeterRequestFlujoUniforme":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Ec. flujo uniforme","title":"Method","default":"Ec. flujo uniforme"},"params":{"$ref":"#/components/schemas/FlujoUniformeParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestFlujoUniforme"},"PerimeterRequestJacobsBear":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Jacobs y Bear","title":"Method","default":"Jacobs y Bear"},"params":{"$ref":"#/components/schemas/JacobsBearParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestJacobsBear"},"PerimeterRequestKrijgsmanLF":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Krijgsman y Lobo Ferreira","title":"Method","default":"Krijgsman y Lobo Ferreira"},"params":{"$ref":"#/components/schemas/KrijgsmanLoboFerreiraParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestKrijgsmanLF"},"PerimeterRequestRFCDescenso":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"RFC Función del descenso","title":"Method","default":"RFC Función del descenso"},"params":{"$ref":"#/components/schemas/RFCDescensoParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestRFCDescenso"},"PerimeterRequestRFCRecarga":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"RFC Método de la recarga","title":"Method","default":"RFC Método de la recarga"},"params":{"$ref":"#/components/schemas/RFCRecargaParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestRFCRecarga"},"PerimeterRequestRFCVolumetrica":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"RFC Ec. volumétrica","title":"Method","default":"RFC Ec. volumétrica"},"params":{"$ref":"#/components/schemas/RFCVolumetricaParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestRFCVolumetrica"},"PerimeterRequestSolucionAnaliticaSimple":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Solución analítica simple","title":"Method","default":"Solución analítica simple"},"params":{"$ref":"#/components/schemas/SolucionAnaliticaSimpleParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestSolucionAnaliticaSimple"},"PerimeterRequestWyssling":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitud (EPSG:4326) o Y (CRS proyectado)."},"lon":{"type":"number","title":"Lon","description":"Longitud (EPSG:4326) o X (CRS proyectado)."},"epsg":{"type":"integer","title":"Epsg","description":"EPSG del punto de entrada. Ej: 4326 (WGS84), 25830 (ETRS89 / UTM 30N).","default":4326,"examples":[4326,25830]},"out_format":{"$ref":"#/components/schemas/OutFormatEnum","description":"Formato vectorial de salida.","default":"SHAPE","examples":["SHAPE","GEODATABASE"]},"flow_azimuth_deg":{"type":"number","title":"Flow Azimuth Deg","description":"Azimut del flujo subterráneo [°]: dirección HACIA LA QUE fluye el agua (0°=N, 90°=E, 180°=S, 270°=O). Orienta el perímetro: el lóbulo aguas arriba queda en azimut+180°. Se ignora en los métodos circulares.","default":0,"examples":[0,90,180]},"method":{"type":"string","const":"Wyssling","title":"Method","default":"Wyssling"},"params":{"$ref":"#/components/schemas/WysslingParams"}},"type":"object","required":["lat","lon","params"],"title":"PerimeterRequestWyssling"},"PerimeterResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"download_url":{"type":"string","title":"Download Url"},"geojson_url":{"type":"string","title":"Geojson Url"},"parametros_csv_url":{"type":"string","title":"Parametros Csv Url","default":""}},"type":"object","required":["job_id","download_url","geojson_url"],"title":"PerimeterResponse","description":"Respuesta del cálculo.\n\n- job_id: identificador interno del trabajo.\n- download_url: URL (zip/gpkg) para descargar el resultado en el formato solicitado.\n- geojson_url: URL del GeoJSON (siempre en EPSG:4326) para visualización en web.\n- parametros_csv_url: URL del CSV con los parámetros de entrada y salida."},"RFCDescensoParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal de bombeo Q [m³/día].","examples":[151.2]},"T_m2_d":{"type":"number","exclusiveMinimum":0.0,"title":"T M2 D","description":"Transmisividad T [m²/día].","examples":[30]},"S":{"type":"number","exclusiveMinimum":0.0,"title":"S","description":"Coeficiente de almacenamiento S [-].","examples":[0.002]},"d_target_m":{"type":"number","exclusiveMinimum":0.0,"title":"D Target M","description":"Descenso objetivo d [m]. Típico: 0,015 m (15 mm).","examples":[0.015]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de bombeo t [días].","examples":[1]}},"type":"object","required":["Q_m3_d","T_m2_d","S","d_target_m","t_d"],"title":"RFCDescensoParams","description":"Radio fijo calculado — Función del descenso, Theis (guía IGME 2003, §6.3.4).\n\nd = Q/(4πT)·W(u); u = R²S/(4Tt) → R = √(4Ttu/S)."},"RFCRecargaParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal anual medio de explotación Q [m³/día].","examples":[118.8]},"N_m_d":{"type":"number","exclusiveMinimum":0.0,"title":"N M D","description":"Recarga anual media N [m/día].","examples":[0.000102]}},"type":"object","required":["Q_m3_d","N_m_d"],"title":"RFCRecargaParams","description":"Radio fijo calculado — Método de la recarga (guía IGME 2003, §6.3.3).\n\nR = √(Q / (N·π)). Valor único independiente del tiempo."},"RFCVolumetricaParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal bombeado Q [m³/día].","examples":[151.2]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado b [m].","examples":[93]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-].","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de tránsito t [días].","examples":[50]}},"type":"object","required":["Q_m3_d","b_m","me","t_d"],"title":"RFCVolumetricaParams","description":"Radio fijo calculado — Ecuación volumétrica (guía IGME 2003, §6.3.3).\n\nR = √(Q·t / (π·me·b)). Círculo centrado en la captación."},"Reference":{"properties":{"source":{"type":"string","title":"Source","description":"Nombre corto de la fuente.","default":"Guía IGME 2003"},"title":{"type":"string","title":"Title","description":"Título completo de la fuente.","default":"Perímetros de protección para captaciones de agua subterránea destinada al consumo humano. Metodología y aplicación al territorio"},"authors":{"type":"string","title":"Authors","default":"Martínez Navarrete, C. y García García, A."},"year":{"type":"integer","title":"Year","default":2003},"isbn":{"type":"string","title":"Isbn","default":"84-7840-496-1"},"url":{"type":"string","title":"Url","description":"URL pública del documento (MITECO).","default":"https://www.miteco.gob.es/content/dam/miteco/es/agua/temas/estado-y-calidad-de-las-aguas/esquema-ppsa/Perimetros_de_Proteccion_2003_I.S.B.N._84-7840-496-1.pdf"},"epigraph":{"type":"string","title":"Epigraph","description":"Epígrafe de la guía, p. ej. «6.3.5»."},"epigraph_title":{"type":"string","title":"Epigraph Title","description":"Título del epígrafe en la guía."},"pages":{"type":"string","title":"Pages","description":"Páginas impresas de la guía (PDF = impresa + 6)."},"figures":{"type":"string","title":"Figures","description":"Figuras de la guía que ilustran el método.","default":""},"tables":{"type":"string","title":"Tables","description":"Tablas de la guía con los casos de validación.","default":""},"notes":{"type":"string","title":"Notes","description":"Observaciones sobre la implementación respecto a la fuente.","default":""}},"type":"object","required":["epigraph","epigraph_title","pages"],"title":"Reference","description":"Cita de un método en la guía de referencia."},"SolucionAnaliticaSimpleParams":{"properties":{"Q_m3_d":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 D","description":"Caudal de bombeo Q [m³/día].","examples":[151.2]},"K_m_d":{"type":"number","exclusiveMinimum":0.0,"title":"K M D","description":"Conductividad hidráulica saturada K [m/día].","examples":[0.32]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado b [m].","examples":[93]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico i [-].","examples":[0.025]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-].","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de tránsito t [días].","examples":[50]}},"type":"object","required":["Q_m3_d","K_m_d","b_m","i","me","t_d"],"title":"SolucionAnaliticaSimpleParams","description":"Método de solución analítica simple para la aproximación a isocronas\nque definen zonas de transporte (guía IGME 2003, §6.3.8).\n\nT_X = (me/(K·i))·[X_L − (Q/(2π·K·b·i))·ln(1 + (2π·K·b·i/Q)·X_L)],\nresuelta numéricamente para X_L aguas arriba y aguas abajo."},"UnitOption":{"properties":{"unit":{"type":"string","title":"Unit"},"factor":{"type":"number","title":"Factor"}},"type":"object","required":["unit","factor"],"title":"UnitOption","description":"Unidad alternativa para introducir un parámetro.\n\n`factor` multiplica el valor introducido en esta unidad para obtener el\nvalor en la unidad canónica del parámetro (la que espera el motor)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WysslingParams":{"properties":{"Q_m3_s":{"type":"number","exclusiveMinimum":0.0,"title":"Q M3 S","description":"Caudal bombeado Q [m³/s]. Debe ser > 0.","examples":[0.003]},"K_m_s":{"type":"number","exclusiveMinimum":0.0,"title":"K M S","description":"Conductividad hidráulica saturada K [m/s]. Debe ser > 0.","examples":[3.7e-06]},"b_m":{"type":"number","exclusiveMinimum":0.0,"title":"B M","description":"Espesor saturado del acuífero b [m]. Debe ser > 0.","examples":[93]},"i":{"type":"number","exclusiveMinimum":0.0,"title":"I","description":"Gradiente hidráulico i [-]. Típico 0,0005–0,05.","examples":[0.025]},"me":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Me","description":"Porosidad eficaz me [-]. Típico 0,002–0,35.","examples":[0.002]},"t_d":{"type":"number","exclusiveMinimum":0.0,"title":"T D","description":"Tiempo de tránsito objetivo t [días].","examples":[50]}},"type":"object","required":["Q_m3_s","K_m_s","b_m","i","me","t_d"],"title":"WysslingParams","description":"Parámetros del método de Wyssling (guía IGME 2003, §6.3.5).\n\nUnidades canónicas (las de la tabla 26 de la guía):\nQ [m³/s], K [m/s], b [m], i [-], me [-], t [días]."}}},"tags":[{"name":"API","description":"Endpoints programáticos (token Bearer)."},{"name":"Web","description":"Interfaz web (sesión de usuario)."}]}