{"openapi":"3.1.0","info":{"title":"FireScrap","description":"Traduit une URL en document structuré (JSON-L, YAML, TOML) pour les agents.","version":"1.0.0"},"paths":{"/api/v1/translate":{"post":{"summary":"Translate Post","description":"Traduit l'URL fournie et renvoie le document structuré.","operationId":"translate_post_api_v1_translate_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageTranslation"}}}},"400":{"description":"URL invalide ou format inconnu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Source introuvable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"415":{"description":"Type non supporté","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"502":{"description":"Source injoignable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Source non exploitable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"504":{"description":"Source trop lente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Translate Get","description":"Variante de commodité, pour un client qui ne sait faire qu'un GET.","operationId":"translate_get_api_v1_translate_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","description":"URL absolue à traduire","title":"Url"},"description":"URL absolue à traduire"},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"jsonl","title":"Format"}},{"name":"cache_ttl","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Ttl"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Raw"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageTranslation"}}}},"400":{"description":"URL invalide ou format inconnu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Source non exploitable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","description":"État du service et statistiques du cache.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"ErrorEnvelope":{"properties":{"_type":{"type":"string","title":"Type","default":"error"},"_request_id":{"type":"string","title":"Request Id"},"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["_request_id","code","message"],"title":"ErrorEnvelope","description":"Enveloppe d'erreur, constante pour tous les cas (voir ``API.md``)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PageMetadata":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"language_original":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Original"},"detected_language_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Detected Language Confidence"},"charset_detected":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charset Detected"},"canonical_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Url"},"estimated_word_count":{"type":"integer","title":"Estimated Word Count","default":0},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","title":"PageMetadata","description":"Métadonnées de la page source."},"PageTranslation":{"properties":{"_type":{"type":"string","title":"Type","default":"page_translation"},"_source_url":{"type":"string","title":"Source Url"},"_request_id":{"type":"string","title":"Request Id"},"_timestamp_ms":{"type":"integer","title":"Timestamp Ms"},"_cache_hit":{"type":"boolean","title":"Cache Hit"},"_version":{"type":"string","title":"Version"},"page_metadata":{"$ref":"#/components/schemas/PageMetadata"},"sections":{"items":{"$ref":"#/components/schemas/Section"},"type":"array","title":"Sections"},"_processing_stats":{"$ref":"#/components/schemas/ProcessingStats"}},"type":"object","required":["_source_url","_request_id","_timestamp_ms","_cache_hit","_version","page_metadata","sections","_processing_stats"],"title":"PageTranslation","description":"Enveloppe du document renvoyé au client."},"ProcessingStats":{"properties":{"total_elements_parsed":{"type":"integer","title":"Total Elements Parsed","default":0},"total_sections_extracted":{"type":"integer","title":"Total Sections Extracted","default":0},"entities_detected":{"type":"integer","title":"Entities Detected","default":0},"code_blocks_found":{"type":"integer","title":"Code Blocks Found","default":0},"tables_found":{"type":"integer","title":"Tables Found","default":0},"removed_tags":{"additionalProperties":{"type":"integer"},"type":"object","title":"Removed Tags"},"time_to_parse_ms":{"type":"integer","title":"Time To Parse Ms","default":0}},"type":"object","title":"ProcessingStats","description":"Métriques de la traduction — diagnostic et suivi de performance."},"Section":{"properties":{"_type":{"type":"string","title":"Type"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"position_in_document":{"type":"integer","title":"Position In Document","default":0},"heading_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Heading Level"},"heading_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heading Text"},"raw_html_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Html Snippet"},"text_normalized":{"type":"string","title":"Text Normalized","default":""},"language_detected":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Detected"},"text_normalized_tabular":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Text Normalized Tabular"},"media":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Media"},"entities_extracted":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Entities Extracted"}},"type":"object","required":["_type"],"title":"Section","description":"Une section sémantique de la page traduite."},"TranslateQuery":{"properties":{"url":{"type":"string","title":"Url"},"format":{"type":"string","title":"Format","default":"jsonl"},"streaming":{"type":"boolean","title":"Streaming","default":false},"cache_ttl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Ttl"},"include_raw":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Raw"}},"type":"object","required":["url"],"title":"TranslateQuery","description":"Paramètres d'une requête de traduction."},"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"}}}}