{"openapi":"3.1.0","info":{"title":"WASTRA · registro","description":"Ingesta de hechos firmados y lectura por licencia. Este servicio acredita integridad, orden, autoría y anterioridad; no la veracidad de lo declarado.","version":"1"},"paths":{"/":{"get":{"summary":"Raiz","description":"La raíz del host del portal lleva al panel (antes: 404 crudo de la API,\nque era lo que veía quien pulsaba «salir»). En cualquier otro host, la página\nque dice qué es esta dirección (29-09-2026; antes, 404: era lo que veía quien\nrecortaba la dirección impresa en un documento).","operationId":"raiz__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/panel/salida":{"get":{"summary":"Panel Salida","description":"Página de despedida. No requiere identidad: el guardián la exime\n(OAUTH2_PROXY_SKIP_AUTH_ROUTES) porque se llega a ella justo después de\nborrar la cookie. No enseña nada del registro.","operationId":"panel_salida_panel_salida_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel":{"get":{"summary":"Panel","operationId":"panel_panel_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/edificaciones":{"get":{"summary":"Panel Edificaciones","operationId":"panel_edificaciones_panel_edificaciones_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/otorgamiento":{"get":{"summary":"Panel Otorgamiento","operationId":"panel_otorgamiento_panel_otorgamiento_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/rescate":{"get":{"summary":"Panel Rescate","operationId":"panel_rescate_panel_rescate_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/instancia":{"get":{"summary":"Panel Instancia","operationId":"panel_instancia_panel_instancia_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/reconocimiento":{"get":{"summary":"Panel Reconocimiento","operationId":"panel_reconocimiento_panel_reconocimiento_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/finanzas":{"get":{"summary":"Panel Finanzas","operationId":"panel_finanzas_panel_finanzas_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/veeduria":{"get":{"summary":"Panel Veeduria","operationId":"panel_veeduria_panel_veeduria_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/evidencia/{huella}":{"get":{"summary":"Panel Evidencia","description":"Lee una evidencia del almacén por su huella: solo licencias de lectura\ntotal (pagador, auditor, ente rector, gobierno, cooperante, veedor) y el\ntúnel. Los bytes vuelven verificados; corrupción → 409.","operationId":"panel_evidencia_panel_evidencia__huella__get","parameters":[{"name":"huella","in":"path","required":true,"schema":{"type":"string","title":"Huella"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/evidencias":{"get":{"summary":"Panel Evidencias","description":"Biblioteca de evidencias (05-09-2026): todas las huellas del almacén de\nla instancia con tamaño, fecha y los hechos que las citan; y las huellas\ncitadas que nadie subió. Solo licencias de lectura total y el túnel.","operationId":"panel_evidencias_panel_evidencias_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/biblioteca":{"get":{"summary":"Panel Biblioteca","description":"T3 (24-09-2026): el visor de la biblioteca por catástrofe — índice de catástrofes activadas con sus\nrecuentos, y por catástrofe las lecciones (recuentos desde los hechos) y las huellas citadas con quién las\ncita. Lo mismo que sirven /v1/biblioteca y /lecciones al público, aquí con navegación; lo lee toda licencia.","operationId":"panel_biblioteca_panel_biblioteca_get","parameters":[{"name":"catastrofe","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catastrofe"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/territorio":{"get":{"summary":"Panel Territorio","description":"M1: territorio adoptado por la instancia (de ACTIVACION_CATASTROFE),\nnormativa que rige (T5) y catálogos disponibles. Dato público.\n`?pais=XX` (06-09-2026, demostración): ficha de cualquier país del\ncatálogo — códigos, subdivisiones, bloques por tipo (desastres primero),\nnormativa que regiría y los tipos de catástrofe del catálogo.","operationId":"panel_territorio_panel_territorio_get","parameters":[{"name":"pais","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pais"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/manual":{"get":{"summary":"Panel Manual","description":"Manual de uso por rol: qué ve, qué emite y cómo, con la doctrina en\nuna página. Lo lee toda licencia (y quien aún no la tiene).","operationId":"panel_manual_panel_manual_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/manual/lecturas":{"get":{"summary":"Panel Manual Lecturas","description":"Quién leyó qué manual (28-09-2026): lo ve quien adjudica las licencias, quien audita y el túnel.","operationId":"panel_manual_lecturas_panel_manual_lecturas_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/manual/{rol}":{"get":{"summary":"Panel Manual Maestro","description":"Manual maestro por rol (28-09-2026), de uso interno bajo licencia: una pantalla por página, con la\nmarca de agua del lector y la lectura anotada ANTES de servir. Sin licencia para ese manual, no hay\npágina; si la lectura no se puede anotar, tampoco. Ver `nucleo/manuales.py`.","operationId":"panel_manual_maestro_panel_manual__rol__get","parameters":[{"name":"rol","in":"path","required":true,"schema":{"type":"string","title":"Rol"}},{"name":"p","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"P"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/guion":{"get":{"summary":"Panel Guion","description":"Guion navegable de la demo (05-09-2026): el simulacro país-tipo paso a\npaso, con los hechos que lo sostienen contados sobre ESTA cadena, la\npestaña donde se leen y el formulario del terminal que los emite. Lo lee\ntoda licencia; los enlaces respetan la vista de cada una.","operationId":"panel_guion_panel_guion_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/soporte":{"get":{"summary":"Panel Soporte","operationId":"panel_soporte_panel_soporte_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/soporte/nuevo":{"post":{"summary":"Panel Soporte Nuevo","operationId":"panel_soporte_nuevo_panel_soporte_nuevo_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/soporte/{ticket_id}/responder":{"post":{"summary":"Panel Soporte Responder","operationId":"panel_soporte_responder_panel_soporte__ticket_id__responder_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/asistente":{"get":{"summary":"Panel Asistente","operationId":"panel_asistente_panel_asistente_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"summary":"Panel Asistente Preguntar","operationId":"panel_asistente_preguntar_panel_asistente_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/relevos":{"get":{"summary":"Panel Relevos","description":"Relevos por camión y lote (plan del terminal por puesto, 06-09-2026).","operationId":"panel_relevos_panel_relevos_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/bienvenida":{"get":{"summary":"Panel Bienvenida","description":"Página de bienvenida tras el alta (T6, 06-09-2026): qué es esto, tres\nprimeros pasos, qué verá y cómo funciona la sesión. La ve toda identidad\ncon clase; sin clase, la de «sin licencia».","operationId":"panel_bienvenida_panel_bienvenida_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/quien":{"get":{"summary":"Panel Quien","description":"Quién soy según el guardián: para que cada usuario (y el titular al dar\nun alta) vea con qué identidad y clase le reconoce el portal.","operationId":"panel_quien_panel_quien_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/gobierno":{"get":{"summary":"Panel Gobierno","operationId":"panel_gobierno_panel_gobierno_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/calidad":{"get":{"summary":"Panel Calidad","operationId":"panel_calidad_panel_calidad_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/valorizacion":{"get":{"summary":"Panel Valorizacion","operationId":"panel_valorizacion_panel_valorizacion_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/vertedero":{"get":{"summary":"Panel Vertedero","operationId":"panel_vertedero_panel_vertedero_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/zonacero":{"get":{"summary":"Panel Zonacero","operationId":"panel_zonacero_panel_zonacero_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/cierre":{"get":{"summary":"Panel Cierre","operationId":"panel_cierre_panel_cierre_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/comunal":{"get":{"summary":"Panel Comunal","operationId":"panel_comunal_panel_comunal_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/panel/lote/{lote_id}":{"get":{"summary":"Panel Lote","operationId":"panel_lote_panel_lote__lote_id__get","parameters":[{"name":"lote_id","in":"path","required":true,"schema":{"type":"string","title":"Lote Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/lote/{lote_id}/certificado":{"get":{"summary":"Panel Certificado","operationId":"panel_certificado_panel_lote__lote_id__certificado_get","parameters":[{"name":"lote_id","in":"path","required":true,"schema":{"type":"string","title":"Lote Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panel/centro/{centro_id}":{"get":{"summary":"Panel Centro","operationId":"panel_centro_panel_centro__centro_id__get","parameters":[{"name":"centro_id","in":"path","required":true,"schema":{"type":"string","title":"Centro Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/lectura/quien":{"get":{"tags":["lectura por licencia"],"summary":"Quien","operationId":"quien_v1_lectura_quien_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/resumen":{"get":{"tags":["lectura por licencia"],"summary":"Resumen","operationId":"resumen_v1_lectura_resumen_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/lotes":{"get":{"tags":["lectura por licencia"],"summary":"Lotes","operationId":"lotes_v1_lectura_lotes_get","parameters":[{"name":"centro","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Centro"}},{"name":"estado","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Estado"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/lectura/lotes/{lote_id}":{"get":{"tags":["lectura por licencia"],"summary":"Lote","operationId":"lote_v1_lectura_lotes__lote_id__get","parameters":[{"name":"lote_id","in":"path","required":true,"schema":{"type":"string","title":"Lote Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/lectura/centros":{"get":{"tags":["lectura por licencia"],"summary":"Centros","operationId":"centros_v1_lectura_centros_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/certificado/{lote_id}":{"get":{"tags":["lectura por licencia"],"summary":"Certificado","description":"Las tres toneladas del certificado y la custodia por segunda fuente (T10, 24-09-2026): lo lee quien lee lotes.","operationId":"certificado_v1_lectura_certificado__lote_id__get","parameters":[{"name":"lote_id","in":"path","required":true,"schema":{"type":"string","title":"Lote Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/lectura/exportacion":{"get":{"tags":["lectura por licencia"],"summary":"Exportaciones","description":"Paquetes semanales íntegros disponibles para esta licencia (D6, opción c): fecha, bytes y huella. Solo lectura íntegra.","operationId":"exportaciones_v1_lectura_exportacion_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/exportacion/{fecha}":{"get":{"tags":["lectura por licencia"],"summary":"Exportacion","description":"Descarga del paquete export_AAAAMMDD.zip bajo licencia de lectura íntegra; la huella va en X-Wastra-Huella y se coteja\ncon la publicada en abierto. El verificador público lo comprueba en frío (C1/C2/C3).","operationId":"exportacion_v1_lectura_exportacion__fecha__get","parameters":[{"name":"fecha","in":"path","required":true,"schema":{"type":"string","title":"Fecha"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/lectura/zonacero":{"get":{"tags":["lectura por licencia"],"summary":"Zonacero","operationId":"zonacero_v1_lectura_zonacero_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/vertedero":{"get":{"tags":["lectura por licencia"],"summary":"Vertedero","operationId":"vertedero_v1_lectura_vertedero_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/cierre":{"get":{"tags":["lectura por licencia"],"summary":"Cierre","operationId":"cierre_v1_lectura_cierre_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/edificaciones":{"get":{"tags":["lectura por licencia"],"summary":"Edificaciones","operationId":"edificaciones_v1_lectura_edificaciones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/otorgamiento":{"get":{"tags":["lectura por licencia"],"summary":"Otorgamiento","operationId":"otorgamiento_v1_lectura_otorgamiento_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/rescate":{"get":{"tags":["lectura por licencia"],"summary":"Rescate","operationId":"rescate_v1_lectura_rescate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/instancia":{"get":{"tags":["lectura por licencia"],"summary":"Instancia","operationId":"instancia_v1_lectura_instancia_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/reconocimiento":{"get":{"tags":["lectura por licencia"],"summary":"Reconocimiento","operationId":"reconocimiento_v1_lectura_reconocimiento_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/finanzas":{"get":{"tags":["lectura por licencia"],"summary":"Finanzas","operationId":"finanzas_v1_lectura_finanzas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/valorizacion":{"get":{"tags":["lectura por licencia"],"summary":"Valorizacion","operationId":"valorizacion_v1_lectura_valorizacion_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/comunal":{"get":{"tags":["lectura por licencia"],"summary":"Comunal","operationId":"comunal_v1_lectura_comunal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/veeduria":{"get":{"tags":["lectura por licencia"],"summary":"Veeduria","operationId":"veeduria_v1_lectura_veeduria_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/gobierno":{"get":{"tags":["lectura por licencia"],"summary":"Gobierno","operationId":"gobierno_v1_lectura_gobierno_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lectura/eventos":{"get":{"tags":["lectura por licencia"],"summary":"Eventos","description":"Los hechos crudos (canónicos, con firma y hash): solo lectura íntegra.","operationId":"eventos_v1_lectura_eventos_get","parameters":[{"name":"desde","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Desde"}},{"name":"hasta","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hasta"}},{"name":"tipo","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tipo"}},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limite"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","description":"Imagen corporativa (06-09-2026, pedido del titular): el mismo signo que\nla web pública (`wastra.global/favicon.svg`), para el portal y el terminal.","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.svg":{"get":{"summary":"Favicon","description":"Imagen corporativa (06-09-2026, pedido del titular): el mismo signo que\nla web pública (`wastra.global/favicon.svg`), para el portal y el terminal.","operationId":"favicon_favicon_svg_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terminal/":{"get":{"summary":"Terminal Raiz","operationId":"terminal_raiz_terminal__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terminal":{"get":{"summary":"Terminal Raiz","operationId":"terminal_raiz_terminal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terminal/{fichero}":{"get":{"summary":"Terminal Fichero","operationId":"terminal_fichero_terminal__fichero__get","parameters":[{"name":"fichero","in":"path","required":true,"schema":{"type":"string","title":"Fichero"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/estado":{"get":{"summary":"Estado","operationId":"estado_v1_estado_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/etiquetas":{"get":{"summary":"V1 Etiquetas","description":"Nombres humanos de las claves técnicas (tipos, estados, clases, roles),\nlos mismos que usa el portal; el terminal los cachea para trabajar sin red.\nDato público: no dice nada del registro, solo cómo se llaman las cosas.","operationId":"v1_etiquetas_v1_etiquetas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/territorio":{"get":{"summary":"Territorio Paises","operationId":"territorio_paises_v1_territorio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/territorio/{codigo}":{"get":{"summary":"Territorio Pais","operationId":"territorio_pais_v1_territorio__codigo__get","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string","title":"Codigo"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/territorio/{codigo}/unidades":{"get":{"summary":"Territorio Unidades","operationId":"territorio_unidades_v1_territorio__codigo__unidades_get","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string","title":"Codigo"}},{"name":"subdivision","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subdivision"}},{"name":"nivel","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nivel"}},{"name":"padre","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Padre"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metrics":{"get":{"summary":"Metricas","operationId":"metricas_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/puestos":{"get":{"summary":"V1 Puestos","description":"Catálogo PUESTOS_ORACULO (el ratificado de mayor versión; si solo hay\nborrador, el borrador, y lo dice): familias, puestos, tipos que firma cada\nuno, campos precargados y listas. Dato público: describe el oficio, no el\nregistro.","operationId":"v1_puestos_v1_puestos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/organizaciones":{"get":{"summary":"V1 Organizaciones","description":"Catálogo ORGANIZACIONES (04-10-2026, E67; REGLA_IDENTIFICADORES §3): qué\nsociedad u órgano hay detrás de cada `organizacion_id` que citan los hechos.\nEl ratificado de mayor versión; si solo hay borrador, el borrador, y lo dice\n(`ratificado: false`): el terminal no lo usa hasta que se ratifique. Dato\npúblico: identificación legal de personas jurídicas, ningún nombre de persona.\nLleva la huella del fichero servido, para que el guion de emisión del acta\ncompruebe que el registro sirve el catálogo publicado antes de emitir el hecho.","operationId":"v1_organizaciones_v1_organizaciones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/siguiente":{"get":{"summary":"V1 Siguiente","description":"La cola «Siguiente» de un puesto (proyección relevos): qué camiones o\nlotes esperan el relevo que ese puesto firma. Lo pide el TERMINAL con la\nfirma de su aparato sobre el texto `siguiente|<puesto>|<centro>|<ts>`\n(ts = AAAA-MM-DDTHH:MM:SS.mmmZ, no más de 10 min de desfase): así solo un\naparato con alta vigente ve su cola, y ningún tercero enumera camiones.","operationId":"v1_siguiente_v1_siguiente_get","parameters":[{"name":"puesto","in":"query","required":true,"schema":{"type":"string","title":"Puesto"}},{"name":"centro","in":"query","required":false,"schema":{"type":"string","default":"","title":"Centro"}},{"name":"ts","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ts"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/formularios":{"get":{"summary":"V1 Formularios","description":"Los formularios del terminal y el expediente por etapas, leídos del\npropio terminal (`nucleo/formularios.py`): qué firma cada puesto, qué campo\nllega precargado de la etapa anterior y qué pone el oráculo. Dato público:\ndescribe el oficio, no el registro. Lo leen la Academia y los agentes.","operationId":"v1_formularios_v1_formularios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/asistente/terminal":{"post":{"summary":"Asistente Terminal","description":"El acompañante del terminal: responde a un aparato con alta vigente\n(firma sobre `acompanante|<ts>`, ventana de 10 min) sobre qué le toca, qué\nfalta y qué viene después. Contexto = expediente por etapas + formulario\nabierto + cola de sus puestos. Con clave del modelo responde el modelo;\nsin clave, la guía del registro. Nunca firma ni escribe nada.","operationId":"asistente_terminal_v1_asistente_terminal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/asistente/verificador":{"post":{"summary":"Asistente Verificador","description":"Cuerpo JSON {\"salida\": \"<texto que imprimió el verificador>\", \"pregunta\": \"...\"}.\nSin herramientas; solo explica el veredicto. Público, con cuota por IP y\nCORS para verify.wastra.global. Sin clave del modelo responde en modo\nsimulado (explicación fija de C1/C2/C3).","operationId":"asistente_verificador_v1_asistente_verificador_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Asistente Verificador Opciones","operationId":"asistente_verificador_opciones_v1_asistente_verificador_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/asistente/web":{"post":{"summary":"Asistente Web","description":"Presentador de WASTRA para la web pública (bloque 6): solo habla de lo\nque está en glosario, alcance y estado; cuota por IP; CORS para\nwastra.global. Sin clave del modelo, modo simulado con una respuesta fija.","operationId":"asistente_web_v1_asistente_web_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Asistente Web Opciones","operationId":"asistente_web_opciones_v1_asistente_web_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/pasarela/stripe":{"post":{"summary":"Pasarela Stripe","operationId":"pasarela_stripe_v1_pasarela_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/evidencias":{"post":{"summary":"Evidencia Subir","operationId":"evidencia_subir_v1_evidencias_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/evidencias/{huella}":{"get":{"summary":"Evidencia Leer","operationId":"evidencia_leer_v1_evidencias__huella__get","parameters":[{"name":"huella","in":"path","required":true,"schema":{"type":"string","title":"Huella"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/biblioteca":{"get":{"summary":"Biblioteca Indice","description":"Índice público: catástrofes activadas en la instancia con sus recuentos de hechos y huellas.","operationId":"biblioteca_indice_v1_biblioteca_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/biblioteca/{catastrofe_id}":{"get":{"summary":"Biblioteca Catastrofe","description":"Ficha pública de una catástrofe: huellas citadas, quién las cita, cuándo, y si el almacén las custodia.","operationId":"biblioteca_catastrofe_v1_biblioteca__catastrofe_id__get","parameters":[{"name":"catastrofe_id","in":"path","required":true,"schema":{"type":"string","title":"Catastrofe Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/biblioteca/{catastrofe_id}/lecciones":{"get":{"summary":"Biblioteca Lecciones","description":"Lecciones públicas de una catástrofe (T3): recuentos desde los hechos (paradas por causa, no conformidades y\ncómo cerraron, lotes, correcciones, rechazos); sin texto libre, sin personas, sin contenido.","operationId":"biblioteca_lecciones_v1_biblioteca__catastrofe_id__lecciones_get","parameters":[{"name":"catastrofe_id","in":"path","required":true,"schema":{"type":"string","title":"Catastrofe Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documento/{ref}":{"get":{"summary":"V1 Documento","description":"(28-09-2026) Qué dice el registro de un documento emitido por WASTRA, por su identificador (`DOC-2026-0001`) o por\nuna de sus huellas. Público y sin credenciales: da el hecho que lo declara, quién lo firmó y cuándo. Siempre 200: el\nestado va dentro (CONSTA, SUSTITUIDO, SIN_HECHO, NO_CONSTA o FORMA).","operationId":"v1_documento_v1_documento__ref__get","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documento/{ref}":{"get":{"summary":"Documento Pagina","description":"La dirección que lleva impresa el papel. No contesta 404 nunca: un papel impreso no se actualiza.","operationId":"documento_pagina_documento__ref__get","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prealta/canje":{"post":{"summary":"Prealta Canje","description":"E35 (28-09-2026): el terminal sin identidad canjea su código de enrolamiento. Cuerpo:\n`{\"codigo\": \"...\", \"clave_publica\": \"04…\"}`; el código va en el cuerpo, NUNCA en la dirección (las\ndirecciones se anotan en los registros de acceso). Si procede, la pre-alta queda atada a esa clave pública\ny se devuelven sus datos para que el terminal rellene y firme el alta. Si no, 403 con un mensaje único\nque no dice el motivo; el motivo queda en el registro de canjes. Nada de aquí escribe en la cadena.","operationId":"prealta_canje_v1_prealta_canje_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Cuerpo"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ingesta/lote":{"post":{"summary":"Ingesta Lote","operationId":"ingesta_lote_v1_ingesta_lote_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Cuerpo"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}