{"openapi":"3.1.0","info":{"title":"Scholaris API v1","version":"1.0.0","summary":"Subo cualquier cosa, busco, pregunto, cito. Upload anything, search, ask, cite.","description":"La API sencilla de Scholaris: una biblioteca leída y citable, con la página impresa o el segundo exactos de cada pasaje y ninguna cita inventada.\n\nAutenticación: `Authorization: Bearer sch_…` con una clave personal (Ajustes → Claves de API). Alcances: `lectura` para leer y buscar, `escritura` para subir, borrar y citar.\n\nPara agentes: https://scholaris.joseluissaorin.com/llms.txt. Servidor MCP: https://scholaris.joseluissaorin.com/mcp.","contact":{"name":"José Luis Saorín Ferrer","url":"https://joseluissaorin.com","email":"jl@joseluissaorin.com"}},"servers":[{"url":"https://scholaris.joseluissaorin.com/api/v1"}],"security":[{"clave":[]}],"externalDocs":{"url":"https://scholaris.joseluissaorin.com/api","description":"Guía con ejemplos que se pueden copiar y pegar"},"tags":[{"name":"documentos"},{"name":"buscar"},{"name":"preguntar"},{"name":"citar"}],"paths":{"/documentos":{"post":{"tags":["documentos"],"operationId":"subir","summary":"Subir cualquier cosa: un fichero o una URL","description":"El fichero va como cuerpo crudo (con su Content-Type y `?nombre=`) o como multipart (campo `archivo`); una URL, como JSON `{ \"url\": … }` (página web, PDF, YouTube, Vimeo, pódcast). El servidor convierte y lee. Si ya estaba (misma huella SHA-256), devuelve el que hay con `duplicado: true`.","parameters":[{"name":"esperar","in":"query","schema":{"type":"integer","minimum":0,"maximum":600,"default":60},"description":"Segundos que espera a que termine (60 por defecto). 0 o «Prefer: respond-async»: responde enseguida con 202 y progreso_url."},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","maxLength":255},"description":"Repetir la petición con la misma clave en 24 h devuelve el mismo recurso, sin duplicarlo."},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."},{"name":"nombre","in":"query","schema":{"type":"string"},"description":"Nombre del fichero (cuerpo crudo)."},{"name":"titulo","in":"query","schema":{"type":"string"}},{"name":"autores","in":"query","schema":{"type":"string"},"description":"«Apellidos, Nombre; Apellidos, Nombre»."},{"name":"anio","in":"query","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"application/pdf":{"schema":{"type":"string","format":"binary"}},"multipart/form-data":{"schema":{"type":"object","properties":{"archivo":{"type":"string","format":"binary"},"titulo":{"type":"string"},"autores":{"type":"string"},"anio":{"type":"integer"}}}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"titulo":{"type":"string"},"autores":{"type":"array","items":{"type":"string"}},"anio":{"type":"integer"},"tipo":{"type":"string"},"modo":{"type":"string","enum":["rapido","economico"]}},"required":["url"]}}}},"responses":{"200":{"description":"Ya estaba (duplicado o Idempotency-Key repetida)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Documento"}},"text/markdown":{"schema":{"type":"string"}}}},"201":{"description":"Listo (o terminado con error: mira `estado`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Documento"}},"text/markdown":{"schema":{"type":"string"}}}},"202":{"description":"Sigue procesándose: pregunta en `progreso_url`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Documento"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Demasiado grande","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"tags":["documentos"],"operationId":"listar","summary":"Listar la biblioteca","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Título o autor."},{"name":"estado","in":"query","schema":{"type":"string","enum":["en_cola","procesando","listo","error"]}},{"name":"limite","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"responses":{"200":{"description":"Página de documentos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListaDocumentos"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/documentos/{id}":{"get":{"tags":["documentos"],"operationId":"documento","summary":"Ficha, estado y progreso","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"esperar","in":"query","schema":{"type":"integer","minimum":0,"maximum":600,"default":0},"description":"Segundos que espera a que termine (0 por defecto). 0 o «Prefer: respond-async»: responde enseguida con 202 y progreso_url."},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"responses":{"200":{"description":"El documento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Documento"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No existe","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["documentos"],"operationId":"borrar","summary":"Borrar (con todo lo derivado)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Borrado","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"id":{"type":"string"},"borrado":{"type":"boolean"}}}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/documentos/{id}/texto":{"get":{"tags":["documentos"],"operationId":"texto","summary":"Leer páginas o un tramo de tiempo","description":"`desde` y `hasta` admiten el folio impreso («23», «xiv»), la posición física entre corchetes («[12]») y, en audio y vídeo, tiempos («1:06:56», «66:56», «4016»). Sin `hasta`, devuelve `limite` unidades y `siguiente` para seguir.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"desde","in":"query","schema":{"type":"string"}},{"name":"hasta","in":"query","schema":{"type":"string"}},{"name":"limite","in":"query","schema":{"type":"integer","default":20,"maximum":100}},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"responses":{"200":{"description":"El texto, unidad a unidad, con su localizador","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Texto"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Todavía sin texto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/buscar":{"get":{"tags":["buscar"],"operationId":"buscar","summary":"Buscar pasajes con su cita","description":"Búsqueda híbrida (léxica, semántica y visual) reordenada. Entre comillas, una frase literal.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"k","in":"query","schema":{"type":"integer","default":10,"maximum":50}},{"name":"documento","in":"query","schema":{"type":"string"},"description":"Restringir a un documento (se puede repetir o separar por comas)."},{"name":"biblioteca","in":"query","schema":{"type":"string"}},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"responses":{"200":{"description":"Pasajes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Busqueda"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["buscar"],"operationId":"buscarPost","summary":"Lo mismo, con JSON","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string"},"k":{"type":"integer"},"documentos":{"type":"array","items":{"type":"string"}},"biblioteca":{"type":"string"},"formato":{"type":"string"}},"required":["q"]}}}},"responses":{"200":{"description":"Pasajes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Busqueda"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/preguntar":{"post":{"tags":["preguntar"],"operationId":"preguntar","summary":"Una respuesta con notas al pie verificadas","description":"El redactor solo puede citar los pasajes que se le dan; cada nota [^n] se comprueba y su texto sale del ancla. Con `stream: true` (o Accept: text/event-stream), eventos SSE: `pasajes`, `texto` (delta), `fuente`, `fin` (la respuesta entera) y `error`.","parameters":[{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pregunta":{"type":"string"},"k":{"type":"integer","description":"Pasajes de contexto (8, máximo 12)."},"documentos":{"type":"array","items":{"type":"string"}},"biblioteca":{"type":"string"},"stream":{"type":"boolean"}},"required":["pregunta"]}}}},"responses":{"200":{"description":"Respuesta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Respuesta"}},"text/markdown":{"schema":{"type":"string"}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/citar":{"post":{"tags":["citar"],"operationId":"citar","summary":"Citar un texto con la biblioteca","description":"Inserta citas verificadas (con página exacta) en el texto y devuelve la bibliografía. Acepta JSON `{ \"texto\": … }` o un .docx como cuerpo; con `Accept: application/vnd.openxmlformats-officedocument.wordprocessingml.document` (o `?formato=docx`) y un .docx de entrada, devuelve el .docx citado.","parameters":[{"name":"esperar","in":"query","schema":{"type":"integer","minimum":0,"maximum":600,"default":120},"description":"Segundos que espera a que termine (120 por defecto). 0 o «Prefer: respond-async»: responde enseguida con 202 y progreso_url."},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","maxLength":255},"description":"Repetir la petición con la misma clave en 24 h devuelve el mismo recurso, sin duplicarlo."},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"texto":{"type":"string"},"estilo":{"type":"string","description":"Cualquier estilo CSL.","default":"apa"},"idioma":{"type":"string","default":"es-ES"},"umbral":{"type":"number","description":"Respaldo mínimo (0,7)."},"documentos":{"type":"array","items":{"type":"string"}},"biblioteca":{"type":"string"}},"required":["texto"]}},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"Terminado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Citado"}},"text/markdown":{"schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"schema":{"type":"string","format":"binary"}}}},"202":{"description":"Sigue trabajando: pregunta en `progreso_url`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Citado"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Cuota de citas del plan agotada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/citar/{id}":{"get":{"tags":["citar"],"operationId":"citado","summary":"Estado o resultado de una cita en curso","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"esperar","in":"query","schema":{"type":"integer","minimum":0,"maximum":600,"default":0},"description":"Segundos que espera a que termine (0 por defecto). 0 o «Prefer: respond-async»: responde enseguida con 202 y progreso_url."},{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"responses":{"200":{"description":"Terminado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Citado"}},"text/markdown":{"schema":{"type":"string"}}}},"202":{"description":"Sigue trabajando","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Citado"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/verificar":{"post":{"tags":["citar"],"operationId":"verificar","summary":"¿Respalda la biblioteca esta afirmación?","parameters":[{"name":"formato","in":"query","schema":{"type":"string","enum":["json","markdown"]},"description":"markdown devuelve text/markdown (también con Accept: text/markdown)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"afirmacion":{"type":"string"},"anio":{"type":"integer","description":"Año del texto que la hace: descarta fuentes posteriores."},"k":{"type":"integer"},"documentos":{"type":"array","items":{"type":"string"}}},"required":["afirmacion"]}}}},"responses":{"200":{"description":"Veredicto con los pasajes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Verificacion"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Petición no válida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Falta la clave o no vale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"La clave no tiene el alcance necesario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (mira Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"clave":{"type":"http","scheme":"bearer","bearerFormat":"sch_…","description":"Clave personal de Ajustes → Claves de API."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"codigo":{"type":"string","description":"Código estable: no_autenticado, prohibido, no_encontrado, peticion_invalida, conflicto, cuota_superada, limite_de_ritmo, requiere_pro, demasiado_grande, no_disponible, proveedor_fallo, interno."},"mensaje":{"type":"string","description":"Qué ha pasado, en español."},"message":{"type":"string","description":"The same, in English."},"estado":{"type":"integer","description":"Código HTTP."},"documentacion":{"type":"string","description":"Dónde se explica.","format":"uri"},"detalles":{"type":"object","additionalProperties":true}},"required":["codigo","mensaje","message","estado"]}},"required":["error"]},"Ancla":{"description":"A qué apunta una cita. Las citas y los enlaces salen siempre de aquí, nunca de un modelo.","oneOf":[{"type":"object","properties":{"tipo":{"const":"pagina"},"fisica":{"type":"integer","description":"Página física, desde 1."},"impresa":{"type":["string","null"],"description":"Folio impreso («23», «xiv»)."},"romana":{"type":"boolean"},"origen":{"type":"string"},"confianza":{"type":"number"}},"required":["tipo","fisica"]},{"type":"object","properties":{"tipo":{"const":"tiempo"},"t0":{"type":"number","description":"Segundo de inicio."},"t1":{"type":"number","description":"Segundo de fin."},"hablante":{"type":"string"}},"required":["tipo","t0","t1"]},{"type":"object","properties":{"tipo":{"const":"seccion"},"ruta":{"type":"array","items":{"type":"string"}},"parrafo":{"type":"integer"},"impresa":{"type":["string","null"]}},"required":["tipo","ruta","parrafo"]},{"type":"object","properties":{"tipo":{"const":"diapositiva"},"n":{"type":"integer"}},"required":["tipo","n"]},{"type":"object","properties":{"tipo":{"const":"hoja"},"hoja":{"type":"string"},"filaDesde":{"type":"integer"},"filaHasta":{"type":"integer"}},"required":["tipo"]},{"type":"object","properties":{"tipo":{"const":"web"},"url":{"type":"string"},"ruta":{"type":"array","items":{"type":"string"}},"parrafo":{"type":"integer"},"consultada":{"type":"string"}},"required":["tipo"]},{"type":"object","properties":{"tipo":{"const":"imagen"}},"required":["tipo"]}]},"Documento":{"type":"object","properties":{"id":{"type":"string","description":"Id estable y corto.","examples":["dmuwtm9kmsanlrbm5"]},"titulo":{"type":"string"},"autores":{"type":"array","items":{"type":"string"},"description":"«Apellidos, Nombre». En las listas, solo los apellidos."},"anio":{"type":"integer"},"tipo":{"type":"string","description":"pdf, pdf_escaneado, epub, documento, presentacion, hoja, audio, video, imagen, web."},"estado":{"type":"string","enum":["en_cola","procesando","listo","error"]},"progreso":{"type":"number","description":"Avance global 0-1 mientras se procesa."},"fase":{"type":"string","description":"Fase en curso."},"unidades":{"type":"integer","description":"Páginas, diapositivas o tramos."},"duracion":{"type":"number","description":"Segundos (audio y vídeo)."},"idioma":{"type":"string"},"url":{"type":"string","description":"Origen, si entró por URL."},"referencia":{"type":"string","description":"Referencia bibliográfica en APA, cuando está listo."},"duplicado":{"type":"boolean","description":"Ya estaba en la biblioteca (misma huella SHA-256)."},"error":{"type":"string"},"creado":{"type":"string","format":"date-time"},"enlace":{"type":"string","description":"El documento en el lector.","format":"uri"},"texto_url":{"type":"string","format":"uri"},"progreso_url":{"type":"string","description":"Mientras se procesa: dónde preguntar.","format":"uri"}},"required":["id","titulo","autores","tipo","estado","unidades","creado","enlace","texto_url"]},"ListaDocumentos":{"type":"object","properties":{"documentos":{"type":"array","items":{"$ref":"#/components/schemas/Documento"}},"total":{"type":"integer"},"siguiente":{"type":"string","description":"Cursor de la página siguiente."}},"required":["documentos","total"]},"DocumentoBreve":{"type":"object","properties":{"id":{"type":"string"},"titulo":{"type":"string"},"autores":{"type":"array","items":{"type":"string"}},"anio":{"type":"integer"}},"required":["id","titulo","autores"]},"Pasaje":{"type":"object","properties":{"id":{"type":"string","description":"Id del fragmento (el del documento, «:» y su posición).","examples":["dmuwtm9kmsanlrbm5:p23.1"]},"documento":{"$ref":"#/components/schemas/DocumentoBreve"},"texto":{"type":"string","description":"Texto literal."},"cita":{"type":"string","description":"Cita corta lista para pegar.","examples":["(Cortázar, 1977, 1:06:56)","(Foucault, 1975, p. 23)"]},"localizador":{"type":"string","description":"Solo el localizador.","examples":["p. 23","pp. 23-24","1:06:56","diap. 7"]},"ancla":{"$ref":"#/components/schemas/Ancla"},"enlace":{"type":"string","description":"El lector abierto en esa página o en ese segundo.","format":"uri"},"puntuacion":{"type":"number"}},"required":["id","documento","texto","cita","localizador","ancla","enlace"]},"Busqueda":{"type":"object","properties":{"consulta":{"type":"string"},"pasajes":{"type":"array","items":{"$ref":"#/components/schemas/Pasaje"}},"ms":{"type":"integer"}},"required":["consulta","pasajes"]},"Fuente":{"allOf":[{"$ref":"#/components/schemas/Pasaje"},{"type":"object","properties":{"n":{"type":"integer","description":"Número de la nota: [^n]."}},"required":["n"]}]},"Respuesta":{"type":"object","properties":{"pregunta":{"type":"string"},"respuesta":{"type":"string","description":"Markdown con notas al pie [^n]; las definiciones van al final."},"fuentes":{"type":"array","items":{"$ref":"#/components/schemas/Fuente"}},"confianza":{"type":"string","enum":["alta","media","baja"]},"ms":{"type":"integer"}},"required":["pregunta","respuesta","fuentes","confianza"]},"Cita":{"type":"object","properties":{"afirmacion":{"type":"string"},"cita":{"type":"string","description":"La cita en el estilo pedido, tal como se insertó."},"localizador":{"type":"string"},"documento":{"type":"string"},"fragmento":{"type":"string"},"pasaje":{"type":"string"},"respaldo":{"type":"number","description":"Probabilidad 0-1 de que el pasaje la respalde."},"enlace":{"type":"string","format":"uri"}},"required":["afirmacion","cita","localizador","documento","fragmento","pasaje","respaldo"]},"Citado":{"type":"object","properties":{"id":{"type":"string"},"estado":{"type":"string","enum":["en_cola","procesando","listo","error"]},"texto":{"type":"string","description":"El texto con las citas insertadas (Markdown)."},"citas":{"type":"array","items":{"$ref":"#/components/schemas/Cita"}},"bibliografia":{"type":"array","items":{"type":"string"}},"estilo":{"type":"string"},"progreso_url":{"type":"string","format":"uri"},"error":{"type":"string"}},"required":["id","estado","estilo"]},"Verificacion":{"type":"object","properties":{"afirmacion":{"type":"string"},"veredicto":{"type":"string","enum":["respaldada","parcial","sin_respaldo","contradicha"]},"respaldada":{"type":"boolean"},"probabilidad":{"type":"number","description":"Respaldo del mejor pasaje (0-1)."},"pasajes":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Pasaje"},{"type":"object","properties":{"relacion":{"type":"string","description":"APOYO_DIRECTO, CONTRADICCION, CONTEXTO, APLICACION_DE_MARCO, IMPOSIBLE_TEMPORAL…"},"respaldo":{"type":"number"}}}]}},"ms":{"type":"integer"}},"required":["afirmacion","veredicto","respaldada","probabilidad","pasajes"]},"Texto":{"type":"object","properties":{"documento":{"allOf":[{"$ref":"#/components/schemas/DocumentoBreve"},{"type":"object","properties":{"tipo":{"type":"string"}}}]},"unidades":{"type":"array","items":{"type":"object","properties":{"posicion":{"type":"integer","description":"Posición física, desde 1."},"localizador":{"type":"string"},"cita":{"type":"string"},"enlace":{"type":"string","format":"uri"},"t0":{"type":"number"},"t1":{"type":"number"},"texto":{"type":"string"}},"required":["posicion","localizador","cita","enlace","texto"]}},"siguiente":{"type":"string","description":"Si hay más: pásalo como «desde».","examples":["[21]"]}},"required":["documento","unidades"]}}}}