{"openapi":"3.1.0","info":{"title":"TenderSense","description":"AI-driven invisible employee for Greek B2G tenders.","version":"0.3.0"},"paths":{"/api/health":{"get":{"tags":["health"],"summary":"Health","description":"Quick health check for external uptime monitors (UptimeRobot etc.).\n\nReturns 200 + ``status=ok`` if Mongo is reachable, Qdrant has vectors\nand no job has critically failed OR gone stale. External monitors should\nalert on ``status=degraded``.","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api Health Get"}}}}}}},"/api/health/full":{"get":{"tags":["health"],"summary":"Full Health Dashboard","description":"Full pipeline health dashboard — admin only.","operationId":"full_health_dashboard_api_health_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Full Health Dashboard Api Health Full Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/register":{"post":{"tags":["auth"],"summary":"Register","description":"Δημιουργία λογαριασμού. Ο χρήστης ξεκινά με `license_status=pending`\nκαι δεν έχει πρόσβαση μέχρι να ενεργοποιηθεί από τον admin (key ή direct).\n\nΣε κάθε νέα εγγραφή ειδοποιείται ο διαχειριστής (email και/ή Telegram\nαν είναι ρυθμισμένα) με τα στοιχεία του πελάτη, ώστε να εκδώσει κλειδί.","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_api_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["auth"],"summary":"Update Me","description":"Ενημέρωση στοιχείων φορέα (authority profile) — ΜΟΝΟ για φορείς.\n\nΚλείδωμα tenant: η επωνυμία/ΑΦΜ φορέα αλλάζουν ΜΟΝΟ πριν την έγκριση\nadmin (authority_verified). Μετά την έγκριση, αλλαγή = αίτημα στον\nadmin — όχι self-service. Οι αρμοδιότητες/μονάδα μένουν ελεύθερες.","operationId":"update_me_api_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/redeem":{"post":{"tags":["auth"],"summary":"Redeem","description":"Ο χρήστης εισάγει το κλειδί που του στάλθηκε από τον admin\n(αφού πληρώσει το τιμολόγιο).","operationId":"redeem_api_auth_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/start-trial":{"post":{"tags":["auth"],"summary":"Start Trial","description":"14ήμερη δωρεάν δοκιμή (Pro) — self-serve, μία φορά ανά λογαριασμό/ΑΦΜ.","operationId":"start_trial_api_auth_start_trial_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/packages":{"get":{"tags":["auth"],"summary":"Packages","description":"Δημόσια λίστα: πλάνα (με μηνιαία τιμή + self_serve) και διάρκειες\n(με εκπτώσεις) + στοιχεία δικαιούχου (ΟΧΙ IBAN — αυτά ΜΟΝΟ μετά την\nκαταχώριση παραγγελίας, στο /purchase).","operationId":"packages_api_auth_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Packages Api Auth Packages Get"}}}}}}},"/api/auth/purchase":{"post":{"tags":["auth"],"summary":"Create Purchase","description":"Ο πελάτης υποβάλει αίτημα αγοράς (πλάνο × διάρκεια). Δημιουργείται\npurchase request σε status=pending· ο admin εκδίδει κλειδί με το πλάνο.","operationId":"create_purchase_api_auth_purchase_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePurchaseRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Purchase Api Auth Purchase Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/my-purchases":{"get":{"tags":["auth"],"summary":"My Purchases","operationId":"my_purchases_api_auth_my_purchases_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response My Purchases Api Auth My Purchases Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","description":"Δημιουργεί reset request. ΔΕΝ αποκαλύπτει αν το email υπάρχει\n(anti-enumeration). Όταν το SMTP είναι ρυθμισμένο, το reset link\nστέλνεται αυτόματα στον χρήστη — αλλιώς ο admin το στέλνει χειροκίνητα\nαπό το panel (εμπίπτει στο σενάριο χωρίς email πάροχο).","operationId":"forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordPayload"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Forgot Password Api Auth Forgot Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password","description":"Ο χρήστης ολοκληρώνει την επαναφορά μέσω του token.","operationId":"reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Reset Password Api Auth Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingestion/pdf":{"post":{"tags":["ingestion"],"summary":"Ingest Pdf","operationId":"ingest_pdf_api_ingestion_pdf_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ingest_pdf_api_ingestion_pdf_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/ingestion/website":{"post":{"tags":["ingestion"],"summary":"Ingest Website","operationId":"ingest_website_api_ingestion_website_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteIngestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingestion/chat":{"post":{"tags":["ingestion"],"summary":"Ingest Chat","operationId":"ingest_chat_api_ingestion_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/ingestion/sessions/{session_id}":{"get":{"tags":["ingestion"],"summary":"Preview Session","operationId":"preview_session_api_ingestion_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ingestion"],"summary":"Delete Session","description":"Ξ‘ΟΟ‡ΞµΞΉΞΏΞΈΞ­Ο„Ξ·ΟƒΞ· session Ο„ΞΏΟ… Ο‡ΟΞ®ΟƒΟ„Ξ· Ο‡Ο‰ΟΞ―Ο‚ Ο†Ο…ΟƒΞΉΞΊΞ® Ξ΄ΞΉΞ±Ξ³ΟΞ±Ο†Ξ® raw evidence.","operationId":"delete_session_api_ingestion_sessions__session_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingestion/sessions/{session_id}/approve":{"post":{"tags":["ingestion"],"summary":"Approve","operationId":"approve_api_ingestion_sessions__session_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingestion/sessions":{"get":{"tags":["ingestion"],"summary":"List Sessions","description":"Ξ›Ξ―ΟƒΟ„Ξ± Ξ±Ο€Ο Ο„ΞΉΟ‚ Ο€ΟΟΟƒΟ†Ξ±Ο„ΞµΟ‚ ingestion sessions Ο„ΞΏΟ… Ο‡ΟΞ®ΟƒΟ„Ξ· β€” Ξ³ΞΉΞ± Ο„ΞΏ portfolio panel Ο„ΞΏΟ… wizard.","operationId":"list_sessions_api_ingestion_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingestion/sessions/cleanup-failed":{"post":{"tags":["ingestion"],"summary":"Cleanup Failed Sessions","description":"Ξ‘ΟΟ‡ΞµΞΉΞΏΞΈΞ­Ο„Ξ·ΟƒΞ· ΟΞ»Ο‰Ξ½ Ο„Ο‰Ξ½ failed sessions Ο„ΞΏΟ… Ο‡ΟΞ®ΟƒΟ„Ξ· Ο‡Ο‰ΟΞ―Ο‚ Ο†Ο…ΟƒΞΉΞΊΞ® Ξ΄ΞΉΞ±Ξ³ΟΞ±Ο†Ξ®.","operationId":"cleanup_failed_sessions_api_ingestion_sessions_cleanup_failed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cleanup Failed Sessions Api Ingestion Sessions Cleanup Failed Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/catalogs":{"get":{"tags":["catalogs"],"summary":"List Products","operationId":"list_products_api_catalogs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Deleted"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CatalogProduct"},"title":"Response List Products Api Catalogs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalogs/profile":{"get":{"tags":["catalogs"],"summary":"Get Catalog Profile","operationId":"get_catalog_profile_api_catalogs_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProfileResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/catalogs/profile/recompute":{"post":{"tags":["catalogs"],"summary":"Recompute Catalog Profile","operationId":"recompute_catalog_profile_api_catalogs_profile_recompute_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProfileResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/catalogs/profile/roots":{"get":{"tags":["catalogs"],"summary":"Get Manual Roots","description":"Οι ομάδες ΚΗΜΔΗΣ (CPV roots) του χρήστη — χειροκίνητες ή αυτόματες.","operationId":"get_manual_roots_api_catalogs_profile_roots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Manual Roots Api Catalogs Profile Roots Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["catalogs"],"summary":"Set Manual Roots","description":"Ο χρήστης διαλέγει ρητά τις ομάδες ΚΗΜΔΗΣ που τον ενδιαφέρουν.\n\nΚενή λίστα = επιστροφή στο αυτόματο detection. Μετά την αποθήκευση\nτρέχει re-match στο background ώστε τα αποτελέσματα να συμμορφωθούν.","operationId":"set_manual_roots_api_catalogs_profile_roots_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualRootsPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Manual Roots Api Catalogs Profile Roots Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/catalogs/bulk":{"post":{"tags":["catalogs"],"summary":"Bulk Action","operationId":"bulk_action_api_catalogs_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogBulkAction"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogBulkResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/catalogs/{sku}":{"patch":{"tags":["catalogs"],"summary":"Update Product","operationId":"update_product_api_catalogs__sku__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","title":"Sku"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProductUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProduct"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["catalogs"],"summary":"Delete Product","operationId":"delete_product_api_catalogs__sku__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","title":"Sku"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalogs/{sku}/cpv-confirm":{"post":{"tags":["catalogs"],"summary":"Confirm Product Cpv","description":"✓ CPV tick καταλόγου.\n\n- confirmed=True: ο χρήστης συμφωνεί με τα προτεινόμενα CPV\n  (καταγράφεται cpv_confirmed_at — εμπιστοσύνη, όχι αλλαγή βαρών).\n- confirmed=False (untick): ο χρήστης διαφωνεί → ο suggester ξανατρέχει\n  για ΑΥΤΟ το προϊόν και τα CPV ενημερώνονται. ΟΧΙ υποχρεωτικό.","operationId":"confirm_product_cpv_api_catalogs__sku__cpv_confirm_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","title":"Sku"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPVConfirmPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProduct"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalogs/{sku}/restore":{"post":{"tags":["catalogs"],"summary":"Restore Product","operationId":"restore_product_api_catalogs__sku__restore_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","title":"Sku"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogProduct"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/panoptis":{"post":{"tags":["knowledge"],"summary":"Upload Panoptis Files","description":"Ανέβασμα εσωτερικών αρχείων ΠΑΝΟΠΤΗ στην KB (searchable).","operationId":"upload_panoptis_files_api_knowledge_panoptis_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_panoptis_files_api_knowledge_panoptis_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Panoptis Files Api Knowledge Panoptis Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/knowledge/panoptis/search":{"get":{"tags":["knowledge"],"summary":"Search Panoptis Files","description":"Σημασιολογική αναζήτηση στα αρχεία ΠΑΝΟΠΤΗ (E5 embeddings).","operationId":"search_panoptis_files_api_knowledge_panoptis_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":500,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Panoptis Files Api Knowledge Panoptis Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents":{"post":{"tags":["knowledge"],"summary":"Upload Knowledge Documents","operationId":"upload_knowledge_documents_api_knowledge_documents_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_knowledge_documents_api_knowledge_documents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Knowledge Documents Api Knowledge Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["knowledge"],"summary":"List Knowledge Documents","operationId":"list_knowledge_documents_api_knowledge_documents_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Knowledge Documents Api Knowledge Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}":{"get":{"tags":["knowledge"],"summary":"Get Knowledge Document","operationId":"get_knowledge_document_api_knowledge_documents__document_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Knowledge Document Api Knowledge Documents  Document Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/link":{"patch":{"tags":["knowledge"],"summary":"Link Knowledge Document","operationId":"link_knowledge_document_api_knowledge_documents__document_id__link_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductKnowledgeLinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Link Knowledge Document Api Knowledge Documents  Document Id  Link Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/company-wide":{"patch":{"tags":["knowledge"],"summary":"Company Wide Document","description":"Σημειώνει έγγραφο ως ΕΤΑΙΡΙΚΟ (ISO/πιστοποιητικά/πολιτικές) —\nισχύει για όλα τα SKU και τροφοδοτεί το Compliance Matrix.","operationId":"company_wide_document_api_knowledge_documents__document_id__company_wide_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Company Wide Document Api Knowledge Documents  Document Id  Company Wide Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/reprocess":{"post":{"tags":["knowledge"],"summary":"Reprocess Knowledge Document","operationId":"reprocess_knowledge_document_api_knowledge_documents__document_id__reprocess_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reprocess Knowledge Document Api Knowledge Documents  Document Id  Reprocess Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/products":{"get":{"tags":["knowledge"],"summary":"List Products With Knowledge","operationId":"list_products_with_knowledge_api_knowledge_products_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Products With Knowledge Api Knowledge Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/stats":{"get":{"tags":["knowledge"],"summary":"Get Knowledge Stats","operationId":"get_knowledge_stats_api_knowledge_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Knowledge Stats Api Knowledge Stats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/tenders":{"get":{"tags":["tenders"],"summary":"List Tenders","operationId":"list_tenders_api_tenders_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Free-text search in title","title":"Q"},"description":"Free-text search in title"},{"name":"authority_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Tenders Api Tenders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenders/{tender_id}":{"get":{"tags":["tenders"],"summary":"Get Tender","operationId":"get_tender_api_tenders__tender_id__get","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tender Api Tenders  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenders/{tender_id}/summary":{"post":{"tags":["tenders"],"summary":"Generate Summary","description":"Generate (or fetch cached) AI summary for a single tender.","operationId":"generate_summary_api_tenders__tender_id__summary_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Summary Api Tenders  Tender Id  Summary Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/authorities":{"get":{"tags":["authorities"],"summary":"List Authorities","operationId":"list_authorities_api_authorities_get","parameters":[{"name":"has_isupplies","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Isupplies"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Authorities Api Authorities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/authorities/{authority_id}":{"get":{"tags":["authorities"],"summary":"Get Authority","operationId":"get_authority_api_authorities__authority_id__get","parameters":[{"name":"authority_id","in":"path","required":true,"schema":{"type":"string","title":"Authority Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Authority Api Authorities  Authority Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/status":{"get":{"tags":["crawler"],"summary":"Crawler Status","operationId":"crawler_status_api_crawler_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Crawler Status Api Crawler Status Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/crawler/catalog-scan/status":{"get":{"tags":["crawler"],"summary":"Catalog Scan Status","operationId":"catalog_scan_status_api_crawler_catalog_scan_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Catalog Scan Status Api Crawler Catalog Scan Status Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/crawler/run/status":{"get":{"tags":["crawler"],"summary":"Crawler Run Status","operationId":"crawler_run_status_api_crawler_run_status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Crawler Run Status Api Crawler Run Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/{source}/cancel":{"post":{"tags":["crawler"],"summary":"Cancel Crawler Run","operationId":"cancel_crawler_run_api_crawler_run__source__cancel_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Crawler Run Api Crawler Run  Source  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/isupplies":{"post":{"tags":["crawler"],"summary":"Run Isupplies","operationId":"run_isupplies_api_crawler_run_isupplies_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"listing","in":"query","required":false,"schema":{"type":"string","pattern":"^(active|completed)$","default":"active","title":"Listing"}},{"name":"max_pages","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Max Pages"}},{"name":"authority_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Isupplies Api Crawler Run Isupplies Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/enrich":{"post":{"tags":["crawler"],"summary":"Run Enrich","operationId":"run_enrich_api_crawler_run_enrich_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":40,"title":"Batch Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Enrich Api Crawler Run Enrich Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/diavgeia":{"post":{"tags":["crawler"],"summary":"Run Diavgeia","description":"Crawl the national Διαύγεια procurement feed for the last N days.\n\n`fetch_details=True` enriches each notice with budget/CPV/contract type\nvia the per-ΑΔΑ detail endpoint (slower but mandatory for matching).","operationId":"run_diavgeia_api_crawler_run_diavgeia_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":1,"title":"Days"}},{"name":"fetch_details","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Fetch Details"}},{"name":"detail_concurrency","in":"query","required":false,"schema":{"type":"integer","maximum":32,"minimum":1,"default":8,"title":"Detail Concurrency"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Diavgeia Api Crawler Run Diavgeia Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/kimdis":{"post":{"tags":["crawler"],"summary":"Run Kimdis","description":"Crawl public KIMDIS notices from the official unprotected search flow.","operationId":"run_kimdis_api_crawler_run_kimdis_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":1,"title":"Days"}},{"name":"max_records","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Max Records"}},{"name":"fetch_details","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fetch Details"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Kimdis Api Crawler Run Kimdis Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawler/run/eshdis":{"post":{"tags":["crawler"],"summary":"Run Eshdis","description":"Crawl public ESIDIS electronic tenders proven by KIMDIS metadata.","operationId":"run_eshdis_api_crawler_run_eshdis_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":1,"title":"Days"}},{"name":"max_records","in":"query","required":false,"schema":{"type":"integer","maximum":300,"minimum":1,"default":50,"title":"Max Records"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Eshdis Api Crawler Run Eshdis Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches":{"get":{"tags":["matches"],"summary":"List Matches","operationId":"list_matches_api_matches_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.0,"title":"Min Score"}},{"name":"tender_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(score|deadline|value)$","default":"score","title":"Sort"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Authority"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Region"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Source"}},{"name":"cpv_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Cpv Prefix"}},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Value Min"}},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Value Max"}},{"name":"deadline_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":730,"minimum":1},{"type":"null"}],"title":"Deadline Days"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"product_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(product|service)$"},{"type":"null"}],"title":"Product Kind"}},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Expired"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Matches Api Matches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches/stats":{"get":{"tags":["matches"],"summary":"Stats","operationId":"stats_api_matches_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"integer"},"type":"object","title":"Response Stats Api Matches Stats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/matches/rematch/status":{"get":{"tags":["matches"],"summary":"Rematch Status","operationId":"rematch_status_api_matches_rematch_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rematch Status Api Matches Rematch Status Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/matches/rematch/cancel":{"post":{"tags":["matches"],"summary":"Cancel Rematch","operationId":"cancel_rematch_api_matches_rematch_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cancel Rematch Api Matches Rematch Cancel Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/matches/rematch":{"post":{"tags":["matches"],"summary":"Rematch","description":"Queue a re-match for this user.\n\nAI compatibility checks can take minutes, so the HTTP request must not stay\nopen while the full matcher runs. The frontend polls ``/rematch/status``.","operationId":"rematch_api_matches_rematch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rematch Api Matches Rematch Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/matches/{match_id}":{"get":{"tags":["matches"],"summary":"Get Match","operationId":"get_match_api_matches__match_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Match Api Matches  Match Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches/{match_id}/intelligence":{"get":{"tags":["matches"],"summary":"Get Match Intelligence","description":"Match evidence bundle for the inbox detail panel.\n\nBy default this uses cached DeepSeek V4-Pro agent reports, creating any\nmissing reports on demand. Το πλήρες pipeline τρέχει BACKGROUND —\nτο response επιστρέφει άμεσα με ``intel_running=true`` και το UI\npoll-άρει μέχρι ``intel_running=false``.","operationId":"get_match_intelligence_api_matches__match_id__intelligence_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}},{"name":"run_missing","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Run Missing"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Match Intelligence Api Matches  Match Id  Intelligence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches/{match_id}/feedback":{"post":{"tags":["matches"],"summary":"Submit Feedback","operationId":"submit_feedback_api_matches__match_id__feedback_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Feedback Api Matches  Match Id  Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches/{match_id}/outcome":{"post":{"tags":["matches"],"summary":"Submit Outcome","description":"Καταχώρηση έκβασης προσφοράς — Ο ΠΑΡΟΝΟΜΑΣΤΗΣ του σφονδύλου.\n\nΗ καταχώριση ξεκλειδώνει το benchmark της κατηγορίας (ρήτη ανταλλαγή).","operationId":"submit_outcome_api_matches__match_id__outcome_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutcomePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Outcome Api Matches  Match Id  Outcome Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opportunities/refresh":{"post":{"tags":["opportunities"],"summary":"Refresh Opportunities","operationId":"refresh_opportunities_api_opportunities_refresh_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"new","title":"Status"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.45,"title":"Min Score"}},{"name":"max_items","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Max Items"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"min_ai_confidence","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.85,"title":"Min Ai Confidence"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Opportunities Api Opportunities Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opportunities/refresh/status":{"get":{"tags":["opportunities"],"summary":"Refresh Status","operationId":"refresh_status_api_opportunities_refresh_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh Status Api Opportunities Refresh Status Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/opportunities/refresh/cancel":{"post":{"tags":["opportunities"],"summary":"Cancel Refresh","operationId":"cancel_refresh_api_opportunities_refresh_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cancel Refresh Api Opportunities Refresh Cancel Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/opportunities":{"get":{"tags":["opportunities"],"summary":"List Opportunities","operationId":"list_opportunities_api_opportunities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bucket","in":"query","required":false,"schema":{"enum":["all","ready","action_needed","blocked","deadline_risk","high_value","missing_decision"],"type":"string","default":"all","title":"Bucket"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.0,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Authority"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Region"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Source"}},{"name":"cpv_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Cpv Prefix"}},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Value Min"}},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Value Max"}},{"name":"deadline_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":730,"minimum":1},{"type":"null"}],"title":"Deadline Days"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"product_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(product|service)$"},{"type":"null"}],"title":"Product Kind"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(opportunity|score|value|deadline)$","default":"opportunity","title":"Sort"}},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Expired"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Opportunities Api Opportunities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/drafts":{"get":{"tags":["drafts"],"summary":"List Drafts","operationId":"list_drafts_api_drafts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Drafts Api Drafts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/drafts/generate":{"post":{"tags":["drafts"],"summary":"Generate Draft","operationId":"generate_draft_api_drafts_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate Draft Api Drafts Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/drafts/{draft_id}":{"get":{"tags":["drafts"],"summary":"Get Draft","operationId":"get_draft_api_drafts__draft_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Draft Api Drafts  Draft Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["drafts"],"summary":"Update Draft","operationId":"update_draft_api_drafts__draft_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Draft Api Drafts  Draft Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["drafts"],"summary":"Delete Draft","operationId":"delete_draft_api_drafts__draft_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Draft Api Drafts  Draft Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/stream":{"post":{"tags":["chat"],"summary":"Chat Stream Endpoint","operationId":"chat_stream_endpoint_api_chat_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/chat/tools":{"get":{"tags":["chat"],"summary":"List Tools","description":"Inspect available agent tools (for debugging / UI).","operationId":"list_tools_api_chat_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Tools Api Chat Tools Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/chat/sessions":{"get":{"tags":["chat"],"summary":"List Sessions","description":"Recent chat sessions (audit log index) for the user.","operationId":"list_sessions_api_chat_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Sessions Api Chat Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}":{"get":{"tags":["chat"],"summary":"Get Session","description":"Full audit log of one chat session (replayable turns).","operationId":"get_session_api_chat_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Session Api Chat Sessions  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/awards/funding-calls":{"get":{"tags":["awards"],"summary":"Funding Calls","description":"Προσκλήσεις χρηματοδότησης ΕΣΠΑ / Ελλάδα 2.0 + αποφάσεις ένταξης.","operationId":"funding_calls_api_awards_funding_calls_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Κλάδος ICT (π.χ. cybersecurity, cloud)","title":"Sector"},"description":"Κλάδος ICT (π.χ. cybersecurity, cloud)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Funding Calls Api Awards Funding Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/awards/funding-calls/sweep":{"post":{"tags":["awards"],"summary":"Sweep Funding Calls","description":"Χειροκίνητο sweep προσκλήσεων (κανονικά τρέχει ημερήσια 06:00).","operationId":"sweep_funding_calls_api_awards_funding_calls_sweep_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sweep Funding Calls Api Awards Funding Calls Sweep Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/awards/ted-render/{publication_number}":{"get":{"tags":["awards"],"summary":"Ted Render","description":"Επίσημο render TED notice (PDF/HTML) — TED Visualisation API.\n\nΔημόσιο (χωρίς auth): το περιεχόμενο είναι δημόσια δεδομένα TED.","operationId":"ted_render_api_awards_ted_render__publication_number__get","parameters":[{"name":"publication_number","in":"path","required":true,"schema":{"type":"string","title":"Publication Number"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(PDF|HTML)$","default":"PDF","title":"Format"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/awards/search":{"get":{"tags":["awards"],"summary":"Awards Search","operationId":"awards_search_api_awards_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Λέξεις κλειδιά (ελληνικά/αγγλικά)","title":"Q"},"description":"Λέξεις κλειδιά (ελληνικά/αγγλικά)"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Διαύγεια org id (προαιρετικό)","title":"Organization Id"},"description":"Διαύγεια org id (προαιρετικό)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}},{"name":"award_only","in":"query","required":false,"schema":{"type":"boolean","description":"Μόνο αναθέσεις/συμβάσεις","default":true,"title":"Award Only"},"description":"Μόνο αναθέσεις/συμβάσεις"},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Παράκαμψη cache","default":false,"title":"Refresh"},"description":"Παράκαμψη cache"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Awards Search Api Awards Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/awards/decision/{ada}":{"get":{"tags":["awards"],"summary":"Awards Get","operationId":"awards_get_api_awards_decision__ada__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"ada","in":"path","required":true,"schema":{"type":"string","title":"Ada"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Awards Get Api Awards Decision  Ada  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/awards/by-organization/{organization_id}":{"get":{"tags":["awards"],"summary":"Awards By Organization","operationId":"awards_by_organization_api_awards_by_organization__organization_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Awards By Organization Api Awards By Organization  Organization Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/settings/notifications":{"get":{"tags":["settings"],"summary":"Get Notification Prefs","operationId":"get_notification_prefs_api_settings_notifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Notification Prefs Api Settings Notifications Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["settings"],"summary":"Update Notification Prefs","operationId":"update_notification_prefs_api_settings_notifications_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPrefsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Notification Prefs Api Settings Notifications Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/settings/bid-floor":{"get":{"tags":["settings"],"summary":"Get Bid Floor","description":"Enterprise floor προφίλ — κατώτατη αξία έργου.","operationId":"get_bid_floor_api_settings_bid_floor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Bid Floor Api Settings Bid Floor Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["settings"],"summary":"Update Bid Floor","operationId":"update_bid_floor_api_settings_bid_floor_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BidFloorPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Bid Floor Api Settings Bid Floor Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/settings/economics":{"get":{"tags":["settings"],"summary":"Get Economics","description":"Company economics: margins/bid cost/capacity — inputs για EV & optimizer.","operationId":"get_economics_api_settings_economics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Economics Api Settings Economics Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["settings"],"summary":"Update Economics","operationId":"update_economics_api_settings_economics_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backend__api__settings__EconomicsPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Economics Api Settings Economics Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/settings/notifications/test":{"post":{"tags":["settings"],"summary":"Test Channel","operationId":"test_channel_api_settings_notifications_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Test Channel Api Settings Notifications Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/settings/notifications/run-now":{"post":{"tags":["settings"],"summary":"Run Now","description":"Trigger an immediate notification sweep for the current user.","operationId":"run_now_api_settings_notifications_run_now_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Now Api Settings Notifications Run Now Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/settings/match":{"get":{"tags":["settings"],"summary":"Get Match Settings","operationId":"get_match_settings_api_settings_match_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Match Settings Api Settings Match Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["settings"],"summary":"Update Match Settings","operationId":"update_match_settings_api_settings_match_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Match Settings Api Settings Match Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/costs":{"get":{"tags":["admin"],"summary":"Cost Dashboard","description":"Κόστος LLM ανά χρήστη — agent_reports + ingestion + chat.\n\nΤίμια μέτρηση: μόνο ό,τι έχει πραγματικά cost_eur. €/χρήστη/ημέρα\nυπολογίζεται στα τελευταία 7 ημέρες (καλύτερη πρόβλεψη τρέχουσας ροής).","operationId":"cost_dashboard_api_admin_costs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cost Dashboard Api Admin Costs Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"List Users","operationId":"list_users_api_admin_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by email/company","title":"Q"},"description":"Search by email/company"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Users Api Admin Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Get User","operationId":"get_user_api_admin_users__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Api Admin Users  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Update User","description":"Manual override: extend, set status, promote/demote admin, add notes.","operationId":"update_user_api_admin_users__user_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update User Api Admin Users  User Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/verify-authority":{"post":{"tags":["admin"],"summary":"Verify Authority","description":"Εγκρίνει τον φορέα ενός public_authority χρήστη (Authority Profile).\n\nΜετά την έγκριση η επωνυμία/ΑΦΜ ΚΛΕΙΔΩΝΟΥΝ — αλλαγή μόνο από admin.","operationId":"verify_authority_api_admin_users__user_id__verify_authority_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Authority Api Admin Users  User Id  Verify Authority Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/keys":{"post":{"tags":["admin"],"summary":"Issue Key","description":"Δημιουργεί ένα νέο κλειδί — το αντιγράφεις και το στέλνεις στον πελάτη\nαφού πληρώσει το τιμολόγιο που εξέδωσες.","operationId":"issue_key_api_admin_keys_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueKeyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Key Api Admin Keys Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"List Keys","operationId":"list_keys_api_admin_keys_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Keys Api Admin Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/keys/{key_id}":{"delete":{"tags":["admin"],"summary":"Revoke Key","operationId":"revoke_key_api_admin_keys__key_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Revoke Key Api Admin Keys  Key Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/stats":{"get":{"tags":["admin"],"summary":"Admin Stats","operationId":"admin_stats_api_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Stats Api Admin Stats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/llm-usage":{"get":{"tags":["admin"],"summary":"Llm Usage","description":"Κόστος/χρήση LLM ανά ημέρα + status του ημερήσιου kill switch.","operationId":"llm_usage_api_admin_llm_usage_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Llm Usage Api Admin Llm Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fundsense-pilot":{"get":{"tags":["admin"],"summary":"Fundsense Pilot","description":"Μετρικά pilot FundSense: χρήση ανά org (kill criteria του blueprint).","operationId":"fundsense_pilot_api_admin_fundsense_pilot_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Pilot Api Admin Fundsense Pilot Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/purchases":{"get":{"tags":["admin"],"summary":"List Purchases","operationId":"list_purchases_api_admin_purchases_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Purchases Api Admin Purchases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/purchases/{req_id}/fulfill":{"post":{"tags":["admin"],"summary":"Fulfill Purchase","description":"Έκδοση κλειδιού για το purchase request με τη σωστή διάρκεια.\nΔεν ενεργοποιεί τον χρήστη — απλώς δίνει το κλειδί. Ο πελάτης πρέπει\nνα το εισάγει στο /activate για να ξεκινήσει το countdown.","operationId":"fulfill_purchase_api_admin_purchases__req_id__fulfill_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"string","title":"Req Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillPurchaseRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fulfill Purchase Api Admin Purchases  Req Id  Fulfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/purchases/{req_id}/cancel":{"post":{"tags":["admin"],"summary":"Cancel Purchase","operationId":"cancel_purchase_api_admin_purchases__req_id__cancel_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"string","title":"Req Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Cancel Purchase Api Admin Purchases  Req Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/password-resets":{"get":{"tags":["admin"],"summary":"List Resets","description":"Επιστρέφει pending reset tokens μαζί με ready-made link για copy/paste.","operationId":"list_resets_api_admin_password_resets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Resets Api Admin Password Resets Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/discovery/isupplies":{"post":{"tags":["admin"],"summary":"Run Isupplies Discovery","description":"Probe candidate iSupplies subdomains και upsert όσα είναι ζωντανά.\n\nBody (optional): JSON list[str] με extra subdomains (πχ [\"foo\",\"bar\"]).\nQuery params:\n    - use_seed=true: συμπεριλαμβάνει τα DEFAULT_SEED_SUBDOMAINS\n    - persist=false: dry-run (μόνο probe, χωρίς upsert)","operationId":"run_isupplies_discovery_api_admin_discovery_isupplies_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"use_seed","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Use Seed"}},{"name":"persist","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Persist"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Candidates"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Isupplies Discovery Api Admin Discovery Isupplies Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/dedup/sweep":{"post":{"tags":["admin"],"summary":"Admin Dedup Sweep","description":"Πλήρες sweep: extract ΑΔΑ/ΑΔΑΜ keys + merge duplicates.","operationId":"admin_dedup_sweep_api_admin_dedup_sweep_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Dedup Sweep Api Admin Dedup Sweep Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/dedup/backfill":{"post":{"tags":["admin"],"summary":"Admin Dedup Backfill","description":"Συμπληρώνει ``dedup_keys`` σε tenders που δεν τα έχουν.","operationId":"admin_dedup_backfill_api_admin_dedup_backfill_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Batch Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Admin Dedup Backfill Api Admin Dedup Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/dedup/merge":{"post":{"tags":["admin"],"summary":"Admin Dedup Merge","description":"Συγχωνεύει duplicates βάσει υπαρχόντων dedup_keys.","operationId":"admin_dedup_merge_api_admin_dedup_merge_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Dedup Merge Api Admin Dedup Merge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/priority/sweep":{"post":{"tags":["admin"],"summary":"Admin Priority Sweep","description":"Άμεση εκτέλεση σάρωσης priority alerts (πέρα από τον scheduler).","operationId":"admin_priority_sweep_api_admin_priority_sweep_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Priority Sweep Api Admin Priority Sweep Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/operations/health":{"get":{"tags":["admin"],"summary":"Operations Health","description":"Operational source health for the admin dashboard.","operationId":"operations_health_api_admin_operations_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Operations Health Api Admin Operations Health Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/operations/runs":{"get":{"tags":["admin"],"summary":"Operations Runs","description":"Recent crawler run ledger entries.","operationId":"operations_runs_api_admin_operations_runs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(isupplies|diavgeia|kimdis|eshdis|enrich_details|notifications_sweep|agents_auto_runner|isupplies_discovery|dedup_sweep|dedup_backfill|dedup_merge|priority_alerts)$"},{"type":"null"}],"title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operations Runs Api Admin Operations Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coverage":{"get":{"tags":["admin"],"summary":"Coverage Benchmark","description":"Κάλυψη ενεργών διαγωνισμών — ο υπ' αριθμόν 1 δείκτης υγείας.","operationId":"coverage_benchmark_api_admin_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Coverage Benchmark Api Admin Coverage Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/semantic-stats":{"get":{"tags":["admin"],"summary":"Semantic Stats","description":"Semantic layer: πρόοδος NER/relations + entity/edge counts ανά τύπο.","operationId":"semantic_stats_api_admin_semantic_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Semantic Stats Api Admin Semantic Stats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/participation/extract":{"post":{"tags":["admin"],"summary":"Participation Extract","description":"Evidence-locked εξαγωγή συμμετεχόντων από πρακτικό/απόφαση.\n\nΧρήση: paste κειμένου πρακτικού → `tender_participants` (quote-verified).\nΗ αυτόματη άντληση εγγράφων (Διαύγεια/ΕΣΗΔΗΣ) είναι το επόμενο βήμα.","operationId":"participation_extract_api_admin_participation_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipationTextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Participation Extract Api Admin Participation Extract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/plans":{"get":{"tags":["admin"],"summary":"Admin Plans","description":"Ο κατάλογος πλάνων (single source of truth) — για το admin UI.","operationId":"admin_plans_api_admin_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Plans Api Admin Plans Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/matcher-quality":{"get":{"tags":["admin"],"summary":"Matcher Quality","description":"Matcher quality metrics from user feedback (the ground truth).\n\nPrecision = θετικές αποφάσεις / όλες οι αποφάσεις. Θετικές: ενδιαφέρον,\ndraft, υποβολή, νίκη — όποιος έφτασε ως εκεί, το match τού άξιζε.\nGate agreement = how often the AI gate's verdict matched the user's\nfinal call on the same match. Monthly breakdown included for trend.","operationId":"matcher_quality_api_admin_matcher_quality_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":7,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Matcher Quality Api Admin Matcher Quality Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/analyze/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Tender Analyzer","description":"Run (or fetch cached) Tender Analyzer agent. Πάντα DeepSeek V4-Pro.","operationId":"run_tender_analyzer_api_agents_analyze__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."},{"name":"use_my_catalog","in":"query","required":false,"schema":{"type":"boolean","description":"Pass the user's active catalog so the agent fills catalog_matches.","default":true,"title":"Use My Catalog"},"description":"Pass the user's active catalog so the agent fills catalog_matches."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Tender Analyzer Api Agents Analyze  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/pricing/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Price Intelligence","description":"Run (or fetch cached) Price Intelligence agent.\n\nΣυνδυάζει ιστορικά awards από Διαύγεια + DeepSeek V4-Pro για συστάσεις\nτιμής ανά item. Καλό να έχει προηγηθεί Tender Analyzer (για να υπάρχουν\nextracted_items), αλλιώς πέφτει στα items του ίδιου του Tender.","operationId":"run_price_intelligence_api_agents_pricing__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Price Intelligence Api Agents Pricing  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/draft/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Proposal Drafter","description":"Run (or fetch cached) Proposal Drafter agent (DeepSeek V4-Pro).\n\nΣυνθέτει tender-level προσχέδιο πρότασης χρησιμοποιώντας τα reports\nτων Tender Analyzer + Price Intelligence + του καταλόγου του χρήστη.\nΑν λείπουν τα προαπαιτούμενα reports, τα τρέχει αυτόματα.","operationId":"run_proposal_drafter_api_agents_draft__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Proposal Drafter Api Agents Draft  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/proposal/{tender_id}":{"get":{"tags":["agents"],"summary":"Get Proposal Document","description":"«Η προσφορά σου είναι έτοιμη» — το πλήρες έγγραφο πρότασης.\n\nΦέρνει το cached proposal draft (ή το δημιουργεί — ο drafter τρέχει\nτα προαπαιτούμενα μόνος του) και το επιστρέφει με τα στοιχεία του\nδιαγωνισμού και της εταιρείας, έτοιμο για προβολή/εξαγωγή.","operationId":"get_proposal_document_api_agents_proposal__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Proposal Document Api Agents Proposal  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/proposal/{tender_id}/export":{"get":{"tags":["agents"],"summary":"Export Proposal Document","description":"Εξαγωγή της πρότασης σε Word.","operationId":"export_proposal_document_api_agents_proposal__tender_id__export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(docx)$","default":"docx","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/bid-progress/{tender_id}":{"get":{"tags":["agents"],"summary":"Bid Progress","description":"Ζωντανή πρόοδος αλυσίδας Bid/No-Bid (10→99%) — polling από το UI.","operationId":"bid_progress_api_agents_bid_progress__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bid Progress Api Agents Bid Progress  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/reports/{tender_id}":{"get":{"tags":["agents"],"summary":"List Reports","description":"List ALL agent reports for a tender (analyzer / price / drafter).","operationId":"list_reports_api_agents_reports__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Reports Api Agents Reports  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/compliance-matrix/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Compliance Matrix","description":"Run (or fetch cached) Auto Compliance Matrix from Product Knowledge evidence.","operationId":"run_compliance_matrix_api_agents_compliance_matrix__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Compliance Matrix Api Agents Compliance Matrix  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/draft-package/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Draft Package","description":"Run (or fetch cached) evidence-backed Draft Package from Compliance Matrix.","operationId":"run_draft_package_api_agents_draft_package__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Draft Package Api Agents Draft Package  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/bid-decision/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Bid No Bid Decision","description":"Run (or fetch cached) Bid/No-Bid decision from source agent reports.","operationId":"run_bid_no_bid_decision_api_agents_bid_decision__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Bid No Bid Decision Api Agents Bid Decision  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/competitors/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Competitor Intel","description":"Run (or fetch cached) Competitor Intelligence agent (DeepSeek V4-Pro).\n\nAuthority-scoped: αναλύει ποιοι ανάδοχοι κερδίζουν συστηματικά τον φορέα\nτου διαγωνισμού, τι κατηγορίες κυριαρχούν, και πώς να τους ξεπεράσει\nο πελάτης σε αυτόν τον συγκεκριμένο διαγωνισμό.","operationId":"run_competitor_intel_api_agents_competitors__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Competitor Intel Api Agents Competitors  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/deep-research/{tender_id}":{"post":{"tags":["agents"],"summary":"Run Deep Competitor Research","description":"Run (or fetch cached) Deep Competitor Research via Jina DeepSearch.\n\nΚάνει ζωντανή multi-hop έρευνα στο public web (αργό, ~60-180s) για να\nβρει πιθανούς ανταγωνιστές, market positioning, πρόσφατες αναθέσεις και\nστρατηγικές συστάσεις. Συμπληρωματικό στο authority-scoped competitor\nintelligence — εδώ κοιτάμε προς τα έξω, στην πραγματική αγορά.","operationId":"run_deep_competitor_research_api_agents_deep_research__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass cache, re-run agent.","default":false,"title":"Force"},"description":"Bypass cache, re-run agent."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Deep Competitor Research Api Agents Deep Research  Tender Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/events":{"get":{"tags":["agent"],"summary":"List Events","operationId":"list_events_api_agent_events_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Events Api Agent Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/events/seen":{"post":{"tags":["agent"],"summary":"Mark Seen","operationId":"mark_seen_api_agent_events_seen_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MarkSeenPayload"},{"type":"null"}],"title":" Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mark Seen Api Agent Events Seen Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/prediction-stats":{"get":{"tags":["agent"],"summary":"Prediction Stats","description":"ΔΗΜΟΣΙΟ ταμπλό προβλέψεων — «Brier 0.18 σε 140 υποθέσεις, 12 μήνες».\n\nΚανείς στην αγορά δεν δημοσιεύει τον αριθμό του — γι' αυτό τον\nδημοσιεύουμε. Αυτό ενδιαφέρει επενδυτή.","operationId":"prediction_stats_api_agent_prediction_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Prediction Stats Api Agent Prediction Stats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/report.pdf":{"get":{"tags":["agent"],"summary":"Agent Report Pdf","description":"Η έκθεση του πράκτορα σε PDF — ο εμπορικός διευθυντής την προωθεί\nστο αφεντικό του (είναι και εργαλείο πώλησης).","operationId":"agent_report_pdf_api_agent_report_pdf_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Agent Report Pdf Api Agent Report Pdf Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/opportunity-twin":{"get":{"tags":["agent"],"summary":"Opportunity Twin","description":"Opportunity Twin για έναν διαγωνισμό (Command Center, Live Twin στήλη).","operationId":"opportunity_twin_api_agent_opportunity_twin_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"query","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Opportunity Twin Api Agent Opportunity Twin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/win-plans":{"get":{"tags":["agent"],"summary":"List Win Plans","operationId":"list_win_plans_api_agent_win_plans_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_done","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Done"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Win Plans Api Agent Win Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["agent"],"summary":"Create Win Plan","operationId":"create_win_plan_api_agent_win_plans_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinPlanPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Win Plan Api Agent Win Plans Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/win-plans/{action_id}/status":{"post":{"tags":["agent"],"summary":"Update Action Status","operationId":"update_action_status_api_agent_win_plans__action_id__status_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionStatusPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Action Status Api Agent Win Plans  Action Id  Status Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/pre-tender-feed":{"get":{"tags":["agent"],"summary":"Pre Tender Feed","description":"Συνδυαστικό feed: προσκλήσεις ΕΣΠΑ/Ελλάδα 2.0 + Διαύγεια σήματα + TED.\n\nΤο TED φιλτράρεται με το domain (CPV roots) του χρήστη — μόνο ό,τι\nσχετίζεται με το αντικείμενό του.","operationId":"pre_tender_feed_api_agent_pre_tender_feed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pre Tender Feed Api Agent Pre Tender Feed Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/radar":{"get":{"tags":["agent"],"summary":"Radar Feed","description":"🔮 Pre-Tender Radar — cached 60s/user (το βαρύτερο endpoint: 8s+).","operationId":"radar_feed_api_agent_radar_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Κλάδος (π.χ. cybersecurity, medical)","title":"Sector"},"description":"Κλάδος (π.χ. cybersecurity, medical)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Radar Feed Api Agent Radar Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/future-opportunities":{"get":{"tags":["agent"],"summary":"Future Opportunities","description":"Pre-tender ευκαιρίες ΠΡΙΝ δημοσιευθούν (recurrence + λήξεις συμβάσεων).","operationId":"future_opportunities_api_agent_future_opportunities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":12,"title":"Months"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Opportunities Api Agent Future Opportunities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/projects":{"get":{"tags":["agent"],"summary":"Project Graph","description":"Γράφος έργου — συνδεδεμένα έργα (χρηματοδότηση → διαγωνισμός).\n\nΝτετερμινιστικές συνδέσεις με κωδικούς ΟΠΣ/ΣΑΕ/ΑΔΑ/ΑΔΑΜ (confidence 1.0).\nΚάθε έργο: κανονικός τίτλος, φορείς, κωδικοί, stage_history με πηγή\nκαι ημερομηνία κάθε σταδίου.","operationId":"project_graph_api_agent_projects_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Φίλτρο σταδίου (π.χ. included, tendered)","title":"Stage"},"description":"Φίλτρο σταδίου (π.χ. included, tendered)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Project Graph Api Agent Projects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/twins":{"get":{"tags":["agent"],"summary":"Future Twins","description":"Future Tender Twins — προβλεπόμενοι διαγωνισμοί πριν τη δημοσίευση.\n\nΤαξινομημένα με AI relevance gate: πρώτα ό,τι κρίθηκε σχετικό με τον\nΚΑΤΑΛΟΓΟ του χρήστη (cache ανά twin), μετά τα λοιπά.","operationId":"future_twins_api_agent_twins_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Twins Api Agent Twins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/twins/health":{"get":{"tags":["agent"],"summary":"Twins Health","description":"Ο σφυγμός της αλυσίδας δεδομένων — για να βλέπεις ότι ΜΑΖΕΥΟΥΜΕ.","operationId":"twins_health_api_agent_twins_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Twins Health Api Agent Twins Health Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/twins/report":{"get":{"tags":["agent"],"summary":"Twins Report","description":"Enterprise έκθεση — το χαρτοφυλάκιο των Future Twins (HTML-ready).","operationId":"twins_report_api_agent_twins_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Twins Report Api Agent Twins Report Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/twins/{project_key}":{"get":{"tags":["agent"],"summary":"Future Twin","description":"Το twin ενός έργου — παράγεται αν δεν υπάρχει (deterministic, cached).","operationId":"future_twin_api_agent_twins__project_key__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Ξαναγέννησε το twin τώρα","default":false,"title":"Refresh"},"description":"Ξαναγέννησε το twin τώρα"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Twin Api Agent Twins  Project Key  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/twins/{project_key}/analysis":{"get":{"tags":["agent"],"summary":"Future Twin Analysis","description":"Capability Compiler: twin vs κατάλογος/ιστορικό σου → κενά + ετοιμότητα.","operationId":"future_twin_analysis_api_agent_twins__project_key__analysis_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Twin Analysis Api Agent Twins  Project Key  Analysis Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/twins/{project_key}/resolution":{"get":{"tags":["agent"],"summary":"Future Twin Resolution","description":"Η επίλυση του twin — τι προέβλεψε vs τι δημοσιεύτηκε πραγματικά.","operationId":"future_twin_resolution_api_agent_twins__project_key__resolution_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Twin Resolution Api Agent Twins  Project Key  Resolution Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/twins/{project_key}/action-plan":{"post":{"tags":["agent"],"summary":"Future Twin Action Plan","description":"Capability Action Plan: τα gaps γίνονται PROPOSED δράσεις με deadline.","operationId":"future_twin_action_plan_api_agent_twins__project_key__action_plan_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Future Twin Action Plan Api Agent Twins  Project Key  Action Plan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/actions/{action_id}/approve":{"post":{"tags":["agent"],"summary":"Approve Action","description":"Ανθρώπινη έγκριση δράσης: proposed → pending (ενεργή).","operationId":"approve_action_api_agent_actions__action_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Action Api Agent Actions  Action Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/portfolio/run":{"post":{"tags":["agent"],"summary":"Portfolio Run","description":"Portfolio Brain — ντετερμινιστική βελτιστοποίηση χαρτοφυλακίου.","operationId":"portfolio_run_api_agent_portfolio_run_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Portfolio Run Api Agent Portfolio Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/transitions":{"get":{"tags":["agent"],"summary":"Transition Stats","description":"Πίνακας μεταβάσεων — μετρημένες διάρκειες σταδίων (διάμεσος, P25-P75, n).","operationId":"transition_stats_api_agent_transitions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Transition Stats Api Agent Transitions Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/publication-probability":{"get":{"tags":["agent"],"summary":"Publication Probability","description":"P(προκήρυξη) με αρνητικά δείγματα — ο παρονομαστής που δεν έχει κανείς.","operationId":"publication_probability_api_agent_publication_probability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Publication Probability Api Agent Publication Probability Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/publication-forecast":{"get":{"tags":["agent"],"summary":"Publication Forecast","description":"Αναμενόμενες προκηρύξεις για μισές αλυσίδες (με n και μέθοδο).","operationId":"publication_forecast_api_agent_publication_forecast_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Publication Forecast Api Agent Publication Forecast Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/review-queue":{"get":{"tags":["agent"],"summary":"Review Queue","description":"Ουρά ανθρώπινου ελέγχου — αβέβαια ζεύγη εγγράφου↔έργου (0.60-0.80).","operationId":"review_queue_api_agent_review_queue_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Review Queue Api Agent Review Queue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/review-queue/decide":{"post":{"tags":["agent"],"summary":"Review Queue Decide","description":"Ανθρώπινη απόφαση: confirm (σύνδεση) ή reject (όχι σύνδεση).\n\nΚάθε απόφαση είναι εκπαιδευτικό δείγμα — μέρος της τάφρου.","operationId":"review_queue_decide_api_agent_review_queue_decide_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Review Queue Decide Api Agent Review Queue Decide Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/simulate":{"post":{"tags":["agent"],"summary":"Simulate Win","operationId":"simulate_win_api_agent_simulate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulatePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Simulate Win Api Agent Simulate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/supplier-profile":{"get":{"tags":["agent"],"summary":"Get Supplier Profile","operationId":"get_supplier_profile_api_agent_supplier_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Supplier Profile Api Agent Supplier Profile Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["agent"],"summary":"Put Supplier Profile","operationId":"put_supplier_profile_api_agent_supplier_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierProfilePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Supplier Profile Api Agent Supplier Profile Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/agent/economics":{"get":{"tags":["agent"],"summary":"Get Economics","description":"Τα οικονομικά του προμηθευτή (user-input) — ποτέ εφεύρεση defaults.","operationId":"get_economics_api_agent_economics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Economics Api Agent Economics Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["agent"],"summary":"Put Economics","operationId":"put_economics_api_agent_economics_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backend__api__agent_events__EconomicsPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Economics Api Agent Economics Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/analytics/pipeline":{"get":{"tags":["analytics"],"summary":"Pipeline Overview","description":"Return bid-pipeline counts and conversion rates for the user.","operationId":"pipeline_overview_api_analytics_pipeline_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":7,"description":"Lookback window in days","default":90,"title":"Days"},"description":"Lookback window in days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pipeline Overview Api Analytics Pipeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/trend":{"get":{"tags":["analytics"],"summary":"Monthly Trend","description":"Return monthly matched / submitted / won counts for trend chart.","operationId":"monthly_trend_api_analytics_trend_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":12,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Monthly Trend Api Analytics Trend Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/top-authorities":{"get":{"tags":["analytics"],"summary":"Top Authorities","description":"Return authorities with the most matches (won opportunities).","operationId":"top_authorities_api_analytics_top_authorities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":7,"default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Top Authorities Api Analytics Top Authorities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/exports/matches":{"get":{"tags":["exports"],"summary":"Export Matches","description":"Export the current user's matches as .xlsx or .csv.","operationId":"export_matches_api_exports_matches_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(xlsx|csv)$","default":"xlsx","title":"Format"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: new, interested, drafted, submitted, won, lost","title":"Status"},"description":"Filter: new, interested, drafted, submitted, won, lost"},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/exports/tenders":{"get":{"tags":["exports"],"summary":"Export Tenders","description":"Export all active tenders as .xlsx or .csv.","operationId":"export_tenders_api_exports_tenders_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(xlsx|csv)$","default":"xlsx","title":"Format"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/deadlines.ics":{"get":{"tags":["calendar"],"summary":"Deadline Calendar","description":"Return an .ics calendar file with upcoming tender deadlines from the user's matches.","operationId":"deadline_calendar_api_calendar_deadlines_ics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Match status filter (interested, drafted, submitted)","title":"Status"},"description":"Match status filter (interested, drafted, submitted)"},{"name":"days_ahead","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":7,"default":60,"title":"Days Ahead"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/average-awards":{"get":{"tags":["bi"],"summary":"Average Awards","description":"Μέσες αξίες αναθέσεων ανά θεματική — benchmark προσφορών υπηρεσιών.","operationId":"average_awards_api_bi_average_awards_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Θεματική ή CPV prefix","title":"Q"},"description":"Θεματική ή CPV prefix"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Average Awards Api Bi Average Awards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/expiries":{"get":{"tags":["bi"],"summary":"Expiries","description":"Ραντάρ λήξης συμβάσεων (ΚΗΜΔΗΣ) — μόνο ανανεώσιμες (≥90 ημέρες, ≥€30k).","operationId":"expiries_api_bi_expiries_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Query"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Cpv"}},{"name":"min_days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":0,"default":0,"title":"Min Days"}},{"name":"max_days","in":"query","required":false,"schema":{"type":"integer","maximum":1095,"minimum":1,"default":365,"title":"Max Days"}},{"name":"user_scope","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"User Scope"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Expiries Api Bi Expiries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/recurring":{"get":{"tags":["bi"],"summary":"Recurring","description":"Περιοδικές προμήθειες: ίδιος φορέας + ίδια CPV οικογένεια που επανεμφανίζεται.\n\n«Ο φορέας Χ προκηρύσσει καθαριότητα κάθε 12 μήνες εδώ και N χρόνια —\nεπόμενη αναμενόμενη προκήρυξη, κάτοχος, μέση αξία.»","operationId":"recurring_api_bi_recurring_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Query"}},{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Cpv"}},{"name":"min_appearances","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":10,"minimum":2},{"type":"null"}],"title":"Min Appearances"}},{"name":"user_scope","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"User Scope"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recurring Api Bi Recurring Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/benchmarks":{"get":{"tags":["bi"],"summary":"Benchmarks","description":"Ιστορικές τιμές ανά μονάδα από τις συμβάσεις ΚΗΜΔΗΣ.","operationId":"benchmarks_api_bi_benchmarks_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Query"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Benchmarks Api Bi Benchmarks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/market-share":{"get":{"tags":["bi"],"summary":"Market Share","description":"Μερίδιο αγοράς ανά προμηθευτή (ΑΦΜ) / CPV / φορέα / έτος.","operationId":"market_share_api_bi_market_share_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Cpv"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":2015},{"type":"null"}],"title":"Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"user_scope","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"User Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Market Share Api Bi Market Share Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/competitor":{"get":{"tags":["bi"],"summary":"Competitor Profile","description":"Προφίλ ανταγωνιστή από τις συμβάσεις ΚΗΜΔΗΣ (+ΓΕΜΗ αν υπάρχει).","operationId":"competitor_profile_api_bi_competitor_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Company"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Competitor Profile Api Bi Competitor Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/payments":{"get":{"tags":["bi"],"summary":"Payment Behavior","description":"«Πόσες μέρες κάνει πραγματικά ο φορέας να πληρώσει;» — από εντολές\nπληρωμών ΚΗΜΔΗΣ συνδεδεμένες με συμβάσεις.","operationId":"payment_behavior_api_bi_payments_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"narrate_top","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Narrate Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Payment Behavior Api Bi Payments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/payments/narrate":{"get":{"tags":["bi"],"summary":"Payments Narrate","description":"AI ερμηνεία για ΣΥΓΚΕΚΡΙΜΕΝΟ φορέα (per-row ✨) — ονομαστικά.","operationId":"payments_narrate_api_bi_payments_narrate_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_key","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":40,"title":"Org Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Payments Narrate Api Bi Payments Narrate Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/discounts":{"get":{"tags":["bi"],"summary":"Discounts","description":"«Πόσο κάτω από τον προϋπολογισμό κλείνει ο νικητής;» Ανά φορέα × CPV\n× έτος. Με budget= δίνουμε AI τιμή-στόχο για νέο διαγωνισμό.","operationId":"discounts_api_bi_discounts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Cpv"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":2015},{"type":"null"}],"title":"Year"}},{"name":"budget","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10000000000,"exclusiveMinimum":0},{"type":"null"}],"title":"Budget"}},{"name":"user_scope","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"User Scope"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Discounts Api Bi Discounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/incumbency":{"get":{"tags":["bi"],"summary":"Incumbency","description":"«Πόσο πολιορκήσιμο είναι το φέουδο;» Σερί συνεχόμενων νικών ανά\nφορέα × CPV — bid/no-bid με αριθμούς αντί προαίσθημα.","operationId":"incumbency_api_bi_incumbency_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Cpv"}},{"name":"authority","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Authority"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"narrate_top","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Narrate Top"}},{"name":"user_scope","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"User Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Incumbency Api Bi Incumbency Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/incumbency/narrate":{"get":{"tags":["bi"],"summary":"Incumbency Narrate","description":"AI γνώμη για ΣΥΓΚΕΚΡΙΜΕΝΟ ζεύγος φορέα×κατηγορίας (per-row ✨).","operationId":"incumbency_narrate_api_bi_incumbency_narrate_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_key","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":40,"title":"Org Key"}},{"name":"cpv","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":10,"title":"Cpv"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Incumbency Narrate Api Bi Incumbency Narrate Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/whitespots":{"get":{"tags":["bi"],"summary":"White Spots","description":"«Φορείς που αγόρασαν τις κατηγορίες σου αλλά ποτέ από εσένα.»\n\nΚαθαρή αριθμητική συνόλων: καταλόγοι χρήστη → CPV roots → φορείς με\nσυμβάσεις σε αυτά τα CPV τους τελευταίους μήνες → φορείς όπου το ΑΦΜ\nτου χρήστη δεν εμφανίζεται ΠΟΤΕ στους αναδόχους.","operationId":"white_spots_api_bi_whitespots_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":6,"default":24,"title":"Months"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response White Spots Api Bi Whitespots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/network":{"get":{"tags":["bi"],"summary":"Jv Network","description":"«Ποιος συμπράττει με ποιον;» Ego-network εταιρείας από κοινές\nαναθέσεις στο ΚΗΜΔΗΣ.","operationId":"jv_network_api_bi_network_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Company"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Jv Network Api Bi Network Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/restrictiveness":{"get":{"tags":["bi"],"summary":"Restrictiveness","description":"«Πόσο στενές είναι οι προδιαγραφές;» — AI διαβάζει τη διακήρυξη,\nμετράμε πόσοι προμηθευτές έχουν ιστορικά κερδίσει με αντίστοιχα CPV.\n\nΟυδέτερη διατύπωση («πλάτος ανταγωνισμού»), ποτέ αξιολογικές κρίσεις.","operationId":"restrictiveness_api_bi_restrictiveness_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"adam","in":"query","required":true,"schema":{"type":"string","minLength":5,"maxLength":40,"title":"Adam"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restrictiveness Api Bi Restrictiveness Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bi/outcome-benchmark":{"get":{"tags":["bi"],"summary":"Outcome Benchmark","description":"Benchmark έκβασης κατηγορίας — ΞΕΚΛΕΙΔΩΝΕΤΑΙ μόνο με συνεισφορά.\n\nΟ παρονομαστής: τα outcomes των πελατών (ηττημένες προσφορές που το\nΚΗΜΔΗΣ δεν δημοσιεύει). Ρητή ανταλλαγή: βλέπεις το benchmark μόνο αν\nέχεις καταχωρίσει τουλάχιστον ένα δικό σου αποτέλεσμα.","operationId":"outcome_benchmark_api_bi_outcome_benchmark_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cpv","in":"query","required":true,"schema":{"type":"string","minLength":6,"maxLength":30,"title":"Cpv"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Outcome Benchmark Api Bi Outcome Benchmark Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/authority/overview":{"get":{"tags":["authority"],"summary":"Overview","description":"Η πλήρης εικόνα του φορέα: στατιστικά, έργα, λήξεις, προθεσμίες, alerts.","operationId":"overview_api_authority_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Overview Api Authority Overview Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/authority/graph-feedback":{"post":{"tags":["authority"],"summary":"Graph Feedback","description":"Δήλωση του φορέα για έργο του γράφου.\n\nconfirm_tendered: ο φορέας βεβαιώνει ότι το έργο ΠΡΟΚΗΡΥΧΘΗΚΕ (μπορεί\nνα δώσει ΑΔΑΜ) — μπαίνει στάδιο «tendered» με source=authority_feedback,\nconfidence 0.9 (μαρτυρία φορέα, ΟΧΙ ντετερμινιστική σύνδεση κωδικών —\nακριβώς επειδή δεν είμαστε σίγουροι ότι ο ΑΔΑΜ ανήκει εδώ). Ο κανόνας\n«confidence 1.0 μόνο για κωδικούς» παραμένει.\nreject_project: το έργο ΔΕΝ ανήκει στον φορέα (ψευδής συγχώνευση) —\nσημειώνεται, ΔΕΝ σβήνεται (διαφάνεια).","operationId":"graph_feedback_api_authority_graph_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphFeedbackPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Graph Feedback Api Authority Graph Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/authority/profile":{"get":{"tags":["authority"],"summary":"Get Authority Profile","description":"Το Authority Profile του φορέα — εναλλακτικές ονομασίες, μονάδες,\nεποπτεύων φορέας. Αυτά ΟΡΙΖΟΥΝ ποια έγγραφα αποδίδονται στον φορέα.","operationId":"get_authority_profile_api_authority_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Authority Profile Api Authority Profile Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["authority"],"summary":"Update Authority Profile","description":"Ενημέρωση εναλλακτικών ονομασιών/μονάδων/εποπτεύοντα — ο φορέας\nδηλώνει ΠΩΣ ΕΜΦΑΝΙΖΕΤΑΙ στα δημόσια έγγραφα ώστε τα έργα του να\nεντοπίζονται πλήρως. Η επίσημη επωνυμία/ΑΦΜ δεν αλλάζουν εδώ.","operationId":"update_authority_profile_api_authority_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorityProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Authority Profile Api Authority Profile Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/authority/backfill":{"post":{"tags":["authority"],"summary":"Authority Backfill Start","description":"Εισαγωγή ιστορικού φορέα (Διαύγεια 2 έτη) — γεμίζει τον γράφο του.","operationId":"authority_backfill_start_api_authority_backfill_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"years","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":2,"title":"Years"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Authority Backfill Start Api Authority Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/authority/backfill/status":{"get":{"tags":["authority"],"summary":"Authority Backfill Status","operationId":"authority_backfill_status_api_authority_backfill_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Authority Backfill Status Api Authority Backfill Status Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/authority/projects/{project_key}/twin":{"get":{"tags":["authority"],"summary":"Authority Project Twin","description":"Project Twin — ο ψηφιακός φάκελος νοημοσύνης ΕΝΟΣ έργου του φορέα.\n\nTimeline (χρονολογικό — από το replay), έγγραφα/κωδικοί, συμβάσεις,\nπληρωμές, audit από το ledger. Read-only.","operationId":"authority_project_twin_api_authority_projects__project_key__twin_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Authority Project Twin Api Authority Projects  Project Key  Twin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/authority/export":{"get":{"tags":["authority"],"summary":"Export Doc","description":"Εξαγωγές φορέα: έκθεση (docx), πίνακες (xlsx), αναφορά (pdf).","operationId":"export_doc_api_authority_export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"report","title":"Type"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"docx","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/graph/events/compare":{"get":{"tags":["graph"],"summary":"Graph Events Compare","description":"DoD Ε2: replay vs rebuild — πόσο συμφωνούν (read-only).","operationId":"graph_events_compare_api_graph_events_compare_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":10,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Graph Events Compare Api Graph Events Compare Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/graph/events/{project_key}":{"get":{"tags":["graph"],"summary":"Graph Project Timeline","description":"Το χρονολόγιο ΕΝΟΣ έργου από τα events (replay όψη, read-only).","operationId":"graph_project_timeline_api_graph_events__project_key__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Graph Project Timeline Api Graph Events  Project Key  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/graph/events":{"get":{"tags":["graph"],"summary":"Graph Events","description":"«Τι άλλαξε στον πυρήνα τις τελευταίες Ν ώρες» — read-only diff\nαπό το immutable event ledger (Φάση Α, Ε1).","operationId":"graph_events_api_graph_events_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Hours"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Graph Events Api Graph Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/graph":{"get":{"tags":["graph"],"summary":"Graph Data","operationId":"graph_data_api_graph_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"}},{"name":"authority_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Name"}},{"name":"include_authorities","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Authorities"}},{"name":"view","in":"query","required":false,"schema":{"type":"string","pattern":"^(live|all)$","default":"live","title":"View"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":10,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Graph Data Api Graph Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/today":{"get":{"tags":["today"],"summary":"Today Briefing","operationId":"today_briefing_api_today_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Today Briefing Api Today Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/actions":{"get":{"tags":["actions"],"summary":"Actions List","description":"Οι προτάσεις του χρήστη — proposed/approved/rejected/expired.","operationId":"actions_list_api_actions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/actions/{action_id}/approve":{"post":{"tags":["actions"],"summary":"Actions Approve","description":"Ανθρώπινη έγκριση — μόνο ο ιδιοκτήτης εγκρίνει τη δική του ενέργεια.","operationId":"actions_approve_api_actions__action_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/actions/{action_id}/reject":{"post":{"tags":["actions"],"summary":"Actions Reject","description":"Ανθρώπινη απόρριψη — μόνο ο ιδιοκτήτης απορρίπτει τη δική του ενέργεια.","operationId":"actions_reject_api_actions__action_id__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/health":{"get":{"tags":["public-v1"],"summary":"V1 Health","description":"Έκδοση του Public API — για εξωτερικά συστήματα.","operationId":"v1_health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/events":{"get":{"tags":["public-v1"],"summary":"V1 Events","description":"«Τι άλλαξε στον πυρήνα» — append-only events (diff σε <1s).","operationId":"v1_events_api_v1_events_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"since_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Since Hours"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_key}":{"get":{"tags":["public-v1"],"summary":"V1 Project Timeline","description":"Το χρονολόγιο ΕΝΟΣ έργου από το replay (ο πυρήνας, όχι η όψη).","operationId":"v1_project_timeline_api_v1_projects__project_key__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_key","in":"path","required":true,"schema":{"type":"string","title":"Project Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks":{"get":{"tags":["public-v1"],"summary":"V1 Webhooks List","description":"Τα καταχωρημένα webhooks του χρήστη.","operationId":"v1_webhooks_list_api_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["public-v1"],"summary":"V1 Webhooks Register","description":"Καταχώρηση webhook — ο πελάτης λαμβάνει συμβάντα του πυρήνα.","operationId":"v1_webhooks_register_api_v1_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/keys":{"get":{"tags":["public-v1"],"summary":"V1 Keys List","operationId":"v1_keys_list_api_v1_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["public-v1"],"summary":"V1 Keys Create","description":"Δημιουργία API key για εξωτερικά συστήματα — το secret εμφανίζεται ΜΙΑ φορά.","operationId":"v1_keys_create_api_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/keys/{key_id}":{"delete":{"tags":["public-v1"],"summary":"V1 Keys Revoke","operationId":"v1_keys_revoke_api_v1_keys__key_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/modules":{"get":{"tags":["public-v1"],"summary":"V1 Modules List","description":"Κατάλογος modules (marketplace) — ΔΗΜΟΣΙΟΣ: μόνο manifests\n(name/slug/version/description/actions), κανένα ευαίσθητο δεδομένο.","operationId":"v1_modules_list_api_v1_modules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["public-v1"],"summary":"V1 Modules Register","description":"Καταχώρηση module που μιλάει το Action Protocol.","operationId":"v1_modules_register_api_v1_modules_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleManifest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/external/events":{"get":{"tags":["public-v1"],"summary":"V1 External Events","description":"Δημόσιο endpoint ΜΟΝΟ με API key — η «πόρτα» για εξωτερικά συστήματα.","operationId":"v1_external_events_api_v1_external_events_get","parameters":[{"name":"since_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Since Hours"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/external/feedback":{"post":{"tags":["public-v1"],"summary":"V1 External Feedback","description":"Εξωτερικό σύστημα γράφει feedback — γίνεται typed action στον ιδιοκτήτη.\n\nΚλείνει τον κύκλο του οικοσυστήματος: read events → act → write back —\nχωρίς ανθρώπινη μεσολάβηση, με πλήρες audit (ledger + typed_actions).","operationId":"v1_external_feedback_api_v1_external_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalFeedback"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/{webhook_id}":{"delete":{"tags":["public-v1"],"summary":"V1 Webhooks Delete","description":"Απενεργοποίηση webhook (ποτέ hard delete — audit).","operationId":"v1_webhooks_delete_api_v1_webhooks__webhook_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/data-coverage":{"get":{"tags":["public"],"summary":"Public Data Coverage","description":"Live κάλυψη δεδομένων — δημόσιο, για μηχανές και ανθρώπους.","operationId":"public_data_coverage_api_public_data_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public/stats":{"get":{"tags":["public"],"summary":"Public Stats","description":"Compact, live νούμερα για το landing (ίδια cache με το coverage).\n\nΜόνο μετρήσεις — κανένα δεδομένο χρήστη/πελάτη.","operationId":"public_stats_api_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public/org-context":{"get":{"tags":["public"],"summary":"Org Context","description":"Branding org για το τρέχον Host (public, χωρίς auth).\n\nΕπιστρέφει ΜΟΝΟ slug/name/edition — ΠΟΤΕ domains/emails/notes.","operationId":"org_context_api_public_org_context_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Org Context Api Public Org Context Get"}}}}}}},"/api/bid-rooms":{"post":{"tags":["bid-rooms"],"summary":"Bid Rooms Create","description":"«Convert Opportunity → Bid Room» — δημιουργία από διαγωνισμό.","operationId":"bid_rooms_create_api_bid_rooms_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BidRoomCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["bid-rooms"],"summary":"Bid Rooms List","operationId":"bid_rooms_list_api_bid_rooms_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bid-rooms/{bid_room_id}":{"get":{"tags":["bid-rooms"],"summary":"Bid Rooms Get","operationId":"bid_rooms_get_api_bid_rooms__bid_room_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bid_room_id","in":"path","required":true,"schema":{"type":"string","title":"Bid Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bid-rooms/{bid_room_id}/team":{"patch":{"tags":["bid-rooms"],"summary":"Bid Rooms Team","operationId":"bid_rooms_team_api_bid_rooms__bid_room_id__team_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bid_room_id","in":"path","required":true,"schema":{"type":"string","title":"Bid Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bid-rooms/{bid_room_id}/tasks":{"patch":{"tags":["bid-rooms"],"summary":"Bid Rooms Task","operationId":"bid_rooms_task_api_bid_rooms__bid_room_id__tasks_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bid_room_id","in":"path","required":true,"schema":{"type":"string","title":"Bid Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bid-rooms/{bid_room_id}/transition":{"post":{"tags":["bid-rooms"],"summary":"Bid Rooms Transition","description":"Μετάβαση κατάστασης — με έγκριση όπου απαιτεί η μηχανή.","operationId":"bid_rooms_transition_api_bid_rooms__bid_room_id__transition_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bid_room_id","in":"path","required":true,"schema":{"type":"string","title":"Bid Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms":{"post":{"tags":["contract-rooms"],"summary":"Contract Rooms Create","description":"«Convert Winning Bid → Contract Room» — από Bid Room submitted/won.","operationId":"contract_rooms_create_api_contract_rooms_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contract-rooms"],"summary":"Contract Rooms List","operationId":"contract_rooms_list_api_contract_rooms_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms/{contract_id}":{"get":{"tags":["contract-rooms"],"summary":"Contract Rooms Get","operationId":"contract_rooms_get_api_contract_rooms__contract_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms/{contract_id}/obligations":{"post":{"tags":["contract-rooms"],"summary":"Contract Obligation Add","operationId":"contract_obligation_add_api_contract_rooms__contract_id__obligations_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObligationAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["contract-rooms"],"summary":"Contract Obligation Done","operationId":"contract_obligation_done_api_contract_rooms__contract_id__obligations_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObligationDone"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms/{contract_id}/payments":{"post":{"tags":["contract-rooms"],"summary":"Contract Payment Add","operationId":"contract_payment_add_api_contract_rooms__contract_id__payments_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms/{contract_id}/guarantees":{"post":{"tags":["contract-rooms"],"summary":"Contract Guarantee Add","operationId":"contract_guarantee_add_api_contract_rooms__contract_id__guarantees_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuaranteeAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contract-rooms/{contract_id}/transition":{"post":{"tags":["contract-rooms"],"summary":"Contract Transition","description":"Μετάβαση: active↔modified, expiring→renewed/ended — με εγκρίσεις.","operationId":"contract_transition_api_contract_rooms__contract_id__transition_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contract_id","in":"path","required":true,"schema":{"type":"string","title":"Contract Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cockpit":{"get":{"tags":["cockpit"],"summary":"Cockpit View","operationId":"cockpit_view_api_cockpit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cockpit View Api Cockpit Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/capabilities":{"get":{"tags":["capabilities"],"summary":"Get Capabilities","operationId":"get_capabilities_api_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Capabilities Api Capabilities Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["capabilities"],"summary":"Put Capabilities","operationId":"put_capabilities_api_capabilities_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilitiesPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Capabilities Api Capabilities Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/capabilities/partner-suggestions":{"get":{"tags":["capabilities"],"summary":"Partner Suggestions","description":"Προτεινόμενοι εταίροι κοινοπραξίας από δημόσια δεδομένα ΚΗΜΔΗΣ.\n\nΕπιλέγει αναδόχους που έχουν δουλέψει σε ίδιες CPV οικογένειες με τις\nδικές μας ικανότητες/κατάλογο — για κάλυψη κενών σε μεγάλα έργα.","operationId":"partner_suggestions_api_capabilities_partner_suggestions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cpv","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Cpv"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Partner Suggestions Api Capabilities Partner Suggestions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capabilities/qualification":{"get":{"tags":["capabilities"],"summary":"Qualification","description":"Φ2.3 — έλεγχος προϋποθέσεων διαγωνισμού vs προφίλ ικανοτήτων.\n\nΝτετερμινιστικός: πιστοποιητικά-τύπου απαιτήσεις (ISO/GDPR/CE…) από την\nανάλυση του Analyzer, αντιπαραβαλλόμενες με τα δηλωμένα πιστοποιητικά.","operationId":"qualification_api_capabilities_qualification_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"query","required":true,"schema":{"type":"string","minLength":8,"maxLength":40,"title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qualification Api Capabilities Qualification Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capabilities/services/{index}/to-catalog":{"post":{"tags":["capabilities"],"summary":"Service To Catalog","description":"Δημιουργεί matchable entry (kind=service) από μια υπηρεσία ικανοτήτων.","operationId":"service_to_catalog_api_capabilities_services__index__to_catalog_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Service To Catalog Api Capabilities Services  Index  To Catalog Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/semantic/summary":{"get":{"tags":["semantic"],"summary":"Semantic Summary","operationId":"semantic_summary_api_semantic_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":5,"default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Semantic Summary Api Semantic Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/semantic/entity":{"get":{"tags":["semantic"],"summary":"Semantic Entity","operationId":"semantic_entity_api_semantic_entity_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":40,"title":"Type"}},{"name":"name","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":5,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Semantic Entity Api Semantic Entity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/semantic/search":{"get":{"tags":["semantic"],"summary":"Semantic Search","operationId":"semantic_search_api_semantic_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Q"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Semantic Search Api Semantic Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nav/badges":{"get":{"tags":["nav"],"summary":"Nav Badges","operationId":"nav_badges_api_nav_badges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nav Badges Api Nav Badges Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/billing/plan":{"get":{"tags":["billing"],"summary":"My Plan","operationId":"my_plan_api_billing_plan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response My Plan Api Billing Plan Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/summary":{"get":{"tags":["company-bi"],"summary":"Company Bi Summary","operationId":"company_bi_summary_api_company_bi_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Company Bi Summary Api Company Bi Summary Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/awards":{"get":{"tags":["company-bi"],"summary":"Company Bi Awards","description":"Phase 2: το πραγματικό ιστορικό νικών από ΚΗΜΔΗΣ (join στο ΑΦΜ),\nprice positioning vs αγορά, ανταγωνιστές, ανανεώσεις συμβολαίων.","operationId":"company_bi_awards_api_company_bi_awards_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Company Bi Awards Api Company Bi Awards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company-bi/portfolio":{"get":{"tags":["company-bi"],"summary":"Company Bi Portfolio","description":"Portfolio: σύνολα, exposures (κλάδος/φορέας/περιοχή) και trend 30 ημερών.","operationId":"company_bi_portfolio_api_company_bi_portfolio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Company Bi Portfolio Api Company Bi Portfolio Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/optimize":{"post":{"tags":["company-bi"],"summary":"Company Bi Optimize","description":"Optimizer: πρόταση bid portfolio με ορατούς περιορισμούς (Enterprise).","operationId":"company_bi_optimize_api_company_bi_optimize_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/OptimizePayload"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Company Bi Optimize Api Company Bi Optimize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/backtest":{"get":{"tags":["company-bi"],"summary":"Company Bi Backtest","description":"Backtesting: ιστορική μέτρηση στρατηγικών από τον project graph.","operationId":"company_bi_backtest_api_company_bi_backtest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Company Bi Backtest Api Company Bi Backtest Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/consultant":{"get":{"tags":["company-bi"],"summary":"Consultant Latest","description":"Οι τελευταίες στρατηγικές κάρτες του AI Συμβούλου (αν υπάρχουν).","operationId":"consultant_latest_api_company_bi_consultant_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Consultant Latest Api Company Bi Consultant Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/company-bi/consultant/refresh":{"post":{"tags":["company-bi"],"summary":"Consultant Refresh","description":"Παράγει νέα ανάλυση — με σεβασμό στο μηνιαίο όριο AI ενεργειών.","operationId":"consultant_refresh_api_company_bi_consultant_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Consultant Refresh Api Company Bi Consultant Refresh Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/fundsense/bridge":{"get":{"tags":["fundsense"],"summary":"Fundsense Bridge","description":"Χρηματοδοτημένα έργα → πιθανό παράθυρο προκήρυξης (F2).","operationId":"fundsense_bridge_api_fundsense_bridge_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Amount"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(project|call)$"},{"type":"null"}],"title":"Scope"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Bridge Api Fundsense Bridge Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/opportunities":{"get":{"tags":["fundsense"],"summary":"Fundsense Opportunities","description":"Ευκαιρίες χρηματοδότησης (Discover v2) — καθαρό corpus.","operationId":"fundsense_opportunities_api_fundsense_opportunities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Amount"}},{"name":"only_open","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only Open"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Opportunities Api Fundsense Opportunities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/twin":{"get":{"tags":["fundsense"],"summary":"Fundsense Twin","description":"Organization Twin: δηλωμένα vs επαληθευμένα (αναθέσεις ΚΗΜΔΗΣ).","operationId":"fundsense_twin_api_fundsense_twin_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Twin Api Fundsense Twin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/eligibility":{"get":{"tags":["fundsense"],"summary":"Fundsense Eligibility","description":"Ευκαιρίες + αξιολόγηση καταλληλότητας v1 (δομημένα CPV/sectors).","operationId":"fundsense_eligibility_api_fundsense_eligibility_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Amount"}},{"name":"only_open","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only Open"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Eligibility Api Fundsense Eligibility Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/overview":{"get":{"tags":["fundsense"],"summary":"Fundsense Overview","description":"Επισκόπηση FundSense: KPI corpus + επόμενες προθεσμίες + νέα έργα.","operationId":"fundsense_overview_api_fundsense_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fundsense Overview Api Fundsense Overview Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/fundsense/catalog/opportunities":{"get":{"tags":["fundsense"],"summary":"Fundsense Catalog Opportunities","description":"Το ΙΔΙΟΚΤΗΤΟ corpus ευκαιριών (fs_opportunities) — όχι funding_calls.\n\n`relevant=true`: deterministic ταξινομία τίτλου ↔ κλάδοι Twin, με\nabstention (μόνο «match» όταν ζητηθεί φιλτράρισμα).","operationId":"fundsense_catalog_opportunities_api_fundsense_catalog_opportunities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(open|forecast|closed|unknown)$"},{"type":"null"}],"title":"Status"}},{"name":"only_open","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Only Open"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Amount"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(eu_ft|elidek|cordis)$"},{"type":"null"}],"title":"Source"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Search"}},{"name":"relevant","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Relevant"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Catalog Opportunities Api Fundsense Catalog Opportunities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/catalog/funded":{"get":{"tags":["fundsense"],"summary":"Fundsense Catalog Funded","description":"Χρηματοδοτημένα έργα ΕΕ (fs_funded_projects, CORDIS).","operationId":"fundsense_catalog_funded_api_fundsense_catalog_funded_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Catalog Funded Api Fundsense Catalog Funded Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/semantic/search":{"get":{"tags":["fundsense"],"summary":"Fundsense Semantic Search","description":"Semantic αναζήτηση — «προσκλήσεις σαν αυτή», με νόημα αντί λέξεις.","operationId":"fundsense_semantic_search_api_fundsense_semantic_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(opportunities|funded)$","default":"opportunities","title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Semantic Search Api Fundsense Semantic Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/semantic/similar":{"get":{"tags":["fundsense"],"summary":"Fundsense Semantic Similar","description":"«Σαν αυτή» — παρόμοιες προσκλήσεις/έργα από το ίδιο corpus.","operationId":"fundsense_semantic_similar_api_fundsense_semantic_similar_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(opportunities|funded)$","default":"opportunities","title":"Kind"}},{"name":"source_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":120,"title":"Source Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Semantic Similar Api Fundsense Semantic Similar Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/assistant":{"post":{"tags":["fundsense"],"summary":"Fundsense Assistant","description":"Evidence Assistant — απαντήσεις με παραπομπές [n] ή ρητή άρνηση.","operationId":"fundsense_assistant_api_fundsense_assistant_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantAsk"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fundsense Assistant Api Fundsense Assistant Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/fundsense/opportunities/{source_id}/brief":{"get":{"tags":["fundsense"],"summary":"Fundsense Call Brief","description":"Call Brief — δομημένα αποσπάσματα από τα επίσημα πεδία της πηγής.\n\n`deep=true`: βαθιά ανάλυση του επίσημου εγγράφου (PDF/OCR) με δομημένα\nπεδία + αυτούσια quotes.","operationId":"fundsense_call_brief_api_fundsense_opportunities__source_id__brief_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}},{"name":"deep","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Deep"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Call Brief Api Fundsense Opportunities  Source Id  Brief Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/outcomes":{"post":{"tags":["fundsense"],"summary":"Fundsense Record Outcome","description":"Καταγραφή outcome: saved/applied/won/lost ή thumbs up/down.","operationId":"fundsense_record_outcome_api_fundsense_outcomes_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutcomeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Record Outcome Api Fundsense Outcomes Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["fundsense"],"summary":"Fundsense List Outcomes","description":"Οι καταστάσεις outcome του χρήστη (ανά source_id).","operationId":"fundsense_list_outcomes_api_fundsense_outcomes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense List Outcomes Api Fundsense Outcomes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/joint/draft":{"get":{"tags":["fundsense"],"summary":"Fundsense Joint Draft","description":"Σύνθεση κοινού έργου από προφίλ εταιρείας + συνεργαζόμενο ίδρυμα.","operationId":"fundsense_joint_draft_api_fundsense_joint_draft_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fundsense Joint Draft Api Fundsense Joint Draft Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/fundsense/joint/gaps":{"get":{"tags":["fundsense"],"summary":"Fundsense Joint Gaps","description":"Κενά joint έργου για πρόσκληση + πραγματικοί προτεινόμενοι εταίροι.","operationId":"fundsense_joint_gaps_api_fundsense_joint_gaps_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","minLength":8,"title":"Project Id"}},{"name":"source_id","in":"query","required":true,"schema":{"type":"string","minLength":2,"title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Joint Gaps Api Fundsense Joint Gaps Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/institution":{"get":{"tags":["fundsense"],"summary":"Fundsense Institution Get","operationId":"fundsense_institution_get_api_fundsense_institution_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Institution Get Api Fundsense Institution Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["fundsense"],"summary":"Fundsense Institution Put","operationId":"fundsense_institution_put_api_fundsense_institution_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstitutionUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Institution Put Api Fundsense Institution Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/dashboard":{"get":{"tags":["fundsense"],"summary":"Fundsense Dashboard","description":"Πίνακας ΕΛΚΕ: σχετικές προσκλήσεις + λήγουν σύντομα + pipeline έργων.","operationId":"fundsense_dashboard_api_fundsense_dashboard_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Dashboard Api Fundsense Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/partners":{"get":{"tags":["fundsense"],"summary":"Fundsense Partners","description":"Συνεργασίες: πραγματικοί συμμετέχοντες CORDIS στα θέματα του ιδρύματος.","operationId":"fundsense_partners_api_fundsense_partners_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Keywords"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Partners Api Fundsense Partners Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/projects":{"get":{"tags":["fundsense"],"summary":"Fundsense Projects List","operationId":"fundsense_projects_list_api_fundsense_projects_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Projects List Api Fundsense Projects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["fundsense"],"summary":"Fundsense Projects Create","operationId":"fundsense_projects_create_api_fundsense_projects_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTwinCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Projects Create Api Fundsense Projects Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/projects/{project_id}":{"patch":{"tags":["fundsense"],"summary":"Fundsense Projects Patch","description":"Ενημέρωση έργου (status pipeline, υπεύθυνος, πεδία).","operationId":"fundsense_projects_patch_api_fundsense_projects__project_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTwinPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Projects Patch Api Fundsense Projects  Project Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["fundsense"],"summary":"Fundsense Projects Delete","operationId":"fundsense_projects_delete_api_fundsense_projects__project_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/projects/{project_id}/matches":{"get":{"tags":["fundsense"],"summary":"Fundsense Project Matches","description":"Project Twin ↔ ανοιχτές ευκαιρίες: fit + readiness + επόμενες ενέργειες.","operationId":"fundsense_project_matches_api_fundsense_projects__project_id__matches_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Project Matches Api Fundsense Projects  Project Id  Matches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/projects/{project_id}/compile":{"post":{"tags":["fundsense"],"summary":"Fundsense Compile Proposal","description":"Σύνθεση πρόχειρου φακέλου (draft + evidence map + checks + gaps).","operationId":"fundsense_compile_proposal_api_fundsense_projects__project_id__compile_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","pattern":"^(el|en)$","default":"el","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Compile Proposal Api Fundsense Projects  Project Id  Compile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/proposals":{"get":{"tags":["fundsense"],"summary":"Fundsense Proposals List","operationId":"fundsense_proposals_list_api_fundsense_proposals_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Proposals List Api Fundsense Proposals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fundsense/proposals/{proposal_id}":{"get":{"tags":["fundsense"],"summary":"Fundsense Proposal Get","operationId":"fundsense_proposal_get_api_fundsense_proposals__proposal_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"as_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fundsense Proposal Get Api Fundsense Proposals  Proposal Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/clients":{"get":{"tags":["investsense"],"summary":"List Clients","operationId":"list_clients_api_investsense_clients_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["investsense"],"summary":"Create Client","operationId":"create_client_api_investsense_clients_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClientRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/clients/{client_id}":{"get":{"tags":["investsense"],"summary":"Get Client","operationId":"get_client_api_investsense_clients__client_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["investsense"],"summary":"Update Client","operationId":"update_client_api_investsense_clients__client_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateClientRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["investsense"],"summary":"Archive Client","operationId":"archive_client_api_investsense_clients__client_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/mandates":{"get":{"tags":["investsense"],"summary":"List Mandates","operationId":"list_mandates_api_investsense_mandates_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"client_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["investsense"],"summary":"Create Mandate","operationId":"create_mandate_api_investsense_mandates_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMandateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/mandates/{mandate_id}":{"get":{"tags":["investsense"],"summary":"Get Mandate","operationId":"get_mandate_api_investsense_mandates__mandate_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"mandate_id","in":"path","required":true,"schema":{"type":"string","title":"Mandate Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["investsense"],"summary":"Update Mandate","operationId":"update_mandate_api_investsense_mandates__mandate_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"mandate_id","in":"path","required":true,"schema":{"type":"string","title":"Mandate Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMandateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/mandates/{mandate_id}/matches":{"get":{"tags":["investsense"],"summary":"Mandate Matches","description":"Signals ταιριασμένα με το Mandate Fingerprint (deterministic).","operationId":"mandate_matches_api_investsense_mandates__mandate_id__matches_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"mandate_id","in":"path","required":true,"schema":{"type":"string","title":"Mandate Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investsense/fdi-check":{"post":{"tags":["investsense"],"summary":"Fdi Check","description":"FDI screening / Κίνητρα ΑΞΕ — deterministic pre-check (ν.5202/2025).","operationId":"fdi_check_api_investsense_fdi_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FdiCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/organizations/{org_id}/provision":{"post":{"tags":["admin-organizations"],"summary":"Provision Domain","description":"Στήνει nginx + TLS (certbot) για domain που ΑΝΗΚΕΙ στο org.\n\nSafety: admin-only + domain membership check + timeout 180s.\nΤο script είναι idempotent με rollback (βλ. provision_org.py).","operationId":"provision_domain_api_admin_organizations__org_id__provision_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations":{"get":{"tags":["admin-organizations"],"summary":"List Organizations","operationId":"list_organizations_api_admin_organizations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["admin-organizations"],"summary":"Create Organization","operationId":"create_organization_api_admin_organizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/organizations/{org_id}/domains":{"post":{"tags":["admin-organizations"],"summary":"Add Domain","operationId":"add_domain_api_admin_organizations__org_id__domains_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations/{org_id}/domains/{domain}":{"delete":{"tags":["admin-organizations"],"summary":"Remove Domain","operationId":"remove_domain_api_admin_organizations__org_id__domains__domain__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations/{org_id}/status":{"post":{"tags":["admin-organizations"],"summary":"Set Status","operationId":"set_status_api_admin_organizations__org_id__status_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations/{org_id}/edition":{"post":{"tags":["admin-organizations"],"summary":"Set Edition","operationId":"set_edition_api_admin_organizations__org_id__edition_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations/{org_id}/members":{"get":{"tags":["admin-organizations"],"summary":"List Members","operationId":"list_members_api_admin_organizations__org_id__members_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-organizations"],"summary":"Add Member","operationId":"add_member_api_admin_organizations__org_id__members_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/organizations/{org_id}/members/{user_id}":{"delete":{"tags":["admin-organizations"],"summary":"Remove Member","operationId":"remove_member_api_admin_organizations__org_id__members__user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/early-signals":{"get":{"tags":["early-signals"],"summary":"Early Signals","operationId":"early_signals_api_early_signals_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company":{"get":{"tags":["company"],"summary":"Company Lookup","operationId":"company_lookup_api_company_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"afm","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":9,"maxLength":9},{"type":"null"}],"title":"Afm"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":120},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AIGenerationMetadata":{"properties":{"source":{"type":"string","enum":["pdf_upload","website","chat","manual"],"title":"Source"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"extraction_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extraction Session Id"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"user_approved":{"type":"boolean","title":"User Approved","default":false},"user_approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"User Approved At"},"user_edits":{"items":{"type":"string"},"type":"array","title":"User Edits"},"cpv_source":{"type":"string","title":"Cpv Source","default":""}},"type":"object","required":["source"],"title":"AIGenerationMetadata"},"ActionStatusPayload":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"ActionStatusPayload"},"AddDomainRequest":{"properties":{"domain":{"type":"string","maxLength":253,"minLength":4,"title":"Domain"}},"type":"object","required":["domain"],"title":"AddDomainRequest"},"AdminUserUpdate":{"properties":{"extend_days":{"anyOf":[{"type":"integer","maximum":3650.0,"minimum":1.0},{"type":"null"}],"title":"Extend Days"},"set_status":{"anyOf":[{"type":"string","enum":["pending","active","expired","revoked"]},{"type":"null"}],"title":"Set Status"},"set_plan":{"anyOf":[{"type":"string","enum":["starter","pro","business","enterprise"]},{"type":"null"}],"title":"Set Plan"},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin"},"fundsense_beta":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fundsense Beta"},"segment":{"anyOf":[{"type":"string","enum":["supplier","institution"]},{"type":"null"}],"title":"Segment"},"license_admin_notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"License Admin Notes"}},"type":"object","title":"AdminUserUpdate","description":"Manual override από τον admin — ξεκλείδωμα/extension χωρίς νέο key."},"ApiKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"}},"type":"object","required":["name","scopes"],"title":"ApiKeyCreate"},"ApprovalRequest":{"properties":{"approved_skus":{"items":{"type":"string"},"type":"array","title":"Approved Skus"},"edits":{"additionalProperties":{"$ref":"#/components/schemas/ProductDraft"},"type":"object","title":"Edits"}},"type":"object","required":["approved_skus"],"title":"ApprovalRequest"},"ApprovalResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"saved_products":{"type":"integer","title":"Saved Products"},"status":{"type":"string","title":"Status"}},"type":"object","required":["session_id","saved_products","status"],"title":"ApprovalResponse"},"AssistantAsk":{"properties":{"question":{"type":"string","maxLength":500,"minLength":4,"title":"Question"},"lang":{"type":"string","pattern":"^(el|en)$","title":"Lang","default":"el"},"kind":{"type":"string","pattern":"^(opportunities|funded|both)$","title":"Kind","default":"opportunities"},"web":{"type":"boolean","title":"Web","default":false}},"type":"object","required":["question"],"title":"AssistantAsk"},"AuthorityProfileUpdate":{"properties":{"alternate_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Alternate Names"},"units":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Units"},"parent_authority":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Parent Authority"}},"type":"object","title":"AuthorityProfileUpdate"},"BidFloorPayload":{"properties":{"min_contract_value_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Min Contract Value Eur"}},"type":"object","title":"BidFloorPayload"},"BidRoomCreate":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"team":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Team"}},"type":"object","required":["tender_id"],"title":"BidRoomCreate"},"Body_ingest_pdf_api_ingestion_pdf_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"One or more PDF files"}},"type":"object","required":["files"],"title":"Body_ingest_pdf_api_ingestion_pdf_post"},"Body_login_api_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_auth_login_post"},"Body_upload_knowledge_documents_api_knowledge_documents_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"One or more product PDF files"}},"type":"object","required":["files"],"title":"Body_upload_knowledge_documents_api_knowledge_documents_post"},"Body_upload_panoptis_files_api_knowledge_panoptis_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"PDF/DOCX/XLSX αρχεία ΠΑΝΟΠΤΗ"}},"type":"object","required":["files"],"title":"Body_upload_panoptis_files_api_knowledge_panoptis_post"},"CPVConfirmPayload":{"properties":{"confirmed":{"type":"boolean","title":"Confirmed"}},"type":"object","required":["confirmed"],"title":"CPVConfirmPayload"},"CapabilitiesPayload":{"properties":{"services":{"items":{"$ref":"#/components/schemas/CapabilityService"},"type":"array","maxItems":60,"title":"Services"},"certifications":{"items":{"$ref":"#/components/schemas/Certification"},"type":"array","maxItems":60,"title":"Certifications"},"references":{"items":{"$ref":"#/components/schemas/ReferenceProject"},"type":"array","maxItems":40,"title":"References"},"partners":{"items":{"$ref":"#/components/schemas/Partner"},"type":"array","maxItems":40,"title":"Partners"}},"type":"object","title":"CapabilitiesPayload"},"CapabilityService":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"cpv_codes":{"items":{"type":"string"},"type":"array","title":"Cpv Codes"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"}},"type":"object","required":["title"],"title":"CapabilityService"},"CatalogBulkAction":{"properties":{"action":{"type":"string","enum":["activate","deactivate","delete","restore"],"title":"Action"},"skus":{"items":{"type":"string"},"type":"array","maxItems":2000,"minItems":1,"title":"Skus"}},"type":"object","required":["action","skus"],"title":"CatalogBulkAction"},"CatalogBulkResult":{"properties":{"action":{"type":"string","enum":["activate","deactivate","delete","restore"],"title":"Action"},"requested":{"type":"integer","title":"Requested"},"matched":{"type":"integer","title":"Matched"},"modified":{"type":"integer","title":"Modified"},"skus":{"items":{"type":"string"},"type":"array","title":"Skus"},"missing_skus":{"items":{"type":"string"},"type":"array","title":"Missing Skus"}},"type":"object","required":["action","requested","matched","modified","skus"],"title":"CatalogBulkResult"},"CatalogProduct":{"properties":{"_id":{"anyOf":[{"type":"string","pattern":"^[a-fA-F0-9]{24}$","format":"objectid","example":"507f1f77bcf86cd799439011"},{"type":"null"}],"title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"user_id":{"type":"string","pattern":"^[a-fA-F0-9]{24}$","format":"objectid","title":"User Id","example":"507f1f77bcf86cd799439011"},"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"category_original":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Original"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manufacturer"},"description":{"type":"string","title":"Description","default":""},"technical_specs":{"type":"string","title":"Technical Specs","default":""},"kind":{"type":"string","enum":["product","service"],"title":"Kind","default":"product"},"ai_generated_synonyms":{"items":{"type":"string"},"type":"array","title":"Ai Generated Synonyms"},"ai_generated_cpv":{"items":{"type":"string"},"type":"array","title":"Ai Generated Cpv"},"ai_generated_keywords":{"items":{"type":"string"},"type":"array","title":"Ai Generated Keywords"},"ai_generation_metadata":{"anyOf":[{"$ref":"#/components/schemas/AIGenerationMetadata"},{"type":"null"}]},"cpv_confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cpv Confirmed At"},"user_added_synonyms":{"items":{"type":"string"},"type":"array","title":"User Added Synonyms"},"user_excluded_synonyms":{"items":{"type":"string"},"type":"array","title":"User Excluded Synonyms"},"effective_synonyms":{"items":{"type":"string"},"type":"array","title":"Effective Synonyms"},"packaging":{"type":"string","title":"Packaging","default":""},"pricing":{"$ref":"#/components/schemas/Pricing"},"knowledge_summary":{"type":"string","title":"Knowledge Summary","default":""},"knowledge_attributes":{"additionalProperties":{"type":"string"},"type":"object","title":"Knowledge Attributes"},"knowledge_document_ids":{"items":{"type":"string","pattern":"^[a-fA-F0-9]{24}$","format":"objectid","example":"507f1f77bcf86cd799439011"},"type":"array","title":"Knowledge Document Ids"},"knowledge_evidence_count":{"type":"integer","title":"Knowledge Evidence Count","default":0},"knowledge_completeness":{"type":"number","title":"Knowledge Completeness","default":0.0},"knowledge_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Knowledge Updated At"},"active":{"type":"boolean","title":"Active","default":true},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"embedding_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embedding Id"}},"type":"object","required":["user_id","sku","name"],"title":"CatalogProduct"},"CatalogProductUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manufacturer"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"technical_specs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Technical Specs"},"user_added_synonyms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"User Added Synonyms"},"user_excluded_synonyms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"User Excluded Synonyms"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"ai_generated_cpv":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ai Generated Cpv"}},"type":"object","title":"CatalogProductUpdate"},"CatalogProfile":{"properties":{"_id":{"anyOf":[{"type":"string","pattern":"^[a-fA-F0-9]{24}$","format":"objectid","example":"507f1f77bcf86cd799439011"},{"type":"null"}],"title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"user_id":{"type":"string","pattern":"^[a-fA-F0-9]{24}$","format":"objectid","title":"User Id","example":"507f1f77bcf86cd799439011"},"domain_labels":{"items":{"type":"string"},"type":"array","title":"Domain Labels"},"domain_scores":{"additionalProperties":{"type":"number"},"type":"object","title":"Domain Scores"},"primary_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Label"},"label_display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Display"},"cpv_roots":{"items":{"type":"string"},"type":"array","title":"Cpv Roots"},"cpv_root_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Cpv Root Counts"},"manual_cpv_roots":{"items":{"type":"string"},"type":"array","title":"Manual Cpv Roots"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"product_count":{"type":"integer","title":"Product Count","default":0},"detector_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detector Model"},"domain_policy":{"anyOf":[{"$ref":"#/components/schemas/DomainPolicy"},{"type":"null"}]},"computed_at":{"type":"string","format":"date-time","title":"Computed At"}},"type":"object","required":["user_id"],"title":"CatalogProfile"},"CatalogProfileResponse":{"properties":{"profile":{"anyOf":[{"$ref":"#/components/schemas/CatalogProfile"},{"type":"null"}]},"domain_taxonomy":{"additionalProperties":{"type":"string"},"type":"object","title":"Domain Taxonomy"}},"type":"object","required":["profile"],"title":"CatalogProfileResponse"},"Certification":{"properties":{"name":{"type":"string","title":"Name"},"issuer":{"type":"string","title":"Issuer","default":""},"expires":{"type":"string","title":"Expires","default":""}},"type":"object","required":["name"],"title":"Certification"},"ChatHistoryItem":{"properties":{"role":{"type":"string","pattern":"^(user|assistant)$","title":"Role"},"content":{"type":"string","maxLength":8000,"minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatHistoryItem"},"ChatIngestRequest":{"properties":{"turns":{"items":{"$ref":"#/components/schemas/ChatIngestTurn"},"type":"array","maxItems":20,"minItems":1,"title":"Turns"}},"type":"object","required":["turns"],"title":"ChatIngestRequest"},"ChatIngestTurn":{"properties":{"role":{"type":"string","pattern":"^(user|assistant)$","title":"Role"},"content":{"type":"string","maxLength":8000,"minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatIngestTurn"},"ChatPayload":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"history":{"items":{"$ref":"#/components/schemas/ChatHistoryItem"},"type":"array","maxItems":20,"title":"History"},"session_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["message"],"title":"ChatPayload"},"ChecklistPayload":{"properties":{"label":{"type":"string","title":"Label"},"required":{"type":"boolean","title":"Required","default":true},"done":{"type":"boolean","title":"Done","default":false},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["label"],"title":"ChecklistPayload"},"CompileRequest":{"properties":{"source_id":{"type":"string","maxLength":120,"minLength":2,"title":"Source Id"},"ai":{"type":"boolean","title":"Ai","default":false}},"type":"object","required":["source_id"],"title":"CompileRequest"},"ContractCreate":{"properties":{"bid_room_id":{"type":"string","title":"Bid Room Id"},"signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Signed At"},"value_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Eur"},"margin_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Margin Pct"}},"type":"object","required":["bid_room_id"],"title":"ContractCreate"},"ContractTransition":{"properties":{"to_stage":{"type":"string","title":"To Stage"}},"type":"object","required":["to_stage"],"title":"ContractTransition"},"CreateClientRequest":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"vat":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vat"},"contact_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact Name"},"contact_email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact Email"},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name"],"title":"CreateClientRequest"},"CreateMandateRequest":{"properties":{"client_id":{"type":"string","maxLength":24,"minLength":24,"title":"Client Id"},"title":{"type":"string","maxLength":300,"minLength":1,"title":"Title"},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors"},"ticket_min_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ticket Min Eur"},"ticket_max_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ticket Max Eur"},"geographies":{"items":{"type":"string"},"type":"array","title":"Geographies"},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Notes"}},"type":"object","required":["client_id","title"],"title":"CreateMandateRequest"},"CreateOrganizationRequest":{"properties":{"slug":{"type":"string","maxLength":40,"minLength":3,"title":"Slug"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"edition":{"type":"string","enum":["tender","funding","advisor"],"title":"Edition","default":"tender"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"},"contact_email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact Email"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"}},"type":"object","required":["slug","name"],"title":"CreateOrganizationRequest"},"CreatePurchaseRequest":{"properties":{"package_code":{"type":"string","maxLength":20,"minLength":3,"title":"Package Code"},"plan":{"type":"string","maxLength":20,"title":"Plan","default":"starter"}},"type":"object","required":["package_code"],"title":"CreatePurchaseRequest"},"DomainPolicy":{"properties":{"policy_version":{"type":"integer","title":"Policy Version","default":1},"target_domain":{"type":"string","title":"Target Domain","default":""},"policy_summary":{"type":"string","title":"Policy Summary","default":""},"allowed_cpv_prefixes":{"items":{"type":"string"},"type":"array","title":"Allowed Cpv Prefixes"},"blocked_cpv_prefixes":{"items":{"type":"string"},"type":"array","title":"Blocked Cpv Prefixes"},"ambiguous_cpv_prefixes":{"items":{"$ref":"#/components/schemas/DomainPolicyAmbiguousPrefix"},"type":"array","title":"Ambiguous Cpv Prefixes"},"positive_domain_terms":{"items":{"type":"string"},"type":"array","title":"Positive Domain Terms"},"negative_domain_terms":{"items":{"type":"string"},"type":"array","title":"Negative Domain Terms"},"evidence_cpv_codes":{"items":{"type":"string"},"type":"array","title":"Evidence Cpv Codes"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","default":0.0},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"taxonomy_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Source"},"taxonomy_code_count":{"type":"integer","title":"Taxonomy Code Count","default":0},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"type":"object","title":"DomainPolicy"},"DomainPolicyAmbiguousPrefix":{"properties":{"prefix":{"type":"string","title":"Prefix"},"required_terms":{"items":{"type":"string"},"type":"array","title":"Required Terms"},"excluded_terms":{"items":{"type":"string"},"type":"array","title":"Excluded Terms"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["prefix"],"title":"DomainPolicyAmbiguousPrefix"},"EditionRequest":{"properties":{"edition":{"type":"string","enum":["tender","funding","advisor"],"title":"Edition"}},"type":"object","required":["edition"],"title":"EditionRequest"},"ExternalFeedback":{"properties":{"entity":{"type":"string","title":"Entity"},"reason":{"type":"string","title":"Reason"},"evidence":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evidence"}},"type":"object","required":["entity","reason"],"title":"ExternalFeedback"},"FdiCheckRequest":{"properties":{"mode":{"type":"string","title":"Mode","default":"screening"},"target_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Sector"},"stake_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stake Pct"},"investor_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Investor Country"},"investor_controlled_by_third_country":{"type":"boolean","title":"Investor Controlled By Third Country","default":false},"amount_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Eur"},"equity_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Pct"}},"type":"object","title":"FdiCheckRequest"},"FeedbackPayload":{"properties":{"user_status":{"anyOf":[{"type":"string","enum":["new","interested","dismissed","drafted","submitted","won","lost"]},{"type":"null"}],"title":"User Status"},"user_notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"User Notes"}},"type":"object","title":"FeedbackPayload"},"ForgotPasswordPayload":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordPayload"},"FulfillPurchaseRequest":{"properties":{"invoice_number":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Invoice Number"},"admin_notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Admin Notes"}},"type":"object","title":"FulfillPurchaseRequest"},"GeneratePayload":{"properties":{"match_id":{"type":"string","minLength":1,"title":"Match Id"},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","required":["match_id"],"title":"GeneratePayload"},"GraphFeedbackPayload":{"properties":{"project_key":{"type":"string","maxLength":200,"minLength":2,"title":"Project Key"},"action":{"type":"string","pattern":"^(confirm_tendered|reject_project)$","title":"Action"},"adam":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Adam"},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","required":["project_key","action"],"title":"GraphFeedbackPayload"},"GuaranteeAdd":{"properties":{"guarantee_type":{"type":"string","title":"Guarantee Type"},"amount_eur":{"type":"number","title":"Amount Eur"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["guarantee_type","amount_eur","expires_at"],"title":"GuaranteeAdd"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IngestionPreviewResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"status":{"type":"string","enum":["uploading","extracting","normalizing","awaiting_answers","review","approved","discarded","failed"],"title":"Status"},"drafts":{"items":{"$ref":"#/components/schemas/ProductDraft"},"type":"array","title":"Drafts"},"total_cost_eur":{"type":"number","title":"Total Cost Eur"},"raw_text_chars":{"type":"integer","title":"Raw Text Chars"},"source_chunk_count":{"type":"integer","title":"Source Chunk Count","default":0},"source_embedding_count":{"type":"integer","title":"Source Embedding Count","default":0},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"clarifying_questions":{"items":{"type":"string"},"type":"array","title":"Clarifying Questions"},"progress_phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Phase"},"progress_pages_done":{"type":"integer","title":"Progress Pages Done","default":0},"progress_pages_total":{"type":"integer","title":"Progress Pages Total","default":0},"progress_current_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Current Url"},"progress_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Message"},"pages_crawled":{"type":"integer","title":"Pages Crawled","default":0}},"type":"object","required":["session_id","status","drafts","total_cost_eur","raw_text_chars"],"title":"IngestionPreviewResponse"},"IngestionSessionListResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/IngestionSessionSummary"},"type":"array","title":"Sessions"}},"type":"object","required":["sessions"],"title":"IngestionSessionListResponse"},"IngestionSessionSummary":{"properties":{"session_id":{"type":"string","title":"Session Id"},"mode":{"type":"string","title":"Mode"},"status":{"type":"string","title":"Status"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"file_names":{"items":{"type":"string"},"type":"array","title":"File Names"},"drafts_count":{"type":"integer","title":"Drafts Count","default":0},"approved_count":{"type":"integer","title":"Approved Count","default":0},"pages_crawled":{"type":"integer","title":"Pages Crawled","default":0},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"progress_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Updated At"},"progress_phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Phase"},"progress_pages_done":{"type":"integer","title":"Progress Pages Done","default":0},"progress_pages_total":{"type":"integer","title":"Progress Pages Total","default":0}},"type":"object","required":["session_id","mode","status"],"title":"IngestionSessionSummary"},"IngestionStartResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"mode":{"type":"string","enum":["pdf","website","chat"],"title":"Mode"},"status":{"type":"string","enum":["uploading","extracting","normalizing","awaiting_answers","review","approved","discarded","failed"],"title":"Status"}},"type":"object","required":["session_id","mode","status"],"title":"IngestionStartResponse"},"InstitutionUpsert":{"properties":{"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"vat":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vat"},"country":{"type":"string","maxLength":2,"title":"Country","default":"GR"},"pic":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Pic"},"departments":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":60,"title":"Departments"}},"type":"object","required":["name"],"title":"InstitutionUpsert"},"IssueKeyRequest":{"properties":{"duration_days":{"type":"integer","maximum":3650.0,"minimum":1.0,"title":"Duration Days","default":30},"plan":{"type":"string","enum":["starter","pro","business","enterprise"],"title":"Plan","default":"starter"},"created_for_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Created For Email"},"invoice_number":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Invoice Number"},"amount_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Amount Eur"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes"}},"type":"object","title":"IssueKeyRequest"},"ManualRootsPayload":{"properties":{"roots":{"items":{"type":"string"},"type":"array","title":"Roots"}},"type":"object","title":"ManualRootsPayload"},"MarkSeenPayload":{"properties":{},"type":"object","title":"MarkSeenPayload"},"MatchSettings":{"properties":{"persist_threshold":{"type":"number","maximum":1.0,"minimum":0.45,"title":"Persist Threshold","default":0.45},"display_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Display Threshold","default":0.45}},"type":"object","title":"MatchSettings","description":"Per-user thresholds for the matching pipeline.\n\n``persist_threshold`` is enforced server-side by the matcher: matches\nbelow this final score are *not* written to MongoDB at all (subject to\nthe system-wide engine floor of 0.45).\n\n``display_threshold`` is purely cosmetic — the inbox UI uses it as the\ndefault value of the slider so users see only matches they care about."},"MatchSettingsUpdate":{"properties":{"persist_threshold":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.45},{"type":"null"}],"title":"Persist Threshold"},"display_threshold":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Display Threshold"}},"type":"object","title":"MatchSettingsUpdate"},"MeUpdate":{"properties":{"authority_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Authority Name"},"authority_afm":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Authority Afm"},"authority_cpv_roots":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Authority Cpv Roots"},"authority_unit":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Authority Unit"}},"type":"object","title":"MeUpdate"},"MemberRequest":{"properties":{"user_id":{"type":"string","maxLength":24,"minLength":24,"title":"User Id"},"role":{"type":"string","enum":["owner","analyst","viewer"],"title":"Role","default":"viewer"}},"type":"object","required":["user_id"],"title":"MemberRequest"},"ModuleManifest":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"action_protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Protocol Version"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["slug","name","actions"],"title":"ModuleManifest"},"NotificationPrefs":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"min_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Min Score","default":0.65},"max_per_run":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Per Run","default":10},"telegram_enabled":{"type":"boolean","title":"Telegram Enabled","default":false},"telegram_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Chat Id"},"teams_enabled":{"type":"boolean","title":"Teams Enabled","default":false},"email_enabled":{"type":"boolean","title":"Email Enabled","default":false},"email_address":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email Address"},"quiet_hours_start":{"type":"integer","maximum":23.0,"minimum":0.0,"title":"Quiet Hours Start","default":22},"quiet_hours_end":{"type":"integer","maximum":23.0,"minimum":0.0,"title":"Quiet Hours End","default":8},"priority_enabled":{"type":"boolean","title":"Priority Enabled","default":true},"priority_min_match_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Priority Min Match Score","default":0.75},"priority_deadline_days":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Priority Deadline Days","default":7},"priority_min_analyzer_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Priority Min Analyzer Score","default":0.7}},"type":"object","title":"NotificationPrefs","description":"Per-user delivery preferences for new-match alerts."},"NotificationPrefsUpdate":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"min_score":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Score"},"max_per_run":{"anyOf":[{"type":"integer","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Max Per Run"},"telegram_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Telegram Enabled"},"telegram_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Chat Id"},"teams_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Teams Enabled"},"email_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Enabled"},"email_address":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email Address"},"quiet_hours_start":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Quiet Hours Start"},"quiet_hours_end":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Quiet Hours End"}},"type":"object","title":"NotificationPrefsUpdate"},"ObligationAdd":{"properties":{"title":{"type":"string","title":"Title"},"due_at":{"type":"string","format":"date-time","title":"Due At"}},"type":"object","required":["title","due_at"],"title":"ObligationAdd"},"ObligationDone":{"properties":{"obligation_id":{"type":"string","title":"Obligation Id"},"done":{"type":"boolean","title":"Done"}},"type":"object","required":["obligation_id","done"],"title":"ObligationDone"},"OptimizePayload":{"properties":{"budget_eur":{"anyOf":[{"type":"number","maximum":100000000.0,"minimum":0.0},{"type":"null"}],"title":"Budget Eur"},"horizon_days":{"type":"integer","maximum":365.0,"minimum":7.0,"title":"Horizon Days","default":90},"max_sector_share":{"anyOf":[{"type":"number","maximum":1.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Sector Share"}},"type":"object","title":"OptimizePayload"},"OutcomeIn":{"properties":{"action":{"type":"string","enum":["saved","applied","won","lost","thumbs_up","thumbs_down"],"title":"Action"},"source_id":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Source Id"},"question":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Question"},"amount_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Amount Eur"}},"type":"object","required":["action"],"title":"OutcomeIn"},"OutcomePayload":{"properties":{"won":{"type":"boolean","title":"Won"},"our_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Our Price"},"winner_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Winner Price"}},"type":"object","required":["won"],"title":"OutcomePayload"},"ParticipationTextIn":{"properties":{"tender_source":{"type":"string","maxLength":40,"minLength":2,"title":"Tender Source"},"source_id":{"type":"string","maxLength":60,"minLength":2,"title":"Source Id"},"text":{"type":"string","maxLength":60000,"minLength":80,"title":"Text"},"tender_title":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Tender Title"},"ada":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Ada"}},"type":"object","required":["tender_source","source_id","text"],"title":"ParticipationTextIn"},"Partner":{"properties":{"name":{"type":"string","title":"Name"},"vat":{"type":"string","title":"Vat","default":""},"capabilities":{"type":"string","title":"Capabilities","default":""}},"type":"object","required":["name"],"title":"Partner"},"PaymentAdd":{"properties":{"amount_eur":{"type":"number","title":"Amount Eur"},"invoice_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice No"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"}},"type":"object","required":["amount_eur"],"title":"PaymentAdd"},"Pricing":{"properties":{"list_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"List Price"},"floor_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Floor Price"},"target_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target Price"},"last_won_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Won Price"},"last_won_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Won At"}},"type":"object","title":"Pricing"},"ProductDraft":{"properties":{"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"category_original":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Original"},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manufacturer"},"description":{"type":"string","title":"Description","default":""},"technical_specs":{"type":"string","title":"Technical Specs","default":""},"ai_generated_synonyms":{"items":{"type":"string"},"type":"array","title":"Ai Generated Synonyms"},"ai_generated_cpv":{"items":{"type":"string"},"type":"array","title":"Ai Generated Cpv"},"ai_generated_keywords":{"items":{"type":"string"},"type":"array","title":"Ai Generated Keywords"},"cpv_source":{"type":"string","title":"Cpv Source","default":""},"packaging":{"type":"string","title":"Packaging","default":""},"price_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Eur"},"confidence":{"type":"number","title":"Confidence","default":0.0},"needs_review":{"type":"boolean","title":"Needs Review","default":false},"benchmark":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Benchmark"}},"type":"object","required":["sku","name"],"title":"ProductDraft","description":"Lightweight draft used during ingestion review."},"ProductKnowledgeLinkRequest":{"properties":{"sku":{"type":"string","title":"Sku"}},"type":"object","required":["sku"],"title":"ProductKnowledgeLinkRequest"},"ProjectTwinCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":3,"title":"Title"},"summary":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Summary"},"sectors":{"items":{"type":"string"},"type":"array","maxItems":12,"title":"Sectors"},"research_fields":{"items":{"type":"string"},"type":"array","maxItems":12,"title":"Research Fields"},"trl":{"anyOf":[{"type":"integer","maximum":9.0,"minimum":1.0},{"type":"null"}],"title":"Trl"},"duration_months":{"anyOf":[{"type":"integer","maximum":120.0,"minimum":1.0},{"type":"null"}],"title":"Duration Months"},"region":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Region"},"budget_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Budget Eur"},"consortium":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":20,"title":"Consortium"},"keywords":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Keywords"},"owner_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Owner Name"},"status":{"type":"string","enum":["idea","matching","drafting","submitted","awarded","rejected","archived"],"title":"Status","default":"idea"}},"type":"object","required":["title"],"title":"ProjectTwinCreate"},"ProjectTwinPatch":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":3},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Summary"},"sectors":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Sectors"},"research_fields":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Research Fields"},"trl":{"anyOf":[{"type":"integer","maximum":9.0,"minimum":1.0},{"type":"null"}],"title":"Trl"},"duration_months":{"anyOf":[{"type":"integer","maximum":120.0,"minimum":1.0},{"type":"null"}],"title":"Duration Months"},"region":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Region"},"budget_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Budget Eur"},"consortium":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":20},{"type":"null"}],"title":"Consortium"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":20},{"type":"null"}],"title":"Keywords"},"owner_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Owner Name"},"status":{"anyOf":[{"type":"string","enum":["idea","matching","drafting","submitted","awarded","rejected","archived"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"ProjectTwinPatch"},"ProvisionRequest":{"properties":{"domain":{"type":"string","maxLength":253,"minLength":4,"title":"Domain"}},"type":"object","required":["domain"],"title":"ProvisionRequest"},"RedeemKeyRequest":{"properties":{"key":{"type":"string","maxLength":64,"minLength":5,"title":"Key"}},"type":"object","required":["key"],"title":"RedeemKeyRequest"},"ReferenceProject":{"properties":{"title":{"type":"string","title":"Title"},"authority":{"type":"string","title":"Authority","default":""},"value_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Eur"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"summary":{"type":"string","title":"Summary","default":""}},"type":"object","required":["title"],"title":"ReferenceProject"},"ResetPasswordPayload":{"properties":{"token":{"type":"string","maxLength":128,"minLength":20,"title":"Token"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordPayload"},"SimulatePayload":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"price_discount_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Discount Pct"},"add_certification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Add Certification"},"partner":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Partner"},"delivery_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delivery Days"}},"type":"object","required":["tender_id"],"title":"SimulatePayload"},"StatusRequest":{"properties":{"status":{"type":"string","enum":["active","suspended"],"title":"Status"}},"type":"object","required":["status"],"title":"StatusRequest"},"SupplierProfilePayload":{"properties":{"staff_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staff Count"},"years_in_public_procurement":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Years In Public Procurement"},"capacity_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capacity Note"},"financing_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Financing Note"},"kad_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"},{"type":"null"}],"title":"Kad Codes"},"regions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Regions"},"vat_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vat Number"},"max_contract_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Contract Eur"},"declared_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Declared Wins"},"declared_bids":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Declared Bids"}},"type":"object","title":"SupplierProfilePayload"},"TaskUpdate":{"properties":{"task_id":{"type":"string","title":"Task Id"},"done":{"type":"boolean","title":"Done"}},"type":"object","required":["task_id","done"],"title":"TaskUpdate"},"TeamUpdate":{"properties":{"team":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Team"}},"type":"object","required":["team"],"title":"TeamUpdate"},"TestPayload":{"properties":{"channel":{"type":"string","pattern":"^(telegram|email)$","title":"Channel"}},"type":"object","required":["channel"],"title":"TestPayload"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["access_token","expires_in"],"title":"TokenResponse"},"TransitionRequest":{"properties":{"to_stage":{"type":"string","title":"To Stage"}},"type":"object","required":["to_stage"],"title":"TransitionRequest"},"UpdateClientRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"vat":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vat"},"contact_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact Name"},"contact_email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact Email"},"status":{"anyOf":[{"type":"string","enum":["prospect","active","archived"]},{"type":"null"}],"title":"Status"},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateClientRequest"},"UpdateMandateRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":300,"minLength":1},{"type":"null"}],"title":"Title"},"sectors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sectors"},"ticket_min_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ticket Min Eur"},"ticket_max_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ticket Max Eur"},"geographies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Geographies"},"status":{"anyOf":[{"type":"string","enum":["draft","active","paused","closed"]},{"type":"null"}],"title":"Status"},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateMandateRequest"},"UpdatePayload":{"properties":{"user_edited_content":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"User Edited Content"},"user_price_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"User Price Eur"},"user_notes":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"User Notes"},"status":{"anyOf":[{"type":"string","enum":["draft","edited","approved","submitted","discarded"]},{"type":"null"}],"title":"Status"},"checklist":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChecklistPayload"},"type":"array"},{"type":"null"}],"title":"Checklist"}},"type":"object","title":"UpdatePayload"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name"},"role":{"type":"string","pattern":"^(supplier|public_authority)$","title":"Role","default":"supplier"},"authority_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Authority Name"},"authority_afm":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Authority Afm"},"vat_number":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Vat Number"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"contact_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Contact Name"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes"},"turnover_under_2m":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Turnover Under 2M"},"account_type":{"type":"string","pattern":"^(company|institution)$","title":"Account Type","default":"company"}},"type":"object","required":["email","password","company_name"],"title":"UserCreate"},"UserPublic":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"company_name":{"type":"string","title":"Company Name"},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"role":{"type":"string","title":"Role","default":"supplier"},"authority_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Name"},"authority_verified":{"type":"boolean","title":"Authority Verified","default":false},"authority_cpv_roots":{"items":{"type":"string"},"type":"array","title":"Authority Cpv Roots"},"authority_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Unit"},"license_status":{"type":"string","enum":["pending","active","expired","revoked"],"title":"License Status","default":"pending"},"license_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"License Expires At"},"license_activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"License Activated At"},"notification_prefs":{"$ref":"#/components/schemas/NotificationPrefs"},"match_settings":{"$ref":"#/components/schemas/MatchSettings"},"min_contract_value_eur":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Min Contract Value Eur"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"vat_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vat Number"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"limits":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"object","title":"Limits"},"trial_used":{"type":"boolean","title":"Trial Used","default":false},"fundsense_beta":{"type":"boolean","title":"Fundsense Beta","default":false},"segment":{"type":"string","title":"Segment","default":"supplier"}},"type":"object","required":["id","email","company_name"],"title":"UserPublic"},"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"},"WebhookRegister":{"properties":{"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"}},"type":"object","required":["url","events"],"title":"WebhookRegister"},"WebsiteIngestRequest":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"}},"type":"object","required":["url"],"title":"WebsiteIngestRequest"},"WinPlanPayload":{"properties":{"title":{"type":"string","title":"Title"},"tender_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Id"},"tender_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Title"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions"}},"type":"object","required":["title","actions"],"title":"WinPlanPayload"},"backend__api__agent_events__EconomicsPayload":{"properties":{"margin_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Margin Pct"},"bid_cost_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bid Cost Pct"},"financing_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Financing Rate Pct"},"execution_risk_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Execution Risk Pct"}},"type":"object","title":"EconomicsPayload"},"backend__api__settings__EconomicsPayload":{"properties":{"default_margin_pct":{"anyOf":[{"type":"number","maximum":60.0,"minimum":0.0},{"type":"null"}],"title":"Default Margin Pct"},"bid_cost_pct_of_value":{"anyOf":[{"type":"number","maximum":10.0,"minimum":0.0},{"type":"null"}],"title":"Bid Cost Pct Of Value"},"team":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Team"},"annual_bid_budget_eur":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Annual Bid Budget Eur"},"priority_sectors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Priority Sectors"},"risk_appetite":{"anyOf":[{"type":"string","pattern":"^(low|medium|high)$"},{"type":"null"}],"title":"Risk Appetite"}},"type":"object","title":"EconomicsPayload"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/auth/login"}}}}}}