{"openapi":"3.1.0","info":{"title":"CerCat","version":"sha-0f71bc88"},"paths":{"/v1/search":{"get":{"tags":["public"],"summary":"Search","operationId":"search_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Size"}},{"name":"lang","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"}},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},{"name":"source_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Kind"}},{"name":"explain","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Explain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/suggest":{"get":{"tags":["public"],"summary":"Suggest","description":"Autocompletat: NOMÉS índex lèxic i prefixos (docs/06 §8).\n\nCap embedding, cap rerank, cap crida a proveïdor. És una regla de cost.","operationId":"suggest_v1_suggest_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Q"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":15,"minimum":1,"default":8,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Suggest V1 Suggest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback/click":{"post":{"tags":["public"],"summary":"Feedback Click","operationId":"feedback_click_v1_feedback_click_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClickFeedback"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants":{"get":{"tags":["admin:tenants"],"summary":"List Tenants","operationId":"list_tenants_admin_v1_tenants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Tenants Admin V1 Tenants Get"}}}}}},"post":{"tags":["admin:tenants"],"summary":"Create Tenant","operationId":"create_tenant_admin_v1_tenants_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Tenant Admin V1 Tenants Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}":{"get":{"tags":["admin:tenants"],"summary":"Get Tenant","operationId":"get_tenant_admin_v1_tenants__tenant_ref__get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tenant Admin V1 Tenants  Tenant Ref  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin:tenants"],"summary":"Patch Tenant","operationId":"patch_tenant_admin_v1_tenants__tenant_ref__patch","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Tenant Admin V1 Tenants  Tenant Ref  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:tenants"],"summary":"Delete Tenant","operationId":"delete_tenant_admin_v1_tenants__tenant_ref__delete","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/reindex":{"post":{"tags":["admin:tenants"],"summary":"Reindex Tenant","description":"La reindexació completa des de PostgreSQL és una operació rutinària (I2).","operationId":"reindex_tenant_admin_v1_tenants__tenant_ref__reindex_post","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReindexRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reindex Tenant Admin V1 Tenants  Tenant Ref  Reindex Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/domains":{"get":{"tags":["admin:domains"],"summary":"List Domains","operationId":"list_domains_admin_v1_tenants__tenant_ref__domains_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Domains Admin V1 Tenants  Tenant Ref  Domains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin:domains"],"summary":"Add Domain","operationId":"add_domain_admin_v1_tenants__tenant_ref__domains_post","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Domain Admin V1 Tenants  Tenant Ref  Domains Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}":{"get":{"tags":["admin:domains"],"summary":"Get Domain","operationId":"get_domain_admin_v1_domains__domain_id__get","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Domain Admin V1 Domains  Domain Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin:domains"],"summary":"Patch Domain","operationId":"patch_domain_admin_v1_domains__domain_id__patch","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Domain Admin V1 Domains  Domain Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:domains"],"summary":"Delete Domain","operationId":"delete_domain_admin_v1_domains__domain_id__delete","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/verify":{"post":{"tags":["admin:domains"],"summary":"Verify Domain","operationId":"verify_domain_admin_v1_domains__domain_id__verify_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Domain Admin V1 Domains  Domain Id  Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/crawl":{"post":{"tags":["admin:domains"],"summary":"Trigger Crawl","operationId":"trigger_crawl_admin_v1_domains__domain_id__crawl_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Crawl Admin V1 Domains  Domain Id  Crawl Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/pause":{"post":{"tags":["admin:domains"],"summary":"Pause Domain","operationId":"pause_domain_admin_v1_domains__domain_id__pause_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pause Domain Admin V1 Domains  Domain Id  Pause Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/health":{"get":{"tags":["admin:domains"],"summary":"Domain Health","description":"Salut per host (docs/02 §7), amb alertes de deriva d'extracció (docs/05 §8).","operationId":"domain_health_admin_v1_domains__domain_id__health_get","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Domain Health Admin V1 Domains  Domain Id  Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/drift/{alert_id}/resolve":{"post":{"tags":["admin:domains"],"summary":"Resolve Drift Alert","description":"Tanca una alerta de deriva després de la revisió humana (docs/05 §8).\n\nReactivar el domini (PATCH status=active) i tancar l'alerta torna a armar la\ndetecció: mentre l'alerta és oberta, scan_domain no en dispara una de nova.","operationId":"resolve_drift_alert_admin_v1_domains__domain_id__drift__alert_id__resolve_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}},{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveDriftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Drift Alert Admin V1 Domains  Domain Id  Drift  Alert Id  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/rules/test":{"post":{"tags":["admin:domains"],"summary":"Test Url Rules","description":"Provador de regles (docs/07 §3): diu quina regla afecta un URL i si entraria.\n\nReprodueix EXACTAMENT la decisió del rastrejador (src/crawl/rules.py) més la\nllista blanca de hosts del tenant, perquè les regex deixin de ser una font\nde confusió.","operationId":"test_url_rules_admin_v1_domains__domain_id__rules_test_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__routes__admin_domains__RuleTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Url Rules Admin V1 Domains  Domain Id  Rules Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/seeds":{"get":{"tags":["admin:domains"],"summary":"List Seeds","operationId":"list_seeds_admin_v1_domains__domain_id__seeds_get","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Seeds Admin V1 Domains  Domain Id  Seeds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/domains/{domain_id}/seeds/discover":{"post":{"tags":["admin:domains"],"summary":"Discover Domain Seeds","operationId":"discover_domain_seeds_admin_v1_domains__domain_id__seeds_discover_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Discover Domain Seeds Admin V1 Domains  Domain Id  Seeds Discover Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/url-rules":{"get":{"tags":["admin:content"],"summary":"List Rules","operationId":"list_rules_admin_v1_tenants__tenant_ref__url_rules_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Rules Admin V1 Tenants  Tenant Ref  Url Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin:content"],"summary":"Create Rule","operationId":"create_rule_admin_v1_tenants__tenant_ref__url_rules_post","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Rule Admin V1 Tenants  Tenant Ref  Url Rules Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/url-rules/{rule_id}":{"patch":{"tags":["admin:content"],"summary":"Patch Rule","operationId":"patch_rule_admin_v1_url_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Rule Admin V1 Url Rules  Rule Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:content"],"summary":"Delete Rule","operationId":"delete_rule_admin_v1_url_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/url-rules/test":{"post":{"tags":["admin:content"],"summary":"Test Rules","description":"El provador de la consola (docs/08 §2).","operationId":"test_rules_admin_v1_tenants__tenant_ref__url_rules_test_post","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__routes__admin_content__RuleTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Rules Admin V1 Tenants  Tenant Ref  Url Rules Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/urls":{"post":{"tags":["admin:content"],"summary":"Submit Tenant Urls","operationId":"submit_tenant_urls_admin_v1_tenants__tenant_ref__urls_post","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlSubmission"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Tenant Urls Admin V1 Tenants  Tenant Ref  Urls Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin:content"],"summary":"List Urls","operationId":"list_urls_admin_v1_tenants__tenant_ref__urls_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"domain_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Domain Id"}},{"name":"exclusion_reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclusion Reason"}},{"name":"discovery_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discovery Source"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Urls Admin V1 Tenants  Tenant Ref  Urls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/urls/{url_id}":{"get":{"tags":["admin:content"],"summary":"Get Url","operationId":"get_url_admin_v1_urls__url_id__get","parameters":[{"name":"url_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Url Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Url Admin V1 Urls  Url Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:content"],"summary":"Delete Url","operationId":"delete_url_admin_v1_urls__url_id__delete","parameters":[{"name":"url_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Url Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/urls/{url_id}/refetch":{"post":{"tags":["admin:content"],"summary":"Refetch Url","operationId":"refetch_url_admin_v1_urls__url_id__refetch_post","parameters":[{"name":"url_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Url Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refetch Url Admin V1 Urls  Url Id  Refetch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/urls/{url_id}/reextract":{"post":{"tags":["admin:content"],"summary":"Reextract Url","operationId":"reextract_url_admin_v1_urls__url_id__reextract_post","parameters":[{"name":"url_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Url Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reextract Url Admin V1 Urls  Url Id  Reextract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/documents/{document_id}":{"get":{"tags":["admin:content"],"summary":"Get Document","operationId":"get_document_admin_v1_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Admin V1 Documents  Document Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/documents/{document_id}/chunks":{"get":{"tags":["admin:content"],"summary":"Get Document Chunks","operationId":"get_document_chunks_admin_v1_documents__document_id__chunks_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Chunks Admin V1 Documents  Document Id  Chunks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/documents/{document_id}/raw":{"get":{"tags":["admin:content"],"summary":"Get Document Raw","operationId":"get_document_raw_admin_v1_documents__document_id__raw_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Raw Admin V1 Documents  Document Id  Raw Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/synonyms":{"get":{"tags":["admin:synonyms"],"summary":"List Synonyms","operationId":"list_synonyms_admin_v1_synonyms_get","parameters":[{"name":"tenant","in":"query","required":false,"schema":{"type":"string","default":"global","title":"Tenant"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Synonyms Admin V1 Synonyms Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin:synonyms"],"summary":"Create Synonym","operationId":"create_synonym_admin_v1_synonyms_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynonymCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Synonym Admin V1 Synonyms Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/synonyms/{synonym_id}":{"patch":{"tags":["admin:synonyms"],"summary":"Patch Synonym","operationId":"patch_synonym_admin_v1_synonyms__synonym_id__patch","parameters":[{"name":"synonym_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Synonym Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynonymPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Synonym Admin V1 Synonyms  Synonym Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:synonyms"],"summary":"Delete Synonym","operationId":"delete_synonym_admin_v1_synonyms__synonym_id__delete","parameters":[{"name":"synonym_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Synonym Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/synonyms/{synonym_id}/approve":{"post":{"tags":["admin:synonyms"],"summary":"Approve Synonym","description":"Els llm_suggested no s'apliquen fins que algú els aprova (docs/03 §1.4).","operationId":"approve_synonym_admin_v1_synonyms__synonym_id__approve_post","parameters":[{"name":"synonym_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Synonym Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Synonym Admin V1 Synonyms  Synonym Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/synonyms/expand-test":{"post":{"tags":["admin:synonyms"],"summary":"Expand Test","operationId":"expand_test_admin_v1_synonyms_expand_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpandTest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Expand Test Admin V1 Synonyms Expand Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/dashboard":{"get":{"tags":["admin:system"],"summary":"Dashboard","description":"Agregats del tauler. Sense `tenant` és global; amb slug/id, d'un tenant.","operationId":"dashboard_admin_v1_dashboard_get","parameters":[{"name":"tenant","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dashboard Admin V1 Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/system/health":{"get":{"tags":["admin:system"],"summary":"System Health","operationId":"system_health_admin_v1_system_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Health Admin V1 System Health Get"}}}}}}},"/admin/v1/system/index-metadata":{"get":{"tags":["admin:system"],"summary":"System Index Metadata","description":"Retorna explícitament si hi ha discrepància (I3, docs/08 §2).","operationId":"system_index_metadata_admin_v1_system_index_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Index Metadata Admin V1 System Index Metadata Get"}}}}}}},"/admin/v1/system/providers":{"get":{"tags":["admin:system"],"summary":"System Providers","operationId":"system_providers_admin_v1_system_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Providers Admin V1 System Providers Get"}}}}}}},"/admin/v1/api-keys":{"get":{"tags":["admin:system"],"summary":"List Api Keys","operationId":"list_api_keys_admin_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Api Keys Admin V1 Api Keys Get"}}}}}},"post":{"tags":["admin:system"],"summary":"Create Api Key","operationId":"create_api_key_admin_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Api Key Admin V1 Api Keys Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/api-keys/{key_id}/revoke":{"post":{"tags":["admin:system"],"summary":"Revoke Api Key","operationId":"revoke_api_key_admin_v1_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/jobs/{job_id}":{"get":{"tags":["admin:system"],"summary":"Get Job","operationId":"get_job_admin_v1_jobs__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":{"type":"object","additionalProperties":true,"title":"Response Get Job Admin V1 Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/analytics/zero-results":{"get":{"tags":["admin:system"],"summary":"Analytics Zero Results","description":"La llista de tasques prioritzada del producte (docs/02 §7).","operationId":"analytics_zero_results_admin_v1_tenants__tenant_ref__analytics_zero_results_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytics Zero Results Admin V1 Tenants  Tenant Ref  Analytics Zero Results Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/analytics/top-queries":{"get":{"tags":["admin:system"],"summary":"Analytics Top Queries","operationId":"analytics_top_queries_admin_v1_tenants__tenant_ref__analytics_top_queries_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytics Top Queries Admin V1 Tenants  Tenant Ref  Analytics Top Queries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/analytics/click-positions":{"get":{"tags":["admin:system"],"summary":"Analytics Click Positions","operationId":"analytics_click_positions_admin_v1_tenants__tenant_ref__analytics_click_positions_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytics Click Positions Admin V1 Tenants  Tenant Ref  Analytics Click Positions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/v1/tenants/{tenant_ref}/analytics/latency":{"get":{"tags":["admin:system"],"summary":"Analytics Latency","operationId":"analytics_latency_admin_v1_tenants__tenant_ref__analytics_latency_get","parameters":[{"name":"tenant_ref","in":"path","required":true,"schema":{"type":"string","title":"Tenant Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytics Latency Admin V1 Tenants  Tenant Ref  Analytics Latency Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/login":{"get":{"tags":["admin:console"],"summary":"Login Form","operationId":"login_form_admin_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["admin:console"],"summary":"Login Submit","operationId":"login_submit_admin_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_submit_admin_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/logout":{"get":{"tags":["admin:console"],"summary":"Logout","operationId":"logout_admin_logout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"tags":["admin:console"],"summary":"Dashboard Page","operationId":"dashboard_page_admin_get","parameters":[{"name":"tenant","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tenants":{"get":{"tags":["admin:console"],"summary":"Tenants Page","operationId":"tenants_page_admin_tenants_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/domains":{"get":{"tags":["admin:console"],"summary":"Domains Page","operationId":"domains_page_admin_domains_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/domains/{domain_id}":{"get":{"tags":["admin:console"],"summary":"Domain Page","operationId":"domain_page_admin_domains__domain_id__get","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/domains/{domain_id}/test":{"post":{"tags":["admin:console"],"summary":"Domain Rule Test","operationId":"domain_rule_test_admin_domains__domain_id__test_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_domain_rule_test_admin_domains__domain_id__test_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Scopes"},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant"}},"type":"object","required":["name","scopes"],"title":"ApiKeyCreate"},"Body_domain_rule_test_admin_domains__domain_id__test_post":{"properties":{"test_url":{"type":"string","title":"Test Url"}},"type":"object","required":["test_url"],"title":"Body_domain_rule_test_admin_domains__domain_id__test_post"},"Body_login_submit_admin_login_post":{"properties":{"key":{"type":"string","title":"Key"}},"type":"object","required":["key"],"title":"Body_login_submit_admin_login_post"},"ClickFeedback":{"properties":{"query_id":{"type":"integer","title":"Query Id"},"position":{"type":"integer","minimum":1.0,"title":"Position"},"url":{"type":"string","title":"Url"}},"type":"object","required":["query_id","position","url"],"title":"ClickFeedback"},"DomainCreate":{"properties":{"host":{"type":"string","maxLength":253,"minLength":3,"title":"Host"},"scheme":{"type":"string","pattern":"^https?$","title":"Scheme","default":"https"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"priority":{"type":"integer","title":"Priority","default":100},"politeness":{"additionalProperties":true,"type":"object","title":"Politeness"}},"type":"object","required":["host"],"title":"DomainCreate"},"DomainPatch":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"politeness":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Politeness"},"status":{"anyOf":[{"type":"string","pattern":"^(active|paused)$"},{"type":"null"}],"title":"Status"}},"type":"object","title":"DomainPatch"},"ExpandTest":{"properties":{"q":{"type":"string","title":"Q"},"tenant":{"type":"string","title":"Tenant"}},"type":"object","required":["q","tenant"],"title":"ExpandTest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ReindexRequest":{"properties":{"scope":{"type":"string","pattern":"^(tenant|domain|document)$","title":"Scope","default":"tenant"},"domain_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Domain Id"},"reembed":{"type":"boolean","title":"Reembed","default":false},"reextract":{"type":"boolean","title":"Reextract","default":false}},"type":"object","title":"ReindexRequest"},"ResolveDriftRequest":{"properties":{"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved By"}},"type":"object","title":"ResolveDriftRequest"},"RuleCreate":{"properties":{"pattern":{"type":"string","maxLength":512,"minLength":1,"title":"Pattern"},"action":{"type":"string","pattern":"^(include|exclude)$","title":"Action"},"priority":{"type":"integer","title":"Priority","default":100},"domain_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Domain Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["pattern","action"],"title":"RuleCreate"},"RulePatch":{"properties":{"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"action":{"anyOf":[{"type":"string","pattern":"^(include|exclude)$"},{"type":"null"}],"title":"Action"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"RulePatch"},"SynonymCreate":{"properties":{"term":{"type":"string","maxLength":128,"minLength":1,"title":"Term"},"expansions":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Expansions"},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"bidirectional":{"type":"boolean","title":"Bidirectional","default":true},"source":{"type":"string","pattern":"^(manual|termcat|zero_results)$","title":"Source","default":"manual"}},"type":"object","required":["term","expansions"],"title":"SynonymCreate"},"SynonymPatch":{"properties":{"expansions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Expansions"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"bidirectional":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Bidirectional"}},"type":"object","title":"SynonymPatch"},"TenantCreate":{"properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,62}$","title":"Slug"},"name":{"type":"string","title":"Name"},"ine_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ine Code"},"default_lang":{"type":"string","title":"Default Lang","default":"ca"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"}},"type":"object","required":["slug","name"],"title":"TenantCreate"},"TenantPatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"ine_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ine Code"},"status":{"anyOf":[{"type":"string","pattern":"^(active|suspended|draft)$"},{"type":"null"}],"title":"Status"},"default_lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Lang"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","title":"TenantPatch"},"UrlSubmission":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":1000,"minItems":1,"title":"Urls"},"pinned":{"type":"boolean","title":"Pinned","default":false},"priority":{"type":"string","pattern":"^(high|normal)$","title":"Priority","default":"high"}},"type":"object","required":["urls"],"title":"UrlSubmission"},"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"},"VerifyRequest":{"properties":{"manual_approver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manual Approver"}},"type":"object","title":"VerifyRequest"},"src__api__routes__admin_content__RuleTestRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Urls"}},"type":"object","required":["urls"],"title":"RuleTestRequest"},"src__api__routes__admin_domains__RuleTestRequest":{"properties":{"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url"}},"type":"object","required":["url"],"title":"RuleTestRequest"}}}}