{"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/verify-email":{"post":{"tags":["Authentification"],"summary":"Verify Email","description":"Confirme l'adresse à partir du lien signé reçu par email.","operationId":"verify_email_api_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/resend-verification":{"post":{"tags":["Authentification"],"summary":"Resend Verification","description":"Renvoie l'email de confirmation au compte connecté.","operationId":"resend_verification_api_auth_resend_verification_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/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.\nLe compte démo est un BAC À SABLE public (réinitialisé à chaque démarrage, aucune donnée\nclient réelle) : son accès sans mot de passe est VOLONTAIRE (vitrine de la landing page).\nLe risque « passwordless » signalé par l'audit est neutralisé par cette nature sandbox, et\nle contournement du cron admin via DEMO_MODE a été fermé séparément (CRON_SECRET requis).","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/auth/change-password":{"post":{"tags":["Authentification"],"summary":"Change Password","description":"Change le mot de passe (notamment pour un membre invité qui doit remplacer son\nmot de passe provisoire). Invalide les autres sessions (token_version) et renvoie un\ntoken frais pour la session courante.","operationId":"change_password_api_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChange"}}},"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"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/forgot-password":{"post":{"tags":["Authentification"],"summary":"Forgot Password","description":"Envoie un lien de réinitialisation à l'adresse, SI elle correspond à un compte.\nRéponse identique dans tous les cas (on ne révèle pas l'existence d'un compte).","operationId":"forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["Authentification"],"summary":"Reset Password","description":"Pose un nouveau mot de passe à partir d'un token reçu par email. Invalide les\nautres sessions et connecte directement (token frais).","operationId":"reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetIn"}}},"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/oauth-config":{"get":{"tags":["Authentification"],"summary":"Oauth Config","description":"Public : le front sait s'il doit afficher le bouton « Se connecter avec Google ».","operationId":"oauth_config_api_auth_oauth_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/google/login":{"get":{"tags":["Authentification"],"summary":"Google Login","operationId":"google_login_api_auth_google_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/google/callback":{"get":{"tags":["Authentification"],"summary":"Google Callback","operationId":"google_callback_api_auth_google_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"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}/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/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}":{"patch":{"tags":["Coffre-fort"],"summary":"Rename Document","description":"Renommer un document (titre affiché dans le coffre-fort).","operationId":"rename_document_api_documents__doc_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"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/storage-diag":{"get":{"tags":["Administration"],"summary":"Storage Diag","description":"Diagnostic du stockage (sans exposer les secrets) : ce que le serveur voit\nréellement + un test d'écriture/lecture sur le bucket. RÉSERVÉ aux administrateurs.","operationId":"storage_diag_api_admin_storage_diag_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/run-backup":{"post":{"tags":["Administration"],"summary":"Run Backup Now","description":"Déclenche une sauvegarde immédiate de la base vers R2. Réservé à l'administrateur.\n(La sauvegarde tourne aussi toute seule chaque jour via le planificateur.)","operationId":"run_backup_now_api_admin_run_backup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/backups":{"get":{"tags":["Administration"],"summary":"List Backups","description":"Liste les sauvegardes présentes dans R2 (preuve que le filet fonctionne).","operationId":"list_backups_api_admin_backups_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"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/admin/run-cotraitance-reminders":{"post":{"tags":["Administration"],"summary":"Run Cotraitance Reminders Endpoint","description":"Relance les partenaires d'un groupement qui n'ont pas soumis leur part, à J-3 puis\nJ-1 de la date limite (idempotent par palier). À cron-er quotidiennement.","operationId":"run_cotraitance_reminders_endpoint_api_admin_run_cotraitance_reminders_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/market-estimate":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Market Estimate","description":"Repère de PRIX DE MARCHÉ (fourchette) à partir des marchés comparables réels (DECP).\nDéterministe, SANS LLM, SANS quota. C'est un repère INDICATIF sourcé — jamais le budget\nde l'acheteur, jamais un montant inventé. Utile quand l'avis ne publie pas de montant.","operationId":"market_estimate_api_sourcing_market_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketEstimateRequest"}}},"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/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.\n\nPRIORITÉ DECP (Données Essentielles, open data) : durée + date réelles → échéance\n100 % DÉTERMINISTE, couverture de TOUS les profils acheteurs (pas que BOAMP),\net GRATUIT (aucun quota consommé). Repli sur la version BOAMP+IA si DECP est vide.","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/reanalyze":{"post":{"tags":["Sourcing (sources officielles)"],"summary":"Reanalyze Project","description":"Relance l'analyse sur le dossier déjà importé — utile après avoir affiné ses\ncritères, ou si l'analyse précédente semblait incomplète.","operationId":"reanalyze_project_api_sourcing_reanalyze_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_reanalyze_project_api_sourcing_reanalyze_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/rgpd/export":{"get":{"tags":["RGPD — mes données"],"summary":"Export My Data","description":"Portabilité (art. 20) : un export JSON téléchargeable de toutes les données du compte.","operationId":"export_my_data_api_rgpd_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/rgpd/delete-account":{"post":{"tags":["RGPD — mes données"],"summary":"Delete Account","description":"Effacement (art. 17) : supprime le compte et ses données. Irréversible.\nConfirmé par le mot de passe + le mot « SUPPRIMER ». Suppression ORDONNÉE (enfants\navant parents) pour respecter les clés étrangères en une seule transaction.","operationId":"delete_account_api_rgpd_delete_account_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIn"}}},"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/feedback":{"post":{"tags":["Feedback"],"summary":"Send Feedback","operationId":"send_feedback_api_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackIn"}}},"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}/resend":{"post":{"tags":["Co-traitance"],"summary":"Resend Invite","description":"Renvoie le mail d'invitation SUR LE MÊME lien (sans changer le token) : relance un\npartenaire silencieux ou rattrape un mail tombé en spam, sans casser l'URL déjà partagée.","operationId":"resend_invite_api_projects__project_id__invites__invite_id__resend_post","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}/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 (toute l'organisation).","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/dce/estimer-budget":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Estimer Budget Ep","description":"Fourchette de prix de référence à partir des marchés comparables (DECP). Déterministe.","operationId":"estimer_budget_ep_api_dce_estimer_budget_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dce/preview-procedure":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Preview Procedure","description":"Procédure recommandée (déterministe, sans IA) — retour instantané dans le\nformulaire dès que l'acheteur saisit montant + type.","operationId":"preview_procedure_api_dce_preview_procedure_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dce/export":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Export","description":"Exporte un DCE déjà généré en Word (.docx), PDF, ou ZIP des pièces (RC/CCAP/CCTP).\nNe rappelle pas le LLM : rendu pur du contenu fourni.","operationId":"export_api_dce_export_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dce/avis":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Avis","description":"Avis de publicité (AAPC) + méthode de notation, assemblés depuis le DCE (déterministe).","operationId":"avis_api_dce_avis_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dce/sourcing":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Sourcing","description":"Pour chaque lot : vivier de PME capables (open data), indice d'infructuosité,\ngroupements possibles et conseils. Ne touche aucune donnée de tenant PME.","operationId":"sourcing_api_dce_sourcing_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourcingIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dce/generate":{"post":{"tags":["Rédacteur de DCE (acheteur)"],"summary":"Generate","description":"Génère un PROJET de DCE structuré à partir du besoin saisi par l'acheteur.","operationId":"generate_api_dce_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BesoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/acheteur/register":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Register","operationId":"register_api_acheteur_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/acheteur/login":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Login","operationId":"login_api_acheteur_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/acheteur/demo":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Demo","description":"Connexion au compte de DÉMONSTRATION (collectivité fictive pré-remplie), SANS mot de\npasse — bac à sable public, pour découvrir le produit immédiatement.","operationId":"demo_api_acheteur_demo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/acheteur/me":{"get":{"tags":["Espace acheteur (collectivités)"],"summary":"Me","operationId":"me_api_acheteur_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/acheteur/rgpd/export":{"get":{"tags":["Espace acheteur (collectivités)"],"summary":"Rgpd Export","description":"Droit d'accès et de portabilité (RGPD art. 15 & 20) : l'intégralité des données du\ncompte acheteur et de ses DCE, en JSON réutilisable.","operationId":"rgpd_export_api_acheteur_rgpd_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/acheteur/rgpd/effacer":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Rgpd Effacer","description":"Droit à l'effacement (RGPD art. 17) : supprime DÉFINITIVEMENT le compte et tous ses\nDCE. Confirmation par mot de passe — action irréversible.","operationId":"rgpd_effacer_api_acheteur_rgpd_effacer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffacerIn"}}},"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/acheteur/dce":{"get":{"tags":["Espace acheteur (collectivités)"],"summary":"List Dce","operationId":"list_dce_api_acheteur_dce_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Save Dce","description":"Crée ou met à jour un DCE de l'acheteur connecté.","operationId":"save_dce_api_acheteur_dce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DceSaveIn"}}},"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/acheteur/dce/{dce_id}":{"get":{"tags":["Espace acheteur (collectivités)"],"summary":"Get Dce","operationId":"get_dce_api_acheteur_dce__dce_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dce_id","in":"path","required":true,"schema":{"type":"integer","title":"Dce Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Espace acheteur (collectivités)"],"summary":"Delete Dce","operationId":"delete_dce_api_acheteur_dce__dce_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dce_id","in":"path","required":true,"schema":{"type":"integer","title":"Dce Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/acheteur/dce/{dce_id}/statut":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Set Statut","description":"Met à jour le statut de pilotage et/ou l'échéance d'une consultation.","operationId":"set_statut_api_acheteur_dce__dce_id__statut_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dce_id","in":"path","required":true,"schema":{"type":"integer","title":"Dce Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatutIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/acheteur/dce/{dce_id}/diffuser":{"post":{"tags":["Espace acheteur (collectivités)"],"summary":"Diffuser","description":"Diffuse la consultation au réseau de PME Adjugo (flywheel) : enregistre la diffusion\n(date + nombre de PME capables touchées) et passe la consultation en « publié ».\n\nINVARIANT : la diffusion réseau COMPLÈTE la publicité réglementaire (profil acheteur,\nBOAMP/JAL/JOUE selon le seuil), elle ne s'y SUBSTITUE jamais — le dossier reste ouvert à\ntout candidat, y compris hors réseau (égalité de traitement, anti-favoritisme 432-14 CP).\nLe compte `nb_pme` est indicatif (fourni par le client à titre de portée).","operationId":"diffuser_api_acheteur_dce__dce_id__diffuser_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dce_id","in":"path","required":true,"schema":{"type":"integer","title":"Dce Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiffuserIn"}}}},"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","maxLength":2000,"minLength":1,"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"},"BesoinIn":{"properties":{"objet":{"type":"string","maxLength":4000,"minLength":1,"title":"Objet"},"type_marche":{"type":"string","maxLength":20,"title":"Type Marche","default":"services"},"montant_estime":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Montant Estime"},"duree_mois":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Duree Mois"},"lieu":{"type":"string","maxLength":4000,"title":"Lieu","default":""},"dept":{"type":"string","maxLength":3,"title":"Dept","default":""},"contraintes":{"type":"string","maxLength":4000,"title":"Contraintes","default":""},"exigences_env":{"type":"string","maxLength":4000,"title":"Exigences Env","default":""},"exigences_sociales":{"type":"string","maxLength":4000,"title":"Exigences Sociales","default":""},"allotissement":{"type":"string","maxLength":20,"title":"Allotissement","default":"auto"},"cpv":{"type":"string","maxLength":12,"title":"Cpv","default":""}},"type":"object","required":["objet"],"title":"BesoinIn"},"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_reanalyze_project_api_sourcing_reanalyze_post":{"properties":{"project_id":{"type":"integer","title":"Project Id"}},"type":"object","required":["project_id"],"title":"Body_reanalyze_project_api_sourcing_reanalyze_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_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","minimum":0.0},{"type":"null"}],"title":"Ca N1","default":0},"ca_n2":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ca N2","default":0},"ca_n3":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ca N3","default":0},"effectif":{"anyOf":[{"type":"integer","minimum":0.0},{"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","minimum":0.0},{"type":"null"}],"title":"Distance Threshold Km","default":50},"distance_surcharge_pct":{"anyOf":[{"type":"number","minimum":0.0},{"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","minimum":0.0},{"type":"null"}],"title":"Ca N1","default":0},"ca_n2":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ca N2","default":0},"ca_n3":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ca N3","default":0},"effectif":{"anyOf":[{"type":"integer","minimum":0.0},{"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","minimum":0.0},{"type":"null"}],"title":"Distance Threshold Km","default":50},"distance_surcharge_pct":{"anyOf":[{"type":"number","minimum":0.0},{"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"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret"},"forme_juridique":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forme Juridique"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"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"},"note_au_mandataire":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note Au Mandataire"},"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"},"DceSaveIn":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"objet":{"type":"string","maxLength":500,"title":"Objet","default":""},"payload":{"type":"object","title":"Payload"}},"type":"object","required":["payload"],"title":"DceSaveIn"},"DeleteIn":{"properties":{"password":{"type":"string","title":"Password"},"confirm":{"type":"string","title":"Confirm","default":""}},"type":"object","required":["password"],"title":"DeleteIn"},"DiffuserIn":{"properties":{"nb_pme":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Nb Pme"}},"type":"object","title":"DiffuserIn"},"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"},"EffacerIn":{"properties":{"password":{"type":"string","maxLength":200,"title":"Password"}},"type":"object","required":["password"],"title":"EffacerIn"},"EstimIn":{"properties":{"objet":{"type":"string","maxLength":300,"title":"Objet","default":""},"departement":{"type":"string","maxLength":3,"title":"Departement","default":""},"duree_mois":{"anyOf":[{"type":"integer","maximum":600.0,"minimum":0.0},{"type":"null"}],"title":"Duree Mois"},"cpv":{"type":"string","maxLength":12,"title":"Cpv","default":""}},"type":"object","title":"EstimIn"},"EstimateRequest":{"properties":{"distance_km":{"type":"number","title":"Distance Km","default":0}},"type":"object","title":"EstimateRequest"},"ExportIn":{"properties":{"dce":{"type":"object","title":"Dce"},"format":{"type":"string","maxLength":8,"title":"Format","default":"docx"}},"type":"object","required":["dce"],"title":"ExportIn"},"FeedbackIn":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":2,"title":"Message"},"kind":{"type":"string","title":"Kind","default":"idee"},"page":{"type":"string","title":"Page","default":""}},"type":"object","required":["message"],"title":"FeedbackIn"},"ForgotIn":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ForgotIn"},"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","enum":["devis","facture","avoir"],"title":"Type","default":"devis"},"client_name":{"type":"string","minLength":1,"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","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Tva Rate","default":0.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":["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"},"converted_invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Converted Invoice 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","maximum":100.0,"minimum":0.0},{"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"},"LoginIn":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"},"password":{"type":"string","maxLength":200,"title":"Password"}},"type":"object","required":["email","password"],"title":"LoginIn"},"LotIn":{"properties":{"numero":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Numero"},"intitule":{"type":"string","maxLength":200,"minLength":1,"title":"Intitule"},"montant":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Montant"}},"type":"object","required":["intitule"],"title":"LotIn"},"MarketEstimateRequest":{"properties":{"objet":{"type":"string","title":"Objet","default":""},"departement":{"type":"string","title":"Departement","default":""},"cpv":{"type":"string","title":"Cpv","default":""}},"type":"object","title":"MarketEstimateRequest"},"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"},"PasswordChange":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"PasswordChange"},"ProcedureIn":{"properties":{"montant_estime":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Montant Estime"},"type_marche":{"type":"string","title":"Type Marche","default":"services"}},"type":"object","title":"ProcedureIn"},"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"},"RegisterIn":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"},"password":{"type":"string","maxLength":200,"minLength":8,"title":"Password"},"nom_collectivite":{"type":"string","maxLength":255,"title":"Nom Collectivite","default":""}},"type":"object","required":["email","password"],"title":"RegisterIn"},"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"},"ResetIn":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetIn"},"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":[]},"type_marche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Marche","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","maximum":100.0,"minimum":1.0,"title":"Limit","default":20},"offset":{"type":"integer","maximum":10000.0,"minimum":0.0,"title":"Offset","default":0},"countries":{"items":{"type":"string"},"type":"array","title":"Countries","default":[]},"type_marche":{"type":"string","title":"Type Marche","default":""}},"type":"object","title":"SearchRequest"},"SourcingIn":{"properties":{"lots":{"items":{"$ref":"#/components/schemas/LotIn"},"type":"array","title":"Lots"},"departement":{"type":"string","title":"Departement","default":""},"cpv":{"type":"string","maxLength":12,"title":"Cpv","default":""}},"type":"object","required":["lots"],"title":"SourcingIn"},"StatutIn":{"properties":{"statut":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statut"},"date_limite":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Limite"}},"type":"object","title":"StatutIn"},"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","minLength":8,"title":"Password","description":"Au moins 8 caractères"},"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"},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"email_verified":{"type":"boolean","title":"Email Verified","default":true},"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"},"VerifyIn":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyIn"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/acheteur/login"}}}}}}