{"openapi":"3.1.0","info":{"title":"Adjugo API","description":"API pour la gestion des marches publics","version":"1.0.0"},"paths":{"/api/auth/register":{"post":{"tags":["Authentification"],"summary":"Register","description":"Créer un nouveau compte utilisateur.","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/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["Authentification"],"summary":"Login","description":"Connexion — retourne un JWT.","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/demo":{"post":{"tags":["Authentification"],"summary":"Demo Login","description":"Connexion au compte de DÉMONSTRATION (sans mot de passe) — données pré-remplies.","operationId":"demo_login_api_auth_demo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/api/auth/me":{"get":{"tags":["Authentification"],"summary":"Get Me","description":"Récupérer le profil de l'utilisateur connecté.","operationId":"get_me_api_auth_me_get","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}}},"put":{"tags":["Authentification"],"summary":"Update Me","description":"Mettre à jour le profil.","operationId":"update_me_api_auth_me_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"full_name","in":"query","required":false,"schema":{"type":"string","title":"Full Name"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/documents":{"get":{"tags":["Projets / AO"],"summary":"Project Documents","description":"Dossier de l'AO : documents rangés par sous-dossier (arborescence).","operationId":"project_documents_api_projects__project_id__documents_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/":{"get":{"tags":["Projets / AO"],"summary":"List Projects","description":"Lister tous les projets de l'organisation (hors corbeille).","operationId":"list_projects_api_projects__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectOut"},"title":"Response List Projects Api Projects  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Projets / AO"],"summary":"Create Project","description":"Créer un nouveau projet / appel d'offres.","operationId":"create_project_api_projects__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}":{"get":{"tags":["Projets / AO"],"summary":"Get Project","description":"Récupérer un projet par son ID.","operationId":"get_project_api_projects__project_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Projets / AO"],"summary":"Update Project","description":"Mettre à jour un projet.","operationId":"update_project_api_projects__project_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Projets / AO"],"summary":"Delete Project","description":"Mettre un projet à la corbeille (suppression douce, réversible).","operationId":"delete_project_api_projects__project_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/restore":{"post":{"tags":["Projets / AO"],"summary":"Restore Project","description":"Restaurer un projet depuis la corbeille (annulation de suppression).","operationId":"restore_project_api_projects__project_id__restore_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{project_id}":{"post":{"tags":["Analyse IA"],"summary":"Run Analysis","operationId":"run_analysis_api_analysis__project_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_analysis_api_analysis__project_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/":{"get":{"tags":["Coffre-fort"],"summary":"List Documents","description":"Lister les documents du coffre-fort.","operationId":"list_documents_api_documents__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"},"title":"Response List Documents Api Documents  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Coffre-fort"],"summary":"Upload Document","description":"Uploader un document dans le coffre-fort.","operationId":"upload_document_api_documents__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_api_documents__post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/{doc_id}/replace":{"put":{"tags":["Coffre-fort"],"summary":"Replace Document","description":"Remplacer un document par une nouvelle version.","operationId":"replace_document_api_documents__doc_id__replace_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_replace_document_api_documents__doc_id__replace_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/{doc_id}":{"delete":{"tags":["Coffre-fort"],"summary":"Delete Document","description":"Mettre un document à la corbeille (suppression douce, réversible).\nLe fichier de stockage est conservé tant que la corbeille n'est pas purgée.","operationId":"delete_document_api_documents__doc_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/{doc_id}/restore":{"post":{"tags":["Coffre-fort"],"summary":"Restore Document","description":"Restaurer un document depuis la corbeille (annulation de suppression).","operationId":"restore_document_api_documents__doc_id__restore_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/{doc_id}/download":{"get":{"tags":["Coffre-fort"],"summary":"Download Document","description":"Télécharger un document. S3 → URL signée ; local → flux direct.","operationId":"download_document_api_documents__doc_id__download_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/expiring":{"get":{"tags":["Coffre-fort"],"summary":"Get Expiring Documents","description":"Récupérer les documents qui expirent dans les X prochains jours.","operationId":"get_expiring_documents_api_documents_expiring_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/":{"get":{"tags":["Facturation"],"summary":"List Invoices","operationId":"list_invoices_api_invoices__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","title":"Type"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceOut"},"title":"Response List Invoices Api Invoices  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Facturation"],"summary":"Create Invoice","operationId":"create_invoice_api_invoices__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/{invoice_id}":{"put":{"tags":["Facturation"],"summary":"Update Invoice","operationId":"update_invoice_api_invoices__invoice_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/{invoice_id}/convert":{"post":{"tags":["Facturation"],"summary":"Convert Devis To Facture","description":"Convertir un devis accepté en facture.","operationId":"convert_devis_to_facture_api_invoices__invoice_id__convert_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contacts/":{"get":{"tags":["Contacts"],"summary":"List Contacts","operationId":"list_contacts_api_contacts__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","title":"Type"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactOut"},"title":"Response List Contacts Api Contacts  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Contacts"],"summary":"Create Contact","operationId":"create_contact_api_contacts__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contacts/{contact_id}":{"put":{"tags":["Contacts"],"summary":"Update Contact","operationId":"update_contact_api_contacts__contact_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Contacts"],"summary":"Delete Contact","operationId":"delete_contact_api_contacts__contact_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/":{"get":{"tags":["Mon entreprise"],"summary":"Get Company","operationId":"get_company_api_company__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["Mon entreprise"],"summary":"Update Company","operationId":"update_company_api_company__put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Mon entreprise"],"summary":"Create Company","operationId":"create_company_api_company__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/criteria/":{"get":{"tags":["Criteres de matching"],"summary":"Get Criteria","operationId":"get_criteria_api_criteria__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["Criteres de matching"],"summary":"Update Criteria","operationId":"update_criteria_api_criteria__put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CriteriaUpdate"}}},"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/cerfa/types":{"get":{"tags":["Generation CERFA"],"summary":"List Types","operationId":"list_types_api_cerfa_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cerfa/{project_id}/{doc_type}":{"post":{"tags":["Generation CERFA"],"summary":"Generate","operationId":"generate_api_cerfa__project_id___doc_type__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"doc_type","in":"path","required":true,"schema":{"type":"string","title":"Doc Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cerfa/{project_id}/status":{"get":{"tags":["Generation CERFA"],"summary":"Get Status","operationId":"get_status_api_cerfa__project_id__status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/create-checkout":{"post":{"tags":["Paiements Stripe"],"summary":"Create Checkout","operationId":"create_checkout_api_stripe_create_checkout_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"plan","in":"query","required":true,"schema":{"type":"string","title":"Plan"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/status":{"get":{"tags":["Paiements Stripe"],"summary":"Get Subscription Status","operationId":"get_subscription_status_api_stripe_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/stripe/overage":{"post":{"tags":["Paiements Stripe"],"summary":"Set Overage","description":"Active/désactive le paiement à l'usage au-delà du quota mensuel.","operationId":"set_overage_api_stripe_overage_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"enabled","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Enabled"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/portal":{"post":{"tags":["Paiements Stripe"],"summary":"Create Portal","operationId":"create_portal_api_stripe_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/stripe/webhook":{"post":{"tags":["Paiements Stripe"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cotraitants/":{"get":{"tags":["Co-traitants"],"summary":"List Cotraitants","operationId":"list_cotraitants_api_cotraitants__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Co-traitants"],"summary":"Create Cotraitant","operationId":"create_cotraitant_api_cotraitants__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CotraitantCreate"}}},"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/cotraitants/{ct_id}":{"put":{"tags":["Co-traitants"],"summary":"Update Cotraitant","operationId":"update_cotraitant_api_cotraitants__ct_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"ct_id","in":"path","required":true,"schema":{"type":"integer","title":"Ct Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CotraitantCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Co-traitants"],"summary":"Delete Cotraitant","operationId":"delete_cotraitant_api_cotraitants__ct_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"ct_id","in":"path","required":true,"schema":{"type":"integer","title":"Ct Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cotraitants/project/{project_id}":{"get":{"tags":["Co-traitants"],"summary":"List Project Cotraitants","operationId":"list_project_cotraitants_api_cotraitants_project__project_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Co-traitants"],"summary":"Attach Cotraitant","operationId":"attach_cotraitant_api_cotraitants_project__project_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cotraitants/project/{project_id}/{link_id}":{"delete":{"tags":["Co-traitants"],"summary":"Detach Cotraitant","operationId":"detach_cotraitant_api_cotraitants_project__project_id___link_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/{project_id}":{"post":{"tags":["Export dossier"],"summary":"Export Dossier","operationId":"export_dossier_api_export__project_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/checklist/{project_id}":{"get":{"tags":["Checklist intelligente"],"summary":"Get Checklist","operationId":"get_checklist_api_checklist__project_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chiffrage/{project_id}":{"get":{"tags":["Chiffrage"],"summary":"Get Estimate","operationId":"get_estimate_api_chiffrage__project_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Chiffrage"],"summary":"Save Estimate","description":"Recalcul déterministe après ajustement manuel (aucun appel IA). Repasse en brouillon.","operationId":"save_estimate_api_chiffrage__project_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chiffrage/{project_id}/estimate":{"post":{"tags":["Chiffrage"],"summary":"Make Estimate","operationId":"make_estimate_api_chiffrage__project_id__estimate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chiffrage/{project_id}/dpgf":{"get":{"tags":["Chiffrage"],"summary":"Download Dpgf","description":"Génère la DPGF + BPU (PDF) à partir du chiffrage estimatif.","operationId":"download_dpgf_api_chiffrage__project_id__dpgf_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chiffrage/{project_id}/review":{"put":{"tags":["Chiffrage"],"summary":"Review Estimate","description":"Revue d'équipe : valider / demander une révision (étape 5). Trace l'auteur.","operationId":"review_estimate_api_chiffrage__project_id__review_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/stats":{"get":{"tags":["Tableau de bord"],"summary":"Agent Stats","operationId":"agent_stats_api_agent_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/registre/company":{"get":{"tags":["Registre entreprises (réel)"],"summary":"Lookup","operationId":"lookup_api_registre_company_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"SIRET, SIREN ou nom","title":"Q"},"description":"SIRET, SIREN ou nom"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/registre/trades":{"get":{"tags":["Registre entreprises (réel)"],"summary":"Trades","operationId":"trades_api_registre_trades_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/registre/discover":{"get":{"tags":["Registre entreprises (réel)"],"summary":"Discover","operationId":"discover_api_registre_discover_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity","in":"query","required":false,"schema":{"type":"string","description":"Clé métier ou texte libre","default":"","title":"Activity"},"description":"Clé métier ou texte libre"},{"name":"departement","in":"query","required":false,"schema":{"type":"string","description":"Numéro de département","default":"","title":"Departement"},"description":"Numéro de département"},{"name":"query","in":"query","required":false,"schema":{"type":"string","description":"Recherche libre","default":"","title":"Query"},"description":"Recherche libre"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/registre/import":{"post":{"tags":["Registre entreprises (réel)"],"summary":"Import Cotraitant","description":"Crée un co-traitant à partir d'une entreprise réelle découverte dans le registre.","operationId":"import_cotraitant_api_registre_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportCotraitant"}}},"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/run-alerts":{"post":{"tags":["Administration"],"summary":"Run Alerts","operationId":"run_alerts_api_admin_run_alerts_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/run-tender-alerts":{"post":{"tags":["Administration"],"summary":"Run Tender Alerts Endpoint","description":"Veille AO : rejoue les recherches sauvegardées et notifie les nouveaux marchés.","operationId":"run_tender_alerts_endpoint_api_admin_run_tender_alerts_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/run-amont-alerts":{"post":{"tags":["Administration"],"summary":"Run Amont Alerts Endpoint","description":"Veille AMONT : va chercher les délibérations, détecte les projets d'investissement\net notifie chaque utilisateur de ses nouveaux projets pertinents (avant l'AO).","operationId":"run_amont_alerts_endpoint_api_admin_run_amont_alerts_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sourcing/buyer-profile":{"get":{"tags":["Sourcing (sources officielles)"],"summary":"Buyer Profile","description":"Intelligence marché : historique de publication réel d'un acheteur (BOAMP).\nRenvoie {} si l'acheteur n'a aucun avis trouvé — jamais de profil inventé.","operationId":"buyer_profile_api_sourcing_buyer_profile_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acheteur","in":"query","required":false,"schema":{"type":"string","default":"","title":"Acheteur"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sourcing/groupement":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Optimize Groupement","description":"Décompose l'allotissement et recommande une composition de groupement :\nlots couverts en propre (mandataire) vs lots à confier à un co-traitant scoré.","operationId":"optimize_groupement_api_sourcing_groupement_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupementRequest"}}},"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/sourcing/countries":{"get":{"tags":["Sourcing (sources officielles)"],"summary":"List Countries","description":"Liste des pays couverts par TED (UE + EEE) pour le sélecteur de recherche.","operationId":"list_countries_api_sourcing_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/sourcing/search":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Search Tenders","operationId":"search_tenders_api_sourcing_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}},"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/sourcing/renewals":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Renewals","description":"Traque les marchés DÉJÀ ATTRIBUÉS dont le contrat arrive bientôt à échéance →\nse positionner auprès de l'acheteur avant la republication. Dates estimées, sources réelles.","operationId":"renewals_api_sourcing_renewals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenewalRequest"}}},"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/sourcing/analyze":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Analyze Tender","operationId":"analyze_tender_api_sourcing_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"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/sourcing/analyze-upload":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Analyze Upload","operationId":"analyze_upload_api_sourcing_analyze_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_upload_api_sourcing_analyze_upload_post"}}},"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/sourcing/ask":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Ask Ao","operationId":"ask_ao_api_sourcing_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"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/sourcing/cotraitants":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Source Cotraitants","operationId":"source_cotraitants_api_sourcing_cotraitants_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CotraitantsRequest"}}},"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/sourcing/documents":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Generate Documents","operationId":"generate_documents_api_sourcing_documents_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentsRequest"}}},"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/saved-searches/":{"get":{"tags":["Veille / alertes AO"],"summary":"List Saved Searches","operationId":"list_saved_searches_api_saved_searches__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Veille / alertes AO"],"summary":"Create Saved Search","operationId":"create_saved_search_api_saved_searches__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedSearchIn"}}},"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/saved-searches/{search_id}":{"put":{"tags":["Veille / alertes AO"],"summary":"Update Saved Search","operationId":"update_saved_search_api_saved_searches__search_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"integer","title":"Search Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedSearchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Veille / alertes AO"],"summary":"Delete Saved Search","operationId":"delete_saved_search_api_saved_searches__search_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"integer","title":"Search Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-searches/{search_id}/run":{"post":{"tags":["Veille / alertes AO"],"summary":"Run Saved Search Now","description":"Exécute l'alerte immédiatement (aperçu) et renvoie les nouveaux AO trouvés.","operationId":"run_saved_search_now_api_saved_searches__search_id__run_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"integer","title":"Search Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/countries":{"get":{"tags":["Équipe / Organisation"],"summary":"Adapted Countries","description":"Pays pour lesquels Adjugo est pleinement adapté (donnée entreprise complète).","operationId":"adapted_countries_api_org_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/org/":{"get":{"tags":["Équipe / Organisation"],"summary":"Get Org","operationId":"get_org_api_org__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["Équipe / Organisation"],"summary":"Update Org","operationId":"update_org_api_org__put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameIn"}}},"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/org/invite":{"post":{"tags":["Équipe / Organisation"],"summary":"Invite Member","description":"Invite un collègue dans l'organisation. Crée son compte avec un mot de passe\nprovisoire (retourné une seule fois) à lui transmettre, et envoie un email si SMTP.","operationId":"invite_member_api_org_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteIn"}}},"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/org/members/{member_id}":{"delete":{"tags":["Équipe / Organisation"],"summary":"Remove Member","description":"Retire un membre de l'organisation (lui recrée un espace personnel → il perd\nimmédiatement l'accès aux données de l'organisation).","operationId":"remove_member_api_org_members__member_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/members/{member_id}/role":{"put":{"tags":["Équipe / Organisation"],"summary":"Set Member Role","description":"Change le rôle d'un membre (admin/membre). Réservé au propriétaire. Un admin peut\ninviter des membres ; le propriétaire reste seul à pouvoir retirer/transférer.","operationId":"set_member_role_api_org_members__member_id__role_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/transfer-ownership":{"post":{"tags":["Équipe / Organisation"],"summary":"Transfer Ownership","description":"Transfère la propriété de l'organisation à un autre membre (continuité si le\nfondateur part). Seul le propriétaire actuel peut le faire.","operationId":"transfer_ownership_api_org_transfer_ownership_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferIn"}}},"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/amont/analyze-upload":{"post":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Analyze Upload","operationId":"analyze_upload_api_amont_analyze_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_upload_api_amont_analyze_upload_post"}}},"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/amont/analyze-text":{"post":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Analyze Text","operationId":"analyze_text_api_amont_analyze_text_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"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/amont/scan":{"post":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Scan","description":"Adjugo VA CHERCHER les délibérations récentes des collectivités (open data),\npré-filtre l'investissement, puis l'IA détecte les projets futurs.\nSi des départements sont ciblés, on ne garde que ces zones.","operationId":"scan_api_amont_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest","default":{"departements":[],"domaines":[]}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/amont/auto":{"get":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Auto Status","operationId":"auto_status_api_amont_auto_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Set Auto","description":"Active/désactive la veille amont automatique : un scan régulier détecte les\nnouveaux projets et envoie un email des nouveautés pertinentes.","operationId":"set_auto_api_amont_auto_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRequest"}}},"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/amont/":{"get":{"tags":["Veille amont (signaux d'investissement)"],"summary":"List Signals","operationId":"list_signals_api_amont__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/amont/{signal_id}":{"delete":{"tags":["Veille amont (signaux d'investissement)"],"summary":"Delete Signal","operationId":"delete_signal_api_amont__signal_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"integer","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/":{"get":{"tags":["Base de connaissances & génération (RAG)"],"summary":"List Docs","operationId":"list_docs_api_knowledge__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/knowledge/upload":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Upload Doc","operationId":"upload_doc_api_knowledge_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_doc_api_knowledge_upload_post"}}},"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/knowledge/text":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Add Text","operationId":"add_text_api_knowledge_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextDoc"}}},"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/knowledge/{doc_id}":{"delete":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Delete Doc","operationId":"delete_doc_api_knowledge__doc_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/search":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Search","description":"Recherche traçable dans la base : renvoie les extraits sources (clic-vers-source).","operationId":"search_api_knowledge_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchReq"}}},"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/knowledge/memoire-upload":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Memoire Upload","operationId":"memoire_upload_api_knowledge_memoire_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_memoire_upload_api_knowledge_memoire_upload_post"}}},"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/knowledge/memoire":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Memoire Text","operationId":"memoire_text_api_knowledge_memoire_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoireText"}}},"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/knowledge/questionnaire":{"post":{"tags":["Base de connaissances & génération (RAG)"],"summary":"Questionnaire","operationId":"questionnaire_api_knowledge_questionnaire_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionnaireReq"}}},"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/jobs/{job_id}":{"get":{"tags":["Jobs asynchrones"],"summary":"Get Job","operationId":"get_job_api_jobs__job_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/invites":{"post":{"tags":["Co-traitance"],"summary":"Create Invite","description":"Génère un lien d'invitation co-traitant pour ce projet (mandataire only).","operationId":"create_invite_api_projects__project_id__invites_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Co-traitance"],"summary":"List Invites","operationId":"list_invites_api_projects__project_id__invites_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/invites/{invite_id}":{"delete":{"tags":["Co-traitance"],"summary":"Revoke Invite","description":"Révoque un lien : le co-traitant perd l'accès immédiatement.","operationId":"revoke_invite_api_projects__project_id__invites__invite_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"integer","title":"Invite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/audit":{"get":{"tags":["Co-traitance"],"summary":"Project Audit","description":"Journal d'accès du projet (RGPD) — qui a consulté/téléchargé quoi, et quand.","operationId":"project_audit_api_projects__project_id__audit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/integrity":{"get":{"tags":["Co-traitance"],"summary":"Audit Integrity","description":"Vérifie l'intégrité du journal d'audit du tenant (chaîne de hash). Preuve RGPD\nque la traçabilité n'a pas été altérée.","operationId":"audit_integrity_api_audit_integrity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/invite/{token}":{"get":{"tags":["Co-traitance"],"summary":"Guest View","description":"Vue bridée du projet partagé (aucune autre donnée du tenant n'est lisible).","operationId":"guest_view_api_invite__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/doc/{doc_id}":{"get":{"tags":["Co-traitance"],"summary":"Guest Download","description":"Télécharge une pièce partagée — STRICTEMENT limitée au projet de l'invitation.","operationId":"guest_download_api_invite__token__doc__doc_id__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/contribution":{"get":{"tags":["Co-traitance"],"summary":"Guest Get Contribution","description":"Récupère (ou initialise) la contribution de CET invité — la sienne uniquement.","operationId":"guest_get_contribution_api_invite__token__contribution_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Co-traitance"],"summary":"Guest Save Contribution","description":"Enregistre le brouillon de la contribution de cet invité (ses champs uniquement).","operationId":"guest_save_contribution_api_invite__token__contribution_put","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/otp/status":{"get":{"tags":["Co-traitance"],"summary":"Guest Otp Status","description":"Indique au front si une vérification d'identité est requise pour soumettre, et si\nelle est déjà faite. Si l'email n'est pas configuré, aucune vérification (flux libre).","operationId":"guest_otp_status_api_invite__token__otp_status_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/otp/request":{"post":{"tags":["Co-traitance"],"summary":"Guest Otp Request","description":"Envoie un code à 6 chiffres à l'adresse destinataire de l'invitation, pour prouver\nque l'invité la contrôle avant de soumettre sa part.","operationId":"guest_otp_request_api_invite__token__otp_request_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/otp/verify":{"post":{"tags":["Co-traitance"],"summary":"Guest Otp Verify","description":"Vérifie le code reçu par email → marque l'identité de l'invité comme prouvée.","operationId":"guest_otp_verify_api_invite__token__otp_verify_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpVerify"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/contribution/submit":{"post":{"tags":["Co-traitance"],"summary":"Guest Submit Contribution","description":"Soumet la contribution au mandataire (et la rend disponible pour la fusion IA).","operationId":"guest_submit_contribution_api_invite__token__contribution_submit_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/search":{"post":{"tags":["Co-traitance"],"summary":"Guest Search","description":"Recherche d'AO publics pour l'invité (découverte). Pas de LLM, pas de quota.","operationId":"guest_search_api_invite__token__search_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestSearch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/contribution/piece":{"post":{"tags":["Co-traitance"],"summary":"Guest Upload Piece","description":"Le co-traitant téléverse UNE de ses pièces administratives (scopée à sa part).","operationId":"guest_upload_piece_api_invite__token__contribution_piece_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_guest_upload_piece_api_invite__token__contribution_piece_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/contribution/piece/{piece_id}":{"get":{"tags":["Co-traitance"],"summary":"Guest Download Piece","description":"Le co-traitant re-télécharge SA pièce.","operationId":"guest_download_piece_api_invite__token__contribution_piece__piece_id__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"piece_id","in":"path","required":true,"schema":{"type":"integer","title":"Piece Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Co-traitance"],"summary":"Guest Delete Piece","description":"Le co-traitant retire SA pièce.","operationId":"guest_delete_piece_api_invite__token__contribution_piece__piece_id__delete","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"piece_id","in":"path","required":true,"schema":{"type":"integer","title":"Piece Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/contribution-pieces/{piece_id}":{"get":{"tags":["Co-traitance"],"summary":"Owner Download Piece","description":"Le mandataire télécharge une pièce d'un co-traitant (scopée à SON projet).","operationId":"owner_download_piece_api_projects__project_id__contribution_pieces__piece_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}},{"name":"piece_id","in":"path","required":true,"schema":{"type":"integer","title":"Piece Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/contributions":{"get":{"tags":["Co-traitance"],"summary":"List Contributions","description":"Toutes les contributions des co-traitants de CE projet (mandataire only).","operationId":"list_contributions_api_projects__project_id__contributions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/consortiums":{"get":{"tags":["Co-traitance"],"summary":"My Consortiums","description":"Tous les consortiums du mandataire (AO avec ≥1 partenaire) — pour l'accueil.\nAgrège partenaires, parts soumises, pièces et % de réponse prête par AO.","operationId":"my_consortiums_api_consortiums_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/projects/{project_id}/consortium":{"get":{"tags":["Co-traitance"],"summary":"Consortium Cockpit","description":"Cockpit du consortium (mandataire) : partenaires × lots, complétude de chaque part,\net % de réponse commune PRÊTE — calcul DÉTERMINISTE (jamais inventé).","operationId":"consortium_cockpit_api_projects__project_id__consortium_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications":{"get":{"tags":["Co-traitance"],"summary":"Notifications","description":"Activité récente des co-traitants sur les AO du mandataire (in-app, sans email).","operationId":"notifications_api_notifications_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":21,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invite/{token}/claim":{"post":{"tags":["Co-traitance"],"summary":"Claim Invite","description":"Un titulaire de compte réclame un lien → l'AO entre dans son « Partagé avec moi ».","operationId":"claim_invite_api_invite__token__claim_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shared":{"get":{"tags":["Co-traitance"],"summary":"Shared With Me","description":"Les AO partagés AVEC moi (liens que j'ai réclamés). Pour « Partagé avec moi ».","operationId":"shared_with_me_api_shared_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/projects/{project_id}/dossier-preview":{"get":{"tags":["Co-traitance"],"summary":"Dossier Preview","description":"Liste les fichiers que contiendra le dossier commun, SANS lancer la génération\n(pas de LLM, pas de quota) — pour voir avant d'exporter.","operationId":"dossier_preview_api_projects__project_id__dossier_preview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/consortium/report":{"get":{"tags":["Co-traitance"],"summary":"Consortium Report","operationId":"consortium_report_api_projects__project_id__consortium_report_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"integer","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"tags":["Sante"],"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/llm/info":{"get":{"tags":["Sante"],"summary":"Llm Info","description":"Fournisseur IA actif (sans secret). Prouve que l'architecture est découplée :\nbascule Anthropic ↔ Mistral (souverain FR/EU) par simple variable d'environnement.","operationId":"llm_info_api_llm_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health/ready":{"get":{"tags":["Sante"],"summary":"Health Ready","description":"Readiness détaillée : base + état du disjoncteur IA + backlog de jobs.\n503 si un sous-système CRITIQUE (base) est en panne.","operationId":"health_ready_api_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AnalyzeRequest":{"properties":{"tender":{"type":"object","title":"Tender"}},"type":"object","required":["tender"],"title":"AnalyzeRequest"},"AskRequest":{"properties":{"project_id":{"type":"integer","title":"Project Id"},"question":{"type":"string","title":"Question"}},"type":"object","required":["project_id","question"],"title":"AskRequest"},"AttachRequest":{"properties":{"cotraitant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cotraitant Id"},"company":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Company"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","default":"sous_traitant"},"lot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lot","default":""}},"type":"object","title":"AttachRequest"},"AutoRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"AutoRequest"},"Body_analyze_upload_api_amont_analyze_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"domaines":{"type":"string","title":"Domaines","default":""}},"type":"object","required":["file"],"title":"Body_analyze_upload_api_amont_analyze_upload_post"},"Body_analyze_upload_api_sourcing_analyze_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"project_id":{"type":"integer","title":"Project Id"}},"type":"object","required":["file","project_id"],"title":"Body_analyze_upload_api_sourcing_analyze_upload_post"},"Body_guest_upload_piece_api_invite__token__contribution_piece_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_guest_upload_piece_api_invite__token__contribution_piece_post"},"Body_memoire_upload_api_knowledge_memoire_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_memoire_upload_api_knowledge_memoire_upload_post"},"Body_replace_document_api_documents__doc_id__replace_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"expiration_date":{"type":"string","title":"Expiration Date"}},"type":"object","required":["file"],"title":"Body_replace_document_api_documents__doc_id__replace_put"},"Body_run_analysis_api_analysis__project_id__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_run_analysis_api_analysis__project_id__post"},"Body_upload_doc_api_knowledge_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"kind":{"type":"string","title":"Kind","default":"autre"}},"type":"object","required":["file"],"title":"Body_upload_doc_api_knowledge_upload_post"},"Body_upload_document_api_documents__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category","default":"autre"},"expiration_date":{"type":"string","title":"Expiration Date"}},"type":"object","required":["file"],"title":"Body_upload_document_api_documents__post"},"CompanyCreate":{"properties":{"name":{"type":"string","title":"Name"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret"},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Ape"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forme Juridique"},"capital":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capital"},"representant_legal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representant Legal"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"tva_intracom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva Intracom"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"ca_n1":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N1","default":0},"ca_n2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N2","default":0},"ca_n3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N3","default":0},"effectif":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif","default":0},"qualifications":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Qualifications","default":[]},"references":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"References","default":[]},"team":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Team","default":[]},"day_rates":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Day Rates","default":[]},"distance_threshold_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance Threshold Km","default":50},"distance_surcharge_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Surcharge Pct","default":0}},"type":"object","required":["name"],"title":"CompanyCreate"},"CompanyOut":{"properties":{"name":{"type":"string","title":"Name"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret"},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Ape"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forme Juridique"},"capital":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capital"},"representant_legal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representant Legal"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"tva_intracom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva Intracom"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"ca_n1":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N1","default":0},"ca_n2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N2","default":0},"ca_n3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N3","default":0},"effectif":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif","default":0},"qualifications":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Qualifications","default":[]},"references":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"References","default":[]},"team":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Team","default":[]},"day_rates":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Day Rates","default":[]},"distance_threshold_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance Threshold Km","default":50},"distance_surcharge_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Surcharge Pct","default":0},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","id","user_id","created_at"],"title":"CompanyOut"},"ContactCreate":{"properties":{"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"contact_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Type"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name"],"title":"ContactCreate"},"ContactOut":{"properties":{"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"contact_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Type"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","id","created_at"],"title":"ContactOut"},"ContactUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"contact_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Type"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"ContactUpdate"},"ContributionSave":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"lot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lot"},"references":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"References"},"qualifications":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Qualifications"},"chiffrage_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chiffrage Note"},"memoire_paragraph":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memoire Paragraph"},"contact":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Contact"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},"type":"object","title":"ContributionSave"},"CotraitantCreate":{"properties":{"name":{"type":"string","title":"Name"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret","default":""},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Ape","default":""},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forme Juridique","default":""},"representant_legal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representant Legal","default":""},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","default":""},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code","default":""},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","default":""},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","default":""},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","default":""},"tva_intracom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva Intracom","default":""},"ca_n1":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N1","default":0},"ca_n2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N2","default":0},"ca_n3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca N3","default":0},"effectif":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif","default":0},"qualifications":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifications","default":""},"specialites":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Specialites","default":""},"codes_cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codes Cpv","default":""},"departement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departement","default":""}},"type":"object","required":["name"],"title":"CotraitantCreate"},"CotraitantsRequest":{"properties":{"project_id":{"type":"integer","title":"Project Id"},"activity":{"type":"string","title":"Activity","default":""},"departement":{"type":"string","title":"Departement","default":""},"query":{"type":"string","title":"Query","default":""}},"type":"object","required":["project_id"],"title":"CotraitantsRequest"},"CriteriaUpdate":{"properties":{"budget_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget Min","default":10000},"budget_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget Max","default":500000},"ca_ratio_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ca Ratio Max","default":30},"avance_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avance Min","default":5},"delai_paiement_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delai Paiement Max","default":60},"max_distance_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Distance Km","default":100},"departements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departements","default":""},"regions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regions","default":""},"types_marche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types Marche","default":"Travaux, Services"},"procedures_acceptees":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedures Acceptees","default":"MAPA, AOO"},"lot_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lot Min","default":5000},"codes_cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codes Cpv","default":""},"qualifications":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifications","default":""},"certifications":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Certifications","default":""},"specialites":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Specialites","default":""},"effectif_max_marche":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif Max Marche","default":0},"penalty_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Penalty Max","default":10},"garantie_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Garantie Max","default":5},"retenue_garantie_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retenue Garantie Max","default":5},"delai_reponse_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delai Reponse Min","default":15},"excluded_keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excluded Keywords","default":""},"go_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Go Threshold","default":75},"nogo_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nogo Threshold","default":40}},"type":"object","title":"CriteriaUpdate"},"DocumentsRequest":{"properties":{"project_id":{"type":"integer","title":"Project Id"},"cotraitants":{"items":{"type":"object"},"type":"array","title":"Cotraitants","default":[]}},"type":"object","required":["project_id"],"title":"DocumentsRequest"},"EstimateRequest":{"properties":{"distance_km":{"type":"number","title":"Distance Km","default":0}},"type":"object","title":"EstimateRequest"},"GroupementRequest":{"properties":{"project_id":{"type":"integer","title":"Project Id"}},"type":"object","required":["project_id"],"title":"GroupementRequest"},"GuestSearch":{"properties":{"query":{"type":"string","title":"Query","default":""},"departements":{"items":{},"type":"array","title":"Departements","default":[]},"countries":{"items":{},"type":"array","title":"Countries","default":[]},"montant_min":{"type":"number","title":"Montant Min","default":0},"montant_max":{"type":"number","title":"Montant Max","default":0},"limit":{"type":"integer","title":"Limit","default":20}},"type":"object","title":"GuestSearch"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportCotraitant":{"properties":{"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siren","default":""},"name":{"type":"string","title":"Name"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret","default":""},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Ape","default":""},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forme Juridique","default":""},"representant_legal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Representant Legal","default":""},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","default":""},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code","default":""},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","default":""},"departement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departement","default":""},"effectif":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif","default":0},"specialites":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Specialites","default":""},"qualifications":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifications","default":""},"codes_cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codes Cpv","default":""}},"type":"object","required":["name"],"title":"ImportCotraitant"},"InviteCreate":{"properties":{"recipient":{"type":"string","title":"Recipient","default":""},"company_name":{"type":"string","title":"Company Name","default":""},"role":{"type":"string","title":"Role","default":"cotraitant"},"can_view_docs":{"type":"boolean","title":"Can View Docs","default":true},"can_contribute":{"type":"boolean","title":"Can Contribute","default":true},"expires_days":{"type":"integer","title":"Expires Days","default":30}},"type":"object","title":"InviteCreate"},"InviteIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","default":""}},"type":"object","required":["email"],"title":"InviteIn"},"InvoiceCreate":{"properties":{"type":{"type":"string","title":"Type"},"client_name":{"type":"string","title":"Client Name"},"client_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Address"},"client_siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Siret"},"items":{"items":{"type":"object"},"type":"array","title":"Items","default":[]},"tva_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tva Rate","default":20.0},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date"},"project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Project Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["type","client_name"],"title":"InvoiceCreate"},"InvoiceOut":{"properties":{"id":{"type":"integer","title":"Id"},"reference":{"type":"string","title":"Reference"},"type":{"type":"string","title":"Type"},"status":{"type":"string","title":"Status"},"client_name":{"type":"string","title":"Client Name"},"items":{"items":{},"type":"array","title":"Items"},"subtotal_ht":{"type":"number","title":"Subtotal Ht"},"tva_rate":{"type":"number","title":"Tva Rate"},"tva_amount":{"type":"number","title":"Tva Amount"},"total_ttc":{"type":"number","title":"Total Ttc"},"issue_date":{"type":"string","format":"date","title":"Issue Date"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date"},"paid_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Paid Date"},"project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Project Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","reference","type","status","client_name","items","subtotal_ht","tva_rate","tva_amount","total_ttc","issue_date","due_date","paid_date","project_id","created_at"],"title":"InvoiceOut"},"InvoiceUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"items":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Items"},"tva_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tva Rate"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date"},"paid_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Paid Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"InvoiceUpdate"},"MemoireText":{"properties":{"dce_text":{"type":"string","title":"Dce Text"}},"type":"object","required":["dce_text"],"title":"MemoireText"},"OtpVerify":{"properties":{"code":{"type":"string","title":"Code","default":""}},"type":"object","title":"OtpVerify"},"ProjectCreate":{"properties":{"name":{"type":"string","title":"Name"},"client":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client"},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","default":0},"tva_rate":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Tva Rate","default":0},"deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Deadline"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["name"],"title":"ProjectCreate"},"ProjectOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"client":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client"},"budget":{"type":"number","title":"Budget"},"tva_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tva Rate","default":0},"status":{"type":"string","title":"Status"},"deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Deadline"},"match_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Match Score"},"go_decision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Go Decision"},"ai_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Summary"},"ai_analysis":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Ai Analysis"},"workflow":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Workflow"},"outcome_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Reason"},"outcome_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outcome Rank"},"awarded_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Awarded Amount"},"competitor_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competitor Winner"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","client","budget","status","deadline","match_score","go_decision","ai_summary","ai_analysis","workflow","created_at"],"title":"ProjectOut"},"ProjectUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"client":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client"},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget"},"tva_rate":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Tva Rate"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Deadline"},"workflow":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Workflow"},"outcome_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Reason"},"outcome_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outcome Rank"},"awarded_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Awarded Amount"},"competitor_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competitor Winner"}},"type":"object","title":"ProjectUpdate"},"QuestionnaireReq":{"properties":{"questions":{"items":{"type":"string"},"type":"array","title":"Questions"}},"type":"object","required":["questions"],"title":"QuestionnaireReq"},"RenameIn":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},"type":"object","title":"RenameIn"},"RenewalRequest":{"properties":{"query":{"type":"string","title":"Query","default":"travaux"},"departements":{"items":{"type":"string"},"type":"array","title":"Departements","default":[]},"domaines":{"items":{"type":"string"},"type":"array","title":"Domaines","default":[]}},"type":"object","title":"RenewalRequest"},"ReviewRequest":{"properties":{"status":{"type":"string","title":"Status","default":"valide"},"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"ReviewRequest"},"RoleIn":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"RoleIn"},"SaveRequest":{"properties":{"lignes":{"items":{},"type":"array","title":"Lignes","default":[]},"distance_km":{"type":"number","title":"Distance Km","default":0}},"type":"object","title":"SaveRequest"},"SavedSearchIn":{"properties":{"name":{"type":"string","title":"Name"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":""},"cpv":{"items":{"type":"string"},"type":"array","title":"Cpv","default":[]},"departements":{"items":{"type":"string"},"type":"array","title":"Departements","default":[]},"countries":{"items":{"type":"string"},"type":"array","title":"Countries","default":[]},"montant_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Montant Min"},"montant_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Montant Max"},"frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frequency","default":"quotidienne"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","default":true},"min_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Score"}},"type":"object","required":["name"],"title":"SavedSearchIn"},"ScanRequest":{"properties":{"departements":{"items":{"type":"string"},"type":"array","title":"Departements","default":[]},"domaines":{"items":{"type":"string"},"type":"array","title":"Domaines","default":[]}},"type":"object","title":"ScanRequest"},"SearchReq":{"properties":{"query":{"type":"string","title":"Query"},"k":{"type":"integer","title":"K","default":6}},"type":"object","required":["query"],"title":"SearchReq"},"SearchRequest":{"properties":{"query":{"type":"string","title":"Query","default":""},"departements":{"items":{"type":"string"},"type":"array","title":"Departements","default":[]},"cpv":{"items":{"type":"string"},"type":"array","title":"Cpv","default":[]},"montant_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Montant Min"},"montant_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Montant Max"},"limit":{"type":"integer","title":"Limit","default":20},"countries":{"items":{"type":"string"},"type":"array","title":"Countries","default":[]},"type_marche":{"type":"string","title":"Type Marche","default":""}},"type":"object","title":"SearchRequest"},"TextDoc":{"properties":{"name":{"type":"string","title":"Name","default":"Document collé"},"text":{"type":"string","title":"Text"},"kind":{"type":"string","title":"Kind","default":"autre"}},"type":"object","required":["text"],"title":"TextDoc"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"Token"},"TransferIn":{"properties":{"new_owner_id":{"type":"integer","title":"New Owner Id"}},"type":"object","required":["new_owner_id"],"title":"TransferIn"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"type":"string","title":"Full Name"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"}},"type":"object","required":["email","password","full_name"],"title":"UserCreate"},"UserLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserOut":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"plan":{"type":"string","title":"Plan"},"analyses_used_this_month":{"type":"integer","title":"Analyses Used This Month"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","full_name","plan","analyses_used_this_month","is_active","created_at"],"title":"UserOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/auth/login"}}}}}}