{"openapi":"3.1.0","info":{"title":"democracy-platform-backend","description":"VoiceCompil public API. Consultez /docs, /redoc ou le guide backend (docs/phases/phase-1-homepage/api-backend/HOMEPAGE-API-CATALOG.md).","version":"0.1.0"},"paths":{"/health/live":{"get":{"tags":["health"],"summary":"Liveness probe","operationId":"liveness_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Liveness Health Live Get"}}}}}}},"/health/ready":{"get":{"tags":["health"],"summary":"Readiness probe","operationId":"readiness_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Readiness Health Ready Get"}}}}}}},"/health/identity":{"get":{"tags":["health"],"summary":"Identity provider health check","description":"Valide la connectivité et l'introspection en appelant le fournisseur d'identité.","operationId":"identity_health_health_identity_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string","description":"Bearer access token à introspecter","title":"Authorization"},"description":"Bearer access token à introspecter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Identity Health Health Identity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/cache":{"get":{"tags":["health"],"summary":"Redis health check","description":"Vérifie la connectivité Redis en envoyant un ping (uses VOICECOMPIL_REDIS_*).","operationId":"cache_health_health_cache_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cache Health Health Cache Get"}}}}}}},"/api/v1/geo/resolve":{"get":{"tags":["geo"],"summary":"Resolve URL path to territory state","operationId":"resolve_territory_api_v1_geo_resolve_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"title":"Country Code"}},{"name":"slugs","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Slugs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritoryResolution"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geo/layer":{"get":{"tags":["geo"],"summary":"Get GeoJSON layer for a specific territory level","operationId":"get_geo_layer_api_v1_geo_layer_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"Country code (e.g. FR)","title":"Country Code"},"description":"Country code (e.g. FR)"},{"name":"level","in":"query","required":true,"schema":{"$ref":"#/components/schemas/TerritoryLevel","description":"Target level for the layer"},"description":"Target level for the layer"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Code of the parent territory to filter by","title":"Parent Code"},"description":"Code of the parent territory to filter by"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritoryFeatureCollection"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geo/search":{"get":{"tags":["geo"],"summary":"Search for territories by name","operationId":"search_territories_api_v1_geo_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TerritorySearchResult"},"title":"Response Search Territories Api V1 Geo Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geo/search/autocomplete":{"get":{"tags":["geo"],"summary":"Autocomplete search for territories (cities and departments)","description":"Autocomplete search for territories with relevance scoring.\n\nScoring:\n- Exact match: 100\n- Prefix match: 50\n- Contains match: 10\n\nReturns context (department, region) for each result to enable navigation.","operationId":"search_territories_autocomplete_api_v1_geo_search_autocomplete_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":100,"description":"Search query (min 2 chars)","title":"Q"},"description":"Search query (min 2 chars)"},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"Country code (e.g. FR)","title":"Country Code"},"description":"Country code (e.g. FR)"},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Types to search: city, department","default":["city","department"],"title":"Types"},"description":"Types to search: city, department"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Max results to return","default":10,"title":"Limit"},"description":"Max results to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritoryAutocompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/version":{"get":{"tags":["version"],"summary":"Version","description":"Return API version information.","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionInfo"}}}}}}},"/home/elections":{"get":{"tags":["home"],"summary":"List Home Elections","operationId":"list_home_elections_home_elections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeResponse"}}}}}}},"/elections":{"get":{"tags":["elections"],"summary":"List Elections","operationId":"list_elections_elections_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"type_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Code"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/elections/{election_code}":{"get":{"tags":["elections"],"summary":"Get Election","description":"Récupère les détails d'une élection par son code.","operationId":"get_election_elections__election_code__get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/elections/{election_code}/candidates":{"get":{"tags":["elections"],"summary":"List Election Candidates","description":"Liste les candidats d'une élection (endpoint public).","operationId":"list_election_candidates_elections__election_code__candidates_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","default":"FR","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionCandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/elections/{election_code}/enroll":{"post":{"tags":["elections"],"summary":"Enroll Election","operationId":"enroll_election_elections__election_code__enroll_post","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionEnrollResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}":{"get":{"tags":["elections"],"summary":"Get Election","operationId":"get_election_config_elections__country_code___election_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin-elections"],"summary":"Update Election","operationId":"update_election_config_elections__country_code___election_code__patch","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-elections"],"summary":"Supprimer une élection (si aucune dépendance)","operationId":"delete_election_config_elections__country_code___election_code__delete","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/elections":{"get":{"tags":["user-elections"],"summary":"List User Elections","operationId":"list_user_elections_me_elections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserElectionListResponse"}}}}}}},"/me/elections/{election_code}/territories":{"get":{"tags":["user-elections"],"summary":"List User Election Territories","operationId":"list_user_election_territories_me_elections__election_code__territories_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserElectionTerritoriesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/elections/{election_code}/polling-stations":{"post":{"tags":["user-elections"],"summary":"Enroll Polling Station","operationId":"enroll_polling_station_me_elections__election_code__polling_stations_post","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PollingStationEnrollmentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PollingStationEnrollmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stations/declarations":{"post":{"tags":["stations"],"summary":"Create Station Declaration","operationId":"create_station_declaration_stations_declarations_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationDeclarationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationDeclarationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stations/links":{"post":{"tags":["stations"],"summary":"Associer un citoyen à un bureau existant","operationId":"link_station_stations_links_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationLinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stations/managers/assign":{"post":{"tags":["stations"],"summary":"S'auto-déclarer responsable de bureau","operationId":"assign_station_manager_stations_managers_assign_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationManagerAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationManagerAssignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/polling-stations":{"get":{"tags":["user-polling"],"summary":"List User Polling Stations","operationId":"list_user_polling_stations_me_polling_stations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPollingStationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/polling-stations/feedback":{"post":{"tags":["user-polling"],"summary":"Submit Station Feedback","operationId":"submit_station_feedback_me_polling_stations_feedback_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/polling-stations/tokens":{"post":{"tags":["user-polling"],"summary":"Claim Polling Token","operationId":"claim_polling_token_me_polling_stations_tokens_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__user_polling__schemas__TokenClaimRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__user_polling__schemas__TokenClaimResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/profile":{"get":{"tags":["citizens"],"summary":"Consulter le profil citoyen","operationId":"get_citizen_profile_citizens_profile_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["citizens"],"summary":"Mettre à jour le profil citoyen","operationId":"update_citizen_profile_citizens_profile_patch","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/enroll/{election_code}":{"post":{"tags":["citizens"],"summary":"Enroll the authenticated citizen in an election.","description":"Enroll the authenticated citizen in an election.","operationId":"enroll_citizen_citizens_enroll__election_code__post","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/enrollments/{election_code}":{"get":{"tags":["citizens"],"summary":"Consulter l'inscription d'un citoyen","operationId":"get_enrollment_status_citizens_enrollments__election_code__get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["citizens"],"summary":"Mettre à jour son inscription - notamment pour déclarer son bureau de vote","description":"Update the authenticated citizen's enrollment.\n\nPrimary use case: Allow citizen to self-assign to their official polling station.\nThe citizen mirrors their official government assignment in this alternative platform.\n\nSecurity:\n- User can only update their own enrollment\n- Polling station must exist and be in the same city as the user's identity profile","operationId":"update_enrollment_citizens_enrollments__election_code__patch","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/{identity_user_id}/stations":{"get":{"tags":["citizens"],"summary":"Lister les bureaux associés au citoyen","operationId":"list_citizen_stations_citizens__identity_user_id__stations_get","parameters":[{"name":"identity_user_id","in":"path","required":true,"schema":{"type":"string","title":"Identity User Id"}},{"name":"election_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":3},{"type":"null"}],"title":"Country Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenStationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/favorites":{"get":{"tags":["citizens"],"summary":"Lister les favoris citoyen","operationId":"list_citizen_favorites_citizens_favorites_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenFavoritesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["citizens"],"summary":"Ajouter ou mettre à jour un favori","operationId":"add_citizen_favorite_citizens_favorites_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__citizens__CitizenFavoriteCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenFavoriteItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/favorites/{actor_code}":{"delete":{"tags":["citizens"],"summary":"Supprimer un favori","operationId":"delete_citizen_favorite_citizens_favorites__actor_code__delete","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/territory/elections/{election_code}/stats/hierarchy":{"get":{"tags":["citizens"],"summary":"Récupérer la hiérarchie territoriale avec statistiques","description":"Returns aggregation of enrolled citizens by territory.","operationId":"get_territory_hierarchy_stats_citizens_territory_elections__election_code__stats_hierarchy_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"level","in":"query","required":true,"schema":{"type":"string","description":"Target level: region, department, city","title":"Level"},"description":"Target level: region, department, city"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent territory code context","title":"Parent Code"},"description":"Parent territory code context"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Territory Hierarchy Stats Citizens Territory Elections  Election Code  Stats Hierarchy Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/territory/elections/{election_code}/stats/total":{"get":{"tags":["citizens"],"summary":"Obtenir les statistiques globales (total enrôlés) pour une élection","operationId":"get_election_global_stats_citizens_territory_elections__election_code__stats_total_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Election Global Stats Citizens Territory Elections  Election Code  Stats Total Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/territory/elections/{election_code}/citizens":{"get":{"tags":["citizens"],"summary":"Lister les citoyens inscrits par ville","description":"Returns list of citizens for a specific city (DataGrid).","operationId":"list_enrolled_citizens_by_city_citizens_territory_elections__election_code__citizens_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"city_code","in":"query","required":true,"schema":{"type":"string","description":"Target City Code","title":"City Code"},"description":"Target City Code"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query (full_name)","title":"Q"},"description":"Search query (full_name)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Enrolled Citizens By City Citizens Territory Elections  Election Code  Citizens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/territory/elections/{election_code}/enrollment/{citizen_id}":{"delete":{"tags":["citizens"],"summary":"Supprimer l'inscription d'un citoyen à une élection","description":"Delete a citizen's enrollment from an election.\nAdmin action only.","operationId":"delete_citizen_enrollment_citizens_territory_elections__election_code__enrollment__citizen_id__delete","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"citizen_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Citizen Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Citizen Enrollment Citizens Territory Elections  Election Code  Enrollment  Citizen Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/profile":{"get":{"tags":["citizen-profile"],"summary":"Consulter le profil citoyen (V2)","operationId":"get_profile_me_profile_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["citizen-profile"],"summary":"Mettre à jour le profil citoyen (V2)","operationId":"patch_profile_me_profile_patch","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/profile/favorites":{"get":{"tags":["citizen-profile"],"summary":"Lister les favoris citoyens (V2)","operationId":"list_favorites_me_profile_favorites_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenFavoritesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["citizen-profile"],"summary":"Ajouter un favori citoyen (V2)","operationId":"add_favorite_me_profile_favorites_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__citizen_profile__schemas__CitizenFavoriteCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenFavoriteItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/profile/favorites/{actor_code}":{"delete":{"tags":["citizen-profile"],"summary":"Supprimer un favori citoyen (V2)","operationId":"delete_favorite_me_profile_favorites__actor_code__delete","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizen/managers/applications":{"post":{"tags":["citizen-managers"],"summary":"Soumettre une candidature de manager","operationId":"create_manager_application_citizen_managers_applications_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateApplicationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["citizen-managers"],"summary":"Lister mes candidatures","operationId":"list_manager_applications_citizen_managers_applications_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizen/managers/applications/{candidate_id}":{"get":{"tags":["citizen-managers"],"summary":"Consulter une candidature","operationId":"get_manager_application_citizen_managers_applications__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Candidate Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizen/managers/assignments":{"get":{"tags":["citizen-managers"],"summary":"Lister mes affectations de manager","operationId":"list_manager_assignments_citizen_managers_assignments_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerAssignmentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tokens/claim":{"post":{"tags":["tokens"],"summary":"Réclamer un token de vote","operationId":"claim_token_tokens_claim_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__tokens__TokenClaimRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__tokens__TokenClaimResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tokens/my":{"get":{"tags":["tokens"],"summary":"Lister les tokens du citoyen courant","operationId":"list_my_tokens_tokens_my_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/votes":{"post":{"tags":["votes"],"summary":"Soumettre un bulletin","operationId":"submit_vote_votes_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteSubmissionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteSubmissionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/votes/{tally_sheet_id}/attachments":{"post":{"tags":["votes"],"summary":"Uploader une preuve de PV","operationId":"upload_tally_sheet_attachment_votes__tally_sheet_id__attachments_post","parameters":[{"name":"tally_sheet_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tally Sheet Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_tally_sheet_attachment_votes__tally_sheet_id__attachments_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetAttachmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/votes/{tally_sheet_id}/feedback":{"post":{"tags":["votes"],"summary":"Exprimer un avis citoyen sur un PV","operationId":"submit_tally_sheet_feedback_votes__tally_sheet_id__feedback_post","parameters":[{"name":"tally_sheet_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tally Sheet Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetFeedbackRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/votes/{tally_sheet_id}/feedback/summary":{"get":{"tags":["votes"],"summary":"Consulter la synthèse des feedbacks PV","operationId":"get_tally_sheet_feedback_summary_votes__tally_sheet_id__feedback_summary_get","parameters":[{"name":"tally_sheet_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tally Sheet Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetFeedbackSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/stats/summary":{"get":{"tags":["barometer"],"summary":"Résumé agrégé du baromètre","operationId":"get_barometer_summary_barometer_stats_summary_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(national|local)$","default":"national","title":"Scope"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/actors/directory/stats":{"get":{"tags":["barometer"],"summary":"KPIs du dashboard annuaire","operationId":"get_directory_stats_barometer_actors_directory_stats_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerDirectoryStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/actors/search/suggest":{"get":{"tags":["barometer"],"summary":"Autocomplete acteurs","operationId":"search_suggest_barometer_actors_search_suggest_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Q"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":8,"title":"Limit"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSearchSuggestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/actor-categories":{"get":{"tags":["barometer"],"summary":"Liste des catégories d'acteurs pour les filtres UI","description":"Retourne la liste des catégories d'acteurs disponibles.\nUtilisé par: Admin UI, Mobile App, Web Frontend pour alimenter les filtres.","operationId":"list_actor_categories_barometer_actor_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Actor Categories Barometer Actor Categories Get"}}}}}}},"/barometer/actor-types":{"get":{"tags":["barometer"],"summary":"Liste des types d'acteurs pour les filtres UI","description":"Retourne la liste des types d'acteurs disponibles.\nUtilisé par: Admin UI, Mobile App, Web Frontend pour alimenter les filtres.\nPeut être filtré par catégorie pour affichage en cascade.","operationId":"list_actor_types_barometer_actor_types_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrer par catégorie","title":"Category"},"description":"Filtrer par catégorie"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Actor Types Barometer Actor Types Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/actors":{"get":{"tags":["barometer"],"summary":"Lister les acteurs baromètre (accès public)","operationId":"list_public_barometer_actors_barometer_actors_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"party_family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party Family"}},{"name":"territory_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Code"}},{"name":"parti","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Slugs de parti séparés par des virgules (ex: LREM,PS)","title":"Parti"},"description":"Slugs de parti séparés par des virgules (ex: LREM,PS)"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Region"}},{"name":"departement","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Departement"}},{"name":"commune","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Commune"}},{"name":"score_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"title":"Score Min"}},{"name":"score_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"title":"Score Max"}},{"name":"tendance","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(hausse|baisse|stable)$"},{"type":"null"}],"title":"Tendance"}},{"name":"comments_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Comments Min"}},{"name":"comments_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Comments Max"}},{"name":"with_photo","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"With Photo"}},{"name":"certified","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certified"}},{"name":"active_30d","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active 30D"}},{"name":"actor_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrer par catégorie (political, economic, media, cultural, sports, civil_society, religious)","title":"Actor Category"},"description":"Filtrer par catégorie (political, economic, media, cultural, sports, civil_society, religious)"},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrer par type (president, deputy, senator, minister, ceo, journalist, etc.)","title":"Actor Type"},"description":"Filtrer par type (president, deputy, senator, minister, ceo, journalist, etc.)"},{"name":"favorites","in":"query","required":false,"schema":{"type":"boolean","description":"Limiter aux favoris (auth requise)","default":false,"title":"Favorites"},"description":"Limiter aux favoris (auth requise)"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(score_desc|score_asc|alpha_asc|alpha_desc|popular|recent|active|trend)$"},{"type":"null"}],"default":"score_desc","title":"Sort"}},{"name":"view","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(grid|list|netflix)$"},{"type":"null"}],"title":"View"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerPublicActorListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/actors/{actor_code}/comments":{"get":{"tags":["barometer"],"summary":"Récupérer les commentaires d'un acteur baromètre","description":"Récupère les commentaires d'un acteur baromètre.\n\n**Accès Public**: Retourne uniquement les commentaires avec `moderation_status = 'approved'`.\n\n**Paramètres de filtrage**:\n- `moderation_status`: En mode public, seul \"approved\" est retourné\n- `vote_value`: Filtre sur favorable/defavorable/neutre\n- `include_simulated`: Inclure ou exclure les commentaires générés par simulation\n\n**Anonymisation**: Les commentaires sont anonymisés (comment_id = hash unique).","operationId":"get_actor_comments_barometer_actors__actor_code__comments_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"moderation_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(approved|pending|flagged|rejected|all)$"},{"type":"null"}],"description":"Filtre sur le statut de modération (public = approved uniquement)","title":"Moderation Status"},"description":"Filtre sur le statut de modération (public = approved uniquement)"},{"name":"vote_value","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(favorable|defavorable|neutre)$"},{"type":"null"}],"description":"Filtre sur le type de vote","title":"Vote Value"},"description":"Filtre sur le type de vote"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Nombre de commentaires par page (max 100)","default":20,"title":"Limit"},"description":"Nombre de commentaires par page (max 100)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Décalage pour la pagination","default":0,"title":"Offset"},"description":"Décalage pour la pagination"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(cast_at_desc|cast_at_asc)$","description":"Ordre de tri","default":"cast_at_desc","title":"Order By"},"description":"Ordre de tri"},{"name":"include_simulated","in":"query","required":false,"schema":{"type":"boolean","description":"Inclure les commentaires simulés (metadata.comment_simulation = true)","default":true,"title":"Include Simulated"},"description":"Inclure les commentaires simulés (metadata.comment_simulation = true)"},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCommentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/votes":{"post":{"tags":["barometer"],"summary":"Exprimer un vote baromètre (JSON)","description":"Submit a vote using JSON body (no attachment support).","operationId":"submit_barometer_vote_barometer_votes_post","parameters":[{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerVoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerVoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/barometer/votes/with-attachment":{"post":{"tags":["barometer"],"summary":"Exprimer un vote baromètre avec pièce jointe (multipart/form-data)","description":"Submit a vote with optional image attachment.\n\nThis endpoint accepts multipart/form-data with:\n- `data`: JSON string containing vote data (same structure as BarometerVoteRequest)\n- `attachment`: Optional image file (JPEG, PNG, WebP, max 5MB)\n\nThe vote is processed first, then the attachment is uploaded to MinIO.","operationId":"submit_barometer_vote_with_attachment_barometer_votes_with_attachment_post","parameters":[{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_barometer_vote_with_attachment_barometer_votes_with_attachment_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerVoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/packages":{"get":{"tags":["admin-elections"],"summary":"Lister les packages électoraux disponibles pour un pays","description":"Liste les packages électoraux disponibles pour un pays donné.\n\nScan le répertoire election-packages/{country_code}/ et retourne\nla liste des packages avec leurs métadonnées (type, date, candidats, etc.).","operationId":"list_available_packages_config_elections_packages_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"description":"Code pays ISO 2 caractères","title":"Country Code"},"description":"Code pays ISO 2 caractères"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionPackageListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/load-package/status/overview":{"get":{"tags":["admin-elections"],"summary":"Consulter l'état d'un package élection","operationId":"load_election_package_status_config_elections_load_package_status_overview_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"title":"Country Code"}},{"name":"election_type","in":"query","required":true,"schema":{"type":"string","minLength":3,"title":"Election Type"}},{"name":"election_date","in":"query","required":true,"schema":{"type":"string","minLength":4,"title":"Election Date"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionPackageStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/load-package":{"post":{"tags":["admin-elections"],"summary":"Charger un package d'élection préconfiguré (réservé aux administrateurs Identity)","operationId":"load_election_package_config_elections_load_package_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionPackageLoadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionPackageLoadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections":{"post":{"tags":["admin-elections"],"summary":"Create Election","operationId":"create_election_config_elections_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/close":{"post":{"tags":["admin-elections"],"summary":"Clôturer une élection de manière définitive","description":"Clôture définitivement une élection.\n\nUne fois clôturée, aucun vote ne peut être ajouté ou modifié.\nCette action est irréversible (sauf intervention DBA).\n\nRequiert `confirm: true` dans le payload pour éviter les clôtures accidentelles.","operationId":"close_election_config_elections__country_code___election_code__close_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionCloseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionCloseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/hierarchies/sync":{"post":{"tags":["admin-elections"],"summary":"Resynchroniser la hiérarchie d'une élection","operationId":"sync_election_hierarchies_config_elections__country_code___election_code__hierarchies_sync_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HierarchySyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/official-results":{"post":{"tags":["admin-elections"],"summary":"Déposer les résultats officiels pour un niveau territorial","operationId":"upsert_official_results_config_elections__country_code___election_code__official_results_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfficialResultsRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfficialResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/official-results/{territorial_level}/{territorial_value}":{"get":{"tags":["admin-elections"],"summary":"Comparer résultats officiels et agrégats VoiceCompil","operationId":"compare_official_results_config_elections__country_code___election_code__official_results__territorial_level___territorial_value__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"territorial_level","in":"path","required":true,"schema":{"type":"string","title":"Territorial Level"}},{"name":"territorial_value","in":"path","required":true,"schema":{"type":"string","title":"Territorial Value"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfficialResultsComparisonResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/import-data/status":{"get":{"tags":["admin-elections"],"summary":"Statut de l'import des données officielles","description":"Retourne le statut de l'import pour une élection :\n- Source table disponible ?\n- Nombre de lignes source\n- Nombre de lignes déjà importées","operationId":"get_election_import_status_config_elections__country_code___election_code__import_data_status_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionImportStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/import-data":{"post":{"tags":["admin-elections"],"summary":"Importer les données officielles","description":"Lance l'import bulk des données officielles.\n\nIdempotent : purge les données existantes avant import.","operationId":"run_election_import_config_elections__country_code___election_code__import_data_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors":{"get":{"tags":["admin-barometer"],"summary":"Lister les acteurs baromètre","operationId":"list_barometer_actors_admin_barometer_actors_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"actor_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Category"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-barometer"],"summary":"Créer un acteur baromètre","operationId":"create_barometer_actor_admin_barometer_actors_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/{actor_code}":{"get":{"tags":["admin-barometer"],"summary":"Récupérer un acteur par son code","description":"Récupère les détails d'un acteur par son actor_code (slug).","operationId":"get_barometer_actor_by_code_admin_barometer_actors__actor_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/{actor_id}":{"patch":{"tags":["admin-barometer"],"summary":"Mettre à jour un acteur baromètre","operationId":"update_barometer_actor_admin_barometer_actors__actor_id__patch","parameters":[{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Actor Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/by-code/{actor_code}":{"patch":{"tags":["admin-barometer"],"summary":"Mettre à jour un acteur par son code","description":"Met à jour un acteur en utilisant son actor_code (slug).","operationId":"update_barometer_actor_by_code_admin_barometer_actors_by_code__actor_code__patch","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/{actor_code}/cards":{"get":{"tags":["admin-barometer"],"summary":"Lister les cartes studio pour un acteur","operationId":"list_actor_cards_admin_barometer_actors__actor_code__cards_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-barometer"],"summary":"Créer une carte studio","operationId":"create_actor_card_admin_barometer_actors__actor_code__cards_post","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/{actor_code}/cards/{card_id}":{"patch":{"tags":["admin-barometer"],"summary":"Mettre à jour une carte studio","operationId":"update_actor_card_admin_barometer_actors__actor_code__cards__card_id__patch","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"card_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Card Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-barometer"],"summary":"Supprimer une carte studio","operationId":"delete_actor_card_admin_barometer_actors__actor_code__cards__card_id__delete","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"card_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Card Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/actors/{actor_code}/cards/{card_id}/publish":{"post":{"tags":["admin-barometer"],"summary":"Publier une carte studio","operationId":"publish_actor_card_admin_barometer_actors__actor_code__cards__card_id__publish_post","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"card_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Card Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerActorCardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/rollup":{"post":{"tags":["admin-barometer"],"summary":"Lancer le rollup baromètre pour une journée","operationId":"trigger_rollup_admin_barometer_rollup_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerRollupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerRollupJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/backfill":{"post":{"tags":["admin-barometer"],"summary":"Lancer un backfill baromètre (fenêtre de dates)","operationId":"trigger_backfill_admin_barometer_backfill_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerBackfillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerRollupJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/jobs/{job_id}":{"get":{"tags":["admin-barometer"],"summary":"Consulter l'état d'un job baromètre","operationId":"get_job_admin_barometer_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerRollupJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/jobs":{"get":{"tags":["admin-barometer"],"summary":"Lister les jobs baromètre récents","operationId":"list_jobs_admin_barometer_jobs_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BarometerRollupJobResponse"},"title":"Response List Jobs Admin Barometer Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/simulations/prepare":{"post":{"tags":["admin-barometer"],"summary":"[v1] Analyser un package de simulation baromètre","operationId":"prepare_simulation_admin_barometer_simulations_prepare_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationPrepareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationPrepareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/simulations/generate":{"post":{"tags":["admin-barometer"],"summary":"[v2] Générer une simulation baromètre à partir des résultats officiels","operationId":"generate_simulation_admin_barometer_simulations_generate_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/simulations/backfill":{"post":{"tags":["admin-barometer"],"summary":"Rejouer une fenêtre glissante sur les données de simulation","operationId":"backfill_simulation_admin_barometer_simulations_backfill_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationBackfillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BarometerRollupSummarySchema"},"title":"Response Backfill Simulation Admin Barometer Simulations Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/simulations/reset":{"post":{"tags":["admin-barometer"],"summary":"[v1] Supprimer les données de simulation baromètre","operationId":"reset_simulation_admin_barometer_simulations_reset_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationResetRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/barometer/simulations/summary":{"get":{"tags":["admin-barometer"],"summary":"[v1] Obtenir un état des données baromètre simulées","operationId":"simulation_summary_admin_barometer_simulations_summary_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/prepare":{"post":{"tags":["admin-simulations"],"summary":"Initialiser la base de simulation","operationId":"prepare_simulation_admin_simulations__country_code___election_code__prepare_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationPrepareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/stations/calculate":{"post":{"tags":["admin-simulations"],"summary":"Calculer les bureaux de vote simulés","operationId":"calculate_stations_admin_simulations__country_code___election_code__stations_calculate_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationCalculateStationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/stations/import":{"post":{"tags":["admin-simulations"],"summary":"Importer les bureaux de vote simulés","operationId":"import_stations_admin_simulations__country_code___election_code__stations_import_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationImportStationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/managers":{"post":{"tags":["admin-simulations"],"summary":"Affecter les responsables de bureaux (simulation)","operationId":"assign_managers_admin_simulations__country_code___election_code__managers_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationAssignManagersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/pv/blueprint":{"post":{"tags":["admin-simulations"],"summary":"Calculer les plans de PV","operationId":"blueprint_pv_admin_simulations__country_code___election_code__pv_blueprint_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationBlueprintPvRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/pv/import":{"post":{"tags":["admin-simulations"],"summary":"Importer les PV simulés","operationId":"import_pv_admin_simulations__country_code___election_code__pv_import_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationImportPvRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/simulations/{country_code}/{election_code}/votes":{"post":{"tags":["admin-simulations"],"summary":"Simuler les votes individuels (future V2)","operationId":"simulate_votes_admin_simulations__country_code___election_code__votes_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationSimulateVotesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/prepare":{"post":{"tags":["simulations-barometer"],"summary":"[v1] Préparer les tables de staging pour la simulation","description":"Prépare les tables de staging (simulation_{country}_*) à partir des résultats officiels.\n\nCette opération utilise v1 (rapide, pas besoin d'optimisation).\n\nPerformance: ~1-2 secondes","operationId":"prepare_simulation_simulations_barometer_prepare_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationPrepareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationPrepareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/generate":{"post":{"tags":["simulations-barometer"],"summary":"[v2 BULK ⚡] Générer les votes de simulation (OPTIMISÉ)","description":"Génère les votes de simulation baromètre à partir des tables de staging.\n\nCette opération utilise v2 BULK (INSERT SELECT massif).\n\nPerformance:\n- v1: ~5-10 minutes pour 100K votes (boucles Python)\n- v2: ~1-5 secondes pour 100K votes (SQL pur) ⚡\n\nGain: 100x-1000x plus rapide","operationId":"generate_simulation_simulations_barometer_generate_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/backfill":{"post":{"tags":["simulations-barometer"],"summary":"[v1] Lancer le backfill des agrégations","description":"Lance le backfill des agrégations baromètre pour une période donnée.\n\nCette opération utilise v1 (rapide, pas besoin d'optimisation).","operationId":"backfill_simulation_simulations_barometer_backfill_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationBackfillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BarometerRollupSummarySchema"},"title":"Response Backfill Simulation Simulations Barometer Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/reset":{"post":{"tags":["simulations-barometer"],"summary":"[v1] Supprimer les données de simulation","description":"Supprime toutes les données de simulation baromètre pour un pays.\n\nCette opération utilise v1 (rapide, pas besoin d'optimisation).","operationId":"reset_simulation_simulations_barometer_reset_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationResetRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/summary":{"get":{"tags":["simulations-barometer"],"summary":"[v1] Afficher les statistiques de simulation","description":"Affiche les compteurs actuels pour un pays (votes, latest, commentaires…).\n\nCette opération utilise v1 (rapide, pas besoin d'optimisation).","operationId":"get_simulation_summary_simulations_barometer_summary_get","parameters":[{"name":"country_code","in":"query","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BarometerSimulationSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/prepare":{"post":{"tags":["Barometer Comment Simulation"],"summary":"Prepare Comments","description":"STEP 1: Préparer (générer dans staging).\n\nGénère des commentaires dans la table staging UNIQUEMENT.\nNe touche PAS aux tables réelles (baro_votes, baro_user_latest_votes).","operationId":"prepare_comments_simulations_barometer_comments_prepare_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Prepare Comments Simulations Barometer Comments Prepare Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/preview/{country_code}":{"get":{"tags":["Barometer Comment Simulation"],"summary":"Preview Staging","description":"STEP 2: Aperçu staging.\n\nAffiche les commentaires générés dans staging avant import.","operationId":"preview_staging_simulations_barometer_comments_preview__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/generate":{"post":{"tags":["Barometer Comment Simulation"],"summary":"Generate Comments","description":"STEP 3: Générer (BULK UPDATE depuis staging).\n\nBULK UPDATE baro_votes et baro_user_latest_votes depuis staging.\nPrérequis: prepare() doit avoir été appelé avant.","operationId":"generate_comments_simulations_barometer_comments_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate Comments Simulations Barometer Comments Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/stats/{country_code}":{"get":{"tags":["Barometer Comment Simulation"],"summary":"Get Comment Stats","description":"STEP 4: Statistiques.\n\nRécupère statistiques sur les commentaires (réels + simulés).","operationId":"get_comment_stats_simulations_barometer_comments_stats__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/reset/{country_code}":{"delete":{"tags":["Barometer Comment Simulation"],"summary":"Reset Comments","description":"Réinitialiser (supprimer commentaires simulés).\n\nSupprime UNIQUEMENT les commentaires simulés (metadata.comment_simulation = true).\nPréserve les commentaires réels.","operationId":"reset_comments_simulations_barometer_comments_reset__country_code__delete","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/simulations/barometer/comments/enrich":{"post":{"tags":["Barometer Comment Simulation"],"summary":"Enrich Comments","description":"Raccourci: prepare + generate.\n\nExécute prepare() puis generate() automatiquement.","operationId":"enrich_comments_simulations_barometer_comments_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Enrich Comments Simulations Barometer Comments Enrich Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/countries/{country_code}/activate":{"post":{"tags":["admin-countries"],"summary":"Activer un pays","description":"Active un pays et synchronise ses métadonnées GDAM. Voir docs/phases/phase-1-homepage/api-backend/HOMEPAGE-API-CATALOG.md.","operationId":"activate_country_admin_countries__country_code__activate_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryActivationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryActivationResponse"}}}},"400":{"description":"Activation impossible (métadonnées GDAM manquantes)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/countries/active":{"get":{"tags":["admin-countries"],"summary":"Lister les pays actifs","description":"Retourne la liste des pays activés accessibles à l'opérateur.","operationId":"list_active_countries_admin_countries_active_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CountryActivationResponse"},"title":"Response List Active Countries Admin Countries Active Get"}}}},"400":{"description":"Activation impossible (métadonnées GDAM manquantes)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/countries/{country_code}/sync-territories":{"post":{"tags":["admin-countries"],"summary":"Synchroniser les territoires (GDAM -> VoiceCompil)","description":"Force la synchronisation de la hiérarchie territoriale complète depuis GDAM.","operationId":"sync_territories_admin_countries__country_code__sync_territories_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Force"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Territories Admin Countries  Country Code  Sync Territories Post"}}}},"400":{"description":"Activation impossible (métadonnées GDAM manquantes)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maps/sync-country":{"post":{"tags":["admin-maps"],"summary":"Synchroniser la carte d'un pays","operationId":"sync_country_maps_admin_maps_sync_country_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maps/sync-all":{"post":{"tags":["admin-maps"],"summary":"Synchroniser la carte de tous les pays actifs","operationId":"sync_all_maps_admin_maps_sync_all_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncAllRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncAllResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maps/active-countries":{"get":{"tags":["admin-maps"],"summary":"Lister les pays synchronisables","operationId":"list_active_countries_admin_maps_active_countries_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response List Active Countries Admin Maps Active Countries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maps/sync-territory":{"post":{"tags":["admin-maps"],"summary":"Synchroniser un territoire spécifique","operationId":"sync_territory_admin_maps_sync_territory_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncTerritoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maps/jobs/{job_id}":{"get":{"tags":["admin-maps"],"summary":"Consulter le résultat d'un job de synchronisation","operationId":"get_job_status_admin_maps_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Status Admin Maps Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates":{"post":{"tags":["admin-candidates"],"summary":"Créer ou mettre à jour un candidat","operationId":"upsert_candidate_config_elections__country_code___election_code__candidates_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin-candidates"],"summary":"Lister les candidats et listes d'une élection","description":"List candidates for an election, optionally filtered by territory.\n\nArgs:\n    territory_code: Optional territory filter (e.g., \"69\" for department, \"69-01\" for constituency)","operationId":"list_candidates_config_elections__country_code___election_code__candidates_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"territory_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/lists":{"post":{"tags":["admin-candidates"],"summary":"Créer ou mettre à jour une liste de candidats","operationId":"upsert_candidate_list_config_elections__country_code___election_code__candidates_lists_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/batch-import":{"post":{"tags":["admin-candidates"],"summary":"Importer des acteurs du Baromètre comme candidats","description":"Import multiple actors from the Barometer as candidates for an election.\n\nThe actors are looked up by their actor_code in baro_actors table.\nExisting candidates with the same code are skipped (idempotent).","operationId":"batch_import_candidates_config_elections__country_code___election_code__candidates_batch_import_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchImportCandidatesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchImportCandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/territories":{"get":{"tags":["admin-candidates"],"summary":"Récupérer l'arborescence territoriale des candidats","description":"Get territorial tree structure for candidates.\n\nReturns a hierarchical structure built from candidate territory_codes:\n- country → regions → departments → constituencies/cities\n\nOnly includes territories that have candidates.\nUsed by the frontend to build a filterable TreeView.","operationId":"list_candidate_territories_config_elections__country_code___election_code__candidates_territories_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Candidate Territories Config Elections  Country Code   Election Code  Candidates Territories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/{candidate_code}":{"get":{"tags":["admin-candidates"],"summary":"Détail d'un candidat","operationId":"get_candidate_config_elections__country_code___election_code__candidates__candidate_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-candidates"],"summary":"Supprimer un candidat","operationId":"delete_candidate_config_elections__country_code___election_code__candidates__candidate_code__delete","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/{candidate_code}/status":{"patch":{"tags":["admin-candidates"],"summary":"Valider ou rejeter un candidat","operationId":"update_candidate_status_config_elections__country_code___election_code__candidates__candidate_code__status_patch","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/candidates/lists/{list_code}/status":{"patch":{"tags":["admin-candidates"],"summary":"Valider ou rejeter une liste","operationId":"update_candidate_list_status_config_elections__country_code___election_code__candidates_lists__list_code__status_patch","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"list_code","in":"path","required":true,"schema":{"type":"string","title":"List Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/stations":{"get":{"tags":["admin-election-stations"],"summary":"Lister les bureaux de vote (optionnel: par ville)","operationId":"list_stations_endpoint_config_elections__country_code___election_code__stations_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"city_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"City code to filter stations (optional)","title":"City Code"},"description":"City code to filter stations (optional)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Max stations to return","default":100,"title":"Limit"},"description":"Max stations to return"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-election-stations"],"summary":"Créer un bureau de vote","operationId":"create_station_config_elections__country_code___election_code__stations_post","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStationCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/elections/{country_code}/{election_code}/stations/{station_code}":{"delete":{"tags":["admin-election-stations"],"summary":"Supprimer un bureau de vote","operationId":"delete_station_config_elections__country_code___election_code__stations__station_code__delete","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tokens/issue":{"post":{"tags":["admin-tokens"],"summary":"Générer des tokens pour un bureau","operationId":"issue_tokens_admin_tokens_issue_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenIssueRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenIssueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tokens/stats/{election_code}":{"get":{"tags":["admin-tokens"],"summary":"Statistiques des tokens pour une élection","description":"Get token generation statistics for an election.","operationId":"get_token_stats_admin_tokens_stats__election_code__get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tokens/stats/{election_code}/hierarchy":{"get":{"tags":["admin-tokens"],"summary":"Statistiques des tokens par niveau territorial","description":"Get token stats aggregated by territory level.\n\nArgs:\n    election_code: Election code\n    level: 'region', 'department', 'city', 'station'\n    parent_code: Optional parent territory code to filter","operationId":"get_token_stats_hierarchy_admin_tokens_stats__election_code__hierarchy_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"region","title":"Level"}},{"name":"parent_code","in":"query","required":false,"schema":{"type":"string","title":"Parent Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tokens/generate/{election_code}":{"post":{"tags":["admin-tokens"],"summary":"Générer tokens pour un niveau territorial","description":"Generate tokens for all stations under a territory level.\n\nArgs:\n    election_code: Election code\n    level: 'country', 'region', 'department', 'city', 'station'\n    code: Optional territory code (if level is not 'country')\n    batch_size: Max stations to process","operationId":"generate_tokens_by_level_admin_tokens_generate__election_code__post","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"level","in":"query","required":true,"schema":{"type":"string","title":"Level"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","title":"Code"}},{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Batch Size"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/monitoring/hierarchy":{"get":{"tags":["admin-monitoring"],"summary":"Comparer hiérarchie template / segments","operationId":"get_hierarchy_monitoring_admin_monitoring_hierarchy_get","parameters":[{"name":"election_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":3},{"type":"null"}],"title":"Country Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HierarchyMonitoringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/status":{"get":{"tags":["admin-scheduler"],"summary":"Get Scheduler Status","description":"Get scheduler status and list of all jobs.","operationId":"get_scheduler_status_admin_scheduler_status_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulerStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/jobs/{job_id}/history":{"get":{"tags":["admin-scheduler"],"summary":"Get Job History","description":"Get execution history for a specific job.","operationId":"get_job_history_admin_scheduler_jobs__job_id__history_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/jobs/{job_id}/trigger":{"post":{"tags":["admin-scheduler"],"summary":"Trigger Job","description":"Manually trigger a job execution.","operationId":"trigger_job_admin_scheduler_jobs__job_id__trigger_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerJobRequest","default":{"wait":false}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/pause":{"post":{"tags":["admin-scheduler"],"summary":"Pause Scheduler","description":"Pause the scheduler.","operationId":"pause_scheduler_admin_scheduler_pause_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseResumeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/resume":{"post":{"tags":["admin-scheduler"],"summary":"Resume Scheduler","description":"Resume the scheduler.","operationId":"resume_scheduler_admin_scheduler_resume_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseResumeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/scheduler/reload-countries":{"post":{"tags":["admin-scheduler"],"summary":"Reload Countries","description":"Force reload of countries configuration.","operationId":"reload_countries_admin_scheduler_reload_countries_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReloadCountriesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/declarations/{declaration_id}":{"patch":{"tags":["admin-stations"],"summary":"Valider ou rejeter une déclaration de bureau","operationId":"review_station_declaration_admin_stations_declarations__declaration_id__patch","parameters":[{"name":"declaration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Declaration Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationReviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/vote-managers":{"post":{"tags":["admin-stations"],"summary":"Affecter un manager de PV national ou territorial","operationId":"assign_vote_manager_admin_stations_vote_managers_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteManagerAssignRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteManagerAssignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/vote-managers/{manager_id}":{"delete":{"tags":["admin-stations"],"summary":"Révoquer un manager de PV","operationId":"revoke_vote_manager_admin_stations_vote_managers__manager_id__delete","parameters":[{"name":"manager_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Manager Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteManagerRevokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/available-citizens":{"get":{"tags":["admin-stations"],"summary":"Lister les citoyens disponibles pour assignation à ce bureau","operationId":"list_available_citizens_admin_stations__station_id__available_citizens_get","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationAvailableCitizensResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/assigned-citizens":{"get":{"tags":["admin-stations"],"summary":"Lister les citoyens assignés à ce bureau","operationId":"list_assigned_citizens_admin_stations__station_id__assigned_citizens_get","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationAssignedCitizensResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/assign":{"post":{"tags":["admin-stations"],"summary":"Assigner des citoyens à ce bureau de vote","operationId":"assign_citizens_to_station_admin_stations__station_id__assign_post","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationAssignmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationAssignmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/citizens/{citizen_id}":{"delete":{"tags":["admin-stations"],"summary":"Désassigner un citoyen (retirer du bureau)","operationId":"unassign_citizen_from_station_admin_stations__station_id__citizens__citizen_id__delete","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"citizen_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Citizen Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationUnassignmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/codes/{station_code}":{"get":{"tags":["admin-stations"],"summary":"Récupérer un bureau par son code unique (dans le contexte pays)","operationId":"get_station_by_code_admin_stations_codes__station_code__get","parameters":[{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/tally-sheet":{"get":{"tags":["admin-stations"],"summary":"Charger le PV d'un bureau (existant ou template vide)","description":"Load existing tally sheet for a station, or return empty template with candidates.\n\nUsed to populate the manual PV entry form.","operationId":"get_tally_sheet_template_admin_stations__station_id__tally_sheet_get","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"election_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Election Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/pv-entry":{"post":{"tags":["admin-stations"],"summary":"Saisie manuelle d'un PV (admin/manager)","description":"Submit PV results for a polling station (admin/manager entry).\n\nThis endpoint is for MANUAL entry of aggregated vote results from paper PV.\nIt does NOT require citizen enrollment - only SUPER_ADMIN or VOTE_MANAGER permission.\n\nUnlike /votes (for individual citizen votes), this endpoint:\n- Does NOT require token validation\n- Does NOT require citizen enrollment check\n- Requires SUPER_ADMIN role or VOTE_MANAGER scope for the station","operationId":"submit_pv_entry_admin_stations_pv_entry_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteSubmissionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteSubmissionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stations/{station_id}/pv-image":{"post":{"tags":["admin-stations"],"summary":"Upload PV paper image for a station","description":"Upload PV paper scan/photo for a polling station.\n\n- Accepts JPG, PNG, GIF, WebP, PDF\n- Max 10MB for images, 20MB for PDF\n- Stored in MinIO under: pv-papers/{election_code}/{station_code}/pv-{timestamp}.{ext}\n- Returns signed URL for immediate display","operationId":"upload_pv_image_admin_stations__station_id__pv_image_post","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_pv_image_admin_stations__station_id__pv_image_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVImageUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-stations"],"summary":"Delete PV paper image for a station","description":"Delete PV paper image for a polling station.","operationId":"delete_pv_image_admin_stations__station_id__pv_image_delete","parameters":[{"name":"station_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Station Id"}},{"name":"election_code","in":"query","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Pv Image Admin Stations  Station Id  Pv Image Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/citizens/enroll":{"post":{"tags":["admin_citizens"],"summary":"Enroll Citizen","description":"Enrôle un citoyen dans un bureau de vote.\nStep 070 (Real Logic)","operationId":"enroll_citizen_citizens_enroll_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenEnrollmentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin_citizens"],"summary":"Unenroll Citizen","description":"Désenrôlement (Unitaire ou Massif).","operationId":"unenroll_citizen_citizens_enroll_delete","parameters":[{"name":"election_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Election Id"}},{"name":"citizen_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Citizen Id"}},{"name":"city_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maintenance/status":{"get":{"tags":["admin-maintenance"],"summary":"Consulter l'état actuel des références ClickHouse","operationId":"get_maintenance_status_admin_maintenance_status_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/maintenance/run":{"post":{"tags":["admin-maintenance"],"summary":"Exécuter la maintenance ClickHouse (DDL + seeds + cartes)","operationId":"run_maintenance_admin_maintenance_run_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/managers/applications":{"get":{"tags":["admin-managers"],"summary":"Lister les candidatures de managers","operationId":"list_manager_candidates_admin_managers_applications_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"election_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/managers/applications/{candidate_id}/accept":{"post":{"tags":["admin-managers"],"summary":"Accepter une candidature","operationId":"accept_manager_candidate_admin_managers_applications__candidate_id__accept_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Candidate Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/managers/applications/{candidate_id}/reject":{"post":{"tags":["admin-managers"],"summary":"Refuser une candidature","operationId":"reject_manager_candidate_admin_managers_applications__candidate_id__reject_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Candidate Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/managers/applications/{candidate_id}":{"get":{"tags":["admin-managers"],"summary":"Consulter une candidature","operationId":"get_manager_candidate_admin_managers_applications__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Candidate Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerCandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/fr/presidential-2022-t1/status":{"get":{"tags":["admin-imports"],"summary":"Consulter l'état de l'import Présidentielle FR 2022 (T1)","operationId":"import_fr_presidential_status_admin_imports_fr_presidential_2022_t1_status_get","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/fr/presidential-2022-t1":{"post":{"tags":["admin-imports"],"summary":"Importer les PV officiels – présidentielle France 2022 (tour 1) [BULK OPTIMISÉ ⚡]","description":"Import bulk optimisé des résultats officiels Présidentielle France 2022 Tour 1.\n\nPerformance : ~11 secondes pour 69,682 bureaux (vs 3-6h avec version legacy).\n\nIdempotent : peut être relancé sans créer de doublons.","operationId":"run_fr_presidential_2022_t1_admin_imports_fr_presidential_2022_t1_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/fr/deputes":{"post":{"tags":["admin-imports"],"summary":"Importer les députés français (données + photos MinIO) [BULK ⚡]","description":"Import COMPLET des députés français dans le baromètre.\n\nProcessus:\n1. Import BULK 577 députés → baro_actors\n2. Upload 576 photos → MinIO\n3. Update photo_url avec URLs MinIO\n\nDurée: ~35 secondes pour import complet.","operationId":"run_fr_deputes_admin_imports_fr_deputes_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/fr/maires":{"post":{"tags":["admin-imports"],"summary":"Importer les maires français (depuis RNE)","description":"Import COMPLET des maires français dans le baromètre.\n\nSource: Répertoire National des Élus (RNE) - data.gouv.fr\nCible: baro_actors avec actor_type = mayor\n\nNote: RNE ne fournit pas de photos.","operationId":"run_fr_maires_admin_imports_fr_maires_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/rw/deputes":{"post":{"tags":["admin-imports"],"summary":"Importer les députés Rwanda (depuis election_rw_dwh)","description":"Lance l'import des députés rwandais.\n\n- Source: election_rw_dwh.rwanda_deputies\n- Cible: baro_actors\n- Photos: MinIO (actors/deputies/rw/...)","operationId":"run_rw_deputes_admin_imports_rw_deputes_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/rw/senators":{"post":{"tags":["admin-imports"],"summary":"Importer les sénateurs Rwanda","operationId":"run_rw_senators_admin_imports_rw_senators_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/rw/ministers":{"post":{"tags":["admin-imports"],"summary":"Importer les ministres Rwanda","operationId":"run_rw_ministers_admin_imports_rw_ministers_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/rw/mayors":{"post":{"tags":["admin-imports"],"summary":"Importer les maires Rwanda","operationId":"run_rw_mayors_admin_imports_rw_mayors_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/elections/{election_code}/data/check":{"get":{"tags":["admin-imports-delete"],"summary":"Check Election Import Data","description":"Vérifier si des données d'import existent pour une élection.\n\nArgs:\n    election_code: Code de l'élection (ex: \"PRESIDENTIAL-FR-2022-04-10\")\n\nReturns:\n    {\n        \"election_code\": \"PRESIDENTIAL-FR-2022-04-10\",\n        \"election_id\": \"...\",\n        \"has_data\": true,\n        \"total_rows\": 827543,\n        \"counts\": {\n            \"stations\": 69000,\n            \"tally_sheets\": 69000,\n            \"votes\": 828000,\n            ...\n        }\n    }\n\nRaises:\n    404: Élection introuvable","operationId":"check_election_import_data_admin_imports_elections__election_code__data_check_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Check Election Import Data Admin Imports Elections  Election Code  Data Check Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/imports/elections/{election_code}/data":{"delete":{"tags":["admin-imports-delete"],"summary":"Delete Election Import Data","description":"Supprimer TOUTES les données d'import d'une élection.\n\nATTENTION: Cette action supprime :\n- Tous les bureaux de vote (step_090_polling_stations)\n- Tous les PV (step_100_tally_sheets)\n- Tous les votes (step_100_votes)\n- Toutes les photos de PV (step_100_tally_sheet_attachments)\n- Etc.\n\nLes candidats et l'élection elle-même sont PRÉSERVÉS.\n\nArgs:\n    election_code: Code de l'élection\n    force: Si false, requiert confirmation si données existent\n\nReturns (succès):\n    {\n        \"election_code\": \"PRESIDENTIAL-FR-2022-04-10\",\n        \"election_id\": \"...\",\n        \"total_deleted\": 827543,\n        \"deleted_counts\": {\n            \"stations\": 69000,\n            \"tally_sheets\": 69000,\n            \"votes\": 828000,\n            ...\n        },\n        \"success\": true,\n        \"message\": \"Successfully deleted 827543 rows...\"\n    }\n\nReturns (confirmation requise):\n    Status 400:\n    {\n        \"error\": \"confirmation_required\",\n        \"message\": \"Election has 827543 rows. Confirmation required.\",\n        \"election_code\": \"PRESIDENTIAL-FR-2022-04-10\",\n        \"has_data\": true,\n        \"total_rows\": 827543,\n        \"counts\": {...},\n        \"hint\": \"Add ?force=true to confirm deletion\"\n    }\n\nRaises:\n    400: Confirmation requise (force=false et données existent)\n    404: Élection introuvable","operationId":"delete_election_import_data_admin_imports_elections__election_code__data_delete","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Forcer la suppression sans confirmation (défaut: false)","default":false,"title":"Force"},"description":"Forcer la suppression sans confirmation (défaut: false)"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Election Import Data Admin Imports Elections  Election Code  Data Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/complaints":{"post":{"tags":["complaints"],"summary":"Create Complaint","operationId":"create_complaint_complaints_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplaintCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplaintResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/complaints/{complaint_id}/history":{"get":{"tags":["complaints"],"summary":"Get Complaint History","operationId":"get_complaint_history_complaints__complaint_id__history_get","parameters":[{"name":"complaint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Complaint Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComplaintHistoryEntry"},"title":"Response Get Complaint History Complaints  Complaint Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ocr/polling-stations/{station_code}/pv":{"post":{"tags":["ocr"],"summary":"Uploader un PV pour OCR","operationId":"submit_polling_station_pv_ocr_polling_stations__station_code__pv_post","parameters":[{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCRUploadRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCRSubmissionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ocr/polling-stations/{station_code}/pv/{submission_id}":{"get":{"tags":["ocr"],"summary":"Consulter le statut d'un traitement OCR","operationId":"get_submission_status_ocr_polling_stations__station_code__pv__submission_id__get","parameters":[{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Submission Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCRStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ocr/polling-stations/{station_code}/pv/{submission_id}/validate":{"post":{"tags":["ocr"],"summary":"Valider/corriger les données OCR","operationId":"validate_submission_ocr_polling_stations__station_code__pv__submission_id__validate_post","parameters":[{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Submission Id"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCRValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCRValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/metrics/global":{"get":{"tags":["explorer"],"summary":"Métriques globales","description":"Compteurs présentés sur la home VoiceCompil Explorer.","operationId":"get_global_metrics_explorer_metrics_global_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalMetricsResponse"}}}},"404":{"description":"Resource not found"}}}},"/explorer/countries":{"get":{"tags":["explorer"],"summary":"Lister les pays actifs","description":"Retourne les pays activés et leurs compteurs. Voir catalogue API : docs/phases/phase-1-homepage/api-backend/HOMEPAGE-API-CATALOG.md.","operationId":"get_countries_explorer_countries_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":64},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountriesResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/activity":{"get":{"tags":["explorer"],"summary":"Activité récente","description":"Chronologie des élections récentes et de leur progression.","operationId":"get_recent_activity_explorer_activity_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":0,"default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors":{"get":{"tags":["explorer"],"summary":"Lister les acteurs publics (MVP)","operationId":"list_public_actors_explorer_actors_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}],"title":"Search"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"party_family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party Family"}},{"name":"territory_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerActorListResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors/{actor_code}":{"get":{"tags":["explorer"],"summary":"Détail d'un acteur public","operationId":"get_public_actor_detail_explorer_actors__actor_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerActorDetailResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}":{"get":{"tags":["explorer"],"summary":"Statistiques synthétiques par pays","operationId":"get_country_stats_explorer_countries__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryStatsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/elections/active":{"get":{"tags":["explorer"],"summary":"Élections actives d'un pays","operationId":"get_country_active_elections_explorer_countries__country_code__elections_active_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryElectionsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors/{actor_code}/cards":{"get":{"tags":["explorer"],"summary":"Lister les cartes d'un acteur (deck Explorer)","operationId":"list_actor_cards_explorer_actors__actor_code__cards_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"type","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":32,"description":"HIGHLIGHT | NEWS | MEDIA","title":"Type"},"description":"HIGHLIGHT | NEWS | MEDIA"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerActorCardsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/stats":{"get":{"tags":["explorer"],"summary":"Statistiques globales d'une élection","operationId":"get_election_stats_explorer_elections__election_code__stats_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionStatsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/gaps/elections/{election_code}/communes/no-stations":{"get":{"tags":["explorer"],"summary":"Communes sans bureau de vote déclaré","operationId":"get_communes_without_stations_explorer_gaps_elections__election_code__communes_no_stations_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"region_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Region Code"}},{"name":"department_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Department Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerGapResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/gaps/elections/{election_code}/stations/no-pv":{"get":{"tags":["explorer"],"summary":"Stations sans PV soumis","operationId":"get_stations_without_pv_explorer_gaps_elections__election_code__stations_no_pv_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"title":"Country Code"}},{"name":"territorial_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Territorial Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerGapResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/gaps/elections/{election_code}/stations/no-feedback":{"get":{"tags":["explorer"],"summary":"Stations sans validation citoyenne","operationId":"get_stations_without_feedback_explorer_gaps_elections__election_code__stations_no_feedback_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"title":"Country Code"}},{"name":"territorial_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Territorial Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerGapResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/gaps/elections/{election_code}/stations/no-attachment":{"get":{"tags":["explorer"],"summary":"PV validés sans pièces jointes","operationId":"get_stations_without_attachments_explorer_gaps_elections__election_code__stations_no_attachment_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"title":"Country Code"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"territorial_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Territorial Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerGapResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/gaps/elections/{election_code}/stations/low-consensus":{"get":{"tags":["explorer"],"summary":"Stations avec consensus faible","operationId":"get_stations_low_consensus_explorer_gaps_elections__election_code__stations_low_consensus_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":3,"title":"Country Code"}},{"name":"threshold","in":"query","required":false,"schema":{"type":"number","maximum":100.0,"minimum":0.0,"default":50.0,"title":"Threshold"}},{"name":"territorial_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Territorial Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerGapResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/timeline":{"get":{"tags":["explorer"],"summary":"Timeline électorale d'un pays","operationId":"get_country_timeline_explorer_countries__country_code__timeline_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryTimelineResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/stats":{"get":{"tags":["explorer"],"summary":"Données analytiques d'un pays","operationId":"get_country_stats_data_explorer_countries__country_code__stats_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryStatsDataResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/map/markers":{"get":{"tags":["explorer"],"summary":"Markers cartographiques d'un pays","operationId":"get_country_map_explorer_countries__country_code__map_markers_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryMapDataResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/map/profile":{"get":{"tags":["explorer"],"summary":"Profil cartographique d'un pays","operationId":"get_country_map_profile_explorer_countries__country_code__map_profile_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryMapProfileResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/map/regions":{"get":{"tags":["explorer"],"summary":"Liste des régions cartographiées","operationId":"list_country_regions_explorer_countries__country_code__map_regions_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryMapRegionsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/map/departments":{"get":{"tags":["explorer"],"summary":"Liste des départements cartographiés","operationId":"list_country_departments_explorer_countries__country_code__map_departments_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"region_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":32},{"type":"null"}],"title":"Region Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryMapDepartmentsResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/countries/{country_code}/map/cities":{"get":{"tags":["explorer"],"summary":"Liste des villes cartographiées","operationId":"list_country_cities_explorer_countries__country_code__map_cities_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"region_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":32},{"type":"null"}],"title":"Region Code"}},{"name":"department_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":32},{"type":"null"}],"title":"Department Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryMapCitiesResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/filters/anomalies":{"get":{"tags":["explorer"],"summary":"Préparer les filtres d'anomalies pour un drill-down","operationId":"get_election_anomaly_filters_explorer_elections__election_code__filters_anomalies_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerAnomalyFiltersResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/territorial-tree":{"get":{"tags":["explorer"],"summary":"Arbre territorial d'une élection","operationId":"get_election_territorial_tree_explorer_elections__election_code__territorial_tree_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerTerritorialTreeResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/aggregations/{level}/{territorial_code}":{"get":{"tags":["explorer"],"summary":"Agrégation drill-down par niveau","operationId":"get_drill_down_aggregation_explorer_aggregations__level___territorial_code__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DrillDownLevel"}},{"name":"territorial_code","in":"path","required":true,"schema":{"type":"string","title":"Territorial Code"}},{"name":"election_code","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"title":"Election Code"}},{"name":"candidate_codes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Liste CSV de codes candidats","title":"Candidate Codes"},"description":"Liste CSV de codes candidats"},{"name":"min_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Consensus"}},{"name":"max_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Consensus"}},{"name":"anomalies_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Anomalies Only"}},{"name":"min_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Participation"}},{"name":"max_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Participation"}},{"name":"include_drill_down","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Drill Down"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownAggregationResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/stations/{station_code}/detail":{"get":{"tags":["explorer"],"summary":"Détail complet d'un bureau (PV + preuves + feedback)","operationId":"get_station_detail_explorer_stations__station_code__detail_get","parameters":[{"name":"station_code","in":"path","required":true,"schema":{"type":"string","title":"Station Code"}},{"name":"election_code","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationDetailResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/pvs":{"get":{"tags":["explorer"],"summary":"Liste des procès-verbaux d'une élection","operationId":"list_election_pvs_explorer_elections__election_code__pvs_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":32,"default":"all","title":"Status"}},{"name":"min_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Consensus"}},{"name":"max_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Consensus"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":64},{"type":"null"}],"title":"Region"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mine"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":30,"title":"Page Size"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":32,"default":"-consensus_rate","title":"Sort"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TallySheetListResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/candidates":{"get":{"tags":["explorer"],"summary":"Liste des candidats pour un drill-down","operationId":"list_explorer_candidates_explorer_elections__election_code__candidates_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExplorerCandidateResponse"},"title":"Response List Explorer Candidates Explorer Elections  Election Code  Candidates Get"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/candidates/{candidate_code}":{"get":{"tags":["explorer"],"summary":"Détail d'un candidat","operationId":"get_candidate_detail_explorer_elections__election_code__candidates__candidate_code__get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerCandidateDetailResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/elections/{election_code}/candidates/{candidate_code}/performance":{"get":{"tags":["explorer"],"summary":"Performance territoriale d'un candidat","operationId":"get_candidate_performance_explorer_elections__election_code__candidates__candidate_code__performance_get","parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplorerCandidatePerformanceResponse"}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors/{actor_code}/elections":{"get":{"tags":["explorer"],"summary":"Historique électoral d'un acteur","description":"Récupère la liste des élections auxquelles un acteur a participé","operationId":"get_actor_elections_explorer_actors__actor_code__elections_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"X-VC-Operator-Country","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Operator-Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors/{actor_code}/elections/{election_code}/national":{"get":{"tags":["explorer"],"summary":"Résultat national d'un acteur","description":"Récupère le résultat national d'un acteur pour une élection spécifique","operationId":"get_actor_national_result_explorer_actors__actor_code__elections__election_code__national_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"country_code","in":"query","required":true,"schema":{"type":"string","description":"Code pays","title":"Country Code"},"description":"Code pays"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/explorer/actors/{actor_code}/elections/{election_code}/territories":{"get":{"tags":["explorer"],"summary":"Drill-down territorial des résultats d'un acteur","description":"Récupère les résultats d'un acteur par territoire enfant","operationId":"get_actor_election_territories_explorer_actors__actor_code__elections__election_code__territories_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","title":"Election Code"}},{"name":"parent_level","in":"query","required":true,"schema":{"type":"string","description":"Niveau parent (country/region/department/commune)","title":"Parent Level"},"description":"Niveau parent (country/region/department/commune)"},{"name":"parent_code","in":"query","required":true,"schema":{"type":"string","description":"Code du territoire parent","title":"Parent Code"},"description":"Code du territoire parent"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Code pays (pour level=country)","title":"Country Code"},"description":"Code pays (pour level=country)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Resource not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/favorites":{"get":{"tags":["users","favorites"],"summary":"Lister les acteurs favoris de l'utilisateur connecté","operationId":"list_my_favorites_users_me_favorites_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavoritesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/favorites/{actor_identifier}":{"post":{"tags":["users","favorites"],"summary":"Ajouter un acteur aux favoris","operationId":"add_my_favorite_users_me_favorites__actor_identifier__post","parameters":[{"name":"actor_identifier","in":"path","required":true,"schema":{"type":"string","minLength":2,"description":"UUID ou slug de l'acteur","title":"Actor Identifier"},"description":"UUID ou slug de l'acteur"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavoriteMutationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users","favorites"],"summary":"Supprimer un favori","operationId":"delete_my_favorite_users_me_favorites__actor_identifier__delete","parameters":[{"name":"actor_identifier","in":"path","required":true,"schema":{"type":"string","minLength":2,"title":"Actor Identifier"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actors/by-slug/{slug}":{"get":{"tags":["actors"],"summary":"Résoudre un slug d'acteur baromètre","operationId":"resolve_actor_slug_actors_by_slug__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":2,"description":"Slug ou actor_code","title":"Slug"},"description":"Slug ou actor_code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorSlugResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/elections/{election_code}/drill-down/global":{"get":{"tags":["election-drill-down (DEPRECATED - use /api/v3/drill-down)"],"summary":"[DEPRECATED] Aggregated drill-down metrics - Use /api/v3/drill-down instead","operationId":"get_election_drill_global_v2_elections__election_code__drill_down_global_get","deprecated":true,"parameters":[{"name":"election_code","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"title":"Election Code"}},{"name":"level","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DrillDownLevel","description":"Hierarchy level to inspect"},"description":"Hierarchy level to inspect"},{"name":"territorial_code","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Target territorial code","title":"Territorial Code"},"description":"Target territorial code"},{"name":"min_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Consensus"}},{"name":"max_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Consensus"}},{"name":"anomalies_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Anomalies Only"}},{"name":"min_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Participation"}},{"name":"max_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Participation"}},{"name":"include_drill_down","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Drill Down"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownAggregationResponse"}}}},"404":{"description":"Election or drill-down data not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/elections/{election_code}/drill-down/candidates/{candidate_code}":{"get":{"tags":["election-drill-down (DEPRECATED - use /api/v3/drill-down)"],"summary":"[DEPRECATED] Candidate-focused drill-down - Use /api/v3/drill-down instead","operationId":"get_candidate_drill_down_v2_elections__election_code__drill_down_candidates__candidate_code__get","deprecated":true,"parameters":[{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}},{"name":"election_code","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"title":"Election Code"}},{"name":"level","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DrillDownLevel","description":"Hierarchy level to inspect"},"description":"Hierarchy level to inspect"},{"name":"territorial_code","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Target territorial code","title":"Territorial Code"},"description":"Target territorial code"},{"name":"min_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Consensus"}},{"name":"max_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Consensus"}},{"name":"anomalies_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Anomalies Only"}},{"name":"min_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Min Participation"}},{"name":"max_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"title":"Max Participation"}},{"name":"include_drill_down","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Drill Down"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownAggregationResponse"}}}},"404":{"description":"Election or drill-down data not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/drill-down/{election_id}/{level}/{code}":{"get":{"tags":["Drill-Down V3"],"summary":"Drill-Down Card V3","description":"Récupère données drill-down pour un niveau territorial.\n\n    Niveaux supportés:\n    - country: Niveau pays\n    - region: Niveau région\n    - department: Niveau département\n    - commune: Niveau commune\n    - station: Niveau bureau de vote (terminal)\n\n    Retourne:\n    - Métriques agrégées (participation, abstention, consensus, etc.)\n    - Résultats candidats classés\n    - Gap analysis (leader vs second)\n    - Territoires enfants (drill-down)\n    - Navigation drill-up/drill-down","operationId":"get_drill_down_api_v3_drill_down__election_id___level___code__get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Code pays (pour level=country)","title":"Country Code"},"description":"Code pays (pour level=country)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseDrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/drill-down/{election_id}/{level}/{code}/children":{"get":{"tags":["Drill-Down V3"],"summary":"Get Children Territories","description":"Récupère liste des territoires enfants pour drill-down rapide","operationId":"get_children_territories_api_v3_drill_down__election_id___level___code__children_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response Get Children Territories Api V3 Drill Down  Election Id   Level   Code  Children Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/drill-down/{election_id}/candidate/{candidate_code}/children":{"get":{"tags":["Drill-Down V3"],"summary":"Get Candidate Territory Results","description":"Récupère les résultats d'un candidat pour tous les territoires enfants d'un parent.\n\n    Retourne pour chaque territoire:\n    - code: Code territoire\n    - name: Nom territoire\n    - level: Niveau (region/department/commune/station)\n    - votes: Voix du candidat\n    - percentage: % du candidat\n    - delta_vs_national: Écart vs national (points)\n    - rank_local: Rang local du candidat\n    - has_children: Si le territoire a des enfants","operationId":"get_candidate_territory_results_api_v3_drill_down__election_id__candidate__candidate_code__children_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"candidate_code","in":"path","required":true,"schema":{"type":"string","title":"Candidate Code"}},{"name":"parent_level","in":"query","required":true,"schema":{"type":"string","description":"Niveau parent (country/region/department/commune)","title":"Parent Level"},"description":"Niveau parent (country/region/department/commune)"},{"name":"parent_code","in":"query","required":true,"schema":{"type":"string","description":"Code territoire parent","title":"Parent Code"},"description":"Code territoire parent"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Code pays (requis si parent_level=country)","title":"Country Code"},"description":"Code pays (requis si parent_level=country)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response Get Candidate Territory Results Api V3 Drill Down  Election Id  Candidate  Candidate Code  Children Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/drill-down/{election_id}/{level}/{code}/breadcrumb":{"get":{"tags":["Drill-Down V3"],"summary":"Get Breadcrumb Path","description":"Récupère fil d'Ariane (pays → région → ... → niveau demandé)","operationId":"get_breadcrumb_path_api_v3_drill_down__election_id___level___code__breadcrumb_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"level","in":"path","required":true,"schema":{"type":"string","title":"Level"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response Get Breadcrumb Path Api V3 Drill Down  Election Id   Level   Code  Breadcrumb Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/tree/{election_id}/children":{"get":{"tags":["Drill-Down V3"],"summary":"TreeView Lazy Loading","description":"Récupère enfants d'un nœud territorial (lazy loading).\n\n    Si parent_level=None et parent_code=None → retourne racine (pays).\n    Sinon retourne enfants du parent spécifié.\n\n    Filtres optionnels:\n    - min_consensus: Consensus minimum (%)\n    - min_participation: Participation minimum (%)\n    - anomalies_only: Seulement territoires avec anomalies\n\n    Pagination:\n    - limit: Max résultats (défaut 100)\n    - offset: Offset pagination (défaut 0)","operationId":"get_tree_children_api_v3_tree__election_id__children_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"parent_level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Niveau parent (None = racine)","title":"Parent Level"},"description":"Niveau parent (None = racine)"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Code parent","title":"Parent Code"},"description":"Code parent"},{"name":"min_consensus","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Consensus min (%)","title":"Min Consensus"},"description":"Consensus min (%)"},{"name":"min_participation","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Participation min (%)","title":"Min Participation"},"description":"Participation min (%)"},{"name":"anomalies_only","in":"query","required":false,"schema":{"type":"boolean","description":"Seulement anomalies","default":false,"title":"Anomalies Only"},"description":"Seulement anomalies"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Limite résultats","default":100,"title":"Limit"},"description":"Limite résultats"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset pagination","default":0,"title":"Offset"},"description":"Offset pagination"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreeChildrenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/tree/{election_id}/path":{"get":{"tags":["Drill-Down V3"],"summary":"TreeView Breadcrumb Path","description":"Récupère chemin complet (breadcrumb) depuis pays jusqu'au nœud spécifié.\n\n    Utilisé pour:\n    - Afficher contexte territorial\n    - Navigation rapide dans hiérarchie\n    - Expansion automatique de l'arbre jusqu'au nœud","operationId":"get_tree_path_api_v3_tree__election_id__path_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"level","in":"query","required":true,"schema":{"type":"string","description":"Niveau terminal (region/department/commune/station)","title":"Level"},"description":"Niveau terminal (region/department/commune/station)"},{"name":"code","in":"query","required":true,"schema":{"type":"string","description":"Code territoire terminal","title":"Code"},"description":"Code territoire terminal"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreePathResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/tree/{election_id}/search":{"get":{"tags":["Drill-Down V3"],"summary":"TreeView Search","description":"Recherche dans arborescence territoriale.\n\n    Recherche sur:\n    - Noms de régions\n    - Noms de départements\n    - Noms de communes\n    - Noms de bureaux de vote\n\n    Tri par pertinence:\n    1. Exact match\n    2. Starts with\n    3. Contains\n\n    Puis par nombre de votes décroissant.\n\n    Limite: 20 résultats par défaut (max 100).\n    Query minimum: 3 caractères.","operationId":"search_tree_api_v3_tree__election_id__search_get","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string","title":"Election Id"}},{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":3,"description":"Texte recherche (min 3 caractères)","title":"Query"},"description":"Texte recherche (min 3 caractères)"},{"name":"level_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre niveau (region/department/commune/station)","title":"Level Filter"},"description":"Filtre niveau (region/department/commune/station)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max résultats","default":20,"title":"Limit"},"description":"Max résultats"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreeSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{country_code}/{actor_identifier}/current":{"get":{"tags":["Barometer V3"],"summary":"Get Current Score","description":"Get current score and stats for an actor.","operationId":"get_current_score_api_v3_barometer__country_code___actor_identifier__current_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_identifier","in":"path","required":true,"schema":{"type":"string","title":"Actor Identifier"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__CurrentScoreResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{country_code}/{actor_identifier}/evolution":{"get":{"tags":["Barometer V3"],"summary":"Get Evolution","description":"Get score evolution over a period.","operationId":"get_evolution_api_v3_barometer__country_code___actor_identifier__evolution_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_identifier","in":"path","required":true,"schema":{"type":"string","title":"Actor Identifier"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__EvolutionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{country_code}/ranking":{"get":{"tags":["Barometer V3"],"summary":"Get Ranking","description":"Get actor ranking.","operationId":"get_ranking_api_v3_barometer__country_code__ranking_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__RankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{country_code}/{actor_identifier}/comments":{"get":{"tags":["Barometer V3"],"summary":"Get Comments","description":"Get recent approved comments.","operationId":"get_comments_api_v3_barometer__country_code___actor_identifier__comments_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_identifier","in":"path","required":true,"schema":{"type":"string","title":"Actor Identifier"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"vote_value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vote Value"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{country_code}/stats":{"get":{"tags":["Barometer V3"],"summary":"Get Global Stats","description":"Get global barometer statistics.","operationId":"get_global_stats_api_v3_barometer__country_code__stats_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__GlobalStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{actor_id}/drill-down/country/{country_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Actor Stats Country","description":"Get actor stats at country level.","operationId":"get_actor_stats_country_api_v3_barometer__actor_id__drill_down_country__country_code__get","parameters":[{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Actor Id"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTerritorialStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{actor_id}/drill-down/region/{region_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Actor Stats Region","description":"Get actor stats at region level.","operationId":"get_actor_stats_region_api_v3_barometer__actor_id__drill_down_region__region_code__get","parameters":[{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Actor Id"}},{"name":"region_code","in":"path","required":true,"schema":{"type":"string","title":"Region Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTerritorialStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{actor_id}/drill-down/department/{department_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Actor Stats Department","description":"Get actor stats at department level.","operationId":"get_actor_stats_department_api_v3_barometer__actor_id__drill_down_department__department_code__get","parameters":[{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Actor Id"}},{"name":"department_code","in":"path","required":true,"schema":{"type":"string","title":"Department Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTerritorialStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/{actor_id}/drill-down/city/{city_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Actor Stats City","description":"Get actor stats at city level.","operationId":"get_actor_stats_city_api_v3_barometer__actor_id__drill_down_city__city_code__get","parameters":[{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Actor Id"}},{"name":"city_code","in":"path","required":true,"schema":{"type":"string","title":"City Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTerritorialStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/ranking/country/{country_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Ranking Country","description":"Get actor ranking at country level.","operationId":"get_ranking_country_api_v3_barometer_ranking_country__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialRankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/ranking/region/{region_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Ranking Region","description":"Get actor ranking at region level.","operationId":"get_ranking_region_api_v3_barometer_ranking_region__region_code__get","parameters":[{"name":"region_code","in":"path","required":true,"schema":{"type":"string","title":"Region Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialRankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/ranking/department/{department_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Ranking Department","description":"Get actor ranking at department level.","operationId":"get_ranking_department_api_v3_barometer_ranking_department__department_code__get","parameters":[{"name":"department_code","in":"path","required":true,"schema":{"type":"string","title":"Department Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialRankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/ranking/city/{city_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Ranking City","description":"Get actor ranking at city level.","operationId":"get_ranking_city_api_v3_barometer_ranking_city__city_code__get","parameters":[{"name":"city_code","in":"path","required":true,"schema":{"type":"string","title":"City Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialRankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/global/country/{country_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Global Stats Country","description":"Get global engagement stats at country level.","operationId":"get_global_stats_country_api_v3_barometer_global_country__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGlobalStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/global/region/{region_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Global Stats Region","description":"Get global engagement stats at region level.","operationId":"get_global_stats_region_api_v3_barometer_global_region__region_code__get","parameters":[{"name":"region_code","in":"path","required":true,"schema":{"type":"string","title":"Region Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGlobalStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/global/department/{department_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Global Stats Department","description":"Get global engagement stats at department level.","operationId":"get_global_stats_department_api_v3_barometer_global_department__department_code__get","parameters":[{"name":"department_code","in":"path","required":true,"schema":{"type":"string","title":"Department Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGlobalStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/barometer/global/city/{city_code}":{"get":{"tags":["Barometer Drill-Down"],"summary":"Get Global Stats City","description":"Get global engagement stats at city level.","operationId":"get_global_stats_city_api_v3_barometer_global_city__city_code__get","parameters":[{"name":"city_code","in":"path","required":true,"schema":{"type":"string","title":"City Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGlobalStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/{actor_code}/current":{"get":{"tags":["barometer-v4"],"summary":"Get Current Score","operationId":"get_current_score_api_v4_barometer__country_code___actor_code__current_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__CurrentScoreResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/{actor_code}/evolution":{"get":{"tags":["barometer-v4"],"summary":"Get Evolution","operationId":"get_evolution_api_v4_barometer__country_code___actor_code__evolution_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Start Date"}},{"name":"end_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"End Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__EvolutionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/ranking":{"get":{"tags":["barometer-v4"],"summary":"Get Ranking","description":"Get ranking of actors by score.\n\nArgs:\n    country_code: Country code\n    timeslot: Optional date filter (YYYY-MM-DD), omit for global ranking\n    limit: Max results (default 20)\n    offset: Pagination offset\n    actor_type: Filter by actor type (e.g., 'deputy', 'senator', 'minister')\n    actor_category: Filter by category (e.g., 'political', 'economic', 'cultural')","operationId":"get_ranking_api_v4_barometer__country_code__ranking_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}},{"name":"actor_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__RankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{actor_code}/drill-down/country/{country_code}":{"get":{"tags":["barometer-v4"],"summary":"Get Drill Down Country","operationId":"get_drill_down_country_api_v4_barometer__actor_code__drill_down_country__country_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{actor_code}/drill-down/region/{region_code}":{"get":{"tags":["barometer-v4"],"summary":"Get Drill Down Region","operationId":"get_drill_down_region_api_v4_barometer__actor_code__drill_down_region__region_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"region_code","in":"path","required":true,"schema":{"type":"string","title":"Region Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{actor_code}/drill-down/department/{department_code}":{"get":{"tags":["barometer-v4"],"summary":"Get Drill Down Department","operationId":"get_drill_down_department_api_v4_barometer__actor_code__drill_down_department__department_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"department_code","in":"path","required":true,"schema":{"type":"string","title":"Department Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{actor_code}/drill-down/city/{city_code}":{"get":{"tags":["barometer-v4"],"summary":"Get Drill Down City","operationId":"get_drill_down_city_api_v4_barometer__actor_code__drill_down_city__city_code__get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"city_code","in":"path","required":true,"schema":{"type":"string","title":"City Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{actor_code}/territorial-grid":{"get":{"tags":["barometer-v4"],"summary":"Get Territorial Grid","operationId":"get_territorial_grid_api_v4_barometer__actor_code__territorial_grid_get","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"parent_level","in":"query","required":true,"schema":{"type":"string","pattern":"^(country|region|department)$","title":"Parent Level"}},{"name":"parent_code","in":"query","required":true,"schema":{"type":"string","title":"Parent Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"score_net","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGridResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/actor-types":{"get":{"tags":["barometer-v4"],"summary":"List Actor Types","description":"List all actor types with optional filtering by category.\n\nArgs:\n    country_code: If provided with include_counts=True, returns actor counts per type\n    category: Filter by category (political, economic, cultural, media, sports)\n    include_counts: Include actor counts per type (requires country_code)","operationId":"list_actor_types_api_v4_barometer_actor_types_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"include_counts","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Counts"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTypesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/actor-types/{code}":{"get":{"tags":["barometer-v4"],"summary":"Get Actor Type","description":"Get details for a specific actor type by code.","operationId":"get_actor_type_api_v4_barometer_actor_types__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorTypeDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/compare":{"get":{"tags":["barometer-v4"],"summary":"Compare Actors","description":"Compare multiple actors side by side.\n\nArgs:\n    country_code: Country code\n    actor_codes: Comma-separated list of actor codes (max 5)\n    timeslot: Optional timeslot, defaults to global stats if not provided","operationId":"compare_actors_api_v4_barometer__country_code__compare_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_codes","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated list of actor codes to compare (max 5)","title":"Actor Codes"},"description":"Comma-separated list of actor codes to compare (max 5)"},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/live-feed":{"get":{"tags":["barometer-v4"],"summary":"Get Live Feed","description":"Get live feed of recent votes.\n\nArgs:\n    country_code: Country code\n    actor_code: Optional filter by actor\n    limit: Max items to return (default 50)","operationId":"get_live_feed_api_v4_barometer__country_code__live_feed_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveFeedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/export/ranking":{"get":{"tags":["barometer-v4"],"summary":"Export Ranking","description":"Export ranking data as CSV or JSON.\n\nArgs:\n    country_code: Country code\n    format: Export format (csv or json)\n    timeslot: Optional date filter\n    actor_type: Optional actor type filter\n    limit: Max records (default 1000)","operationId":"export_ranking_api_v4_barometer__country_code__export_ranking_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|json)$","default":"csv","title":"Format"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/{actor_code}/export/evolution":{"get":{"tags":["barometer-v4"],"summary":"Export Evolution","description":"Export evolution data for an actor.\n\nArgs:\n    country_code: Country code\n    actor_code: Actor code\n    start_date: Start date\n    end_date: End date\n    format: Export format (csv or json)","operationId":"export_evolution_api_v4_barometer__country_code___actor_code__export_evolution_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Start Date"}},{"name":"end_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"End Date"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|json)$","default":"csv","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v4/barometer/{country_code}/{actor_code}/export/territorial":{"get":{"tags":["barometer-v4"],"summary":"Export Territorial","description":"Export territorial breakdown data for an actor.\n\nArgs:\n    country_code: Country code\n    actor_code: Actor code\n    level: Territorial level (region, department, city)\n    format: Export format (csv or json)","operationId":"export_territorial_api_v4_barometer__country_code___actor_code__export_territorial_get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","pattern":"^(region|department|city)$","default":"region","title":"Level"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|json)$","default":"csv","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/campaigns":{"post":{"tags":["opinion"],"summary":"Create Campaign","description":"Create a new opinion campaign.","operationId":"create_campaign_api_opinion_campaigns_post","parameters":[{"name":"owner_id","in":"query","required":true,"schema":{"type":"string","title":"Owner Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionCampaignCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionCampaign"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/campaigns/from-template":{"post":{"tags":["opinion"],"summary":"Create Campaign From Template","description":"Create a new opinion campaign from a template.","operationId":"create_campaign_from_template_api_opinion_campaigns_from_template_post","parameters":[{"name":"template_code","in":"query","required":true,"schema":{"type":"string","title":"Template Code"}},{"name":"owner_id","in":"query","required":true,"schema":{"type":"string","title":"Owner Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionCampaign"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/campaigns/{campaign_id}/items":{"post":{"tags":["opinion"],"summary":"Add Item","description":"Add an item to an existing campaign.","operationId":"add_item_api_opinion_campaigns__campaign_id__items_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionItemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/campaigns/{campaign_id}/vote":{"post":{"tags":["opinion"],"summary":"Submit Vote","description":"Soumet un vote pour un item d'une campagne.","operationId":"submit_vote_api_opinion_campaigns__campaign_id__vote_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionAnswerCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionAnswer"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/simulations/start":{"post":{"tags":["opinion"],"summary":"Start Simulation","description":"Lance une simulation de votes pour une campagne donnée.","operationId":"start_simulation_api_opinion_simulations_start_post","parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"total_bots","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Total Bots"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJob"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/opinion/simulations/{job_id}":{"get":{"tags":["opinion"],"summary":"Get Simulation Status","description":"Récupère le statut d'une simulation.","operationId":"get_simulation_status_api_opinion_simulations__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationJob"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns":{"get":{"tags":["Opinion V3"],"summary":"List Campaigns","description":"List opinion campaigns with optional filters.\n\nCampaigns are filtered by the country code from X-VC-Operator-Country header.","operationId":"list_campaigns_api_v3_opinion_campaigns_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (DRAFT, ACTIVE, CLOSED)","title":"Status"},"description":"Filter by status (DRAFT, ACTIVE, CLOSED)"},{"name":"type_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by opinion type code","title":"Type Code"},"description":"Filter by opinion type code"},{"name":"scope_level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scope level","title":"Scope Level"},"description":"Filter by scope level"},{"name":"scope_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scope code","title":"Scope Code"},"description":"Filter by scope code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Opinion V3"],"summary":"Create Campaign","description":"Create a new opinion campaign with auto-generated SLUG and items from template.\n\nThe SLUG is automatically generated from:\n- country_code + org_code + scope_level + item_source + dates\n\nFormat: {PAYS}-{ORG}-{PORTEE}-{SOURCE}-{DATE_DEBUT}-{DATE_FIN}\nExample: FR-DDD-NAT-CAT-20260104-OPEN\n\nItems are automatically created from the template:\n- Item code format: {CAMPAIGN_CODE}-{ITEM_CATALOG_CODE}\n- Example: FR-DDD-NAT-CAT-20260104-OPEN-FAVORABLE","operationId":"create_campaign_api_v3_opinion_campaigns_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/voter/campaigns":{"get":{"tags":["Opinion V3"],"summary":"List Voter Campaigns","description":"List campaigns visible in the authenticated citizen vote cockpit.","operationId":"list_voter_campaigns_api_v3_opinion_voter_campaigns_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Identity-City","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizenCampaignListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/full":{"post":{"tags":["Opinion V3"],"summary":"Create Full Campaign","description":"Atomic endpoint: create a campaign with content, items, and deck config\nin a single POST.  Supports idempotency via the Idempotency-Key header.\n\nAll MinIO uploads and ClickHouse writes are rolled back on failure.","operationId":"create_full_campaign_api_v3_opinion_campaigns_full_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFullCampaignRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}":{"get":{"tags":["Opinion V3"],"summary":"Get Campaign","description":"Get campaign details with all items by code.","operationId":"get_campaign_api_v3_opinion_campaigns__campaign_code__get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Opinion V3"],"summary":"Update Campaign","description":"Update a campaign's metadata (title, description, visibility, status).\n\nThis performs an UPDATE in the database, not a new INSERT.\nThe campaign code (SLUG) cannot be modified.","operationId":"update_campaign_api_v3_opinion_campaigns__campaign_code__patch","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaignAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Opinion V3"],"summary":"Delete Campaign","description":"Delete a campaign and its items. Refused if votes already exist.","operationId":"delete_campaign_api_v3_opinion_campaigns__campaign_code__delete","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/voter/campaigns/{campaign_code}":{"get":{"tags":["Opinion V3"],"summary":"Get Voter Campaign","description":"Get campaign details in citizen vote context.","operationId":"get_voter_campaign_api_v3_opinion_voter_campaigns__campaign_code__get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Identity-City","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/opinion-types":{"get":{"tags":["Opinion V3"],"summary":"List Opinion Types","description":"List business opinion types used to filter and explain templates.","operationId":"list_opinion_types_api_v3_opinion_opinion_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpinionTypeListResponse"}}}}}}},"/api/v3/opinion/templates":{"get":{"tags":["Opinion V3"],"summary":"List Templates","description":"List available item templates for campaign creation.\n\nTemplates define the set of items (options) that a campaign will use.\nEach template has a category and a list of pre-configured items.\n\n**Standard templates:**\n- CONSULTATION_4POS: Favorable / Opposé / Nuancé / NSP (standard simulation template)\n- REFERENDUM_SIMPLE: OUI / NON / NSP\n- LIKERT_5: Accord/Désaccord 5 points","operationId":"list_templates_api_v3_opinion_templates_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category: referendum, consultation, scale, priority, election","title":"Category"},"description":"Filter by category: referendum, consultation, scale, priority, election"},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/templates/{template_code}":{"get":{"tags":["Opinion V3"],"summary":"Get Template","description":"Get a single template with all item details.","operationId":"get_template_api_v3_opinion_templates__template_code__get","parameters":[{"name":"template_code","in":"path","required":true,"schema":{"type":"string","title":"Template Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/design":{"patch":{"tags":["Opinion V3"],"summary":"Update Campaign Design","description":"Update campaign rich content for the design page.\n\nThis endpoint allows editing the editorial content (hero image, chapo,\ncontext, stakes) that makes campaigns visually rich.\n\n**Rich content fields:**\n- chapo: Lead paragraph / hook text (max 500 chars)\n- context_html: Contextual background (HTML)\n- stakes_html: What's at stake (HTML)\n- hero_image_url: Hero image URL\n- hero_image_alt: Hero image alt text\n- reading_time_min: Estimated reading time","operationId":"update_campaign_design_api_v3_opinion_campaigns__campaign_code__design_patch","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaignDesignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaignDesignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items":{"put":{"tags":["Opinion V3"],"summary":"Replace campaign items","description":"Drop and recreate the full item set of a campaign when its structure changes.","operationId":"replace_campaign_items_api_v3_opinion_campaigns__campaign_code__items_put","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceCampaignItemsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceCampaignItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items/{item_code}":{"patch":{"tags":["Opinion V3"],"summary":"Update item rich content","description":"Update the rich content (label, description, argument, media) of a campaign item.","operationId":"update_item_rich_content_api_v3_opinion_campaigns__campaign_code__items__item_code__patch","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateItemRichContentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateItemRichContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/upload-hero":{"post":{"tags":["Opinion V3"],"summary":"Upload Campaign Hero Image","description":"Upload hero image for a campaign.\n\nUploads an image to MinIO storage and updates the campaign's rich_content\nwith the hero_image_url. This is the preferred method for production\n(internal storage) vs external URLs (Unsplash, etc.).\n\n**Authentication Required**: Bearer token via Authorization header.\n\n**Request**: multipart/form-data\n- `file`: Image file (JPEG, PNG, WebP) - max 5MB\n- `alt_text`: Optional alt text for accessibility\n\n**Response**:\n```json\n{\n    \"success\": true,\n    \"hero_image_url\": \"http://minio:9000/opinion-campaigns/FR/2026/01/campaign-code_hero.jpg\",\n    \"hero_image_alt\": \"Description de l'image\"\n}\n```","operationId":"upload_campaign_hero_image_api_v3_opinion_campaigns__campaign_code__upload_hero_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_campaign_hero_image_api_v3_opinion_campaigns__campaign_code__upload_hero_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items/{item_code}/upload-image":{"post":{"tags":["Opinion V3"],"summary":"Upload Item Image","description":"Upload image for a campaign item.\n\nUploads an image to MinIO storage and updates the item's rich_content\nwith the media_url.\n\n**Request**: multipart/form-data\n- `file`: Image file (JPEG, PNG, WebP, SVG) - max 5MB\n\n**Response**:\n```json\n{\n    \"success\": true,\n    \"media_url\": \"/api/v3/opinion/media/voicecompil-assets/opinion/items/...\"\n}\n```","operationId":"upload_item_image_api_v3_opinion_campaigns__campaign_code__items__item_code__upload_image_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_item_image_api_v3_opinion_campaigns__campaign_code__items__item_code__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/media/{bucket}/{path}":{"get":{"tags":["Opinion V3"],"summary":"Proxy Minio Image","description":"Proxy endpoint to serve MinIO images.\n\nThis is needed because the public MinIO reverse proxy may not be\ncorrectly configured. The backend fetches from internal MinIO\nand serves the content to the browser.\n\n**No Authentication Required**: Public images only.\n\n**Example**: `/api/v3/opinion/media/opinion-campaigns/FR/2026/01/image.jpg`","operationId":"proxy_minio_image_api_v3_opinion_media__bucket___path__get","parameters":[{"name":"bucket","in":"path","required":true,"schema":{"type":"string","title":"Bucket"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/vote":{"post":{"tags":["Opinion V3"],"summary":"Submit Vote","description":"Submit a vote for an opinion campaign.\n\n**Authentication Required**:\n- `Authorization: Bearer <token>` for direct citizen apps\n- or trusted service headers from `smatflow-site` public bridge\n\n**Headers**:\n- `X-VC-Operator-Country: FR` (required)\n- `Authorization: Bearer <token>` or `X-Service-API-Key` + asserted identity\n\nThe user's identity and city are extracted from the JWT profile or from the\ntrusted public bridge headers.\n\n**Validation**:\n- Vote date must be within campaign period (start_at <= now <= end_at)\n- User can only vote once per campaign","operationId":"submit_vote_api_v3_opinion_vote_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Identity-City","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-City"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteRequestSchema"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/vote/batch":{"post":{"tags":["Opinion V3"],"summary":"Submit Batch Vote","description":"Submit several answers for a questionnaire or CLASSIFY campaign.","operationId":"submit_batch_vote_api_v3_opinion_vote_batch_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Identity-City","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-City"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchVoteRequestSchema"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchVoteAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/results":{"get":{"tags":["Opinion V3"],"summary":"Get Campaign Results","description":"Get aggregated results for a campaign by code.","operationId":"get_campaign_results_api_v3_opinion_campaigns__campaign_code__results_get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific item code (default: first item)","title":"Item Code"},"description":"Specific item code (default: first item)"},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date filter (YYYY-MM-DD)","title":"Timeslot"},"description":"Date filter (YYYY-MM-DD)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/questionnaire-results":{"get":{"tags":["Opinion V3"],"summary":"Get Questionnaire Campaign Results","description":"Get aggregated questionnaire results grouped by question.","operationId":"get_questionnaire_campaign_results_api_v3_opinion_campaigns__campaign_code__questionnaire_results_get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date filter (YYYY-MM-DD)","title":"Timeslot"},"description":"Date filter (YYYY-MM-DD)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionnaireResultsAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/results/territories":{"get":{"tags":["Opinion V3"],"summary":"Get Campaign Territory Results","description":"Get campaign results aggregated by territory for drill-down navigation.\n\n**Drill-Down Flow:**\n1. `level=region` → Returns results per region\n2. `level=department&parent_code=IDF` → Returns departments for Île-de-France\n3. `level=city&parent_code=75` → Returns cities for Paris department\n\n**Example Usage:**\n```\nGET /campaigns/FR-DDD-NAT-BARO-20260104/results/territories?level=region\nGET /campaigns/FR-DDD-NAT-BARO-20260104/results/territories?level=department&parent_code=IDF\n```","operationId":"get_campaign_territory_results_api_v3_opinion_campaigns__campaign_code__results_territories_get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","description":"Territory level: region, department, city","default":"region","title":"Level"},"description":"Territory level: region, department, city"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent territory code for drill-down","title":"Parent Code"},"description":"Parent territory code for drill-down"},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date filter (YYYY-MM-DD)","title":"Timeslot"},"description":"Date filter (YYYY-MM-DD)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items/{item_code}/grid":{"get":{"tags":["Opinion V3"],"summary":"Get Territorial Grid","description":"Get territorial drill-down grid for an item by codes.","operationId":"get_territorial_grid_api_v3_opinion_campaigns__campaign_code__items__item_code__grid_get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","description":"Territorial level: country, region, department, city","default":"country","title":"Level"},"description":"Territorial level: country, region, department, city"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent territory code for drill-down","title":"Parent Code"},"description":"Parent territory code for drill-down"},{"name":"timeslot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date filter (YYYY-MM-DD)","title":"Timeslot"},"description":"Date filter (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerritorialGridAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/scope/{scope_level}/{scope_code}/active":{"get":{"tags":["Opinion V3"],"summary":"Get Active Campaigns For Scope","description":"Get active campaigns visible in a given territorial scope.","operationId":"get_active_campaigns_for_scope_api_v3_opinion_scope__scope_level___scope_code__active_get","parameters":[{"name":"scope_level","in":"path","required":true,"schema":{"type":"string","title":"Scope Level"}},{"name":"scope_code","in":"path","required":true,"schema":{"type":"string","title":"Scope Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/actors/ranking":{"get":{"tags":["Opinion V3"],"summary":"Get Actors Ranking","description":"Get top N actors from barometer ranking.\n\nReturns actors sorted by their barometer popularity score.\nThis endpoint is used to preview available actors before importing.","operationId":"get_actors_ranking_api_v3_opinion_actors_ranking_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"FR","title":"Country Code"},"description":"Country code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of actors to return","default":12,"title":"Limit"},"description":"Number of actors to return"},{"name":"min_votes","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Minimum votes threshold","default":100,"title":"Min Votes"},"description":"Minimum votes threshold"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"Sort by: net_score, favorable_pct, total_votes","default":"net_score","title":"Order By"},"description":"Sort by: net_score, favorable_pct, total_votes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorRankingListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/import-from-barometer":{"post":{"tags":["Opinion V3"],"summary":"Import From Barometer","description":"Import top N actors from barometer into a campaign item.\n\nThis replaces the item's current options with the imported actors.\nUse this for bulk import of candidates based on barometer popularity.","operationId":"import_from_barometer_api_v3_opinion_campaigns__campaign_code__import_from_barometer_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportFromBarometerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportFromBarometerAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/link-actor":{"post":{"tags":["Opinion V3"],"summary":"Link Actor To Campaign","description":"Link a single barometer actor to a campaign item.\n\nAdds the actor as a new option in the item's options list.\nUse this for adding individual candidates to an existing campaign.","operationId":"link_actor_to_campaign_api_v3_opinion_campaigns__campaign_code__link_actor_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkActorAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/unlink-actor":{"post":{"tags":["Opinion V3"],"summary":"Unlink Actor From Campaign","description":"Remove an actor from a campaign item's options.\n\nUse this to remove a candidate from the voting options.","operationId":"unlink_actor_from_campaign_api_v3_opinion_campaigns__campaign_code__unlink_actor_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnlinkActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkActorAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items/batch-import":{"post":{"tags":["Opinion V3"],"summary":"Batch Import Items","description":"Batch import actors as individual campaign items.\n\nCreates a new OpinionItem for each selected actor.","operationId":"batch_import_items_api_v3_opinion_campaigns__campaign_code__items_batch_import_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchImportAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/items/remove":{"post":{"tags":["Opinion V3"],"summary":"Remove Item From Campaign","description":"Remove an item from a campaign.\n\nUse this to delete an item (e.g., imported by mistake).","operationId":"remove_item_from_campaign_api_v3_opinion_campaigns__campaign_code__items_remove_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveItemRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveItemAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/taxonomy/tree":{"get":{"tags":["Opinion V3"],"summary":"Get Taxonomy Tree","description":"Get the full taxonomy tree (domains -> categories -> topics).\n\nUsed by the TaxonomyPicker UI component for hierarchical selection.\nReturns all Level 1 domains with their Level 2 categories and Level 3 topics.","operationId":"get_taxonomy_tree_api_v3_opinion_taxonomy_tree_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__campaign_taxonomy__TaxonomyTreeResponse"}}}}}}},"/api/v3/opinion/taxonomy/topics":{"get":{"tags":["Opinion V3"],"summary":"Get Topics List","description":"Get flat list of all Level 3 topics.\n\nUseful for search/autocomplete in the UI.","operationId":"get_topics_list_api_v3_opinion_taxonomy_topics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicsListResponse"}}}}}}},"/api/v3/opinion/taxonomy":{"get":{"tags":["Opinion V3"],"summary":"List Taxonomy","description":"List taxonomy items (domains, categories, topics).\n\n- Without parameters: returns all L1 domains\n- With level: returns all items at that level\n- With parent_code: returns children of that parent","operationId":"list_taxonomy_api_v3_opinion_taxonomy_get","parameters":[{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3,"minimum":1},{"type":"null"}],"description":"Filter by level (1=domain, 2=category, 3=topic)","title":"Level"},"description":"Filter by level (1=domain, 2=category, 3=topic)"},{"name":"parent_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by parent code","title":"Parent Code"},"description":"Filter by parent code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__v3__opinion__schemas__TaxonomyTreeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/taxonomy/{code}":{"get":{"tags":["Opinion V3"],"summary":"Get Taxonomy Item","description":"Get a single taxonomy item by code.","operationId":"get_taxonomy_item_api_v3_opinion_taxonomy__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomyItemSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/taxonomy/sync":{"post":{"tags":["Opinion V3"],"summary":"Sync Taxonomy","description":"Synchronize taxonomy from regalian domains.\n\nPerforms an idempotent sync from voice_capture_dwh to voice_compil_dwh_dev.\nThis reads regalian_domains, regalian_categories, and regalian_topics\nand inserts them into opinion_taxonomy.","operationId":"sync_taxonomy_api_v3_opinion_taxonomy_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomySyncResponse"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/taxonomies":{"get":{"tags":["Opinion V3"],"summary":"Get Campaign Taxonomies","description":"Get all taxonomies (topics) attached to a campaign.\n\nReturns the list of Level 3 topics with their domain and category info.","operationId":"get_campaign_taxonomies_api_v3_opinion_campaigns__campaign_code__taxonomies_get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignTaxonomiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Opinion V3"],"summary":"Attach Taxonomies","description":"Attach topics to a campaign.\n\nAdds the specified topic codes to the campaign. Duplicates are ignored.\nOnly Level 3 (topic) codes are accepted.","operationId":"attach_taxonomies_api_v3_opinion_campaigns__campaign_code__taxonomies_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachTaxonomiesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachTaxonomiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Opinion V3"],"summary":"Replace Taxonomies","description":"Replace all topics for a campaign.\n\nRemoves all existing topic attachments and attaches the new ones.\nUse this for \"save all\" operations in the UI.","operationId":"replace_taxonomies_api_v3_opinion_campaigns__campaign_code__taxonomies_put","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachTaxonomiesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachTaxonomiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/campaigns/{campaign_code}/taxonomies/{topic_code}":{"delete":{"tags":["Opinion V3"],"summary":"Detach Taxonomy","description":"Detach a single topic from a campaign.","operationId":"detach_taxonomy_api_v3_opinion_campaigns__campaign_code__taxonomies__topic_code__delete","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"topic_code","in":"path","required":true,"schema":{"type":"string","title":"Topic Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetachTaxonomyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/catalog":{"get":{"tags":["Item Catalog"],"summary":"List Catalog Items","description":"List items in the catalog (Referentiel).\n\nReturns lightweight items suitable for list views and pickers.\nLe pays provient exclusivement de X-VC-Operator-Country.","operationId":"list_catalog_items_api_v3_opinion_items_catalog_get","parameters":[{"name":"item_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by type: CHOICE, ACTOR, SCALE_POINT, SPECIAL","title":"Item Type"},"description":"Filter by type: CHOICE, ACTOR, SCALE_POINT, SPECIAL"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search in label/code","title":"Search"},"description":"Search in label/code"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include inactive items","default":false,"title":"Include Inactive"},"description":"Include inactive items"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItemListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Item Catalog"],"summary":"Create Catalog Item","description":"Create a new catalog item.\n\nThe code must be unique. Item types:\n- CHOICE: Generic choice (OUI, NON, NEUTRE)\n- ACTOR: Political figure (linked to BARO)\n- SCALE_POINT: Scale point (1-10)\n- SPECIAL: Special options (NSPP, Abstention)\n\nLe country_code de l'item est force a celui de l'operateur : un admin FR\nne peut pas creer un item RW via un request.country_code falsifie.","operationId":"create_catalog_item_api_v3_opinion_items_catalog_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCatalogItemRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCatalogItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/catalog/{item_code}":{"get":{"tags":["Item Catalog"],"summary":"Get Catalog Item","description":"Get a catalog item by code with full details, scope pays obligatoire.","operationId":"get_catalog_item_api_v3_opinion_items_catalog__item_code__get","parameters":[{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItemDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Item Catalog"],"summary":"Update Catalog Item","description":"Update a catalog item (partial update), scope pays obligatoire.\n\nRefuse de modifier un item appartenant a un autre pays que celui\nde l'operateur (PermissionError -> 403).","operationId":"update_catalog_item_api_v3_opinion_items_catalog__item_code__patch","parameters":[{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCatalogItemRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItemDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Item Catalog"],"summary":"Deactivate Catalog Item","description":"Deactivate a catalog item (soft delete), scope pays obligatoire.\n\nItems linked to campaigns cannot be deleted, only deactivated.","operationId":"deactivate_catalog_item_api_v3_opinion_items_catalog__item_code__delete","parameters":[{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/catalog/{item_code}/activate":{"post":{"tags":["Item Catalog"],"summary":"Activate Catalog Item","description":"Reactivate a previously deactivated catalog item, scope pays obligatoire.","operationId":"activate_catalog_item_api_v3_opinion_items_catalog__item_code__activate_post","parameters":[{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogItemDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/templates":{"get":{"tags":["Item Catalog"],"summary":"List Templates","description":"List available item templates, scope pays obligatoire.\n\nTemplates are pre-configured groups of items for quick campaign setup.\nLe pays provient exclusivement de X-VC-Operator-Country.","operationId":"list_templates_api_v3_opinion_items_templates_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","title":"Category"},"description":"Filter by category"},{"name":"resolve_items","in":"query","required":false,"schema":{"type":"boolean","description":"Include resolved item details","default":false,"title":"Resolve Items"},"description":"Include resolved item details"},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemTemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/templates/{template_code}":{"get":{"tags":["Item Catalog"],"summary":"Get Template","description":"Get a template by code with resolved items, scope pays obligatoire.","operationId":"get_template_api_v3_opinion_items_templates__template_code__get","parameters":[{"name":"template_code","in":"path","required":true,"schema":{"type":"string","title":"Template Code"}},{"name":"resolve_items","in":"query","required":false,"schema":{"type":"boolean","description":"Include resolved item details","default":true,"title":"Resolve Items"},"description":"Include resolved item details"},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemTemplateDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/campaigns/{campaign_code}":{"get":{"tags":["Item Catalog"],"summary":"List Campaign Items","description":"List items associated with a campaign.\n\nReturns items with their position, config overrides, and catalog details.","operationId":"list_campaign_items_api_v3_opinion_items_campaigns__campaign_code__get","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include deactivated items","default":false,"title":"Include Inactive"},"description":"Include deactivated items"},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignItemsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/campaigns/{campaign_code}/add":{"post":{"tags":["Item Catalog"],"summary":"Add Items To Campaign","description":"Add catalog items to a campaign.\n\nItems already in the campaign or not in the catalog are skipped.","operationId":"add_items_to_campaign_api_v3_opinion_items_campaigns__campaign_code__add_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddItemsToCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddItemsToCampaignAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/campaigns/{campaign_code}/add-template":{"post":{"tags":["Item Catalog"],"summary":"Add Template To Campaign","description":"Apply a template to a campaign.\n\nAdds all items from the template to the campaign.","operationId":"add_template_to_campaign_api_v3_opinion_items_campaigns__campaign_code__add_template_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTemplateToCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTemplateToCampaignAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/campaigns/{campaign_code}/{item_code}":{"delete":{"tags":["Item Catalog"],"summary":"Remove Item From Campaign","description":"Remove an item from a campaign, scope pays obligatoire.\n\nItems with existing votes cannot be removed.","operationId":"remove_item_from_campaign_api_v3_opinion_items_campaigns__campaign_code___item_code__delete","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveCampaignItemAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Item Catalog"],"summary":"Update Item Override","description":"Update item config override for a specific campaign, scope pays obligatoire.\n\nAllows customizing item behavior per campaign without modifying the catalog.","operationId":"update_item_override_api_v3_opinion_items_campaigns__campaign_code___item_code__patch","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"item_code","in":"path","required":true,"schema":{"type":"string","title":"Item Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemOverrideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemOverrideResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/campaigns/{campaign_code}/reorder":{"post":{"tags":["Item Catalog"],"summary":"Reorder Campaign Items","description":"Reorder items in a campaign, scope pays obligatoire.","operationId":"reorder_campaign_items_api_v3_opinion_items_campaigns__campaign_code__reorder_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderItemsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderItemsAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/actors/available":{"get":{"tags":["Item Catalog"],"summary":"List Available Actors","description":"List actors available for import from BARO, scope pays obligatoire.\n\nLe pays provient exclusivement de X-VC-Operator-Country. Plus aucun\nQuery param country_code : impossible pour un admin FR de lister les\nacteurs RW en trafiquant l'URL.","operationId":"list_available_actors_api_v3_opinion_items_actors_available_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"min_votes","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":100,"title":"Min Votes"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableActorsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/items/actors/import":{"post":{"tags":["Item Catalog"],"summary":"Import Actors To Catalog","description":"Import actors from BARO to the item catalog.\n\nCreates ACTOR type items for each imported actor. Le pays utilise est\nTOUJOURS celui de operator.country_code. Le champ request.country_code\nest ignore pour empecher un admin FR d'importer des acteurs RW.","operationId":"import_actors_to_catalog_api_v3_opinion_items_actors_import_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportActorsToCatalogRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportActorsToCatalogAPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/citizens/count":{"get":{"tags":["Opinion Simulation V2"],"summary":"Get Citizens Count","description":"Get total number of citizens with identity_id.\n\nThis is the base population eligible for voting in simulations.\nLe pays provient exclusivement de l'en-tete X-VC-Operator-Country.","operationId":"get_citizens_count_api_v3_opinion_simulation_citizens_count_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitizensCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/campaigns":{"get":{"tags":["Opinion Simulation V2"],"summary":"List Campaigns With Stats","description":"List all campaigns with simulation statistics.\n\nReturns campaigns with:\n- Item count\n- Vote count\n- Remaining voters\n- Scheduler configuration (if set)\n\nLe pays provient exclusivement de l'en-tete X-VC-Operator-Country.","operationId":"list_campaigns_with_stats_api_v3_opinion_simulation_campaigns_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/campaigns/{campaign_code}/scheduler":{"put":{"tags":["Opinion Simulation V2"],"summary":"Update Scheduler","description":"Update scheduler configuration for a campaign.\n\n- Enable/disable automatic vote generation\n- Set cadence (minutes between executions)\n- Set batch size (votes per execution)","operationId":"update_scheduler_api_v3_opinion_simulation_campaigns__campaign_code__scheduler_put","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSchedulerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSchedulerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/campaigns/{campaign_code}/reset":{"post":{"tags":["Opinion Simulation V2"],"summary":"Reset Scheduler","description":"Reset scheduler flags (exhausted/expired).\n\nUse this to re-enable a scheduler that was auto-disabled.\nUseful if new citizens were added or campaign dates extended.","operationId":"reset_scheduler_api_v3_opinion_simulation_campaigns__campaign_code__reset_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSchedulerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/campaigns/{campaign_code}/generate":{"post":{"tags":["Opinion Simulation V2"],"summary":"Generate Votes Manually","description":"Manually generate votes for a campaign.\n\nTriggers immediate vote generation with the specified batch size.\nRandom citizens who haven't voted will be selected.","operationId":"generate_votes_manually_api_v3_opinion_simulation_campaigns__campaign_code__generate_post","parameters":[{"name":"campaign_code","in":"path","required":true,"schema":{"type":"string","title":"Campaign Code"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVotesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVotesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v3/opinion/simulation/history":{"get":{"tags":["Opinion Simulation V2"],"summary":"Get Execution History","description":"Get execution history.\n\nReturns the last N executions (manual and scheduler).\nCan be filtered by campaign.","operationId":"get_execution_history_api_v3_opinion_simulation_history_get","parameters":[{"name":"campaign_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by campaign","title":"Campaign Code"},"description":"Filter by campaign"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Opinion Simulation V2"],"summary":"Clear Execution History","description":"Clear execution history.\n\nDeletes all history records. Can be filtered by campaign.","operationId":"clear_execution_history_api_v3_opinion_simulation_history_delete","parameters":[{"name":"campaign_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Clear only for this campaign","title":"Campaign Code"},"description":"Clear only for this campaign"},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Service-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Service-Api-Key"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Email"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}},{"name":"X-VC-Asserted-Admin-Role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Asserted-Admin-Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ballots/test":{"post":{"tags":["ballots","ballots"],"summary":"Soumettre un vote TEST (avant scrutin)","description":"Submit a TEST vote for practice before election.\n\nThe token is marked as 'test' but NOT consumed.\nThe vote is NOT recorded - only confirmation ticket returned.","operationId":"submit_test_vote_api_v2_ballots_test_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BallotTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BallotTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ballots":{"post":{"tags":["ballots","ballots"],"summary":"Soumettre un vote FINAL (pendant scrutin)","description":"Submit a FINAL vote during election.\n\nThe token is CONSUMED (marked as 'used').\nThe vote IS recorded in step_100_ballots.\nToken disappears from mobile after this.","operationId":"submit_final_vote_api_v2_ballots_post","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BallotFinalRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BallotFinalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ballots/status":{"get":{"tags":["ballots","ballots"],"summary":"Vérifier le statut de vote","description":"Get the voting status for current user.\n\nReturns token status and whether user can vote/test.","operationId":"get_vote_status_api_v2_ballots_status_get","parameters":[{"name":"election_code","in":"query","required":true,"schema":{"type":"string","description":"Election code","title":"Election Code"},"description":"Election code"},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-VC-Operator-Country","in":"header","required":true,"schema":{"type":"string","title":"X-Vc-Operator-Country"}},{"name":"X-VC-Identity-User","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-User"}},{"name":"X-VC-Identity-Provider","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vc-Identity-Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BallotStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/actors":{"get":{"tags":["system-claim-bridge","system-claim-bridge"],"summary":"Search actors for claim (S2S)","description":"Search baro_actors by name/code. Called by CivicPerson claim search.","operationId":"search_actors_search_actors_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search term","title":"Q"},"description":"Search term"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country filter","title":"Country Code"},"description":"Country filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"X-Service-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Service-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/actors/{actor_code}/link":{"patch":{"tags":["system-claim-bridge","system-claim-bridge"],"summary":"Link person_code to actor (S2S)","description":"Set person_code on a baro_actor after CLAIM approval.","operationId":"link_actor_person_code_system_actors__actor_code__link_patch","parameters":[{"name":"actor_code","in":"path","required":true,"schema":{"type":"string","title":"Actor Code"}},{"name":"X-Service-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Service-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/stats/global":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Stats"],"summary":"Get Global Stats","description":"Get global statistics for all expressions.\n\nReturns:\n    - total_expressions: Total count of expressions\n    - today_expressions: Expressions created today\n    - avg_sentiment: Average sentiment score\n    - active_users: Unique users in last 30 days\n    - growth_percent: Week-over-week growth","operationId":"get_global_stats_api_v1_citizen_expressions_stats_global_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__citizen_expressions__GlobalStatsResponse"}}}}}}},"/api/v1/citizen-expressions/stats/top-domains":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Stats"],"summary":"Get Top Domains","description":"Get top domains by expression count.\n\nReturns domains ranked by number of expressions with their stats.","operationId":"get_top_domains_api_v1_citizen_expressions_stats_top_domains_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":10,"title":"Limit"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Filter by country","title":"Country Code"},"description":"Filter by country"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopDomainsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/stats/top-cities":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Stats"],"summary":"Get Top Cities","description":"Get top cities by expression count.\n\nReturns cities ranked by number of expressions.","operationId":"get_top_cities_api_v1_citizen_expressions_stats_top_cities_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Filter by country","title":"Country Code"},"description":"Filter by country"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopCitiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/stats/sentiment-timeline":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Stats"],"summary":"Get Sentiment Timeline","description":"Get sentiment evolution over time.\n\nArgs:\n    period: Aggregation period (day, week, month)\n    country_code: Optional country filter\n    domain_code: Optional domain filter\n\nReturns time series of sentiment percentages.","operationId":"get_sentiment_timeline_api_v1_citizen_expressions_stats_sentiment_timeline_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(day|week|month)$","default":"week","title":"Period"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","title":"Country Code"}},{"name":"domain_code","in":"query","required":false,"schema":{"type":"string","title":"Domain Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentimentTimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/domains":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Domains"],"summary":"Get Domains","description":"Get all regalian domains with expression counts.\n\nReturns the 16 regalian domains with:\n- Expression count per domain\n- Average sentiment\n- Recent activity (last 24h)\n\nData comes from opinion_taxonomy (hierarchy_level=1) \njoined with citizen_expressions aggregates.","operationId":"get_domains_api_v1_citizen_expressions_domains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsListResponse"}}}}}}},"/api/v1/citizen-expressions/domains/{domain_code}/categories":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Domains"],"summary":"Get Domain Categories","description":"Get categories for a specific domain.\n\nArgs:\n    domain_code: Domain code (e.g., 'SANTE', 'EDUCATION')\n\nReturns list of categories (hierarchy_level=2) within this domain.","operationId":"get_domain_categories_api_v1_citizen_expressions_domains__domain_code__categories_get","parameters":[{"name":"domain_code","in":"path","required":true,"schema":{"type":"string","title":"Domain Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/geo/{level}":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Geo"],"summary":"Get Geo Locations","description":"Get geographic locations at specified level.\n\nArgs:\n    level: Hierarchy level (country, region, department, city)\n    parent_code: Optional parent code to filter children\n\nReturns locations with expression counts and average sentiment.","operationId":"get_geo_locations_api_v1_citizen_expressions_geo__level__get","parameters":[{"name":"level","in":"path","required":true,"schema":{"$ref":"#/components/schemas/GeoLevel"}},{"name":"parent_code","in":"query","required":false,"schema":{"type":"string","title":"Parent Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/geo/{level}/{code}/metrics":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Geo"],"summary":"Get Geo Metrics","description":"Get detailed metrics for a specific location.\n\nArgs:\n    level: Geographic level\n    code: Location code (region_code, department_code, city_code)\n\nReturns:\n    - Basic stats (total, today, growth)\n    - Top domains in this location\n    - Sentiment timeline","operationId":"get_geo_metrics_api_v1_citizen_expressions_geo__level___code__metrics_get","parameters":[{"name":"level","in":"path","required":true,"schema":{"$ref":"#/components/schemas/GeoLevel"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/map":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Map"],"summary":"Get Map Points","description":"Get expression points for map visualization.\n\nArgs:\n    limit: Maximum number of points (optimized for map performance)\n    country_code: Filter by country\n    domain_code: Filter by domain\n    sentiment: Filter by sentiment label\n    min_lat, max_lat, min_lng, max_lng: Bounding box filter\n\nReturns list of map points with coordinates and basic metadata.","operationId":"get_map_points_api_v1_citizen_expressions_map_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","title":"Country Code"}},{"name":"domain_code","in":"query","required":false,"schema":{"type":"string","title":"Domain Code"}},{"name":"sentiment","in":"query","required":false,"schema":{"type":"string","description":"positive,neutral,negative","title":"Sentiment"},"description":"positive,neutral,negative"},{"name":"min_lat","in":"query","required":false,"schema":{"type":"number","title":"Min Lat"}},{"name":"max_lat","in":"query","required":false,"schema":{"type":"number","title":"Max Lat"}},{"name":"min_lng","in":"query","required":false,"schema":{"type":"number","title":"Min Lng"}},{"name":"max_lng","in":"query","required":false,"schema":{"type":"number","title":"Max Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/feed":{"get":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Feed"],"summary":"Get Expression Feed","description":"Get personalized expression feed.\n\nReturns expressions filtered by:\n- Domain(s): Filter by regalian domain codes\n- Sentiment(s): Filter by sentiment label\n- Geographic level and location\n- Language\n- Exclude already voted (requires auth)\n\nSupports pagination with limit/offset.","operationId":"get_expression_feed_api_v1_citizen_expressions_feed_get","parameters":[{"name":"domains","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated domain codes","title":"Domains"},"description":"Comma-separated domain codes"},{"name":"sentiments","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated: positive,neutral,negative","title":"Sentiments"},"description":"Comma-separated: positive,neutral,negative"},{"name":"geo_level","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/GeoLevel"},{"type":"null"}],"title":"Geo Level"}},{"name":"location_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Code"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"exclude_voted","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Voted"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/citizen-expressions/{expression_id}/vote":{"post":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Vote"],"summary":"Vote On Expression","description":"Vote on an expression (approve or disapprove).\n\nArgs:\n    expression_id: UUID of the expression to vote on\n    vote: Vote type (approve/disapprove)\n\nReturns the vote confirmation with updated counts.\n\nNotes:\n    - One vote per user per expression\n    - Voting again changes the vote type\n    - Requires authentication","operationId":"vote_on_expression_api_v1_citizen_expressions__expression_id__vote_post","parameters":[{"name":"expression_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Expression Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Citizen Expressions Explorer","Citizen Expressions Explorer","Citizen Expressions - Vote"],"summary":"Remove Vote","description":"Remove user's vote from an expression.\n\nArgs:\n    expression_id: UUID of the expression\n\nReturns 204 No Content on success.","operationId":"remove_vote_api_v1_citizen_expressions__expression_id__vote_delete","parameters":[{"name":"expression_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Expression Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscriptions/":{"get":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"List Subscriptions","description":"List all subscriptions for the current user.\n\nReturns subscriptions ordered by order_index.","operationId":"list_subscriptions_api_v1_subscriptions__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionsListResponse"}}}}}},"post":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Create Subscription","description":"Create a new subscription.\n\nArgs:\n    subscription: Subscription details (name, filters)\n\nReturns the created subscription.","operationId":"create_subscription_api_v1_subscriptions__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscriptions/{subscription_id}":{"get":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Get Subscription","description":"Get a specific subscription by ID.\n\nRaises 404 if not found or not owned by user.","operationId":"get_subscription_api_v1_subscriptions__subscription_id__get","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Update Subscription","description":"Update a subscription.\n\nOnly provided fields will be updated.","operationId":"update_subscription_api_v1_subscriptions__subscription_id__put","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Delete Subscription","description":"Delete a subscription.\n\nReturns 204 No Content on success.","operationId":"delete_subscription_api_v1_subscriptions__subscription_id__delete","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscriptions/{subscription_id}/reorder":{"post":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Reorder Subscriptions","description":"Change the order of a subscription.\n\nArgs:\n    subscription_id: ID of subscription to move\n    new_order: New order_index value","operationId":"reorder_subscriptions_api_v1_subscriptions__subscription_id__reorder_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}},{"name":"new_order","in":"query","required":true,"schema":{"type":"integer","minimum":0,"title":"New Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscriptions/{subscription_id}/feed":{"get":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Get Subscription Feed","description":"Get expressions matching a subscription's filters.\n\nThis applies the subscription's saved filters to the feed.","operationId":"get_subscription_feed_api_v1_subscriptions__subscription_id__feed_get","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscriptions/{subscription_id}/toggle":{"post":{"tags":["Citizen Expression Subscriptions","Citizen Expression Subscriptions"],"summary":"Toggle Subscription","description":"Toggle subscription active/inactive state.\n\nInactive subscriptions don't generate notifications.","operationId":"toggle_subscription_api_v1_subscriptions__subscription_id__toggle_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["meta"],"summary":"API home","operationId":"home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"ActivityItem":{"properties":{"country_code":{"type":"string","title":"Country Code"},"country_name":{"type":"string","title":"Country Name"},"flag":{"type":"string","title":"Flag"},"election_id":{"type":"string","title":"Election Id"},"election_name":{"type":"string","title":"Election Name"},"poll_date":{"type":"string","format":"date","title":"Poll Date"},"stations_count":{"type":"integer","minimum":0.0,"title":"Stations Count"},"status":{"type":"string","enum":["active","future","past"],"title":"Status"},"progress":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Progress"}},"type":"object","required":["country_code","country_name","flag","election_id","election_name","poll_date","stations_count","status"],"title":"ActivityItem"},"ActivityResponse":{"properties":{"activities":{"items":{"$ref":"#/components/schemas/ActivityItem"},"type":"array","title":"Activities"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["activities","total"],"title":"ActivityResponse"},"ActorRankingListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"country_code":{"type":"string","title":"Country Code"},"total_actors":{"type":"integer","title":"Total Actors"},"ranking":{"items":{"$ref":"#/components/schemas/ActorRankingSchema"},"type":"array","title":"Ranking"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["country_code","total_actors","ranking","meta"],"title":"ActorRankingListResponse","description":"Response for actor ranking list."},"ActorRankingSchema":{"properties":{"actor_id":{"type":"string","title":"Actor Id"},"actor_code":{"type":"string","title":"Actor Code"},"name":{"type":"string","title":"Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"biography":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biography"},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date"},"official_links":{"additionalProperties":true,"type":"object","title":"Official Links"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"baro_stats":{"$ref":"#/components/schemas/BaroStatsSchema"}},"type":"object","required":["actor_id","actor_code","name","baro_stats"],"title":"ActorRankingSchema","description":"Actor with barometer ranking data."},"ActorSlugResponse":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code","description":"Code public de l'acteur"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug","description":"Slug SEO résolu"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"country_code":{"type":"string","title":"Country Code"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["actor_id","name","country_code"],"title":"ActorSlugResponse"},"ActorTerritorialStats":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"territory":{"$ref":"#/components/schemas/TerritorialInfo"},"timeslot":{"type":"string","title":"Timeslot"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_votes":{"type":"integer","title":"Favorable Votes"},"defavorable_votes":{"type":"integer","title":"Defavorable Votes"},"neutre_votes":{"type":"integer","title":"Neutre Votes"},"net_score":{"type":"number","title":"Net Score"},"unique_voters":{"type":"integer","title":"Unique Voters"}},"type":"object","required":["actor_id","territory","timeslot","total_votes","favorable_votes","defavorable_votes","neutre_votes","net_score","unique_voters"],"title":"ActorTerritorialStats","description":"Individual actor stats in a territory."},"ActorTerritorialStatsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/ActorTerritorialStats"}},"type":"object","required":["data"],"title":"ActorTerritorialStatsResponse"},"ActorTypeCategory":{"properties":{"category":{"type":"string","title":"Category"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["category","count"],"title":"ActorTypeCategory"},"ActorTypeDetailResponse":{"properties":{"data":{"$ref":"#/components/schemas/ActorTypeItem"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ActorTypeDetailResponse"},"ActorTypeItem":{"properties":{"code":{"type":"string","title":"Code"},"category":{"type":"string","title":"Category"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata"},"actor_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Actor Count"}},"type":"object","required":["code","category","name","description"],"title":"ActorTypeItem"},"ActorTypesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ActorTypeItem"},"type":"array","title":"Data"},"categories":{"items":{"$ref":"#/components/schemas/ActorTypeCategory"},"type":"array","title":"Categories"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","categories","meta"],"title":"ActorTypesResponse"},"AddItemsToCampaignAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/AddItemsToCampaignResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"AddItemsToCampaignAPIResponse","description":"API response for adding items."},"AddItemsToCampaignRequest":{"properties":{"item_codes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Item Codes","description":"Item codes to add"},"auto_position":{"type":"boolean","title":"Auto Position","description":"Auto-assign positions","default":true},"start_position":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Start Position","description":"Starting position"}},"type":"object","required":["item_codes"],"title":"AddItemsToCampaignRequest","description":"Request to add items to a campaign."},"AddItemsToCampaignResponse":{"properties":{"added":{"items":{"type":"string"},"type":"array","title":"Added","description":"Items successfully added"},"skipped":{"items":{"type":"string"},"type":"array","title":"Skipped","description":"Items skipped (already exist or invalid)"},"total_items":{"type":"integer","title":"Total Items","description":"Total items in campaign after operation"}},"type":"object","required":["total_items"],"title":"AddItemsToCampaignResponse","description":"Response after adding items to campaign."},"AddTemplateToCampaignAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/AddTemplateToCampaignResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"AddTemplateToCampaignAPIResponse","description":"API response for template application."},"AddTemplateToCampaignRequest":{"properties":{"template_code":{"type":"string","title":"Template Code","description":"Template code to apply"}},"type":"object","required":["template_code"],"title":"AddTemplateToCampaignRequest","description":"Request to apply a template to a campaign."},"AddTemplateToCampaignResponse":{"properties":{"template_code":{"type":"string","title":"Template Code"},"added":{"items":{"type":"string"},"type":"array","title":"Added"},"total_items":{"type":"integer","title":"Total Items","default":0}},"type":"object","required":["template_code"],"title":"AddTemplateToCampaignResponse","description":"Response after applying template."},"AdminStationCreateRequest":{"properties":{"city_code":{"type":"string","minLength":1,"title":"City Code","description":"City/commune code"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name","description":"Station name"},"address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Address","description":"Physical address"},"registered_voters":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Registered Voters","description":"Number of registered voters"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["city_code","name"],"title":"AdminStationCreateRequest","description":"Request to create a polling station (Admin UI)."},"AdminStationListResponse":{"properties":{"stations":{"items":{"$ref":"#/components/schemas/AdminStationResponse"},"type":"array","title":"Stations"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["stations","total"],"title":"AdminStationListResponse","description":"Response for listing polling stations."},"AdminStationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"election_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city_code":{"type":"string","title":"City Code"},"city_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Name"},"department_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Code"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name"},"registered_voters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Registered Voters"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","code","name","city_code","created_at"],"title":"AdminStationResponse","description":"Response for a single polling station."},"AnomalyFilterBucket":{"properties":{"severity":{"type":"string","enum":["critical","major","minor"],"title":"Severity"},"label":{"type":"string","title":"Label"},"min_consensus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Consensus"},"max_consensus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Consensus"},"stations_count":{"type":"integer","minimum":0.0,"title":"Stations Count"},"complaints_count":{"type":"integer","minimum":0.0,"title":"Complaints Count","default":0}},"type":"object","required":["severity","label","stations_count"],"title":"AnomalyFilterBucket"},"AttachTaxonomiesRequest":{"properties":{"topic_codes":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Topic Codes"}},"type":"object","required":["topic_codes"],"title":"AttachTaxonomiesRequest","description":"Request to attach topics to a campaign."},"AttachTaxonomiesResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"taxonomies_added":{"type":"integer","title":"Taxonomies Added","default":0},"taxonomies":{"items":{"$ref":"#/components/schemas/CampaignTaxonomyItem"},"type":"array","title":"Taxonomies"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["campaign_code"],"title":"AttachTaxonomiesResponse","description":"Response after attaching topics."},"AttachmentResponse":{"properties":{"attachment_id":{"type":"string","format":"uuid4","title":"Attachment Id"},"vote_id":{"type":"string","format":"uuid4","title":"Vote Id"},"original_filename":{"type":"string","title":"Original Filename"},"mime_type":{"type":"string","title":"Mime Type"},"size_bytes":{"type":"integer","title":"Size Bytes"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"urls":{"$ref":"#/components/schemas/AttachmentUrls"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"}},"type":"object","required":["attachment_id","vote_id","original_filename","mime_type","size_bytes","width","height","urls","uploaded_at"],"title":"AttachmentResponse","description":"Attachment response for vote with image."},"AttachmentUrls":{"properties":{"original":{"type":"string","title":"Original"},"thumbnail":{"type":"string","title":"Thumbnail"},"medium":{"type":"string","title":"Medium"}},"type":"object","required":["original","thumbnail","medium"],"title":"AttachmentUrls","description":"URLs for attachment image variants."},"AvailableActorSchema":{"properties":{"actor_id":{"type":"string","title":"Actor Id"},"actor_code":{"type":"string","title":"Actor Code"},"name":{"type":"string","title":"Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"total_votes":{"type":"integer","title":"Total Votes","default":0},"net_score":{"type":"number","title":"Net Score","default":0.0},"in_catalog":{"type":"boolean","title":"In Catalog","default":false}},"type":"object","required":["actor_id","actor_code","name"],"title":"AvailableActorSchema","description":"Actor available for import."},"AvailableActorsListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/AvailableActorSchema"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","total","meta"],"title":"AvailableActorsListResponse","description":"API response for available actors."},"BallotFinalRequest":{"properties":{"election_code":{"type":"string","title":"Election Code","description":"Election code"},"station_code":{"type":"string","title":"Station Code","description":"Polling station code (slug)"},"candidate_code":{"type":"string","title":"Candidate Code","description":"Candidate code to vote for"},"token":{"type":"string","format":"uuid","title":"Token","description":"Vote token UUID"}},"type":"object","required":["election_code","station_code","candidate_code","token"],"title":"BallotFinalRequest","description":"Request payload for FINAL vote."},"BallotFinalResponse":{"properties":{"ballot_id":{"type":"string","format":"uuid","title":"Ballot Id","description":"Unique ballot ID"},"status":{"type":"string","title":"Status","default":"vote_final"},"voted_at":{"type":"string","format":"date-time","title":"Voted At","description":"Vote timestamp"},"candidate_code":{"type":"string","title":"Candidate Code","description":"Candidate voted for"},"polling_station_code":{"type":"string","title":"Polling Station Code","description":"Polling station code"},"message":{"type":"string","title":"Message","default":"Votre vote a été enregistré définitivement."}},"type":"object","required":["ballot_id","voted_at","candidate_code","polling_station_code"],"title":"BallotFinalResponse","description":"Response for FINAL vote."},"BallotStatusResponse":{"properties":{"election_code":{"type":"string","title":"Election Code","description":"Election code"},"token_status":{"type":"string","title":"Token Status","description":"Token status: available, test, used"},"can_vote":{"type":"boolean","title":"Can Vote","description":"Can submit final vote"},"can_test":{"type":"boolean","title":"Can Test","description":"Can submit test vote"},"test_candidate_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Candidate Code","description":"Candidate tested (if any)"},"polling_station_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Polling Station Name","description":"Assigned polling station name"}},"type":"object","required":["election_code","token_status","can_vote","can_test"],"title":"BallotStatusResponse","description":"Response for vote status check."},"BallotTestRequest":{"properties":{"election_code":{"type":"string","title":"Election Code","description":"Election code"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id","description":"Polling station UUID"},"candidate_code":{"type":"string","title":"Candidate Code","description":"Candidate code to vote for"},"token":{"type":"string","format":"uuid","title":"Token","description":"Vote token UUID"}},"type":"object","required":["election_code","polling_station_id","candidate_code","token"],"title":"BallotTestRequest","description":"Request payload for TEST vote."},"BallotTestResponse":{"properties":{"status":{"type":"string","title":"Status","default":"test_success"},"ticket":{"additionalProperties":true,"type":"object","title":"Ticket","description":"Confirmation ticket"},"message":{"type":"string","title":"Message","default":"Vote test enregistré. Vous pourrez voter définitivement le jour du scrutin."}},"type":"object","required":["ticket"],"title":"BallotTestResponse","description":"Response for TEST vote."},"BaroStatsSchema":{"properties":{"net_score":{"type":"number","title":"Net Score","description":"Net score = (favorable - defavorable) / total * 100"},"favorable_pct":{"type":"number","title":"Favorable Pct","description":"Percentage of favorable votes"},"defavorable_pct":{"type":"number","title":"Defavorable Pct","description":"Percentage of defavorable votes"},"neutre_pct":{"type":"number","title":"Neutre Pct","description":"Percentage of neutral votes"},"total_votes":{"type":"integer","title":"Total Votes","description":"Total number of votes"}},"type":"object","required":["net_score","favorable_pct","defavorable_pct","neutre_pct","total_votes"],"title":"BaroStatsSchema","description":"Barometer statistics for an actor."},"BarometerActorCardCreateRequest":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"summary":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Summary"},"link":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Link"},"media_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Media Url"},"tags":{"items":{"type":"string","maxLength":64},"type":"array","title":"Tags"},"kind":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Kind"},"stats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stats"},"collection_key":{"type":"string","maxLength":64,"minLength":1,"title":"Collection Key"}},"type":"object","required":["title","collection_key"],"title":"BarometerActorCardCreateRequest"},"BarometerActorCardListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/BarometerActorCardResponse"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"BarometerActorCardListResponse"},"BarometerActorCardResponse":{"properties":{"card_id":{"type":"string","format":"uuid","title":"Card Id"},"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"collection_key":{"type":"string","title":"Collection Key"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"stats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stats"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["card_id","actor_id","collection_key","title","status","created_at","updated_at"],"title":"BarometerActorCardResponse"},"BarometerActorCardUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Summary"},"link":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Link"},"media_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Media Url"},"tags":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array"},{"type":"null"}],"title":"Tags"},"kind":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Kind"},"stats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stats"}},"type":"object","title":"BarometerActorCardUpdateRequest"},"BarometerActorCommentsResponse":{"properties":{"total":{"type":"integer","minimum":0.0,"title":"Total"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"},"actor":{"$ref":"#/components/schemas/CommentActorSummary"},"items":{"items":{"$ref":"#/components/schemas/BarometerCommentItem"},"type":"array","title":"Items"},"counts":{"$ref":"#/components/schemas/CommentCounts"}},"type":"object","required":["total","limit","offset","actor"],"title":"BarometerActorCommentsResponse","description":"Actor comments list response."},"BarometerActorCreateRequest":{"properties":{"country_code":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Country Code","description":"Code pays ISO alpha-2. Utilise le pays opérateur si absent."},"first_name":{"type":"string","minLength":1,"title":"First Name"},"last_name":{"type":"string","minLength":1,"title":"Last Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","default":"independent"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"biography":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biography"},"birth_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birth Date"},"official_links":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Official Links"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"territorial_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Level","default":"country"},"territorial_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Code"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true}},"type":"object","required":["first_name","last_name"],"title":"BarometerActorCreateRequest"},"BarometerActorListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/BarometerActorResponse"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"BarometerActorListResponse"},"BarometerActorResponse":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"biography":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biography"},"birth_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birth Date"},"official_links":{"additionalProperties":true,"type":"object","title":"Official Links"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"territorial_level":{"type":"string","title":"Territorial Level"},"territorial_code":{"type":"string","title":"Territorial Code"},"candidate_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Candidate Id"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["actor_id","country_code","first_name","last_name","name","role","official_links","tags","metadata","territorial_level","territorial_code","is_active","created_at","updated_at"],"title":"BarometerActorResponse"},"BarometerActorUpdateRequest":{"properties":{"first_name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Last Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"biography":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biography"},"birth_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birth Date"},"official_links":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Official Links"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"territorial_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Level"},"territorial_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Code"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"BarometerActorUpdateRequest"},"BarometerBackfillRequest":{"properties":{"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"type":"string","format":"date","title":"End Date"}},"type":"object","required":["start_date","end_date"],"title":"BarometerBackfillRequest"},"BarometerCommentItem":{"properties":{"comment_id":{"type":"string","title":"Comment Id","description":"Anonymous comment identifier (hash)"},"vote_value":{"type":"string","pattern":"^(favorable|defavorable|neutre)$","title":"Vote Value"},"comment":{"type":"string","maxLength":2000,"minLength":1,"title":"Comment"},"comment_language":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Comment Language"},"moderation_status":{"type":"string","pattern":"^(approved|pending|flagged|rejected)$","title":"Moderation Status"},"moderation_reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Moderation Reason"},"cast_at":{"type":"string","format":"date-time","title":"Cast At"},"is_simulated":{"type":"boolean","title":"Is Simulated","default":false},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"attachment":{"anyOf":[{"$ref":"#/components/schemas/CommentAttachmentUrls"},{"type":"null"}]}},"type":"object","required":["comment_id","vote_value","comment","moderation_status","cast_at"],"title":"BarometerCommentItem","description":"Individual comment item."},"BarometerDirectoryStatsResponse":{"properties":{"total_actors":{"type":"integer","title":"Total Actors"},"active_actors_30d":{"type":"integer","title":"Active Actors 30D"},"score_moyen":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score Moyen"},"score_evolution_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score Evolution 7D"},"score_trend":{"type":"string","enum":["up","down","stable"],"title":"Score Trend"},"moderation_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Moderation Rate"},"total_votes":{"type":"integer","title":"Total Votes"},"total_comments":{"type":"integer","title":"Total Comments"}},"type":"object","required":["total_actors","active_actors_30d","score_trend","total_votes","total_comments"],"title":"BarometerDirectoryStatsResponse"},"BarometerMeta":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"cached":{"type":"boolean","title":"Cached","default":false},"cache_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cache Expires At"}},"type":"object","required":["timestamp"],"title":"BarometerMeta"},"BarometerPublicActorItem":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"id":{"type":"string","format":"uuid","title":"Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"territorial_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Code"},"territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"party_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party Family"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"net_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Score"},"delta_7":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta 7"},"delta_30":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta 30"},"votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes"},"favorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Favorable Ratio"},"defavorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Defavorable Ratio"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"comments_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments Total"},"last_vote_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Vote At"}},"type":"object","required":["actor_id","id","name"],"title":"BarometerPublicActorItem"},"BarometerPublicActorListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/BarometerPublicActorItem"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"BarometerPublicActorListResponse"},"BarometerRollupJobResponse":{"properties":{"job_id":{"type":"string","format":"uuid4","title":"Job Id"},"job_type":{"type":"string","title":"Job Type"},"status":{"type":"string","title":"Status"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"range_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Range Start"},"range_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Range End"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"summaries":{"items":{"$ref":"#/components/schemas/BarometerRollupSummarySchema"},"type":"array","title":"Summaries"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["job_id","job_type","status"],"title":"BarometerRollupJobResponse"},"BarometerRollupRequest":{"properties":{"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"}},"type":"object","title":"BarometerRollupRequest"},"BarometerRollupSummarySchema":{"properties":{"target_date":{"type":"string","format":"date","title":"Target Date"},"window_start":{"type":"string","format":"date","title":"Window Start"},"window_end":{"type":"string","format":"date","title":"Window End"},"daily_rows":{"type":"integer","title":"Daily Rows"},"daily_localised_rows":{"type":"integer","title":"Daily Localised Rows"},"rolling_rows":{"type":"integer","title":"Rolling Rows"},"rolling_localised_rows":{"type":"integer","title":"Rolling Localised Rows"}},"type":"object","required":["target_date","window_start","window_end","daily_rows","daily_localised_rows","rolling_rows","rolling_localised_rows"],"title":"BarometerRollupSummarySchema"},"BarometerSearchSuggestResponse":{"properties":{"query":{"type":"string","minLength":1,"title":"Query"},"suggestions":{"items":{"$ref":"#/components/schemas/BarometerSearchSuggestion"},"type":"array","title":"Suggestions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["query","suggestions","total"],"title":"BarometerSearchSuggestResponse"},"BarometerSearchSuggestion":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"full_name":{"type":"string","title":"Full Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"influence_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Influence Level"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"match_type":{"type":"string","enum":["name","role","party","territory"],"title":"Match Type"}},"type":"object","required":["actor_id","full_name","match_type"],"title":"BarometerSearchSuggestion"},"BarometerSimulationBackfillRequest":{"properties":{"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"type":"string","format":"date","title":"End Date"}},"type":"object","required":["country_code","start_date","end_date"],"title":"BarometerSimulationBackfillRequest"},"BarometerSimulationGenerateRequest":{"properties":{"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"election_code":{"type":"string","minLength":3,"title":"Election Code"},"start_date":{"type":"string","format":"date","title":"Start Date"},"days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Days","default":90},"neutral_ratio":{"type":"number","minimum":0.0,"title":"Neutral Ratio","default":0.1},"defavorable_mode":{"type":"string","title":"Defavorable Mode","description":"remaining | proportional | random","default":"remaining"},"scale_factor":{"type":"number","exclusiveMinimum":0.0,"title":"Scale Factor","default":0.01},"truncate_before_insert":{"type":"boolean","title":"Truncate Before Insert","default":true},"seed":{"type":"integer","title":"Seed","default":2025},"auto_backfill":{"type":"boolean","title":"Auto Backfill","description":"Déclencher automatiquement le backfill de la fenêtre générée.","default":true},"include_comments":{"type":"boolean","title":"Include Comments","default":false},"comment_ratio":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Comment Ratio","default":0.15}},"type":"object","required":["country_code","election_code"],"title":"BarometerSimulationGenerateRequest"},"BarometerSimulationGenerateResponse":{"properties":{"actors_processed":{"type":"integer","title":"Actors Processed"},"votes_inserted":{"type":"integer","title":"Votes Inserted"},"latest_records":{"type":"integer","title":"Latest Records"},"comments_inserted":{"type":"integer","title":"Comments Inserted"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"type":"string","format":"date","title":"End Date"},"days":{"type":"integer","title":"Days"},"rollup_summaries":{"items":{"$ref":"#/components/schemas/BarometerRollupSummarySchema"},"type":"array","title":"Rollup Summaries"}},"type":"object","required":["actors_processed","votes_inserted","latest_records","comments_inserted","start_date","end_date","days"],"title":"BarometerSimulationGenerateResponse"},"BarometerSimulationPrepareRequest":{"properties":{"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"election_code":{"type":"string","minLength":3,"title":"Election Code"},"start_date":{"type":"string","format":"date","title":"Start Date"},"days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Days","default":90},"neutral_ratio":{"type":"number","minimum":0.0,"title":"Neutral Ratio","default":0.1},"defavorable_mode":{"type":"string","title":"Defavorable Mode","description":"remaining | proportional | random","default":"remaining"},"scale_factor":{"type":"number","exclusiveMinimum":0.0,"title":"Scale Factor","default":0.01},"seed":{"type":"integer","title":"Seed","default":2025},"include_comments":{"type":"boolean","title":"Include Comments","default":false},"comment_ratio":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Comment Ratio","default":0.15}},"type":"object","required":["country_code","election_code"],"title":"BarometerSimulationPrepareRequest"},"BarometerSimulationPrepareResponse":{"properties":{"actors":{"type":"integer","title":"Actors"},"results":{"type":"integer","title":"Results"},"staged_votes":{"type":"integer","title":"Staged Votes","default":0},"staged_latest":{"type":"integer","title":"Staged Latest","default":0},"staged_comments":{"type":"integer","title":"Staged Comments","default":0},"staging_tables":{"additionalProperties":{"type":"string"},"type":"object","title":"Staging Tables"}},"type":"object","required":["actors","results"],"title":"BarometerSimulationPrepareResponse"},"BarometerSimulationResetRequest":{"properties":{"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"}},"type":"object","required":["country_code"],"title":"BarometerSimulationResetRequest"},"BarometerSimulationSummaryResponse":{"properties":{"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"votes":{"type":"integer","title":"Votes"},"latest":{"type":"integer","title":"Latest"},"daily_rows":{"type":"integer","title":"Daily Rows"},"rolling_rows":{"type":"integer","title":"Rolling Rows"},"comments":{"type":"integer","title":"Comments"}},"type":"object","required":["country_code","votes","latest","daily_rows","rolling_rows","comments"],"title":"BarometerSimulationSummaryResponse"},"BarometerSummaryMetric":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"delta_7":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta 7"},"delta_30":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta 30"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"%, count, etc."}},"type":"object","title":"BarometerSummaryMetric"},"BarometerSummaryResponse":{"properties":{"scope":{"type":"string","title":"Scope"},"scope_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Code"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"metrics":{"additionalProperties":{"$ref":"#/components/schemas/BarometerSummaryMetric"},"type":"object","title":"Metrics"}},"type":"object","required":["scope","metrics"],"title":"BarometerSummaryResponse"},"BarometerUpdatedMetrics":{"properties":{"net_score":{"type":"number","title":"Net Score"},"score_evolution":{"type":"number","title":"Score Evolution"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"favorable_ratio":{"type":"number","title":"Favorable Ratio"},"total_comments":{"type":"integer","title":"Total Comments"}},"type":"object","required":["net_score","score_evolution","total_votes","favorable_count","defavorable_count","neutre_count","favorable_ratio","total_comments"],"title":"BarometerUpdatedMetrics"},"BarometerVoteRequest":{"properties":{"actor_id":{"anyOf":[{"type":"string","format":"uuid4"},{"type":"null"}],"title":"Actor Id","description":"Identifiant UUID de l'acteur baromètre"},"actor_code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Actor Code","description":"Slug ou code public de l'acteur (alternatif à actor_id)"},"country_code":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Country Code","description":"Code pays ISO – requis côté public lorsqu'il n'y a pas d'authentification"},"vote_value":{"type":"string","title":"Vote Value","description":"favorable | defavorable | neutre"},"comment":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Comment"},"territorial_code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Territorial Code"},"source":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Source","description":"web|mobile|api|public|citizen_dashboard…"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"intensity":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":0.0},{"type":"null"}],"title":"Intensity"},"topics":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array"},{"type":"null"}],"title":"Topics"},"fingerprint":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Fingerprint","description":"Empreinte device côté public (optionnelle, utilisée pour limiter les abus)"},"sign":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sign","description":"1 for vote, -1 for unvote","default":1}},"type":"object","required":["vote_value"],"title":"BarometerVoteRequest"},"BarometerVoteResponse":{"properties":{"vote_id":{"type":"string","format":"uuid4","title":"Vote Id"},"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"cast_at":{"type":"string","title":"Cast At"},"vote_value":{"type":"string","title":"Vote Value"},"comment_submitted":{"type":"boolean","title":"Comment Submitted","default":false},"comment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment Status"},"comment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment Id"},"updated_metrics":{"$ref":"#/components/schemas/BarometerUpdatedMetrics"},"attachment":{"anyOf":[{"$ref":"#/components/schemas/AttachmentResponse"},{"type":"null"}]}},"type":"object","required":["vote_id","actor_id","cast_at","vote_value","updated_metrics"],"title":"BarometerVoteResponse"},"BaseDrillDownResponse":{"properties":{"level":{"type":"string","title":"Level","description":"Niveau actuel"},"metrics":{"$ref":"#/components/schemas/LevelMetrics","description":"Métriques niveau"},"candidates":{"items":{"$ref":"#/components/schemas/CandidateResult"},"type":"array","title":"Candidates","description":"Résultats candidats"},"gap_analysis":{"anyOf":[{"$ref":"#/components/schemas/GapAnalysis"},{"type":"null"}],"description":"Analyse écart leader/second"},"territories":{"items":{"$ref":"#/components/schemas/app__schemas__drill_down_v3__TerritoryItem"},"type":"array","title":"Territories","description":"Territoires enfants"},"drill_down":{"$ref":"#/components/schemas/DrillDownInfo","description":"Info drill-down"},"drill_up":{"$ref":"#/components/schemas/DrillUpInfo","description":"Info drill-up"}},"type":"object","required":["level","metrics","candidates","drill_down","drill_up"],"title":"BaseDrillDownResponse","description":"Base pour toutes les réponses drill-down"},"BatchImportAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/BatchImportResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"BatchImportAPIResponse","description":"API response for batch import."},"BatchImportCandidatesRequest":{"properties":{"actor_codes":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Actor Codes"},"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code"},"territory_level":{"type":"string","enum":["country","region","department","city","circonscription"],"title":"Territory Level","description":"Territorial level for imported candidates","default":"country"},"territory_code":{"type":"string","maxLength":64,"title":"Territory Code","description":"Territorial code (same as polling station codes)","default":""}},"type":"object","required":["actor_codes","country_code"],"title":"BatchImportCandidatesRequest","description":"Request to batch import actors as candidates."},"BatchImportCandidatesResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"election_code":{"type":"string","title":"Election Code"},"imported_count":{"type":"integer","title":"Imported Count"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["success","election_code","imported_count"],"title":"BatchImportCandidatesResponse","description":"Response from batch import of candidates."},"BatchImportRequest":{"properties":{"actor_codes":{"items":{"type":"string"},"type":"array","title":"Actor Codes","description":"List of actor codes to import"},"country_code":{"type":"string","title":"Country Code","description":"Country code","default":"FR"}},"type":"object","required":["actor_codes"],"title":"BatchImportRequest","description":"Request to batch import actors as items."},"BatchImportResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"campaign_code":{"type":"string","title":"Campaign Code"},"imported_count":{"type":"integer","title":"Imported Count"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["success","campaign_code","imported_count"],"title":"BatchImportResponse","description":"Response after batch import."},"BatchVoteAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/BatchVoteResponseSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"BatchVoteAPIResponse","description":"API response wrapper for batch vote."},"BatchVoteItemSchema":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Question/item code (slug)"},"selected_value":{"type":"string","title":"Selected Value","description":"Selected value for this question"},"comment":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Comment"},"bucket_code":{"anyOf":[{"type":"string","maxLength":40,"pattern":"^[A-Z0-9_]+$"},{"type":"null"}],"title":"Bucket Code"},"rank_in_bucket":{"anyOf":[{"type":"integer","maximum":65535.0,"minimum":1.0},{"type":"null"}],"title":"Rank In Bucket"}},"type":"object","required":["item_code","selected_value"],"title":"BatchVoteItemSchema","description":"Single answer within a batch vote submission."},"BatchVoteRequestSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code","description":"Campaign code (slug)"},"answers":{"items":{"$ref":"#/components/schemas/BatchVoteItemSchema"},"type":"array","minItems":1,"title":"Answers","description":"Answers to record"}},"type":"object","required":["campaign_code","answers"],"title":"BatchVoteRequestSchema","description":"Request to submit multiple questionnaire answers at once."},"BatchVoteResponseSchema":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"campaign_code":{"type":"string","title":"Campaign Code"},"recorded_answers":{"type":"integer","title":"Recorded Answers"},"voted_at":{"type":"string","format":"date-time","title":"Voted At"}},"type":"object","required":["success","message","campaign_code","recorded_answers","voted_at"],"title":"BatchVoteResponseSchema","description":"Response after a batch questionnaire submission."},"Body_submit_barometer_vote_with_attachment_barometer_votes_with_attachment_post":{"properties":{"data":{"type":"string","title":"Data","description":"Vote data as JSON string"},"attachment":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Attachment","description":"Optional image attachment"}},"type":"object","required":["data"],"title":"Body_submit_barometer_vote_with_attachment_barometer_votes_with_attachment_post"},"Body_upload_campaign_hero_image_api_v3_opinion_campaigns__campaign_code__upload_hero_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Image file (JPEG, PNG, WebP, max 5MB)"},"alt_text":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Alt Text","description":"Image alt text"}},"type":"object","required":["file"],"title":"Body_upload_campaign_hero_image_api_v3_opinion_campaigns__campaign_code__upload_hero_post"},"Body_upload_item_image_api_v3_opinion_campaigns__campaign_code__items__item_code__upload_image_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Image file (JPEG, PNG, WebP, SVG, max 5MB)"}},"type":"object","required":["file"],"title":"Body_upload_item_image_api_v3_opinion_campaigns__campaign_code__items__item_code__upload_image_post"},"Body_upload_pv_image_admin_stations__station_id__pv_image_post":{"properties":{"election_code":{"type":"string","title":"Election Code"},"station_code":{"type":"string","title":"Station Code"},"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["election_code","station_code","file"],"title":"Body_upload_pv_image_admin_stations__station_id__pv_image_post"},"Body_upload_tally_sheet_attachment_votes__tally_sheet_id__attachments_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_tally_sheet_attachment_votes__tally_sheet_id__attachments_post"},"BucketDistributionResultSchema":{"properties":{"bucket_code":{"type":"string","title":"Bucket Code"},"label":{"type":"string","title":"Label"},"color":{"type":"string","title":"Color"},"count":{"type":"integer","title":"Count"},"percentage":{"type":"number","title":"Percentage"},"average_rank":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Rank"}},"type":"object","required":["bucket_code","label","color","count","percentage"],"title":"BucketDistributionResultSchema","description":"Distribution result for one classify bucket."},"BucketSchema":{"properties":{"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9_]+$","title":"Code"},"label":{"type":"string","maxLength":100,"title":"Label"},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","title":"Color"},"value":{"type":"integer","title":"Value"},"position":{"type":"integer","minimum":1.0,"title":"Position"}},"type":"object","required":["code","label","color","value","position"],"title":"BucketSchema","description":"A classification bucket for CLASSIFY response mode."},"CampaignContentV2":{"properties":{"blocks":{"items":{"$ref":"#/components/schemas/ContentBlock"},"type":"array","maxItems":20,"title":"Blocks"},"source_links":{"items":{"$ref":"#/components/schemas/SourceLink"},"type":"array","maxItems":20,"title":"Source Links"},"reading_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reading Time Min"},"domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain Code"},"topic_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Code"}},"type":"object","title":"CampaignContentV2","description":"Rich content payload for a full campaign creation."},"CampaignDetailResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CampaignDetailSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"CampaignDetailResponse","description":"API response for campaign detail."},"CampaignDetailSchema":{"properties":{"code":{"type":"string","title":"Code"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code"},"type_code":{"type":"string","title":"Type Code"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"scope_level":{"type":"string","title":"Scope Level"},"scope_code":{"type":"string","title":"Scope Code"},"scope_name":{"type":"string","title":"Scope Name"},"start_at":{"type":"string","format":"date-time","title":"Start At"},"end_at":{"type":"string","format":"date-time","title":"End At"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"max_respondents":{"type":"integer","title":"Max Respondents"},"status":{"type":"string","title":"Status"},"visibility":{"type":"string","title":"Visibility"},"total_responses":{"type":"integer","title":"Total Responses"},"unique_respondents":{"type":"integer","title":"Unique Respondents"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/OpinionItemSchema"},"type":"array","title":"Items"},"item_source":{"type":"string","title":"Item Source","default":"BARO_ACTORS"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"closed_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closed Reason"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"owner_organization_person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Code"},"owner_organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Name"},"owner_organization_person_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Type"},"ownership_access_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ownership Access Mode"},"campaign_mode":{"type":"string","title":"Campaign Mode","default":"STANDARD_OPINION"},"response_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Mode"}},"type":"object","required":["code","type_code","title","description","scope_level","scope_code","scope_name","start_at","end_at","max_respondents","status","visibility","total_responses","unique_respondents","created_at","updated_at","items"],"title":"CampaignDetailSchema","description":"Full campaign details with items."},"CampaignItemAssociationSchema":{"properties":{"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"campaign_code":{"type":"string","title":"Campaign Code"},"item_code":{"type":"string","title":"Item Code"},"position":{"type":"integer","minimum":0.0,"title":"Position","description":"Display position"},"is_required":{"type":"boolean","title":"Is Required","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"config_override":{"additionalProperties":true,"type":"object","title":"Config Override","description":"Per-campaign config"},"created_by":{"type":"string","title":"Created By","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"item":{"anyOf":[{"$ref":"#/components/schemas/CatalogItemSchema"},{"type":"null"}]}},"type":"object","required":["campaign_id","campaign_code","item_code","position"],"title":"CampaignItemAssociationSchema","description":"Association between campaign and catalog item."},"CampaignItemsListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/CampaignItemAssociationSchema"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","total","meta"],"title":"CampaignItemsListResponse","description":"API response for campaign items list."},"CampaignListItemSchema":{"properties":{"code":{"type":"string","title":"Code"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type_code":{"type":"string","title":"Type Code"},"status":{"type":"string","title":"Status"},"scope_level":{"type":"string","title":"Scope Level"},"scope_code":{"type":"string","title":"Scope Code"},"scope_name":{"type":"string","title":"Scope Name"},"total_responses":{"type":"integer","title":"Total Responses"},"start_at":{"type":"string","format":"date-time","title":"Start At"},"end_at":{"type":"string","format":"date-time","title":"End At"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"items_count":{"type":"integer","title":"Items Count","default":0},"item_source":{"type":"string","title":"Item Source","default":"BARO_ACTORS"},"taxonomy_summary":{"anyOf":[{"$ref":"#/components/schemas/CampaignTaxonomySummarySchema"},{"type":"null"}]},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"owner_organization_person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Code"},"owner_organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Name"},"owner_organization_person_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Type"},"ownership_access_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ownership Access Mode"},"campaign_mode":{"type":"string","title":"Campaign Mode","default":"STANDARD_OPINION"},"response_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Mode"}},"type":"object","required":["code","title","type_code","status","scope_level","scope_code","scope_name","total_responses","start_at","end_at"],"title":"CampaignListItemSchema","description":"Campaign summary for list views."},"CampaignListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/CampaignListItemSchema"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/OpinionMeta"},"pagination":{"additionalProperties":{"type":"integer"},"type":"object","title":"Pagination"}},"type":"object","required":["data","meta","pagination"],"title":"CampaignListResponse","description":"API response for campaign list."},"CampaignResultsSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code"},"campaign_title":{"type":"string","title":"Campaign Title"},"total_votes":{"type":"integer","title":"Total Votes"},"unique_voters":{"type":"integer","title":"Unique Voters"},"results":{"items":{"$ref":"#/components/schemas/CandidateResultSchema"},"type":"array","title":"Results"},"last_updated":{"type":"string","title":"Last Updated"},"buckets":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Buckets"},"rank_within_buckets":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rank Within Buckets"}},"type":"object","required":["campaign_code","campaign_title","total_votes","unique_voters","results","last_updated"],"title":"CampaignResultsSchema","description":"Aggregated results for a campaign."},"CampaignRichContent":{"properties":{"chapo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapo","description":"Lead paragraph / hook text"},"context_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Html","description":"Contextual background (HTML)"},"stakes_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakes Html","description":"What's at stake (HTML)"},"hero_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Image Url","description":"Hero image URL"},"hero_image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Image Alt","description":"Hero image alt text"},"reading_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reading Time Min","description":"Estimated reading time in minutes"},"domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain Code","description":"Domain code from taxonomy"},"domain_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain Name","description":"Domain display name"},"topic_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Code","description":"Topic code from taxonomy"},"topic_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Name","description":"Topic display name"}},"type":"object","title":"CampaignRichContent","description":"Rich editorial content for campaign display."},"CampaignStatus":{"type":"string","enum":["DRAFT","PENDING_PAYMENT","APPROVED","ACTIVE","CLOSED","QUOTA_REACHED"],"title":"CampaignStatus"},"CampaignTaxonomiesResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"taxonomies":{"items":{"$ref":"#/components/schemas/CampaignTaxonomyItem"},"type":"array","title":"Taxonomies"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","required":["campaign_code"],"title":"CampaignTaxonomiesResponse","description":"List of taxonomies attached to a campaign."},"CampaignTaxonomyItem":{"properties":{"topic_code":{"type":"string","title":"Topic Code"},"topic_name":{"type":"string","title":"Topic Name"},"domain_code":{"type":"string","title":"Domain Code"},"domain_name":{"type":"string","title":"Domain Name"},"category_code":{"type":"string","title":"Category Code"},"category_name":{"type":"string","title":"Category Name"},"full_path":{"type":"string","title":"Full Path"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["topic_code","topic_name","domain_code","domain_name","category_code","category_name","full_path"],"title":"CampaignTaxonomyItem","description":"A campaign-topic attachment."},"CampaignTaxonomySummarySchema":{"properties":{"total_topics":{"type":"integer","title":"Total Topics"},"domains":{"items":{"$ref":"#/components/schemas/TaxonomyDomainSummarySchema"},"type":"array","title":"Domains"}},"type":"object","required":["total_topics"],"title":"CampaignTaxonomySummarySchema","description":"Taxonomy summary for campaign list cards."},"CampaignWithStatsSchema":{"properties":{"code":{"type":"string","title":"Code"},"title":{"type":"string","title":"Title"},"country_code":{"type":"string","title":"Country Code"},"status":{"type":"string","title":"Status"},"start_at":{"type":"string","title":"Start At"},"end_at":{"type":"string","title":"End At"},"item_count":{"type":"integer","title":"Item Count"},"vote_count":{"type":"integer","title":"Vote Count"},"remaining_voters":{"type":"integer","title":"Remaining Voters"},"scheduler":{"anyOf":[{"$ref":"#/components/schemas/SchedulerConfigSchema"},{"type":"null"}]}},"type":"object","required":["code","title","country_code","status","start_at","end_at","item_count","vote_count","remaining_voters"],"title":"CampaignWithStatsSchema","description":"Campaign with simulation statistics."},"CampaignsListResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"total_campaigns":{"type":"integer","title":"Total Campaigns"},"campaigns":{"items":{"$ref":"#/components/schemas/CampaignWithStatsSchema"},"type":"array","title":"Campaigns"}},"type":"object","required":["country_code","total_campaigns","campaigns"],"title":"CampaignsListResponse","description":"Response for campaigns list with stats."},"CandidateCollectionResponse":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"election_code":{"type":"string","title":"Election Code"},"candidates":{"items":{"$ref":"#/components/schemas/CandidateResponse"},"type":"array","title":"Candidates"},"lists":{"items":{"$ref":"#/components/schemas/CandidateListResponse"},"type":"array","title":"Lists"},"total_candidates":{"type":"integer","title":"Total Candidates"},"total_lists":{"type":"integer","title":"Total Lists"}},"type":"object","required":["election_id","country_code","election_code","candidates","lists","total_candidates","total_lists"],"title":"CandidateCollectionResponse"},"CandidateCreateRequest":{"properties":{"code":{"type":"string","maxLength":64,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"first_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"First Name"},"party":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Party"},"ballot_number":{"anyOf":[{"type":"integer","maximum":999.0,"minimum":0.0},{"type":"null"}],"title":"Ballot Number"},"photo_url":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Photo Url"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"territory_level":{"type":"string","enum":["country","region","department","city","circonscription"],"title":"Territory Level","description":"Territorial level for this candidate","default":"country"},"territory_code":{"type":"string","maxLength":64,"title":"Territory Code","description":"Territorial code (same as polling station codes)","default":""}},"type":"object","required":["code","name"],"title":"CandidateCreateRequest"},"CandidateListMemberInput":{"properties":{"candidate_code":{"type":"string","maxLength":64,"minLength":1,"title":"Candidate Code"},"position":{"type":"integer","maximum":250.0,"minimum":1.0,"title":"Position"}},"type":"object","required":["candidate_code","position"],"title":"CandidateListMemberInput"},"CandidateListMemberResponse":{"properties":{"candidate_id":{"type":"string","format":"uuid","title":"Candidate Id"},"candidate_code":{"type":"string","title":"Candidate Code"},"candidate_name":{"type":"string","title":"Candidate Name"},"position":{"type":"integer","title":"Position"}},"type":"object","required":["candidate_id","candidate_code","candidate_name","position"],"title":"CandidateListMemberResponse"},"CandidateListRequest":{"properties":{"code":{"type":"string","maxLength":64,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"coalition":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Coalition"},"lead_candidate":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Lead Candidate"},"ballot_number":{"anyOf":[{"type":"integer","maximum":999.0,"minimum":0.0},{"type":"null"}],"title":"Ballot Number"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"members":{"items":{"$ref":"#/components/schemas/CandidateListMemberInput"},"type":"array","title":"Members"},"territory_level":{"type":"string","enum":["country","region","department","city","circonscription"],"title":"Territory Level","description":"Territorial level for this list","default":"country"},"territory_code":{"type":"string","maxLength":64,"title":"Territory Code","description":"Territorial code (same as polling station codes)","default":""}},"type":"object","required":["code","name"],"title":"CandidateListRequest"},"CandidateListResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"coalition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coalition"},"lead_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Candidate"},"ballot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ballot Number"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"territory_level":{"type":"string","title":"Territory Level","default":"country"},"territory_code":{"type":"string","title":"Territory Code","default":""},"status":{"type":"string","title":"Status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason"},"validated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validated By"},"validated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Validated At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"members":{"items":{"$ref":"#/components/schemas/CandidateListMemberResponse"},"type":"array","title":"Members"}},"type":"object","required":["id","election_id","country_code","code","name","status","created_at"],"title":"CandidateListResponse"},"CandidateListSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"lead_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Candidate"},"ballot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ballot Number"}},"type":"object","required":["code","name"],"title":"CandidateListSummary","description":"Liste de candidats résumée pour affichage public"},"CandidateOptionSchema":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"party_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party Color","default":"#888888"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"}},"type":"object","required":["value","label"],"title":"CandidateOptionSchema","description":"A candidate option in an opinion item."},"CandidateResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"ballot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ballot Number"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"territory_level":{"type":"string","title":"Territory Level","default":"country"},"territory_code":{"type":"string","title":"Territory Code","default":""},"status":{"type":"string","title":"Status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason"},"validated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validated By"},"validated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Validated At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","election_id","country_code","code","name","status","created_at"],"title":"CandidateResponse"},"CandidateResult":{"properties":{"rank":{"type":"integer","minimum":1.0,"title":"Rank","description":"Rang du candidat"},"candidate_code":{"type":"string","minLength":1,"title":"Candidate Code","description":"Code candidat"},"candidate_name":{"type":"string","minLength":1,"title":"Candidate Name","description":"Nom candidat"},"candidate_number":{"type":"integer","minimum":1.0,"title":"Candidate Number","description":"Numéro candidat"},"votes":{"type":"integer","minimum":0.0,"title":"Votes","description":"Nombre de voix"},"percentage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Percentage","description":"Pourcentage (%)"},"num_stations":{"type":"integer","minimum":0.0,"title":"Num Stations","description":"Nombre bureaux présents"},"stations_leading":{"type":"integer","minimum":0.0,"title":"Stations Leading","description":"Nombre bureaux en tête"},"leading_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Leading Rate","description":"Taux bureaux en tête (%)"}},"type":"object","required":["rank","candidate_code","candidate_name","candidate_number","votes","percentage","num_stations","stations_leading","leading_rate"],"title":"CandidateResult","description":"Résultat d'un candidat à un niveau territorial","example":{"candidate_code":"CAND-03","candidate_name":"Emmanuel MACRON","candidate_number":3,"leading_rate":61.41,"num_stations":68956,"percentage":27.84,"rank":1,"stations_leading":42341,"votes":9783058}},"CandidateResultSchema":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"party":{"type":"string","title":"Party"},"party_color":{"type":"string","title":"Party Color"},"count":{"type":"integer","title":"Count"},"percentage":{"type":"number","title":"Percentage"},"rank":{"type":"integer","title":"Rank"},"bucket_distribution":{"anyOf":[{"items":{"$ref":"#/components/schemas/BucketDistributionResultSchema"},"type":"array"},{"type":"null"}],"title":"Bucket Distribution"}},"type":"object","required":["value","label","party","party_color","count","percentage","rank"],"title":"CandidateResultSchema","description":"Result for a single candidate."},"CandidateSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"ballot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ballot Number"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"}},"type":"object","required":["code","name"],"title":"CandidateSummary","description":"Candidat résumé pour affichage public"},"CandidateValidationRequest":{"properties":{"status":{"type":"string","pattern":"^(pending|approved|rejected)$","title":"Status"},"reason":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Reason"}},"type":"object","required":["status"],"title":"CandidateValidationRequest"},"CandidateVoteItem":{"properties":{"candidate_id":{"type":"string","format":"uuid","title":"Candidate Id"},"candidate_code":{"type":"string","title":"Candidate Code"},"candidate_name":{"type":"string","title":"Candidate Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"is_system":{"type":"boolean","title":"Is System","default":false},"votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes"},"online_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Online Votes"}},"type":"object","required":["candidate_id","candidate_code","candidate_name"],"title":"CandidateVoteItem","description":"Candidate information with optional vote count for PV entry form."},"CatalogItemDetailResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CatalogItemSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"CatalogItemDetailResponse","description":"API response for catalog item detail."},"CatalogItemListItemSchema":{"properties":{"code":{"type":"string","title":"Code"},"label":{"type":"string","title":"Label"},"label_short":{"type":"string","title":"Label Short"},"item_type":{"type":"string","title":"Item Type"},"nomenclature":{"$ref":"#/components/schemas/NomenclatureSchema"},"is_special":{"type":"boolean","title":"Is Special"},"is_active":{"type":"boolean","title":"Is Active"},"country_code":{"type":"string","title":"Country Code"},"campaigns_count":{"type":"integer","title":"Campaigns Count","default":0}},"type":"object","required":["code","label","label_short","item_type","nomenclature","is_special","is_active","country_code"],"title":"CatalogItemListItemSchema","description":"Lightweight catalog item for list views."},"CatalogItemListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/CatalogItemListItemSchema"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","total","meta"],"title":"CatalogItemListResponse","description":"API response for catalog item list."},"CatalogItemSchema":{"properties":{"code":{"type":"string","title":"Code","description":"Unique item code (PK)"},"label":{"type":"string","title":"Label","description":"Display label"},"label_short":{"type":"string","title":"Label Short","description":"Short label for charts","default":""},"description":{"type":"string","title":"Description","description":"Item description","default":""},"item_type":{"type":"string","title":"Item Type","description":"CHOICE, ACTOR, SCALE_POINT, SPECIAL"},"nomenclature":{"$ref":"#/components/schemas/NomenclatureSchema"},"rich_content":{"$ref":"#/components/schemas/app__api__v3__opinion__schemas_items__RichContentSchema"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code","description":"Actor code if item_type=ACTOR"},"scale_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scale Value","description":"Scale value if item_type=SCALE_POINT"},"scale_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scale Max","description":"Max scale value"},"is_special":{"type":"boolean","title":"Is Special","description":"Is special option (NSPP, Abstention)","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"country_code":{"type":"string","title":"Country Code","description":"Country code (empty = global)","default":""},"created_by":{"type":"string","title":"Created By","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"campaigns_count":{"type":"integer","title":"Campaigns Count","description":"Number of campaigns using this item","default":0},"total_votes":{"type":"integer","title":"Total Votes","description":"Total votes across all campaigns","default":0}},"type":"object","required":["code","label","item_type"],"title":"CatalogItemSchema","description":"Full catalog item details."},"CategoriesListResponse":{"properties":{"domain_code":{"type":"string","title":"Domain Code"},"categories":{"items":{"$ref":"#/components/schemas/CategoryResponse"},"type":"array","title":"Categories"}},"type":"object","required":["domain_code","categories"],"title":"CategoriesListResponse","description":"List of categories for a domain."},"CategoryResponse":{"properties":{"code":{"type":"string","title":"Code"},"domain_code":{"type":"string","title":"Domain Code"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"expressions_count":{"type":"integer","title":"Expressions Count","default":0},"avg_sentiment":{"type":"number","title":"Avg Sentiment","default":0.0}},"type":"object","required":["code","domain_code","name"],"title":"CategoryResponse","description":"Category within a domain."},"CitizenCampaignListItemSchema":{"properties":{"code":{"type":"string","title":"Code"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type_code":{"type":"string","title":"Type Code"},"status":{"type":"string","title":"Status"},"scope_level":{"type":"string","title":"Scope Level"},"scope_code":{"type":"string","title":"Scope Code"},"scope_name":{"type":"string","title":"Scope Name"},"total_responses":{"type":"integer","title":"Total Responses"},"start_at":{"type":"string","format":"date-time","title":"Start At"},"end_at":{"type":"string","format":"date-time","title":"End At"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"items_count":{"type":"integer","title":"Items Count","default":0},"item_source":{"type":"string","title":"Item Source","default":"BARO_ACTORS"},"taxonomy_summary":{"anyOf":[{"$ref":"#/components/schemas/CampaignTaxonomySummarySchema"},{"type":"null"}]},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"owner_organization_person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Code"},"owner_organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Name"},"owner_organization_person_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Organization Person Type"},"ownership_access_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ownership Access Mode"},"campaign_mode":{"type":"string","title":"Campaign Mode","default":"STANDARD_OPINION"},"response_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Mode"},"participation_state":{"type":"string","title":"Participation State","description":"TO_VOTE, VOTED or CLOSED"},"has_participated":{"type":"boolean","title":"Has Participated","default":false},"can_vote":{"type":"boolean","title":"Can Vote","default":false},"results_visible":{"type":"boolean","title":"Results Visible","default":false},"selected_item_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Item Code"},"selected_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Value"}},"type":"object","required":["code","title","type_code","status","scope_level","scope_code","scope_name","total_responses","start_at","end_at","participation_state"],"title":"CitizenCampaignListItemSchema","description":"Citizen vote cockpit list item."},"CitizenCampaignListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/CitizenCampaignListItemSchema"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/OpinionMeta"},"pagination":{"additionalProperties":{"type":"integer"},"type":"object","title":"Pagination"}},"type":"object","required":["data","meta","pagination"],"title":"CitizenCampaignListResponse","description":"API response for citizen vote cockpit campaigns."},"CitizenEnrollmentRequest":{"properties":{"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code"},"election_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"},"polling_station_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Polling Station Code"},"polling_station_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Polling Station Id"},"citizen_nni":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Citizen Nni"},"target_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target User Id"},"manual_override":{"type":"boolean","title":"Manual Override","default":false}},"type":"object","title":"CitizenEnrollmentRequest"},"CitizenFavoriteItem":{"properties":{"actor_code":{"type":"string","title":"Actor Code"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"pinned_cards":{"items":{"type":"string"},"type":"array","title":"Pinned Cards"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["actor_code","created_at","updated_at"],"title":"CitizenFavoriteItem"},"CitizenFavoritesResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/CitizenFavoriteItem"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"CitizenFavoritesResponse"},"CitizenProfileResponse":{"properties":{"citizen_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Citizen Id"},"identity_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity User Id"},"primary_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Country"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"topics":{"items":{"type":"string"},"type":"array","title":"Topics"},"territories":{"items":{"type":"string"},"type":"array","title":"Territories"},"notifications_enabled":{"type":"boolean","title":"Notifications Enabled","default":false},"first_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"consent_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Consent Version"}},"type":"object","title":"CitizenProfileResponse"},"CitizenProfileUpdateRequest":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"topics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Topics"},"territories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Territories"},"notifications_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications Enabled"}},"type":"object","title":"CitizenProfileUpdateRequest"},"CitizenStationItem":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"election_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"station_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Code"},"station_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Name"},"is_primary":{"type":"boolean","title":"Is Primary","default":false},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"}},"type":"object","required":["station_id"],"title":"CitizenStationItem"},"CitizenStationsResponse":{"properties":{"citizen_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Citizen Id"},"total":{"type":"integer","title":"Total"},"stations":{"items":{"$ref":"#/components/schemas/CitizenStationItem"},"type":"array","title":"Stations"}},"type":"object","required":["total","stations"],"title":"CitizenStationsResponse"},"CitizensCountResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"total_citizens":{"type":"integer","title":"Total Citizens"}},"type":"object","required":["country_code","total_citizens"],"title":"CitizensCountResponse","description":"Response for citizens count."},"CityStats":{"properties":{"city_code":{"type":"string","title":"City Code"},"city_name":{"type":"string","title":"City Name"},"country_code":{"type":"string","title":"Country Code"},"count":{"type":"integer","title":"Count"},"avg_sentiment":{"type":"number","title":"Avg Sentiment"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"}},"type":"object","required":["city_code","city_name","country_code","count","avg_sentiment"],"title":"CityStats","description":"Statistics for a city."},"ClearHistoryResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"ClearHistoryResponse","description":"Response for clearing history."},"CommentActorSummary":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"name":{"type":"string","title":"Name"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"}},"type":"object","required":["actor_id","name"],"title":"CommentActorSummary","description":"Actor summary information for comments response."},"CommentAttachmentUrls":{"properties":{"thumbnail_url":{"type":"string","title":"Thumbnail Url"},"medium_url":{"type":"string","title":"Medium Url"},"original_url":{"type":"string","title":"Original Url"}},"type":"object","required":["thumbnail_url","medium_url","original_url"],"title":"CommentAttachmentUrls","description":"URLs for comment attachment images."},"CommentCounts":{"properties":{"favorable":{"type":"integer","title":"Favorable","default":0},"neutre":{"type":"integer","title":"Neutre","default":0},"defavorable":{"type":"integer","title":"Defavorable","default":0}},"type":"object","title":"CommentCounts","description":"Counts by vote value for filter tabs."},"CommentItem":{"properties":{"comment_id":{"type":"string","format":"uuid","title":"Comment Id"},"user_hash":{"type":"string","title":"User Hash"},"vote_value":{"type":"string","title":"Vote Value"},"comment":{"type":"string","title":"Comment"},"cast_at":{"type":"string","format":"date-time","title":"Cast At"},"timeslot":{"type":"string","title":"Timeslot"}},"type":"object","required":["comment_id","user_hash","vote_value","comment","cast_at","timeslot"],"title":"CommentItem"},"CommentsData":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"total_comments":{"type":"integer","title":"Total Comments"},"comments":{"items":{"$ref":"#/components/schemas/CommentItem"},"type":"array","title":"Comments"}},"type":"object","required":["actor_id","total_comments","comments"],"title":"CommentsData"},"CommentsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CommentsData"},"meta":{"$ref":"#/components/schemas/BarometerMeta"}},"type":"object","required":["data","meta"],"title":"CommentsResponse"},"CompareActorData":{"properties":{"actor_code":{"type":"string","title":"Actor Code"},"name":{"type":"string","title":"Name"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"favorable_ratio":{"type":"number","title":"Favorable Ratio"},"rank":{"type":"integer","title":"Rank"},"trend_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trend 7D"}},"type":"object","required":["actor_code","name","score_net","total_votes","favorable_count","defavorable_count","neutre_count","favorable_ratio","rank"],"title":"CompareActorData"},"CompareResponse":{"properties":{"actors":{"items":{"$ref":"#/components/schemas/CompareActorData"},"type":"array","title":"Actors"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["actors","meta"],"title":"CompareResponse"},"ComplaintCreateRequest":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"territorial_level":{"type":"string","title":"Territorial Level"},"territorial_value":{"type":"string","title":"Territorial Value"},"metric":{"type":"string","title":"Metric"},"expected_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Value"},"observed_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Observed Value"},"delta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"priority":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Priority","default":0},"official_result_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Result Version"}},"type":"object","required":["election_id","country_code","territorial_level","territorial_value","metric"],"title":"ComplaintCreateRequest"},"ComplaintHistoryEntry":{"properties":{"action":{"type":"string","title":"Action"},"actor_id":{"type":"string","title":"Actor Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["action","actor_id","note","created_at"],"title":"ComplaintHistoryEntry"},"ComplaintResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"territorial_level":{"type":"string","title":"Territorial Level"},"territorial_value":{"type":"string","title":"Territorial Value"},"metric":{"type":"string","title":"Metric"},"expected_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Value"},"observed_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Observed Value"},"delta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta"},"status":{"type":"string","title":"Status"},"priority":{"type":"integer","title":"Priority"},"created_by":{"type":"string","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"official_result_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Result Version"}},"type":"object","required":["id","election_id","country_code","territorial_level","territorial_value","metric","expected_value","observed_value","delta","status","priority","created_by","created_at","updated_at","comment","resolution_note","official_result_version"],"title":"ComplaintResponse"},"ContentBlock":{"properties":{"type":{"type":"string","enum":["header","body","conclusion"],"title":"Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"text_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Html"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"media_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Base64"},"media_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Alt"},"media_caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Caption"},"image_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Position"},"title_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Size"},"font_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Font Size"},"desc_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Desc Size"}},"type":"object","required":["type"],"title":"ContentBlock","description":"A block of rich editorial content (header, body, or conclusion)."},"CountriesResponse":{"properties":{"countries":{"items":{"$ref":"#/components/schemas/CountryOverview"},"type":"array","title":"Countries"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["countries","total"],"title":"CountriesResponse"},"CountryActivationRequest":{"properties":{"force":{"type":"boolean","title":"Force","description":"Force metadata resync even if already active","default":false}},"type":"object","title":"CountryActivationRequest"},"CountryActivationResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"flag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flag"},"iso3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iso3"},"official_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Name"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"subregion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subregion"},"capital":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capital"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Population"},"activated_at":{"type":"string","format":"date-time","title":"Activated At"},"activated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activated By"},"synced_at":{"type":"string","format":"date-time","title":"Synced At"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created":{"type":"boolean","title":"Created","description":"True if the country was newly activated, False if it already existed"}},"type":"object","required":["code","name","activated_at","synced_at","created"],"title":"CountryActivationResponse"},"CountryElectionSummary":{"properties":{"id":{"type":"string","title":"Id"},"code":{"type":"string","title":"Code"},"title":{"type":"string","title":"Title"},"type":{"type":"string","title":"Type"},"status":{"type":"string","title":"Status"},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"},"stations_total":{"type":"integer","title":"Stations Total"},"stations_reporting":{"type":"integer","title":"Stations Reporting"},"pv_validated":{"type":"integer","title":"Pv Validated"},"pv_pending":{"type":"integer","title":"Pv Pending"},"voters_registered":{"type":"integer","title":"Voters Registered"},"voters_turnout":{"type":"integer","title":"Voters Turnout"},"progress_percentage":{"type":"number","title":"Progress Percentage"}},"type":"object","required":["id","code","title","type","status","date","stations_total","stations_reporting","pv_validated","pv_pending","voters_registered","voters_turnout","progress_percentage"],"title":"CountryElectionSummary"},"CountryElectionsResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"elections":{"items":{"$ref":"#/components/schemas/CountryElectionSummary"},"type":"array","title":"Elections"}},"type":"object","required":["country_code","elections"],"title":"CountryElectionsResponse"},"CountryMapCitiesResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"cities":{"items":{"$ref":"#/components/schemas/MapCitySummary"},"type":"array","title":"Cities"}},"type":"object","required":["country_code","cities"],"title":"CountryMapCitiesResponse"},"CountryMapDataResponse":{"properties":{"markers":{"items":{"$ref":"#/components/schemas/MapMarker"},"type":"array","title":"Markers"},"center":{"$ref":"#/components/schemas/MapCenter"},"zoom":{"type":"number","title":"Zoom"},"bounds":{"anyOf":[{"$ref":"#/components/schemas/MapBounds"},{"type":"null"}]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"feature_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Url"}},"type":"object","required":["markers","center","zoom"],"title":"CountryMapDataResponse"},"CountryMapDepartmentsResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"departments":{"items":{"$ref":"#/components/schemas/MapDepartmentSummary"},"type":"array","title":"Departments"}},"type":"object","required":["country_code","departments"],"title":"CountryMapDepartmentsResponse"},"CountryMapProfileResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"center":{"$ref":"#/components/schemas/MapCenter"},"zoom":{"type":"number","title":"Zoom"},"bounds":{"anyOf":[{"$ref":"#/components/schemas/MapBounds"},{"type":"null"}]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"feature_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Url"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["code","name","center","zoom"],"title":"CountryMapProfileResponse"},"CountryMapRegionsResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"regions":{"items":{"$ref":"#/components/schemas/MapRegionSummary"},"type":"array","title":"Regions"}},"type":"object","required":["country_code","regions"],"title":"CountryMapRegionsResponse"},"CountryOverview":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"flag":{"type":"string","title":"Flag"},"elections_count":{"type":"integer","minimum":0.0,"title":"Elections Count"},"active_elections_count":{"type":"integer","minimum":0.0,"title":"Active Elections Count"},"last_activity":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity"},"status":{"type":"string","enum":["active","future","past"],"title":"Status"}},"type":"object","required":["code","name","flag","elections_count","active_elections_count","status"],"title":"CountryOverview"},"CountryStatsDataResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"turnout_data":{"items":{"$ref":"#/components/schemas/TurnoutDataPoint"},"type":"array","title":"Turnout Data"},"results_data":{"items":{"$ref":"#/components/schemas/ResultsDataPoint"},"type":"array","title":"Results Data"},"station_status_data":{"items":{"$ref":"#/components/schemas/StationStatusData"},"type":"array","title":"Station Status Data"}},"type":"object","required":["country_code","turnout_data","results_data","station_status_data"],"title":"CountryStatsDataResponse"},"CountryStatsMetrics":{"properties":{"elections_count":{"type":"integer","title":"Elections Count"},"elections_count_variation":{"type":"number","title":"Elections Count Variation"},"stations_count":{"type":"integer","title":"Stations Count"},"stations_count_variation":{"type":"number","title":"Stations Count Variation"},"pv_validated":{"type":"integer","title":"Pv Validated"},"pv_validated_variation":{"type":"number","title":"Pv Validated Variation"},"anomalies_count":{"type":"integer","title":"Anomalies Count"},"anomalies_count_variation":{"type":"number","title":"Anomalies Count Variation"}},"type":"object","required":["elections_count","elections_count_variation","stations_count","stations_count_variation","pv_validated","pv_validated_variation","anomalies_count","anomalies_count_variation"],"title":"CountryStatsMetrics"},"CountryStatsResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"flag":{"type":"string","title":"Flag"},"stats":{"$ref":"#/components/schemas/CountryStatsMetrics"},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated"}},"type":"object","required":["code","name","flag","stats","last_updated"],"title":"CountryStatsResponse"},"CountryTimelineResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"events":{"items":{"$ref":"#/components/schemas/TimelineEvent"},"type":"array","title":"Events"}},"type":"object","required":["country_code","events"],"title":"CountryTimelineResponse"},"CreateCampaignAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CampaignDetailSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"CreateCampaignAPIResponse","description":"API response for campaign creation."},"CreateCampaignRequest":{"properties":{"title":{"type":"string","minLength":3,"title":"Title","description":"Campaign title"},"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code","description":"ISO country code (FR, RW, BE)"},"scope_level":{"type":"string","title":"Scope Level","description":"Scope level (national, regional, departmental, city)"},"scope_code":{"type":"string","title":"Scope Code","description":"Scope code (e.g. FR, 75, 33)"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code","description":"Template code for standard campaigns. Use CONSULTATION_4POS for thematic campaigns, ELECTION_STANDARD for BARO_ACTORS"},"item_source":{"type":"string","title":"Item Source","description":"BARO_ACTORS (political actors + NSPP/ABSTENTION/BLANC) or CATALOG_ITEMS (thematic items)","default":"CATALOG_ITEMS"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Campaign start date (defaults to today)"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"Campaign end date (None = permanent)"},"scope_name":{"type":"string","title":"Scope Name","description":"Display name for scope","default":""},"description":{"type":"string","title":"Description","description":"Campaign description","default":""},"visibility":{"type":"string","title":"Visibility","description":"PUBLIC or PRIVATE","default":"PUBLIC"},"owner_organization_person_code":{"type":"string","minLength":1,"title":"Owner Organization Person Code","description":"Organization person code from CivicPerson owner/my-organizations"},"scope_zones":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScopeZoneSchema"},"type":"array"},{"type":"null"}],"title":"Scope Zones","description":"Multi-zone support"},"rich_content":{"anyOf":[{"$ref":"#/components/schemas/CampaignRichContent"},{"type":"null"}],"description":"Rich editorial content for display"},"taxonomy_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Taxonomy Codes","description":"Taxonomy codes to attach (defaults to TO_CLASSIFY)"},"custom_item_count":{"anyOf":[{"type":"integer","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Custom Item Count","description":"Number of items to generate for CUSTOM_ITEMS template (1-50)"},"campaign_mode":{"type":"string","title":"Campaign Mode","description":"STANDARD_OPINION or QUESTIONNAIRE_MATRIX","default":"STANDARD_OPINION"},"response_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Mode","description":"Response mode for questionnaire campaigns"},"questionnaire_questions":{"anyOf":[{"items":{"$ref":"#/components/schemas/QuestionnaireQuestionSchema"},"type":"array"},{"type":"null"}],"title":"Questionnaire Questions","description":"Questions for questionnaire-mode campaigns"}},"type":"object","required":["title","country_code","scope_level","scope_code","owner_organization_person_code"],"title":"CreateCampaignRequest","description":"Request to create a new campaign with automatic item creation from template.\n\nThe campaign SLUG is auto-generated based on:\n- country_code: ISO country code (FR, RW, BE)\n- org_code: Organization code (default: DDD)\n- scope_level: Scope level (national, regional, departmental, city)\n- item_source: BARO_ACTORS or CATALOG_ITEMS\n- start_date: Campaign start date\n- end_date: Campaign end date (optional, None = permanent)\n\nGenerated SLUG format: {PAYS}-{ORG}-{PORTEE}-{SOURCE}-{DATE_DEBUT}-{DATE_FIN}\nExample: FR-DDD-NAT-CAT-20260104-OPEN\n\nItems are automatically created from the template:\n- Item code format: {CAMPAIGN_CODE}-{ITEM_CATALOG_CODE}\n- Example: FR-DDD-NAT-CAT-20260104-OPEN-FAVORABLE"},"CreateCatalogItemRequest":{"properties":{"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code","description":"Unique code"},"label":{"type":"string","maxLength":200,"minLength":1,"title":"Label","description":"Display label"},"item_type":{"type":"string","title":"Item Type","description":"CHOICE, ACTOR, SCALE_POINT, SPECIAL"},"label_short":{"type":"string","maxLength":50,"title":"Label Short","description":"Short label","default":""},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"nomenclature":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Nomenclature","description":"OLAP classification"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content","description":"Rich media content"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code","description":"Actor code if ACTOR type"},"scale_value":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Scale Value","description":"Scale value"},"scale_max":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Scale Max","description":"Max scale"},"is_special":{"type":"boolean","title":"Is Special","default":false},"country_code":{"type":"string","title":"Country Code","description":"Country code","default":""}},"type":"object","required":["code","label","item_type"],"title":"CreateCatalogItemRequest","description":"Request to create a new catalog item."},"CreateCatalogItemResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CatalogItemSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"CreateCatalogItemResponse","description":"API response after creating catalog item."},"CreateFullCampaignRequest":{"properties":{"title":{"type":"string","maxLength":300,"minLength":3,"title":"Title"},"country_code":{"type":"string","maxLength":2,"minLength":2,"title":"Country Code"},"scope_level":{"type":"string","enum":["national","regional","departmental","city"],"title":"Scope Level"},"scope_code":{"type":"string","minLength":1,"title":"Scope Code"},"scope_name":{"type":"string","title":"Scope Name","default":""},"description":{"type":"string","title":"Description","default":""},"owner_organization_person_code":{"type":"string","minLength":1,"title":"Owner Organization Person Code"},"campaign_mode":{"type":"string","title":"Campaign Mode","default":"STANDARD_OPINION"},"response_mode":{"type":"string","enum":["PICK_ONE","PICK_MANY","RANK","RATE","CLASSIFY"],"title":"Response Mode","default":"PICK_ONE"},"visibility":{"type":"string","title":"Visibility","default":"PUBLIC"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"items":{"items":{"$ref":"#/components/schemas/InlineItemSchema"},"type":"array","maxItems":50,"minItems":1,"title":"Items"},"content":{"anyOf":[{"$ref":"#/components/schemas/CampaignContentV2"},{"type":"null"}]},"deck_config":{"anyOf":[{"$ref":"#/components/schemas/DeckConfigSchema"},{"type":"null"}]},"taxonomy_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Taxonomy Codes"}},"type":"object","required":["title","country_code","scope_level","scope_code","owner_organization_person_code","items"],"title":"CreateFullCampaignRequest","description":"Atomic request to create a campaign with content, items, and deck config\nin a single POST.\n\nEndpoint: POST /api/v3/opinion/campaigns/full"},"DeckConfigSchema":{"properties":{"selection_mode":{"type":"string","enum":["PICK_ONE","PICK_MANY","RANK","RATE","CLASSIFY"],"title":"Selection Mode","default":"PICK_ONE"},"min_required":{"type":"integer","minimum":0.0,"title":"Min Required","default":1},"max_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Required"},"card_size":{"type":"integer","maximum":320.0,"minimum":120.0,"title":"Card Size","default":200},"buckets":{"anyOf":[{"items":{"$ref":"#/components/schemas/BucketSchema"},"type":"array"},{"type":"null"}],"title":"Buckets"},"rank_within_buckets":{"type":"boolean","title":"Rank Within Buckets","default":false}},"type":"object","title":"DeckConfigSchema","description":"Card deck configuration for the campaign response surface."},"DetachTaxonomyResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"topic_code":{"type":"string","title":"Topic Code"},"removed":{"type":"boolean","title":"Removed","default":false}},"type":"object","required":["campaign_code","topic_code"],"title":"DetachTaxonomyResponse","description":"Response after detaching a topic."},"DomainResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"expressions_count":{"type":"integer","title":"Expressions Count","default":0},"avg_sentiment":{"type":"number","title":"Avg Sentiment","default":0.0},"recent_activity":{"type":"integer","title":"Recent Activity","default":0}},"type":"object","required":["code","name"],"title":"DomainResponse","description":"Domain aggregate data exposed to the frontend."},"DomainStats":{"properties":{"domain_code":{"type":"string","title":"Domain Code"},"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"},"percent":{"type":"number","title":"Percent"},"avg_sentiment":{"type":"number","title":"Avg Sentiment"}},"type":"object","required":["domain_code","name","count","percent","avg_sentiment"],"title":"DomainStats","description":"Statistics for a single domain."},"DomainsListResponse":{"properties":{"domains":{"items":{"$ref":"#/components/schemas/DomainResponse"},"type":"array","title":"Domains"}},"type":"object","required":["domains"],"title":"DomainsListResponse","description":"List of domains."},"DrillDownAggregationResponse":{"properties":{"level":{"$ref":"#/components/schemas/DrillDownLevel"},"territorial_unit":{"additionalProperties":true,"type":"object","title":"Territorial Unit"},"election":{"additionalProperties":true,"type":"object","title":"Election"},"filters_applied":{"$ref":"#/components/schemas/DrillDownFilters"},"stats":{"$ref":"#/components/schemas/app__schemas__drill_down__DrillDownStats"},"results":{"$ref":"#/components/schemas/DrillDownResultBlock"},"drill_down_available":{"type":"boolean","title":"Drill Down Available"},"drill_down":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Drill Down"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"type":"object","required":["level","territorial_unit","election","filters_applied","stats","results","drill_down_available"],"title":"DrillDownAggregationResponse"},"DrillDownCandidateResult":{"properties":{"code":{"type":"string","title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"votes":{"type":"integer","title":"Votes"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"},"percentage_vs_national":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage Vs National"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","required":["code","votes"],"title":"DrillDownCandidateResult"},"DrillDownComparison":{"properties":{"leader":{"type":"string","title":"Leader"},"gap_votes":{"type":"integer","title":"Gap Votes"},"gap_percentage":{"type":"number","title":"Gap Percentage"}},"type":"object","required":["leader","gap_votes","gap_percentage"],"title":"DrillDownComparison"},"DrillDownFilters":{"properties":{"candidate_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Candidate Codes"},"min_consensus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Consensus"},"max_consensus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Consensus"},"anomalies_only":{"type":"boolean","title":"Anomalies Only","default":false},"min_participation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Participation"},"max_participation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Participation"}},"type":"object","title":"DrillDownFilters"},"DrillDownInfo":{"properties":{"available":{"type":"boolean","title":"Available","description":"Drill-down disponible"},"next_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Level","description":"Prochain niveau disponible"},"count":{"type":"integer","minimum":0.0,"title":"Count","description":"Nombre territoires enfants"}},"type":"object","required":["available","count"],"title":"DrillDownInfo","description":"Info drill-down vers niveau inférieur","example":{"available":true,"count":8,"next_level":"department"}},"DrillDownLevel":{"type":"string","enum":["national","regional","departmental","communal","station"],"title":"DrillDownLevel"},"DrillDownResponse":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__DrillDownStats"},{"type":"null"}]},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"DrillDownResponse"},"DrillDownResultBlock":{"properties":{"total_votes":{"type":"integer","title":"Total Votes"},"candidates":{"items":{"$ref":"#/components/schemas/DrillDownCandidateResult"},"type":"array","title":"Candidates"},"comparison":{"anyOf":[{"$ref":"#/components/schemas/DrillDownComparison"},{"type":"null"}]}},"type":"object","required":["total_votes","candidates"],"title":"DrillDownResultBlock"},"DrillUpInfo":{"properties":{"available":{"type":"boolean","title":"Available","description":"Drill-up disponible"}},"type":"object","required":["available"],"title":"DrillUpInfo","description":"Info drill-up vers niveau supérieur","example":{"available":true}},"ElectionCandidatesResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"candidates":{"items":{"$ref":"#/components/schemas/CandidateSummary"},"type":"array","title":"Candidates"},"lists":{"items":{"$ref":"#/components/schemas/CandidateListSummary"},"type":"array","title":"Lists"}},"type":"object","required":["election_code","candidates","lists"],"title":"ElectionCandidatesResponse","description":"Réponse API liste des candidats d'une élection"},"ElectionCloseRequest":{"properties":{"reason":{"type":"string","maxLength":500,"title":"Reason","description":"Raison optionnelle de la clôture","default":""},"confirm":{"type":"boolean","title":"Confirm","description":"Confirmation explicite requise (doit être True)"}},"type":"object","required":["confirm"],"title":"ElectionCloseRequest","description":"Requête de clôture d'une élection."},"ElectionCloseResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"status":{"type":"string","title":"Status","default":"closed"},"closed_at":{"type":"string","format":"date-time","title":"Closed At"},"closed_by":{"type":"string","title":"Closed By"},"message":{"type":"string","title":"Message","default":"Élection clôturée avec succès"}},"type":"object","required":["election_code","closed_at","closed_by"],"title":"ElectionCloseResponse","description":"Réponse après clôture d'une élection."},"ElectionCreate":{"properties":{"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code","description":"ISO country code (alpha-2)"},"code":{"type":"string","maxLength":64,"minLength":3,"title":"Code"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"type_code":{"type":"string","maxLength":64,"minLength":3,"title":"Type Code"},"poll_date":{"type":"string","format":"date","title":"Poll Date"},"ballot_mode":{"type":"string","title":"Ballot Mode","description":"Ballot mode: individual or list"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Election template identifier"},"hierarchy_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hierarchy Template Id","description":"Hierarchy template identifier (override)"},"result_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Scope","description":"Highest territorial level for published results (country/region/department/city/polling_station)"},"max_voters_per_station":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Max Voters Per Station","description":"Maximum number of voters per polling station (default: 100)","default":100},"organizer":{"anyOf":[{"$ref":"#/components/schemas/ElectionOrganizer"},{"type":"null"}],"description":"Organizer owning the election"},"scope":{"anyOf":[{"$ref":"#/components/schemas/ElectionScope"},{"type":"null"}],"description":"Operational election scope"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["country_code","code","name","type_code","poll_date","ballot_mode"],"title":"ElectionCreate"},"ElectionDetail":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"country_code":{"type":"string","title":"Country Code"},"type_code":{"type":"string","title":"Type Code"},"is_active":{"type":"boolean","title":"Is Active"},"poll_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Poll Date"},"candidates_count":{"type":"integer","title":"Candidates Count","default":0},"stations_count":{"type":"integer","title":"Stations Count","default":0},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["code","name","status","country_code","type_code","is_active","id"],"title":"ElectionDetail","description":"Détails complets d'une élection"},"ElectionEnrollResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["election_code"],"title":"ElectionEnrollResponse"},"ElectionImportMapping":{"properties":{"source_database":{"type":"string","title":"Source Database"},"source_table":{"type":"string","title":"Source Table"},"importer_module":{"type":"string","title":"Importer Module"},"importer_function":{"type":"string","title":"Importer Function","default":"run"},"display_name":{"type":"string","title":"Display Name","default":""},"description":{"type":"string","title":"Description","default":""},"data_source_url":{"type":"string","title":"Data Source Url","default":""},"expected_row_count":{"type":"integer","title":"Expected Row Count","default":0}},"type":"object","required":["source_database","source_table","importer_module"],"title":"ElectionImportMapping","description":"Configuration de mapping pour une élection."},"ElectionImportRequest":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","description":"Mode dry-run (pas d'écriture)","default":true},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department","description":"Filtrer par département"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","description":"Limiter le nombre de lignes"}},"type":"object","title":"ElectionImportRequest","description":"Requête d'import."},"ElectionImportRunResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"dry_run":{"type":"boolean","title":"Dry Run"},"total_source_rows":{"type":"integer","title":"Total Source Rows","default":0},"stations_inserted":{"type":"integer","title":"Stations Inserted","default":0},"tallies_inserted":{"type":"integer","title":"Tallies Inserted","default":0},"votes_inserted":{"type":"integer","title":"Votes Inserted","default":0},"actors_created":{"type":"integer","title":"Actors Created","default":0},"actors_reused":{"type":"integer","title":"Actors Reused","default":0},"duration_seconds":{"type":"number","title":"Duration Seconds","default":0.0},"rows_per_second":{"type":"number","title":"Rows Per Second","default":0.0},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["election_code","country_code","dry_run"],"title":"ElectionImportRunResponse","description":"Résultat d'un import."},"ElectionImportStatusResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"has_mapping":{"type":"boolean","title":"Has Mapping","default":false},"mapping":{"anyOf":[{"$ref":"#/components/schemas/ElectionImportMapping"},{"type":"null"}]},"source_available":{"type":"boolean","title":"Source Available","default":false},"source_row_count":{"type":"integer","title":"Source Row Count","default":0},"stations_imported":{"type":"integer","title":"Stations Imported","default":0},"tallies_imported":{"type":"integer","title":"Tallies Imported","default":0},"votes_imported":{"type":"integer","title":"Votes Imported","default":0},"last_import_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Import At"},"last_import_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Import By"},"last_import_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Import Duration Seconds"}},"type":"object","required":["election_code","country_code"],"title":"ElectionImportStatusResponse","description":"Statut de l'import pour une élection."},"ElectionListResponse":{"properties":{"elections":{"items":{"$ref":"#/components/schemas/ElectionSummary"},"type":"array","title":"Elections"}},"type":"object","required":["elections"],"title":"ElectionListResponse"},"ElectionOrganizer":{"properties":{"kind":{"type":"string","title":"Kind","description":"Organizer kind"},"person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Code","description":"Organizer person code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Organizer display name"}},"type":"object","required":["kind"],"title":"ElectionOrganizer"},"ElectionPackageInfo":{"properties":{"election_type":{"type":"string","title":"Election Type"},"election_date":{"type":"string","title":"Election Date"},"election_code":{"type":"string","title":"Election Code"},"name":{"type":"string","title":"Name"},"candidates_count":{"type":"integer","title":"Candidates Count"},"already_exists":{"type":"boolean","title":"Already Exists"},"last_loaded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Loaded At"}},"type":"object","required":["election_type","election_date","election_code","name","candidates_count","already_exists"],"title":"ElectionPackageInfo","description":"Informations sur un package électoral disponible."},"ElectionPackageListResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"country_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Name"},"country_active":{"type":"boolean","title":"Country Active"},"packages":{"items":{"$ref":"#/components/schemas/ElectionPackageInfo"},"type":"array","title":"Packages"}},"type":"object","required":["country_code","country_active","packages"],"title":"ElectionPackageListResponse","description":"Liste des packages disponibles pour un pays."},"ElectionPackageLoadRequest":{"properties":{"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code","description":"ISO alpha-2 country code (e.g. CM)"},"election_type":{"type":"string","maxLength":64,"minLength":3,"title":"Election Type","description":"Election type folder (e.g. presidential)"},"election_date":{"type":"string","maxLength":32,"minLength":4,"title":"Election Date","description":"Election directory identifier (e.g. 2025-10-12)"},"skip_gdam_sync":{"type":"boolean","title":"Skip Gdam Sync","description":"Skip GDAM territorial sync (for environments without reference DB).","default":false},"skip_map_sync":{"type":"boolean","title":"Skip Map Sync","description":"Skip map profile sync (country/regions/departments/cities).","default":false},"skip_drill_mvs":{"type":"boolean","title":"Skip Drill Mvs","description":"Skip creation of drill-down materialized views.","default":false}},"type":"object","required":["country_code","election_type","election_date"],"title":"ElectionPackageLoadRequest"},"ElectionPackageLoadResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"election_code":{"type":"string","title":"Election Code"},"election_type":{"type":"string","title":"Election Type"},"election_date":{"type":"string","format":"date","title":"Election Date"},"country_created":{"type":"boolean","title":"Country Created"},"election_created":{"type":"boolean","title":"Election Created"},"hierarchy_levels_synced":{"type":"integer","title":"Hierarchy Levels Synced"},"candidates_loaded":{"type":"integer","title":"Candidates Loaded"},"candidates_approved":{"type":"integer","title":"Candidates Approved"},"superset_imported":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Superset Imported"},"territorial_levels":{"items":{"$ref":"#/components/schemas/TerritorialLevelSummary"},"type":"array","title":"Territorial Levels"},"map_sync_levels":{"items":{"$ref":"#/components/schemas/MapSyncLevelSummary"},"type":"array","title":"Map Sync Levels"},"table_counts":{"items":{"$ref":"#/components/schemas/TableCountSummary"},"type":"array","title":"Table Counts"},"bigdata_import_result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Bigdata Import Result","description":"Résultat de l'import Big Data automatique (stations, PV, votes)"}},"type":"object","required":["country_code","election_id","election_code","election_type","election_date","country_created","election_created","hierarchy_levels_synced","candidates_loaded","candidates_approved"],"title":"ElectionPackageLoadResponse"},"ElectionPackageStatusResponse":{"properties":{"request":{"$ref":"#/components/schemas/ElectionPackageLoadRequest"},"metrics":{"$ref":"#/components/schemas/ElectionPackageLoadResponse"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"last_run_actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run Actor"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["request","metrics"],"title":"ElectionPackageStatusResponse"},"ElectionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"type_code":{"type":"string","title":"Type Code"},"name":{"type":"string","title":"Name"},"poll_date":{"type":"string","format":"date","title":"Poll Date"},"ballot_mode":{"type":"string","title":"Ballot Mode"},"result_scope":{"type":"string","title":"Result Scope"},"max_voters_per_station":{"type":"integer","title":"Max Voters Per Station","default":100},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"hierarchy_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hierarchy Template Id"},"organizer":{"anyOf":[{"$ref":"#/components/schemas/ElectionOrganizer"},{"type":"null"}]},"scope":{"anyOf":[{"$ref":"#/components/schemas/ElectionScope"},{"type":"null"}]},"created_by_identity_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Identity User Id"},"created_by_person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Person Code"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"closed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closed By"},"closure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closure Reason"}},"type":"object","required":["id","country_code","code","type_code","name","poll_date","ballot_mode","result_scope","template_id","hierarchy_template_id","metadata","is_active","created_at","updated_at"],"title":"ElectionResponse"},"ElectionScope":{"properties":{"kind":{"type":"string","title":"Kind","description":"Scope kind: territorial or entity"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Territorial scope level"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Territorial scope code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Territorial scope name"},"entity_person_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Person Code","description":"Entity person code for entity-scoped elections"},"entity_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Name","description":"Entity display name"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type","description":"Entity type"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Scope metadata"}},"type":"object","required":["kind"],"title":"ElectionScope"},"ElectionStatsResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"registered_voters":{"type":"integer","title":"Registered Voters","default":0},"participation_rate":{"type":"number","title":"Participation Rate","default":0.0},"consensus_rate":{"type":"number","title":"Consensus Rate","default":0.0},"validated_tally_sheets":{"type":"integer","title":"Validated Tally Sheets","default":0},"pending_tally_sheets":{"type":"integer","title":"Pending Tally Sheets","default":0},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["election_code"],"title":"ElectionStatsResponse"},"ElectionSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"country_code":{"type":"string","title":"Country Code"},"type_code":{"type":"string","title":"Type Code"},"is_active":{"type":"boolean","title":"Is Active"},"poll_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Poll Date"},"candidates_count":{"type":"integer","title":"Candidates Count","default":0},"stations_count":{"type":"integer","title":"Stations Count","default":0}},"type":"object","required":["code","name","status","country_code","type_code","is_active"],"title":"ElectionSummary"},"ElectionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"poll_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Poll Date"},"ballot_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ballot Mode","description":"Ballot mode: individual or list"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Election template identifier"},"hierarchy_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hierarchy Template Id","description":"Hierarchy template identifier override"},"result_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Scope","description":"Override highest territorial level for published results"},"max_voters_per_station":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":1.0},{"type":"null"}],"title":"Max Voters Per Station","description":"Maximum number of voters per polling station"},"organizer":{"anyOf":[{"$ref":"#/components/schemas/ElectionOrganizer"},{"type":"null"}],"description":"Organizer owning the election"},"scope":{"anyOf":[{"$ref":"#/components/schemas/ElectionScope"},{"type":"null"}],"description":"Operational election scope"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ElectionUpdate"},"EnrichRequest":{"properties":{"country_code":{"type":"string","title":"Country Code","description":"Country code"},"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code","description":"Election code (optional)"},"target_comment_ratio":{"type":"number","title":"Target Comment Ratio","description":"Target comment ratio (0.0-1.0)","default":0.3},"primary_language":{"type":"string","title":"Primary Language","description":"Primary language","default":"fr"},"language_mix":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Language Mix","description":"Language mix"},"moderation_ratios":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Moderation Ratios","description":"Moderation ratios"},"template_diversity":{"type":"string","title":"Template Diversity","description":"Template diversity","default":"high"},"context_aware":{"type":"boolean","title":"Context Aware","description":"Enable context adaptation","default":true}},"type":"object","required":["country_code"],"title":"EnrichRequest","description":"Raccourci: prepare + generate."},"EnrollmentRequest":{"properties":{"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code","description":"Optional redundant election code for auditing; main code comes from path"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"consent_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Consent Version"}},"type":"object","title":"EnrollmentRequest"},"EnrollmentResponse":{"properties":{"citizen_id":{"type":"string","format":"uuid","title":"Citizen Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"first_station_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"First Station Id"},"declaration_count":{"type":"integer","title":"Declaration Count"},"validation_count":{"type":"integer","title":"Validation Count"},"challenge_count":{"type":"integer","title":"Challenge Count"},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"created":{"type":"boolean","title":"Created","description":"True if the enrollment was newly created by the request","default":false},"station_assigned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Station Assigned At","description":"When the polling station was assigned"},"assignment_source":{"type":"string","title":"Assignment Source","description":"Who assigned the station: 'user', 'admin', or 'system'","default":"user"},"can_change_station":{"type":"boolean","title":"Can Change Station","description":"Whether the user can change their polling station","default":true}},"type":"object","required":["citizen_id","election_id","country_code","declaration_count","validation_count","challenge_count"],"title":"EnrollmentResponse"},"EnrollmentUpdateRequest":{"properties":{"polling_station_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Polling Station Id","description":"UUID of the polling station the citizen declares as their official assignment"}},"type":"object","title":"EnrollmentUpdateRequest","description":"Request to update an enrollment - primarily for self-assigning to a polling station."},"EvolutionSummary":{"properties":{"avg_score":{"type":"number","title":"Avg Score"},"min_score":{"type":"number","title":"Min Score"},"max_score":{"type":"number","title":"Max Score"},"trend_direction":{"type":"string","title":"Trend Direction"},"trend_percentage":{"type":"number","title":"Trend Percentage"}},"type":"object","required":["avg_score","min_score","max_score","trend_direction","trend_percentage"],"title":"EvolutionSummary"},"ExecutionHistoryItem":{"properties":{"execution_id":{"type":"string","title":"Execution Id"},"campaign_code":{"type":"string","title":"Campaign Code"},"batch_requested":{"type":"integer","title":"Batch Requested"},"votes_created":{"type":"integer","title":"Votes Created"},"remaining_after":{"type":"integer","title":"Remaining After"},"execution_time_ms":{"type":"integer","title":"Execution Time Ms"},"source":{"type":"string","title":"Source"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"executed_at":{"type":"string","title":"Executed At"}},"type":"object","required":["execution_id","campaign_code","batch_requested","votes_created","remaining_after","execution_time_ms","source","status","message","executed_at"],"title":"ExecutionHistoryItem","description":"Single execution history item."},"ExecutionHistoryResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"campaign_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Code"},"total":{"type":"integer","title":"Total"},"history":{"items":{"$ref":"#/components/schemas/ExecutionHistoryItem"},"type":"array","title":"History"}},"type":"object","required":["country_code","total","history"],"title":"ExecutionHistoryResponse","description":"Response for execution history."},"ExecutionResultSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code"},"batch_requested":{"type":"integer","title":"Batch Requested"},"votes_created":{"type":"integer","title":"Votes Created"},"remaining_after":{"type":"integer","title":"Remaining After"},"execution_time_ms":{"type":"integer","title":"Execution Time Ms"},"source":{"type":"string","title":"Source"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["campaign_code","batch_requested","votes_created","remaining_after","execution_time_ms","source","status","message"],"title":"ExecutionResultSchema","description":"Execution result schema."},"ExplorerActorCard":{"properties":{"card_id":{"type":"string","title":"Card Id"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["card_id","title"],"title":"ExplorerActorCard"},"ExplorerActorCardsResponse":{"properties":{"actor_code":{"type":"string","title":"Actor Code"},"card_type":{"type":"string","title":"Card Type"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/ExplorerActorCard"},"type":"array","title":"Items"}},"type":"object","required":["actor_code","card_type","total","limit","offset","items"],"title":"ExplorerActorCardsResponse"},"ExplorerActorCollection":{"properties":{"collection_id":{"type":"string","title":"Collection Id"},"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"card_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Type"},"layout":{"type":"string","title":"Layout","default":"grid"},"cards_url":{"type":"string","title":"Cards Url"},"cards_count":{"type":"integer","title":"Cards Count"},"cards_preview":{"items":{"$ref":"#/components/schemas/ExplorerActorCard"},"type":"array","title":"Cards Preview"}},"type":"object","required":["collection_id","key","title","cards_url","cards_count"],"title":"ExplorerActorCollection"},"ExplorerActorDetailResponse":{"properties":{"hero":{"$ref":"#/components/schemas/ExplorerActorHero"},"collections":{"items":{"$ref":"#/components/schemas/ExplorerActorCollection"},"type":"array","title":"Collections"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"}},"type":"object","required":["hero","collections","metrics"],"title":"ExplorerActorDetailResponse"},"ExplorerActorHero":{"properties":{"actor_id":{"type":"string","format":"uuid4","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"party":{"anyOf":[{"$ref":"#/components/schemas/ExplorerHeroParty"},{"type":"null"}]},"territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory"},"territorial_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Code"},"territories":{"items":{"$ref":"#/components/schemas/ExplorerHeroTerritory"},"type":"array","title":"Territories"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portrait Url"},"hero_background_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Background Url"},"influence_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Influence Level"},"influence_badge":{"anyOf":[{"$ref":"#/components/schemas/ExplorerInfluenceBadge"},{"type":"null"}]},"social_links":{"$ref":"#/components/schemas/ExplorerHeroSocialLinks"},"is_certified":{"type":"boolean","title":"Is Certified","default":false},"is_favorite":{"type":"boolean","title":"Is Favorite","default":false},"net_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Score"},"participation":{"type":"integer","title":"Participation","default":0},"favorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Favorable Ratio"},"defavorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Defavorable Ratio"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"country_code":{"type":"string","title":"Country Code"}},"type":"object","required":["actor_id","name","country_code"],"title":"ExplorerActorHero"},"ExplorerActorListItem":{"properties":{"actor_id":{"type":"string","format":"uuid4","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"territory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory"},"territorial_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territorial Code"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"net_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Score"},"votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes"},"favorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Favorable Ratio"},"defavorable_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Defavorable Ratio"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["actor_id","name"],"title":"ExplorerActorListItem"},"ExplorerActorListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/ExplorerActorListItem"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"ExplorerActorListResponse"},"ExplorerAnomalyFiltersResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"buckets":{"items":{"$ref":"#/components/schemas/AnomalyFilterBucket"},"type":"array","title":"Buckets"},"total_stations_indexed":{"type":"integer","minimum":0.0,"title":"Total Stations Indexed"}},"type":"object","required":["election_code","buckets","total_stations_indexed"],"title":"ExplorerAnomalyFiltersResponse"},"ExplorerCandidateDetailResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"biography":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biography"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"hometown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hometown"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"photo_hd_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Hd Url"},"party_info":{"$ref":"#/components/schemas/ExplorerCandidateParty"},"stats":{"$ref":"#/components/schemas/ExplorerCandidateStats"},"top_regions":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Top Regions"},"top_departments":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Top Departments"},"top_communes":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Top Communes"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"}},"type":"object","required":["code","name","party_info","stats","top_regions","top_departments","top_communes"],"title":"ExplorerCandidateDetailResponse"},"ExplorerCandidateParty":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"slogan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slogan"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","title":"ExplorerCandidateParty"},"ExplorerCandidatePerformanceResponse":{"properties":{"regions":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Regions"},"departments":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Departments"},"communes":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTerritoryScore"},"type":"array","title":"Communes"},"trend":{"items":{"$ref":"#/components/schemas/ExplorerCandidateTrendPoint"},"type":"array","title":"Trend"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"}},"type":"object","required":["regions","departments","communes","trend"],"title":"ExplorerCandidatePerformanceResponse"},"ExplorerCandidateResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"ballot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ballot Number"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes"},"total_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Votes"},"score_percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score Percentage"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"}},"type":"object","required":["code","name"],"title":"ExplorerCandidateResponse"},"ExplorerCandidateStats":{"properties":{"total_votes":{"type":"integer","title":"Total Votes"},"score_percentage":{"type":"number","title":"Score Percentage"},"national_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"National Rank"},"leading_regions_count":{"type":"integer","title":"Leading Regions Count","default":0},"leading_departments_count":{"type":"integer","title":"Leading Departments Count","default":0},"leading_communes_count":{"type":"integer","title":"Leading Communes Count","default":0}},"type":"object","required":["total_votes","score_percentage"],"title":"ExplorerCandidateStats"},"ExplorerCandidateTerritoryScore":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"votes":{"type":"integer","title":"Votes"},"score_percentage":{"type":"number","title":"Score Percentage"}},"type":"object","required":["code","name","votes","score_percentage"],"title":"ExplorerCandidateTerritoryScore"},"ExplorerCandidateTrendPoint":{"properties":{"label":{"type":"string","title":"Label"},"votes":{"type":"integer","title":"Votes"},"score_percentage":{"type":"number","title":"Score Percentage"}},"type":"object","required":["label","votes","score_percentage"],"title":"ExplorerCandidateTrendPoint"},"ExplorerGapResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"type":"object","required":["election_code","items","total","generated_at"],"title":"ExplorerGapResponse"},"ExplorerHeroParty":{"properties":{"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","title":"ExplorerHeroParty"},"ExplorerHeroSocialLinks":{"properties":{"twitter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter"},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook"},"instagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","title":"ExplorerHeroSocialLinks"},"ExplorerHeroTerritory":{"properties":{"level":{"type":"string","title":"Level"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["level"],"title":"ExplorerHeroTerritory"},"ExplorerInfluenceBadge":{"properties":{"icon":{"type":"string","title":"Icon"},"label":{"type":"string","title":"Label"},"color":{"type":"string","title":"Color"}},"type":"object","required":["icon","label","color"],"title":"ExplorerInfluenceBadge"},"ExplorerTerritorialNode":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"children":{"items":{"$ref":"#/components/schemas/ExplorerTerritorialNode"},"type":"array","title":"Children"}},"type":"object","required":["code","name","type"],"title":"ExplorerTerritorialNode"},"ExplorerTerritorialSegment":{"properties":{"code":{"type":"string","title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["code"],"title":"ExplorerTerritorialSegment"},"ExplorerTerritorialTreeResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"root":{"$ref":"#/components/schemas/ExplorerTerritorialNode"}},"type":"object","required":["election_code","country_code","root"],"title":"ExplorerTerritorialTreeResponse"},"ExpressionMedia":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"media_type":{"type":"string","title":"Media Type"},"public_url":{"type":"string","title":"Public Url"},"is_primary":{"type":"boolean","title":"Is Primary","default":false},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"}},"type":"object","required":["id","media_type","public_url"],"title":"ExpressionMedia","description":"Media attached to an expression."},"ExpressionSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"text":{"type":"string","title":"Text"},"sentiment_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment Label"},"sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sentiment Score"},"detected_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected Language"},"taxonomy_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Domain Code"},"taxonomy_domain_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Domain Name"},"taxonomy_category_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Category Code"},"taxonomy_category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Category Name"},"city_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Name"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"media":{"items":{"$ref":"#/components/schemas/ExpressionMedia"},"type":"array","title":"Media","default":[]},"vote_counts":{"anyOf":[{"$ref":"#/components/schemas/VoteCounts"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","text","created_at"],"title":"ExpressionSummary","description":"Expression summary for feed display."},"FavoriteActorSchema":{"properties":{"actor_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Id","description":"UUID interne de l'acteur"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code","description":"Code public / actor_code"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug","description":"Slug SEO"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},"type":"object","title":"FavoriteActorSchema"},"FavoriteItemSchema":{"properties":{"actor":{"$ref":"#/components/schemas/FavoriteActorSchema"},"pinned_cards":{"items":{"type":"string"},"type":"array","title":"Pinned Cards"},"added_at":{"type":"string","format":"date-time","title":"Added At"}},"type":"object","required":["actor","added_at"],"title":"FavoriteItemSchema"},"FavoriteMutationResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"actor":{"$ref":"#/components/schemas/FavoriteActorSchema"},"total_favorites":{"type":"integer","title":"Total Favorites"},"added_at":{"type":"string","format":"date-time","title":"Added At"}},"type":"object","required":["success","actor","total_favorites","added_at"],"title":"FavoriteMutationResponse"},"FavoritesListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/FavoriteItemSchema"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"FavoritesListResponse"},"FeedResponse":{"properties":{"expressions":{"items":{"$ref":"#/components/schemas/ExpressionSummary"},"type":"array","title":"Expressions"},"total":{"type":"integer","title":"Total"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["expressions","total","has_more"],"title":"FeedResponse","description":"Paginated feed response."},"GapAnalysis":{"properties":{"leader":{"type":"string","title":"Leader","description":"Code candidat leader"},"second":{"type":"string","title":"Second","description":"Code candidat second"},"gap_votes":{"type":"integer","title":"Gap Votes","description":"Écart en voix"},"gap_percentage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Gap Percentage","description":"Écart en % du total"}},"type":"object","required":["leader","second","gap_votes","gap_percentage"],"title":"GapAnalysis","description":"Analyse écart entre leader et second","example":{"gap_percentage":6.11,"gap_votes":2145678,"leader":"CAND-03","second":"CAND-05"}},"GenerateRequest":{"properties":{"country_code":{"type":"string","title":"Country Code","description":"Country code"},"dry_run":{"type":"boolean","title":"Dry Run","description":"Dry run (no write)","default":false}},"type":"object","required":["country_code"],"title":"GenerateRequest"},"GenerateVotesRequest":{"properties":{"batch_size":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Batch Size","default":100}},"type":"object","title":"GenerateVotesRequest","description":"Request to manually generate votes."},"GenerateVotesResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"result":{"$ref":"#/components/schemas/ExecutionResultSchema"}},"type":"object","required":["success","result"],"title":"GenerateVotesResponse","description":"Response for vote generation."},"GeoLevel":{"type":"string","enum":["country","region","department","city"],"title":"GeoLevel","description":"Geographic hierarchy levels."},"GeoListResponse":{"properties":{"locations":{"items":{"$ref":"#/components/schemas/GeoLocation"},"type":"array","title":"Locations"},"level":{"$ref":"#/components/schemas/GeoLevel"}},"type":"object","required":["locations","level"],"title":"GeoListResponse","description":"List of geographic locations."},"GeoLocation":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"level":{"$ref":"#/components/schemas/GeoLevel"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"expressions_count":{"type":"integer","title":"Expressions Count","default":0},"avg_sentiment":{"type":"number","title":"Avg Sentiment","default":0.0},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"}},"type":"object","required":["code","name","level"],"title":"GeoLocation","description":"Geographic location aggregate."},"GeoMetrics":{"properties":{"total_expressions":{"type":"integer","title":"Total Expressions"},"today_expressions":{"type":"integer","title":"Today Expressions"},"avg_sentiment":{"type":"number","title":"Avg Sentiment"},"growth_percent":{"type":"number","title":"Growth Percent"},"top_domains":{"items":{"$ref":"#/components/schemas/DomainStats"},"type":"array","title":"Top Domains"},"sentiment_timeline":{"items":{"$ref":"#/components/schemas/SentimentDataPoint"},"type":"array","title":"Sentiment Timeline"}},"type":"object","required":["total_expressions","today_expressions","avg_sentiment","growth_percent","top_domains","sentiment_timeline"],"title":"GeoMetrics","description":"Detailed metrics for a location."},"GeoMetricsResponse":{"properties":{"location":{"$ref":"#/components/schemas/GeoLocation"},"metrics":{"$ref":"#/components/schemas/GeoMetrics"}},"type":"object","required":["location","metrics"],"title":"GeoMetricsResponse","description":"Location with its metrics."},"GlobalMetricsResponse":{"properties":{"countries_count":{"type":"integer","minimum":0.0,"title":"Countries Count"},"active_elections_count":{"type":"integer","minimum":0.0,"title":"Active Elections Count"},"tally_sheets_validated":{"type":"integer","minimum":0.0,"title":"Tally Sheets Validated"},"tokens_claimed":{"type":"integer","minimum":0.0,"title":"Tokens Claimed"},"tokens_generated":{"type":"integer","minimum":0.0,"title":"Tokens Generated"},"anomalies_count":{"type":"integer","minimum":0.0,"title":"Anomalies Count"},"last_updated":{"type":"string","format":"date-time","title":"Last Updated"}},"type":"object","required":["countries_count","active_elections_count","tally_sheets_validated","tokens_claimed","tokens_generated","anomalies_count","last_updated"],"title":"GlobalMetricsResponse"},"GlobalStatsData":{"properties":{"country_code":{"type":"string","title":"Country Code"},"timeslot":{"type":"string","title":"Timeslot"},"total_actors":{"type":"integer","title":"Total Actors"},"total_voters":{"type":"integer","title":"Total Voters"},"total_votes_today":{"type":"integer","title":"Total Votes Today"},"total_comments":{"type":"integer","title":"Total Comments"},"most_voted_actor":{"anyOf":[{"$ref":"#/components/schemas/MostVotedActor"},{"type":"null"}]},"most_commented_actor":{"anyOf":[{"$ref":"#/components/schemas/MostCommentedActor"},{"type":"null"}]}},"type":"object","required":["country_code","timeslot","total_actors","total_voters","total_votes_today","total_comments"],"title":"GlobalStatsData"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HierarchyElectionStatusSchema":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"election_code":{"type":"string","title":"Election Code"},"election_name":{"type":"string","title":"Election Name"},"country_code":{"type":"string","title":"Country Code"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"status":{"type":"string","title":"Status"},"missing_levels":{"items":{"type":"string"},"type":"array","title":"Missing Levels"},"extra_levels":{"items":{"type":"string"},"type":"array","title":"Extra Levels"},"levels":{"items":{"$ref":"#/components/schemas/HierarchyLevelStatusSchema"},"type":"array","title":"Levels"}},"type":"object","required":["election_id","election_code","election_name","country_code","status","missing_levels","extra_levels","levels"],"title":"HierarchyElectionStatusSchema"},"HierarchyLevelStatusSchema":{"properties":{"order":{"type":"integer","title":"Order"},"level_type":{"type":"string","title":"Level Type"},"template_defined":{"type":"boolean","title":"Template Defined"},"segments_count":{"type":"integer","title":"Segments Count"},"territorial_units":{"type":"integer","title":"Territorial Units"},"status":{"type":"string","title":"Status"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","default":[]}},"type":"object","required":["order","level_type","template_defined","segments_count","territorial_units","status"],"title":"HierarchyLevelStatusSchema"},"HierarchyMonitoringResponse":{"properties":{"total":{"type":"integer","title":"Total"},"elections":{"items":{"$ref":"#/components/schemas/HierarchyElectionStatusSchema"},"type":"array","title":"Elections"}},"type":"object","required":["total","elections"],"title":"HierarchyMonitoringResponse"},"HierarchySyncResponse":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"hierarchy_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hierarchy Template Id"},"levels_synced":{"type":"integer","title":"Levels Synced"}},"type":"object","required":["election_id","country_code","levels_synced"],"title":"HierarchySyncResponse"},"HomeElectionCard":{"properties":{"election_code":{"type":"string","title":"Election Code"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"country_code":{"type":"string","title":"Country Code"},"metrics":{"$ref":"#/components/schemas/HomeElectionMetrics","default":{"total_votes":0,"participation_rate":0.0}}},"type":"object","required":["election_code","title","status","country_code"],"title":"HomeElectionCard"},"HomeElectionMetrics":{"properties":{"total_votes":{"type":"integer","title":"Total Votes","default":0},"participation_rate":{"type":"number","title":"Participation Rate","default":0.0}},"type":"object","title":"HomeElectionMetrics"},"HomeResponse":{"properties":{"elections":{"items":{"$ref":"#/components/schemas/HomeElectionCard"},"type":"array","title":"Elections"}},"type":"object","required":["elections"],"title":"HomeResponse"},"ImportActorsToCatalogAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/ImportActorsToCatalogResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ImportActorsToCatalogAPIResponse","description":"API response for actor import."},"ImportActorsToCatalogRequest":{"properties":{"country_code":{"type":"string","title":"Country Code","description":"Country code","default":"FR"},"top_n":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Top N","description":"Number of actors to import","default":50},"min_votes":{"type":"integer","minimum":0.0,"title":"Min Votes","description":"Minimum votes threshold","default":100}},"type":"object","title":"ImportActorsToCatalogRequest","description":"Request to import actors from BARO to catalog."},"ImportActorsToCatalogResponse":{"properties":{"imported":{"type":"integer","title":"Imported","description":"Number of actors imported"},"skipped":{"type":"integer","title":"Skipped","description":"Number skipped (already exist)","default":0},"items":{"items":{"$ref":"#/components/schemas/CatalogItemListItemSchema"},"type":"array","title":"Items"}},"type":"object","required":["imported"],"title":"ImportActorsToCatalogResponse","description":"Response after importing actors."},"ImportFromBarometerAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/ImportFromBarometerResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ImportFromBarometerAPIResponse","description":"API response for barometer import."},"ImportFromBarometerRequest":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Target item code"},"country_code":{"type":"string","title":"Country Code","description":"Country code for actors","default":"FR"},"top_n":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Top N","description":"Number of top actors to import","default":12},"min_votes":{"type":"integer","minimum":0.0,"title":"Min Votes","description":"Minimum votes threshold","default":100},"order_by":{"type":"string","title":"Order By","description":"Sort by: net_score, favorable_pct, total_votes","default":"net_score"},"include_undecided":{"type":"boolean","title":"Include Undecided","description":"Add 'Je ne sais pas encore' option","default":true},"include_abstention":{"type":"boolean","title":"Include Abstention","description":"Add 'Je n'irai pas voter' option","default":true},"party_colors":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Party Colors","description":"Custom party colors mapping"}},"type":"object","required":["item_code"],"title":"ImportFromBarometerRequest","description":"Request to import actors from barometer."},"ImportFromBarometerResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"campaign_code":{"type":"string","title":"Campaign Code"},"item_code":{"type":"string","title":"Item Code"},"imported_count":{"type":"integer","title":"Imported Count"},"options":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Options"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["success","campaign_code","item_code","imported_count","options"],"title":"ImportFromBarometerResponse","description":"Response after importing from barometer."},"ImportRunRequest":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","description":"Exécuter en mode dry-run (aucune écriture)","default":true},"department":{"anyOf":[{"type":"string","maxLength":3,"minLength":2},{"type":"null"}],"title":"Department","description":"Code département (optionnel)"},"limit":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Limit","description":"Limiter le nombre de bureaux"},"job_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9._:-]{4,120}$"},{"type":"null"}],"title":"Job Id","description":"Identifiant optionnel du job temps réel"},"skip_photos":{"type":"boolean","title":"Skip Photos","description":"Skip photo sync","default":false}},"type":"object","title":"ImportRunRequest"},"ImportRunResponse":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run"},"job_id":{"type":"string","title":"Job Id","description":"Identifiant du job temps réel"},"topic":{"type":"string","title":"Topic","description":"Topic WebSocket à écouter pour suivre le job"},"task":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task","description":"Nom interne de la tâche exécutée"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Pays lié à l'import"},"total_expected":{"type":"integer","title":"Total Expected","description":"Nombre total de bureaux attendus"},"processed":{"type":"integer","title":"Processed","description":"Nombre de lignes traitées (succès + erreurs)"},"stations_created":{"type":"integer","title":"Stations Created"},"pv_imported":{"type":"integer","title":"Pv Imported"},"errors":{"additionalProperties":{"type":"string"},"type":"object","title":"Errors"},"report":{"type":"string","title":"Report"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Message additionnel (ex: aucun bureau trouvé)"}},"type":"object","required":["dry_run","job_id","topic","total_expected","processed","stations_created","pv_imported","errors","report"],"title":"ImportRunResponse"},"ImportStatusResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"import_code":{"type":"string","title":"Import Code"},"label":{"type":"string","title":"Label"},"dataset":{"type":"string","title":"Dataset"},"steps":{"items":{"$ref":"#/components/schemas/ImportStatusStep"},"type":"array","title":"Steps"},"table_counts":{"items":{"$ref":"#/components/schemas/ImportTableCount"},"type":"array","title":"Table Counts"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"last_run_actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run Actor"}},"type":"object","required":["country_code","import_code","label","dataset"],"title":"ImportStatusResponse"},"ImportStatusStep":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"status":{"type":"string","enum":["pending","completed"],"title":"Status"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["id","label","status"],"title":"ImportStatusStep"},"ImportTableCount":{"properties":{"table":{"type":"string","title":"Table"},"total":{"type":"integer","title":"Total"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},"type":"object","required":["table","total"],"title":"ImportTableCount"},"InlineItemOption":{"properties":{"value":{"type":"string","maxLength":100,"title":"Value"},"label":{"type":"string","maxLength":200,"title":"Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Code"},"color_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color Code"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"}},"type":"object","required":["value","label"],"title":"InlineItemOption","description":"An option within an inline item (e.g. a candidate, a choice)."},"InlineItemSchema":{"properties":{"code":{"type":"string","maxLength":60,"minLength":2,"pattern":"^[A-Z0-9_-]+$","title":"Code"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"type":"string","title":"Description","default":""},"position":{"type":"integer","minimum":1.0,"title":"Position"},"item_type":{"type":"string","title":"Item Type","default":"SINGLE"},"options":{"items":{"$ref":"#/components/schemas/InlineItemOption"},"type":"array","title":"Options"},"required":{"type":"boolean","title":"Required","default":true},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64"},"image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Alt"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"bucket_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bucket Code"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"}},"type":"object","required":["code","title","position"],"title":"InlineItemSchema","description":"An item (question / card) within the full campaign creation request."},"ItemOverrideRequest":{"properties":{"config_override":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config Override","description":"Config override"},"is_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Required"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ItemOverrideRequest","description":"Request to update item config for a specific campaign."},"ItemOverrideResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CampaignItemAssociationSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ItemOverrideResponse","description":"Response after updating override."},"ItemPositionUpdate":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Item code"},"position":{"type":"integer","minimum":0.0,"title":"Position","description":"New position"}},"type":"object","required":["item_code","position"],"title":"ItemPositionUpdate","description":"Position update for a single item."},"ItemTemplateDetailResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/ItemTemplateSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ItemTemplateDetailResponse","description":"API response for template detail."},"ItemTemplateListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/ItemTemplateSchema"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","total","meta"],"title":"ItemTemplateListResponse","description":"API response for template list."},"ItemTemplateSchema":{"properties":{"code":{"type":"string","title":"Code","description":"Template code"},"name":{"type":"string","title":"Name","description":"Template name"},"description":{"type":"string","title":"Description","description":"Template description","default":""},"item_codes":{"items":{"type":"string"},"type":"array","title":"Item Codes","description":"Item codes in template"},"category":{"type":"string","title":"Category","description":"Template category","default":"general"},"is_active":{"type":"boolean","title":"Is Active","default":true},"country_code":{"type":"string","title":"Country Code","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/CatalogItemSchema"},"type":"array","title":"Items"}},"type":"object","required":["code","name"],"title":"ItemTemplateSchema","description":"Pre-configured group of items."},"ItemType":{"type":"string","enum":["SINGLE","MULTI","RANK","RATE","TEXT"],"title":"ItemType"},"JobExecution":{"properties":{"execution_id":{"type":"string","format":"uuid","title":"Execution Id"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"success":{"type":"boolean","title":"Success"},"stats":{"anyOf":[{"$ref":"#/components/schemas/JobExecutionStats"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Triggered By"}},"type":"object","required":["execution_id","timestamp","success"],"title":"JobExecution","description":"Single job execution record."},"JobExecutionStats":{"properties":{"votes_yesterday":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes Yesterday"},"already_voted_today":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Already Voted Today"},"rolled_over":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rolled Over"},"active_campaigns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active Campaigns"},"due_campaigns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Due Campaigns"},"campaigns_processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaigns Processed"},"votes_created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Votes Created"},"expired":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expired"},"exhausted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exhausted"},"failed_campaigns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Failed Campaigns"},"added":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Added"},"removed":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Removed"}},"type":"object","title":"JobExecutionStats","description":"Statistics from a job execution."},"JobHistoryResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"executions":{"items":{"$ref":"#/components/schemas/JobExecution"},"type":"array","title":"Executions"}},"type":"object","required":["total","limit","offset","executions"],"title":"JobHistoryResponse","description":"Response for GET /admin/scheduler/jobs/{id}/history."},"JobInfo":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"timezone":{"type":"string","title":"Timezone"},"next_run":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run"},"last_run":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run"},"last_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Last Success"},"last_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Duration Seconds"},"trigger":{"type":"string","title":"Trigger"}},"type":"object","required":["id","name","timezone","trigger"],"title":"JobInfo","description":"Information about a scheduled job."},"LevelMetrics":{"properties":{"registered_voters":{"type":"integer","minimum":0.0,"title":"Registered Voters","description":"Nombre inscrits"},"actual_voters":{"type":"integer","minimum":0.0,"title":"Actual Voters","description":"Nombre votants"},"participation_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Participation Rate","description":"Taux participation (%)"},"abstention":{"type":"integer","minimum":0.0,"title":"Abstention","description":"Nombre abstentions"},"abstention_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Abstention Rate","description":"Taux abstention (%)"},"blank_ballots":{"type":"integer","minimum":0.0,"title":"Blank Ballots","description":"Bulletins blancs"},"blank_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Blank Rate","description":"Taux blancs (%)"},"invalid_ballots":{"type":"integer","minimum":0.0,"title":"Invalid Ballots","description":"Bulletins nuls"},"invalid_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Invalid Rate","description":"Taux nuls (%)"},"total_votes":{"type":"integer","minimum":0.0,"title":"Total Votes","description":"Total votes exprimés"},"num_stations":{"type":"integer","minimum":0.0,"title":"Num Stations","description":"Nombre bureaux de vote"},"num_stations_validated":{"type":"integer","minimum":0.0,"title":"Num Stations Validated","description":"Bureaux validés"},"avg_consensus_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Avg Consensus Rate","description":"Taux consensus moyen (%)"},"stations_with_anomalies":{"type":"integer","minimum":0.0,"title":"Stations With Anomalies","description":"Bureaux avec anomalies"}},"type":"object","required":["registered_voters","actual_voters","participation_rate","abstention","abstention_rate","blank_ballots","blank_rate","invalid_ballots","invalid_rate","total_votes","num_stations","num_stations_validated","avg_consensus_rate","stations_with_anomalies"],"title":"LevelMetrics","description":"Métriques agrégées pour un niveau territorial","example":{"abstention":12828820,"abstention_rate":26.31,"actual_voters":35923482,"avg_consensus_rate":94.52,"blank_ballots":462891,"blank_rate":1.29,"invalid_ballots":318234,"invalid_rate":0.89,"num_stations":68956,"num_stations_validated":68234,"participation_rate":73.69,"registered_voters":48752302,"stations_with_anomalies":412,"total_votes":35142357}},"LinkActorAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/LinkActorResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"LinkActorAPIResponse","description":"API response for actor link operations."},"LinkActorRequest":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Target item code"},"actor_code":{"type":"string","title":"Actor Code","description":"Actor code to link"},"country_code":{"type":"string","title":"Country Code","description":"Country code","default":"FR"},"position":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Position","description":"Position in options list (None = auto)"}},"type":"object","required":["item_code","actor_code"],"title":"LinkActorRequest","description":"Request to link a single actor to a campaign item."},"LinkActorResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"actor":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Actor"},"item_options_count":{"type":"integer","title":"Item Options Count"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success","item_options_count"],"title":"LinkActorResponse","description":"Response after linking/unlinking an actor."},"LiveFeedItem":{"properties":{"id":{"type":"string","title":"Id"},"actor_code":{"type":"string","title":"Actor Code"},"actor_name":{"type":"string","title":"Actor Name"},"vote_value":{"type":"string","title":"Vote Value"},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name"},"city_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Name"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"has_comment":{"type":"boolean","title":"Has Comment","default":false}},"type":"object","required":["id","actor_code","actor_name","vote_value","timestamp"],"title":"LiveFeedItem"},"LiveFeedResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/LiveFeedItem"},"type":"array","title":"Data"},"total_today":{"type":"integer","title":"Total Today"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","total_today","meta"],"title":"LiveFeedResponse"},"MaintenanceMapCountrySummary":{"properties":{"country_code":{"type":"string","title":"Country Code"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms","description":"Durée de synchronisation pour ce pays."},"levels":{"items":{"$ref":"#/components/schemas/MapSyncLevelSummary"},"type":"array","title":"Levels"}},"type":"object","required":["country_code"],"title":"MaintenanceMapCountrySummary"},"MaintenanceRunRequest":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","description":"Lorsque true, affiche les requêtes DDL sans les exécuter ni semer les référentiels.","default":false},"country_code":{"anyOf":[{"type":"string","maxLength":3,"minLength":2},{"type":"null"}],"title":"Country Code","description":"Code ISO alpha-2 ciblé (doit correspondre au pays opérateur)."}},"type":"object","title":"MaintenanceRunRequest"},"MaintenanceRunResponse":{"properties":{"status":{"type":"string","const":"completed","title":"Status"},"dry_run":{"type":"boolean","title":"Dry Run"},"database":{"type":"string","title":"Database"},"country_code":{"type":"string","title":"Country Code"},"ddl_statements_total":{"type":"integer","title":"Ddl Statements Total"},"ddl_statements_executed":{"type":"integer","title":"Ddl Statements Executed"},"table_counts":{"items":{"$ref":"#/components/schemas/TableCountSummary"},"type":"array","title":"Table Counts"},"maps":{"items":{"$ref":"#/components/schemas/MaintenanceMapCountrySummary"},"type":"array","title":"Maps"},"taxonomy_sync":{"anyOf":[{"$ref":"#/components/schemas/TaxonomySyncSummary"},{"type":"null"}],"description":"Résultat de la sync des domaines régaliens"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"type":"string","format":"date-time","title":"Finished At"},"duration_ms":{"type":"integer","title":"Duration Ms"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["status","dry_run","database","country_code","ddl_statements_total","ddl_statements_executed","started_at","finished_at","duration_ms"],"title":"MaintenanceRunResponse"},"ManagerAssignment":{"properties":{"election_id":{"type":"string","title":"Election Id"},"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code"},"scope_level":{"type":"string","title":"Scope Level"},"scope_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Code"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"assigned_at":{"type":"string","format":"date-time","title":"Assigned At"},"assigned_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned By"}},"type":"object","required":["election_id","scope_level","assigned_at"],"title":"ManagerAssignment"},"ManagerAssignmentListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ManagerAssignment"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"ManagerAssignmentListResponse"},"ManagerCandidateApplicationRequest":{"properties":{"election_code":{"type":"string","title":"Election Code"},"scopes":{"items":{"$ref":"#/components/schemas/ManagerCandidateScope"},"type":"array","title":"Scopes"},"motivation":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Motivation"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"attachments":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attachments"}},"type":"object","required":["election_code","scopes"],"title":"ManagerCandidateApplicationRequest"},"ManagerCandidateListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ManagerCandidateResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"}},"type":"object","required":["items","total"],"title":"ManagerCandidateListResponse"},"ManagerCandidateResponse":{"properties":{"id":{"type":"string","title":"Id"},"identity_user_id":{"type":"string","title":"Identity User Id"},"country_code":{"type":"string","title":"Country Code"},"election_id":{"type":"string","title":"Election Id"},"election_code":{"type":"string","title":"Election Code"},"scopes":{"items":{"$ref":"#/components/schemas/ManagerCandidateScope"},"type":"array","title":"Scopes"},"status":{"$ref":"#/components/schemas/ManagerCandidateStatus"},"motivation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Motivation"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"attachments":{"items":{"type":"string"},"type":"array","title":"Attachments"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"reviewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reviewed At"},"reviewed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By"},"review_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Notes"}},"type":"object","required":["id","identity_user_id","country_code","election_id","election_code","scopes","status","created_at"],"title":"ManagerCandidateResponse"},"ManagerCandidateReviewRequest":{"properties":{"review_notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Review Notes"}},"type":"object","title":"ManagerCandidateReviewRequest"},"ManagerCandidateScope":{"properties":{"level":{"type":"string","pattern":"^(national|region|department|city|station)$","title":"Level"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","required":["level"],"title":"ManagerCandidateScope"},"ManagerCandidateStatus":{"type":"string","enum":["pending","accepted","rejected"],"title":"ManagerCandidateStatus"},"MapBounds":{"properties":{"north":{"type":"number","title":"North"},"south":{"type":"number","title":"South"},"east":{"type":"number","title":"East"},"west":{"type":"number","title":"West"}},"type":"object","required":["north","south","east","west"],"title":"MapBounds"},"MapCenter":{"properties":{"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"}},"type":"object","required":["lat","lng"],"title":"MapCenter"},"MapCitySummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"},"department_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Code"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"center":{"$ref":"#/components/schemas/MapCenter"},"bounds":{"anyOf":[{"$ref":"#/components/schemas/MapBounds"},{"type":"null"}]},"area_sq_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Area Sq Km"},"zoom_hint":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Zoom Hint"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"feature_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Url"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["code","name","center"],"title":"MapCitySummary"},"MapDepartmentSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"center":{"$ref":"#/components/schemas/MapCenter"},"bounds":{"anyOf":[{"$ref":"#/components/schemas/MapBounds"},{"type":"null"}]},"area_sq_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Area Sq Km"},"zoom_hint":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Zoom Hint"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"feature_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Url"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"}},"type":"object","required":["code","name","center"],"title":"MapDepartmentSummary"},"MapMarker":{"properties":{"station_id":{"type":"string","title":"Station Id"},"name":{"type":"string","title":"Name"},"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"},"alert_level":{"type":"string","title":"Alert Level"}},"type":"object","required":["station_id","name","lat","lng","alert_level"],"title":"MapMarker"},"MapPoint":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"text":{"type":"string","title":"Text"},"sentiment_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment Label"},"sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sentiment Score"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"taxonomy_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taxonomy Domain Code"},"city_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Name"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","text","latitude","longitude","created_at"],"title":"MapPoint","description":"Expression point on map."},"MapRegionSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"center":{"$ref":"#/components/schemas/MapCenter"},"bounds":{"anyOf":[{"$ref":"#/components/schemas/MapBounds"},{"type":"null"}]},"area_sq_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Area Sq Km"},"zoom_hint":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Zoom Hint"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"feature_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Url"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["code","name","center"],"title":"MapRegionSummary"},"MapResponse":{"properties":{"points":{"items":{"$ref":"#/components/schemas/MapPoint"},"type":"array","title":"Points"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["points","total"],"title":"MapResponse","description":"Map points response."},"MapSyncAllRequest":{"properties":{"countries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Countries"},"levels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Levels"},"force":{"type":"boolean","title":"Force","default":false},"include_geojson":{"type":"boolean","title":"Include Geojson","default":false}},"type":"object","title":"MapSyncAllRequest"},"MapSyncAllResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"total":{"type":"integer","title":"Total"},"results":{"items":{"$ref":"#/components/schemas/MapSyncBatchItem"},"type":"array","title":"Results"}},"type":"object","required":["job_id","total","results"],"title":"MapSyncAllResponse"},"MapSyncBatchItem":{"properties":{"country_code":{"type":"string","title":"Country Code"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"type":"string","format":"date-time","title":"Finished At"},"levels":{"items":{"$ref":"#/components/schemas/MapSyncLevelResponse"},"type":"array","title":"Levels"}},"type":"object","required":["country_code","started_at","finished_at","levels"],"title":"MapSyncBatchItem"},"MapSyncLevelResponse":{"properties":{"level":{"type":"string","title":"Level"},"processed":{"type":"integer","title":"Processed"},"skipped":{"type":"integer","title":"Skipped"},"errors":{"type":"integer","title":"Errors"},"details":{"items":{"type":"string"},"type":"array","title":"Details"}},"type":"object","required":["level","processed","skipped","errors"],"title":"MapSyncLevelResponse"},"MapSyncLevelSummary":{"properties":{"level":{"type":"string","title":"Level"},"processed":{"type":"integer","title":"Processed"},"skipped":{"type":"integer","title":"Skipped","default":0},"errors":{"type":"integer","title":"Errors","default":0},"details":{"items":{"type":"string"},"type":"array","title":"Details"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"}},"type":"object","required":["level","processed"],"title":"MapSyncLevelSummary"},"MapSyncRequest":{"properties":{"country_code":{"type":"string","title":"Country Code"},"levels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Levels"},"force":{"type":"boolean","title":"Force","default":false},"include_geojson":{"type":"boolean","title":"Include Geojson","default":false}},"type":"object","required":["country_code"],"title":"MapSyncRequest"},"MapSyncResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"country_code":{"type":"string","title":"Country Code"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"type":"string","format":"date-time","title":"Finished At"},"levels":{"items":{"$ref":"#/components/schemas/MapSyncLevelResponse"},"type":"array","title":"Levels"}},"type":"object","required":["job_id","country_code","started_at","finished_at","levels"],"title":"MapSyncResponse"},"MapSyncTerritoryRequest":{"properties":{"country_code":{"type":"string","title":"Country Code"},"level":{"type":"string","title":"Level"},"code":{"type":"string","title":"Code"},"force":{"type":"boolean","title":"Force","default":false},"include_geojson":{"type":"boolean","title":"Include Geojson","default":false}},"type":"object","required":["country_code","level","code"],"title":"MapSyncTerritoryRequest"},"Meta":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"timeslot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},"type":"object","required":["timestamp"],"title":"Meta"},"MostCommentedActor":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"actor_name":{"type":"string","title":"Actor Name"},"total_comments":{"type":"integer","title":"Total Comments"}},"type":"object","required":["actor_id","actor_name","total_comments"],"title":"MostCommentedActor"},"MostVotedActor":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"actor_name":{"type":"string","title":"Actor Name"},"total_votes":{"type":"integer","title":"Total Votes"}},"type":"object","required":["actor_id","actor_name","total_votes"],"title":"MostVotedActor"},"NomenclatureSchema":{"properties":{"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Position: favorable, opposed, neutral, etc."},"intensity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intensity","description":"Intensity: extreme, strong, moderate, weak, none"},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment","description":"Sentiment: positive, negative, neutral"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category for grouping"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Additional tags"}},"type":"object","title":"NomenclatureSchema","description":"OLAP classification metadata for an item."},"OCRStatusResponse":{"properties":{"submission_id":{"type":"string","format":"uuid","title":"Submission Id"},"station_code":{"type":"string","title":"Station Code"},"status":{"type":"string","title":"Status"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At"},"extracted_fields":{"additionalProperties":true,"type":"object","title":"Extracted Fields"},"confidence_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence Score"}},"type":"object","required":["submission_id","station_code","status","uploaded_at"],"title":"OCRStatusResponse"},"OCRSubmissionResponse":{"properties":{"submission_id":{"type":"string","format":"uuid","title":"Submission Id"},"station_code":{"type":"string","title":"Station Code"},"status":{"type":"string","title":"Status"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"}},"type":"object","required":["submission_id","station_code","status","uploaded_at"],"title":"OCRSubmissionResponse"},"OCRUploadRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"URL MinIO/S3 of the uploaded PV (optional when using multipart upload)."},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type","description":"Mime type of the uploaded image."},"captured_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Captured At","description":"Capture timestamp provided by the client."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Additional metadata (device, operator, etc.)."},"uploaded_by":{"type":"string","maxLength":120,"minLength":3,"title":"Uploaded By","description":"Operator identifier."}},"type":"object","required":["uploaded_by"],"title":"OCRUploadRequest"},"OCRValidationRequest":{"properties":{"reviewer":{"type":"string","maxLength":120,"minLength":3,"title":"Reviewer"},"corrections":{"additionalProperties":true,"type":"object","title":"Corrections"},"notes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Notes"}},"type":"object","required":["reviewer"],"title":"OCRValidationRequest"},"OCRValidationResponse":{"properties":{"submission_id":{"type":"string","format":"uuid","title":"Submission Id"},"station_code":{"type":"string","title":"Station Code"},"status":{"type":"string","title":"Status"},"validated_at":{"type":"string","format":"date-time","title":"Validated At"},"reviewer":{"type":"string","title":"Reviewer"}},"type":"object","required":["submission_id","station_code","status","validated_at","reviewer"],"title":"OCRValidationResponse"},"OfficialResultsComparisonResponse":{"properties":{"official":{"additionalProperties":{"type":"number"},"type":"object","title":"Official"},"consensus":{"additionalProperties":{"type":"number"},"type":"object","title":"Consensus"}},"type":"object","required":["official","consensus"],"title":"OfficialResultsComparisonResponse"},"OfficialResultsRequest":{"properties":{"territorial_level":{"type":"string","maxLength":64,"minLength":1,"title":"Territorial Level"},"territorial_value":{"type":"string","maxLength":128,"minLength":1,"title":"Territorial Value"},"metrics":{"additionalProperties":{"type":"number"},"type":"object","title":"Metrics"},"source_type":{"type":"string","maxLength":64,"title":"Source Type","default":"official"},"document_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Url"},"document_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Name"}},"type":"object","required":["territorial_level","territorial_value"],"title":"OfficialResultsRequest"},"OfficialResultsResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"territorial_level":{"type":"string","title":"Territorial Level"},"territorial_value":{"type":"string","title":"Territorial Value"},"metrics":{"additionalProperties":{"type":"number"},"type":"object","title":"Metrics"},"source_type":{"type":"string","title":"Source Type"},"document_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Url"},"document_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Name"},"uploaded_by":{"type":"string","title":"Uploaded By"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"version":{"type":"integer","title":"Version"}},"type":"object","required":["id","election_id","country_code","territorial_level","territorial_value","metrics","source_type","document_url","document_name","uploaded_by","uploaded_at","version"],"title":"OfficialResultsResponse"},"OpinionAnswer":{"properties":{"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"item_id":{"type":"string","format":"uuid","title":"Item Id"},"user_hash":{"type":"string","title":"User Hash"},"answer_value":{"additionalProperties":true,"type":"object","title":"Answer Value"},"answered_at":{"type":"string","format":"date-time","title":"Answered At"},"city_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Code"},"department_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Code"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},"type":"object","required":["campaign_id","item_id","user_hash","answer_value","answered_at"],"title":"OpinionAnswer"},"OpinionAnswerCreate":{"properties":{"item_id":{"type":"string","format":"uuid","title":"Item Id"},"answer_value":{"additionalProperties":true,"type":"object","title":"Answer Value"}},"type":"object","required":["item_id","answer_value"],"title":"OpinionAnswerCreate"},"OpinionCampaign":{"properties":{"title":{"type":"string","title":"Title"},"scope_geo":{"type":"string","title":"Scope Geo"},"target_filter":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Target Filter"},"start_at":{"type":"string","format":"date-time","title":"Start At"},"end_at":{"type":"string","format":"date-time","title":"End At"},"max_respondents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Respondents"},"id":{"type":"string","format":"uuid","title":"Id"},"code":{"type":"string","title":"Code"},"owner_identity_id":{"type":"string","title":"Owner Identity Id"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code"},"status":{"$ref":"#/components/schemas/CampaignStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/OpinionItem"},"type":"array","title":"Items","default":[]}},"type":"object","required":["title","scope_geo","start_at","end_at","id","code","owner_identity_id","status","created_at","updated_at"],"title":"OpinionCampaign"},"OpinionCampaignCreate":{"properties":{"title":{"type":"string","title":"Title"},"scope_geo":{"type":"string","title":"Scope Geo"},"target_filter":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Target Filter"},"start_at":{"type":"string","format":"date-time","title":"Start At"},"end_at":{"type":"string","format":"date-time","title":"End At"},"max_respondents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Respondents"},"code":{"type":"string","title":"Code"},"template_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Code"}},"type":"object","required":["title","scope_geo","start_at","end_at","code"],"title":"OpinionCampaignCreate"},"OpinionItem":{"properties":{"item_type":{"$ref":"#/components/schemas/ItemType"},"label":{"type":"string","title":"Label"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["item_type","label","id","campaign_id","created_at"],"title":"OpinionItem"},"OpinionItemCreate":{"properties":{"item_type":{"$ref":"#/components/schemas/ItemType"},"label":{"type":"string","title":"Label"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"}},"type":"object","required":["item_type","label"],"title":"OpinionItemCreate"},"OpinionItemSchema":{"properties":{"code":{"type":"string","title":"Code"},"type":{"type":"string","title":"Type"},"label":{"type":"string","title":"Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"type":"integer","title":"Position"},"options":{"items":{"$ref":"#/components/schemas/CandidateOptionSchema"},"type":"array","title":"Options"},"required":{"type":"boolean","title":"Required","default":true},"config":{"additionalProperties":true,"type":"object","title":"Config"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"rich_content":{"anyOf":[{"$ref":"#/components/schemas/app__api__v3__opinion__schemas__RichContentSchema"},{"type":"null"}]}},"type":"object","required":["code","type","label","position","options"],"title":"OpinionItemSchema","description":"An item within a campaign (question with candidates)."},"OpinionMeta":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"cached":{"type":"boolean","title":"Cached","default":false},"cache_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cache Expires At"}},"type":"object","required":["timestamp"],"title":"OpinionMeta","description":"API response metadata."},"OpinionTypeListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/OpinionTypeSchema"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"OpinionTypeListResponse","description":"API response for opinion types."},"OpinionTypeSchema":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"default_template_code":{"type":"string","title":"Default Template Code","default":""},"max_items":{"type":"integer","title":"Max Items","default":0},"max_options_per_item":{"type":"integer","title":"Max Options Per Item","default":0},"allowed_item_types":{"items":{"type":"string"},"type":"array","title":"Allowed Item Types"},"default_config":{"additionalProperties":true,"type":"object","title":"Default Config"}},"type":"object","required":["code","name"],"title":"OpinionTypeSchema","description":"Business opinion type definition."},"PVImageUploadResponse":{"properties":{"image_url":{"type":"string","title":"Image Url"},"signed_url":{"type":"string","title":"Signed Url"},"object_key":{"type":"string","title":"Object Key"}},"type":"object","required":["image_url","signed_url","object_key"],"title":"PVImageUploadResponse","description":"Response for PV paper image upload."},"Pagination":{"properties":{"total":{"type":"integer","title":"Total"},"offset":{"type":"integer","title":"Offset"},"limit":{"type":"integer","title":"Limit"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["total","offset","limit","has_more"],"title":"Pagination"},"PaginationInfo":{"properties":{"limit":{"type":"integer","minimum":1.0,"title":"Limit","description":"Limite par page"},"offset":{"type":"integer","minimum":0.0,"title":"Offset","description":"Offset"},"has_more":{"type":"boolean","title":"Has More","description":"Plus de résultats disponibles"}},"type":"object","required":["limit","offset","has_more"],"title":"PaginationInfo","description":"Info pagination","example":{"has_more":false,"limit":100,"offset":0}},"PathItem":{"properties":{"level":{"type":"string","title":"Level","description":"Niveau"},"code":{"type":"string","title":"Code","description":"Code"},"name":{"type":"string","title":"Name","description":"Nom"}},"type":"object","required":["level","code","name"],"title":"PathItem","description":"Item chemin hiérarchique","example":{"code":"REG-11","level":"region","name":"Île-de-France"}},"PauseResumeResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"PauseResumeResponse","description":"Response for pause/resume endpoints."},"PollingStationEnrollmentRequest":{"properties":{"station_code":{"type":"string","title":"Station Code"}},"type":"object","required":["station_code"],"title":"PollingStationEnrollmentRequest"},"PollingStationEnrollmentResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"station_code":{"type":"string","title":"Station Code"},"status":{"type":"string","title":"Status"}},"type":"object","required":["election_code","station_code","status"],"title":"PollingStationEnrollmentResponse"},"PrepareRequest":{"properties":{"country_code":{"type":"string","title":"Country Code","description":"Country code (e.g., FR)"},"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code","description":"Election code (optional)"},"target_comment_ratio":{"type":"number","title":"Target Comment Ratio","description":"Target comment ratio (0.0-1.0)","default":0.3},"primary_language":{"type":"string","title":"Primary Language","description":"Primary language","default":"fr"},"language_mix":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Language Mix","description":"Language mix (e.g., {'fr': 0.65, 'en': 0.30})"},"moderation_ratios":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Moderation Ratios","description":"Moderation ratios"},"template_diversity":{"type":"string","title":"Template Diversity","description":"Template diversity","default":"high"},"context_aware":{"type":"boolean","title":"Context Aware","description":"Enable context adaptation","default":true},"dry_run":{"type":"boolean","title":"Dry Run","description":"Dry run (no write)","default":false}},"type":"object","required":["country_code"],"title":"PrepareRequest"},"QuestionnaireCampaignResultsSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code"},"campaign_title":{"type":"string","title":"Campaign Title"},"total_answers":{"type":"integer","title":"Total Answers"},"unique_voters":{"type":"integer","title":"Unique Voters"},"questions":{"items":{"$ref":"#/components/schemas/QuestionnaireQuestionResultSchema"},"type":"array","title":"Questions"},"last_updated":{"type":"string","title":"Last Updated"}},"type":"object","required":["campaign_code","campaign_title","total_answers","unique_voters","questions","last_updated"],"title":"QuestionnaireCampaignResultsSchema","description":"Aggregated results for a questionnaire campaign."},"QuestionnaireOptionResultSchema":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"},"percentage":{"type":"number","title":"Percentage"}},"type":"object","required":["value","label","count","percentage"],"title":"QuestionnaireOptionResultSchema","description":"Aggregated result for one questionnaire option."},"QuestionnaireOptionSchema":{"properties":{"value":{"type":"string","title":"Value","description":"Stored response value"},"label":{"type":"string","title":"Label","description":"Displayed option label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional helper text"}},"type":"object","required":["value","label"],"title":"QuestionnaireOptionSchema","description":"Option for a questionnaire question."},"QuestionnaireQuestionResultSchema":{"properties":{"item_code":{"type":"string","title":"Item Code"},"label":{"type":"string","title":"Label"},"item_type":{"type":"string","title":"Item Type"},"total_answers":{"type":"integer","title":"Total Answers"},"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"},"results":{"items":{"$ref":"#/components/schemas/QuestionnaireOptionResultSchema"},"type":"array","title":"Results"}},"type":"object","required":["item_code","label","item_type","total_answers","results"],"title":"QuestionnaireQuestionResultSchema","description":"Aggregated results for one questionnaire question."},"QuestionnaireQuestionSchema":{"properties":{"code":{"type":"string","minLength":2,"title":"Code","description":"Unique question code"},"label":{"type":"string","minLength":1,"title":"Label","description":"Question label"},"description":{"type":"string","title":"Description","description":"Optional question description","default":""},"position":{"type":"integer","minimum":1.0,"title":"Position","description":"Display order"},"response_type":{"type":"string","title":"Response Type","description":"RATING, BOOLEAN, SINGLE, MULTI"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Analytical tags"},"labels":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Labels","description":"Named labels for BOOLEAN or custom scales"},"scale":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Scale","description":"Scale definition for rating questions"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content","description":"Question rich content"},"options":{"items":{"$ref":"#/components/schemas/QuestionnaireOptionSchema"},"type":"array","title":"Options","description":"Explicit options"},"required":{"type":"boolean","title":"Required","description":"Whether the question must be answered","default":true}},"type":"object","required":["code","label","position","response_type"],"title":"QuestionnaireQuestionSchema","description":"Question definition for questionnaire-mode campaigns."},"QuestionnaireResultsAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/QuestionnaireCampaignResultsSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"QuestionnaireResultsAPIResponse","description":"API response for questionnaire campaign results."},"RankingActor":{"properties":{"rank":{"type":"integer","title":"Rank"},"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_name":{"type":"string","title":"Actor Name","default":"Unknown"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_votes":{"type":"integer","title":"Favorable Votes"},"defavorable_votes":{"type":"integer","title":"Defavorable Votes"},"neutre_votes":{"type":"integer","title":"Neutre Votes"},"net_score":{"type":"number","title":"Net Score"},"unique_voters":{"type":"integer","title":"Unique Voters"}},"type":"object","required":["rank","actor_id","total_votes","favorable_votes","defavorable_votes","neutre_votes","net_score","unique_voters"],"title":"RankingActor","description":"Actor info in ranking."},"RankingData":{"properties":{"country_code":{"type":"string","title":"Country Code"},"timeslot":{"type":"string","title":"Timeslot"},"total_actors":{"type":"integer","title":"Total Actors"},"ranking":{"items":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__RankingItem"},"type":"array","title":"Ranking"}},"type":"object","required":["country_code","timeslot","total_actors","ranking"],"title":"RankingData"},"ReloadCountriesResponse":{"properties":{"status":{"type":"string","title":"Status"},"added":{"items":{"type":"string"},"type":"array","title":"Added"},"removed":{"items":{"type":"string"},"type":"array","title":"Removed"},"total_countries":{"type":"integer","title":"Total Countries"}},"type":"object","required":["status","added","removed","total_countries"],"title":"ReloadCountriesResponse","description":"Response for POST /admin/scheduler/reload-countries."},"RemoveCampaignItemAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/RemoveCampaignItemResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"RemoveCampaignItemAPIResponse","description":"API response for item removal."},"RemoveCampaignItemResponse":{"properties":{"removed":{"type":"string","title":"Removed","description":"Removed item code"},"remaining_items":{"type":"integer","title":"Remaining Items","description":"Remaining items count"}},"type":"object","required":["removed","remaining_items"],"title":"RemoveCampaignItemResponse","description":"Response after removing item from campaign."},"RemoveItemAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/RemoveItemResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"RemoveItemAPIResponse","description":"API response for item removal."},"RemoveItemRequest":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Code of the item to remove"}},"type":"object","required":["item_code"],"title":"RemoveItemRequest","description":"Request to remove an item from a campaign."},"RemoveItemResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"campaign_code":{"type":"string","title":"Campaign Code"},"item_code":{"type":"string","title":"Item Code"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["success","campaign_code","item_code","deleted"],"title":"RemoveItemResponse","description":"Response after removing an item."},"ReorderItemsAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/ReorderItemsResponse"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ReorderItemsAPIResponse","description":"API response for reordering."},"ReorderItemsRequest":{"properties":{"positions":{"items":{"$ref":"#/components/schemas/ItemPositionUpdate"},"type":"array","minItems":1,"title":"Positions"}},"type":"object","required":["positions"],"title":"ReorderItemsRequest","description":"Request to reorder campaign items."},"ReorderItemsResponse":{"properties":{"updated":{"type":"integer","title":"Updated","description":"Number of items updated"}},"type":"object","required":["updated"],"title":"ReorderItemsResponse","description":"Response after reordering."},"ReplaceCampaignItemsRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InlineItemSchema"},"type":"array","maxItems":50,"minItems":1,"title":"Items","description":"Full replacement set for the campaign items."}},"type":"object","required":["items"],"title":"ReplaceCampaignItemsRequest","description":"Replace the full set of items attached to a campaign."},"ReplaceCampaignItemsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"items_count":{"type":"integer","title":"Items Count"},"item_codes":{"items":{"type":"string"},"type":"array","title":"Item Codes"}},"type":"object","required":["campaign_code","items_count","item_codes"],"title":"ReplaceCampaignItemsResponse","description":"Response after replacing campaign items."},"ResultsAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CampaignResultsSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"ResultsAPIResponse","description":"API response for results."},"ResultsDataPoint":{"properties":{"candidate":{"type":"string","title":"Candidate"},"votes":{"type":"integer","title":"Votes"},"percentage":{"type":"number","title":"Percentage"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","required":["candidate","votes","percentage"],"title":"ResultsDataPoint"},"SchedulerConfigSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code"},"country_code":{"type":"string","title":"Country Code"},"is_active":{"type":"boolean","title":"Is Active"},"cadence_minutes":{"type":"integer","title":"Cadence Minutes"},"batch_size":{"type":"integer","title":"Batch Size"},"last_execution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Execution"},"next_execution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Execution"},"total_eligible_voters":{"type":"integer","title":"Total Eligible Voters","default":0},"total_votes_cast":{"type":"integer","title":"Total Votes Cast","default":0},"is_exhausted":{"type":"boolean","title":"Is Exhausted","default":false},"is_expired":{"type":"boolean","title":"Is Expired","default":false},"disable_reason":{"type":"string","title":"Disable Reason","default":""}},"type":"object","required":["campaign_code","country_code","is_active","cadence_minutes","batch_size"],"title":"SchedulerConfigSchema","description":"Scheduler configuration for a campaign."},"SchedulerStatus":{"properties":{"running":{"type":"boolean","title":"Running"},"state":{"type":"string","title":"State"},"uptime_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Uptime Seconds"},"jobs_count":{"type":"integer","title":"Jobs Count"}},"type":"object","required":["running","state","jobs_count"],"title":"SchedulerStatus","description":"Overall scheduler status."},"SchedulerStatusResponse":{"properties":{"scheduler":{"$ref":"#/components/schemas/SchedulerStatus"},"jobs":{"items":{"$ref":"#/components/schemas/JobInfo"},"type":"array","title":"Jobs"}},"type":"object","required":["scheduler","jobs"],"title":"SchedulerStatusResponse","description":"Response for GET /admin/scheduler/status."},"ScopeZoneSchema":{"properties":{"code":{"type":"string","title":"Code","description":"Zone code (e.g. 33, 75)"},"name":{"type":"string","title":"Name","description":"Zone display name (e.g. Gironde, Paris)"}},"type":"object","required":["code","name"],"title":"ScopeZoneSchema","description":"A territorial zone within a campaign's scope."},"SearchResultItem":{"properties":{"level":{"type":"string","title":"Level","description":"Niveau trouvé"},"code":{"type":"string","title":"Code","description":"Code territoire"},"name":{"type":"string","title":"Name","description":"Nom territoire"},"total_votes":{"type":"integer","minimum":0.0,"title":"Total Votes","description":"Total votes"},"path":{"items":{"type":"string"},"type":"array","title":"Path","description":"Chemin codes [country, region?, dept?, commune?, station?]"},"path_labels":{"items":{"type":"string"},"type":"array","title":"Path Labels","description":"Chemin noms lisibles"}},"type":"object","required":["level","code","name","total_votes","path","path_labels"],"title":"SearchResultItem","description":"Résultat recherche arborescence","example":{"code":"COM-75056","level":"commune","name":"Paris","path":["FR","REG-11","DEP-75","COM-75056"],"path_labels":["France","Île-de-France","Paris (dept)","Paris (commune)"],"total_votes":1234567}},"SentimentDataPoint":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"positive_percent":{"type":"number","title":"Positive Percent"},"neutral_percent":{"type":"number","title":"Neutral Percent"},"negative_percent":{"type":"number","title":"Negative Percent"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["timestamp","positive_percent","neutral_percent","negative_percent","total_count"],"title":"SentimentDataPoint","description":"Single point in sentiment timeline."},"SentimentTimelineResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SentimentDataPoint"},"type":"array","title":"Data"},"period":{"type":"string","title":"Period"}},"type":"object","required":["data","period"],"title":"SentimentTimelineResponse","description":"Sentiment evolution over time."},"SimulationAssignManagersRequest":{"properties":{"prepare_identity":{"type":"boolean","title":"Prepare Identity","description":"Créer/mettre à jour les comptes Identity avant affectation","default":true},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"}},"type":"object","title":"SimulationAssignManagersRequest"},"SimulationBlueprintPvRequest":{"properties":{"participation_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Participation Rate","default":0.72},"blank_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Blank Rate","default":0.02},"invalid_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Invalid Rate","default":0.01},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Seed pour la répartition aléatoire des voix"}},"type":"object","title":"SimulationBlueprintPvRequest"},"SimulationCalculateStationsRequest":{"properties":{"capacity_per_station":{"type":"integer","exclusiveMinimum":0.0,"title":"Capacity Per Station","description":"Nombre maximum d'électeurs par bureau","default":500},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Seed pour reproduction des calculs"},"min_population":{"type":"integer","minimum":1.0,"title":"Min Population","description":"Population minimale utilisée lorsque la donnée est manquante","default":100}},"type":"object","title":"SimulationCalculateStationsRequest"},"SimulationImportPvRequest":{"properties":{"include_feedback":{"type":"boolean","title":"Include Feedback","default":false}},"type":"object","title":"SimulationImportPvRequest"},"SimulationImportStationsRequest":{"properties":{"overwrite":{"type":"boolean","title":"Overwrite","description":"Remplacer les stations déjà simulées","default":true}},"type":"object","title":"SimulationImportStationsRequest"},"SimulationJob":{"properties":{"id":{"type":"string","title":"Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"status":{"type":"string","title":"Status"},"total_bots":{"type":"integer","title":"Total Bots"},"processed_bots":{"type":"integer","title":"Processed Bots"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","campaign_id","status","total_bots","processed_bots","started_at"],"title":"SimulationJob"},"SimulationJobResponse":{"properties":{"job_id":{"type":"string","format":"uuid","title":"Job Id"},"step":{"type":"string","title":"Step"},"status":{"type":"string","title":"Status"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"type":"string","format":"date-time","title":"Finished At"},"table_counts":{"items":{"$ref":"#/components/schemas/SimulationTableCount"},"type":"array","title":"Table Counts"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["job_id","step","status","started_at","finished_at"],"title":"SimulationJobResponse"},"SimulationPrepareRequest":{"properties":{"force":{"type":"boolean","title":"Force","description":"Forcer la réimportation des référentiels","default":false}},"type":"object","title":"SimulationPrepareRequest"},"SimulationSimulateVotesRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Réservé pour la V2 (votes individuels)","default":false}},"type":"object","title":"SimulationSimulateVotesRequest"},"SimulationTableCount":{"properties":{"table":{"type":"string","title":"Table"},"total":{"type":"integer","title":"Total"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},"type":"object","required":["table","total"],"title":"SimulationTableCount"},"SourceLink":{"properties":{"label":{"type":"string","maxLength":200,"title":"Label"},"url":{"type":"string","maxLength":2000,"title":"Url"}},"type":"object","required":["label","url"],"title":"SourceLink","description":"External source link displayed under campaign content."},"StationAssignedCitizensResponse":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_name":{"type":"string","title":"Station Name"},"assigned_count":{"type":"integer","title":"Assigned Count"},"items":{"items":{"$ref":"#/components/schemas/StationCitizenInfo"},"type":"array","title":"Items"}},"type":"object","required":["station_id","station_name","assigned_count","items"],"title":"StationAssignedCitizensResponse"},"StationAssignmentRequest":{"properties":{"citizen_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Citizen Ids"}},"type":"object","required":["citizen_ids"],"title":"StationAssignmentRequest"},"StationAssignmentResponse":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_name":{"type":"string","title":"Station Name"},"assigned_count":{"type":"integer","title":"Assigned Count"},"status":{"type":"string","title":"Status","default":"success"}},"type":"object","required":["station_id","station_name","assigned_count"],"title":"StationAssignmentResponse"},"StationAvailableCitizensResponse":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_name":{"type":"string","title":"Station Name"},"city_code":{"type":"string","title":"City Code"},"available_count":{"type":"integer","title":"Available Count"},"items":{"items":{"$ref":"#/components/schemas/StationCitizenInfo"},"type":"array","title":"Items"}},"type":"object","required":["station_id","station_name","city_code","available_count","items"],"title":"StationAvailableCitizensResponse"},"StationCitizenInfo":{"properties":{"citizen_id":{"type":"string","format":"uuid","title":"Citizen Id"},"display_name":{"type":"string","title":"Display Name"},"enrolled_at":{"type":"string","format":"date-time","title":"Enrolled At"},"declaration_count":{"type":"integer","title":"Declaration Count","default":0},"validation_count":{"type":"integer","title":"Validation Count","default":0},"assigned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assigned At"}},"type":"object","required":["citizen_id","display_name","enrolled_at"],"title":"StationCitizenInfo"},"StationDeclarationRequest":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code"},"territorial_path":{"items":{"type":"string"},"type":"array","title":"Territorial Path"},"template_level_orders":{"items":{"type":"integer"},"type":"array","title":"Template Level Orders"},"free_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Free Code"},"free_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Free Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"declared_registered_voters":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Declared Registered Voters"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["election_id","country_code","territorial_path","template_level_orders"],"title":"StationDeclarationRequest"},"StationDeclarationResponse":{"properties":{"declaration_id":{"type":"string","format":"uuid","title":"Declaration Id"},"citizen_id":{"type":"string","format":"uuid","title":"Citizen Id"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["declaration_id","citizen_id"],"title":"StationDeclarationResponse"},"StationDetailAttachment":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"object_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Key"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"uploaded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Uploaded At"}},"type":"object","title":"StationDetailAttachment"},"StationDetailConsensus":{"properties":{"consensus_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Consensus Rate"},"agree_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agree Count"},"disagree_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disagree Count"},"feedback_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feedback Count"}},"type":"object","required":["consensus_rate","agree_count","disagree_count","feedback_count"],"title":"StationDetailConsensus"},"StationDetailResponse":{"properties":{"station":{"additionalProperties":true,"type":"object","title":"Station"},"tally_sheet":{"additionalProperties":true,"type":"object","title":"Tally Sheet"},"votes":{"items":{"$ref":"#/components/schemas/StationDetailVote"},"type":"array","title":"Votes"},"consensus":{"$ref":"#/components/schemas/StationDetailConsensus"},"attachments":{"items":{"$ref":"#/components/schemas/StationDetailAttachment"},"type":"array","title":"Attachments"},"feedback":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Feedback"}},"type":"object","required":["station","tally_sheet","votes","consensus","attachments","feedback"],"title":"StationDetailResponse"},"StationDetailVote":{"properties":{"candidate_code":{"type":"string","title":"Candidate Code"},"candidate_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"votes":{"type":"integer","title":"Votes"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"}},"type":"object","required":["candidate_code","votes"],"title":"StationDetailVote"},"StationFeedbackRequest":{"properties":{"station_code":{"type":"string","title":"Station Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["station_code","message"],"title":"StationFeedbackRequest"},"StationFeedbackResponse":{"properties":{"station_code":{"type":"string","title":"Station Code"},"activity_id":{"type":"string","format":"uuid","title":"Activity Id"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"status":{"type":"string","title":"Status","default":"recorded"}},"type":"object","required":["station_code","activity_id","received_at"],"title":"StationFeedbackResponse"},"StationLinkRequest":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"}},"type":"object","required":["election_id","country_code","polling_station_id"],"title":"StationLinkRequest"},"StationLinkResponse":{"properties":{"citizen_id":{"type":"string","format":"uuid","title":"Citizen Id"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"station_code":{"type":"string","title":"Station Code"},"status":{"type":"string","title":"Status","default":"linked"},"already_linked":{"type":"boolean","title":"Already Linked","default":false}},"type":"object","required":["citizen_id","polling_station_id","station_code"],"title":"StationLinkResponse"},"StationManagerAssignRequest":{"properties":{"station_code":{"type":"string","minLength":1,"title":"Station Code"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["station_code"],"title":"StationManagerAssignRequest"},"StationManagerAssignResponse":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_code":{"type":"string","title":"Station Code"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"country_code":{"type":"string","title":"Country Code"},"identity_user_id":{"type":"string","title":"Identity User Id"},"assigned_at":{"type":"string","format":"date-time","title":"Assigned At"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["station_id","station_code","election_id","country_code","identity_user_id","assigned_at"],"title":"StationManagerAssignResponse"},"StationReviewRequest":{"properties":{"status":{"type":"string","pattern":"^(accepted|rejected)$","title":"Status"},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","required":["status"],"title":"StationReviewRequest"},"StationReviewResponse":{"properties":{"declaration_id":{"type":"string","format":"uuid","title":"Declaration Id"},"station_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Station Id"},"station_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Code"},"status":{"type":"string","title":"Status"},"already_processed":{"type":"boolean","title":"Already Processed","default":false}},"type":"object","required":["declaration_id","status"],"title":"StationReviewResponse"},"StationStatusData":{"properties":{"status":{"type":"string","title":"Status"},"count":{"type":"integer","title":"Count"},"percentage":{"type":"number","title":"Percentage"}},"type":"object","required":["status","count","percentage"],"title":"StationStatusData"},"StationUnassignmentResponse":{"properties":{"citizen_id":{"type":"string","format":"uuid","title":"Citizen Id"},"station_id":{"type":"string","format":"uuid","title":"Station Id"},"status":{"type":"string","title":"Status","default":"unassigned"}},"type":"object","required":["citizen_id","station_id"],"title":"StationUnassignmentResponse"},"SubscriptionCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"filter_domains":{"items":{"type":"string"},"type":"array","title":"Filter Domains","default":[]},"filter_sentiments":{"items":{"type":"string"},"type":"array","title":"Filter Sentiments","default":[]},"filter_geo_level":{"anyOf":[{"$ref":"#/components/schemas/GeoLevel"},{"type":"null"}]},"filter_location_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Location Code"},"filter_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Language"}},"type":"object","required":["name"],"title":"SubscriptionCreate","description":"Request to create a subscription."},"SubscriptionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"filter_domains":{"items":{"type":"string"},"type":"array","title":"Filter Domains","default":[]},"filter_sentiments":{"items":{"type":"string"},"type":"array","title":"Filter Sentiments","default":[]},"filter_geo_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Geo Level"},"filter_location_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Location Code"},"filter_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Language"},"is_active":{"type":"boolean","title":"Is Active","default":true},"order_index":{"type":"integer","title":"Order Index","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","name","created_at","updated_at"],"title":"SubscriptionResponse","description":"Subscription details."},"SubscriptionUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"filter_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Filter Domains"},"filter_sentiments":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Filter Sentiments"},"filter_geo_level":{"anyOf":[{"$ref":"#/components/schemas/GeoLevel"},{"type":"null"}]},"filter_location_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Location Code"},"filter_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Language"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"}},"type":"object","title":"SubscriptionUpdate","description":"Request to update a subscription."},"SubscriptionsListResponse":{"properties":{"subscriptions":{"items":{"$ref":"#/components/schemas/SubscriptionResponse"},"type":"array","title":"Subscriptions"}},"type":"object","required":["subscriptions"],"title":"SubscriptionsListResponse","description":"List of user subscriptions."},"TableCountSummary":{"properties":{"table":{"type":"string","title":"Table"},"total":{"type":"integer","title":"Total"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},"type":"object","required":["table","total"],"title":"TableCountSummary"},"TallySheetAttachmentResponse":{"properties":{"tally_sheet_id":{"type":"string","format":"uuid","title":"Tally Sheet Id"},"url":{"type":"string","title":"Url"},"object_key":{"type":"string","title":"Object Key"},"file_name":{"type":"string","title":"File Name"},"content_type":{"type":"string","title":"Content Type"},"size_bytes":{"type":"integer","title":"Size Bytes"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"}},"type":"object","required":["tally_sheet_id","url","object_key","file_name","content_type","size_bytes","uploaded_at"],"title":"TallySheetAttachmentResponse"},"TallySheetConsensusSummary":{"properties":{"consensus_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Consensus Rate"},"agree_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agree Count"},"disagree_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disagree Count"},"feedback_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feedback Count"}},"type":"object","title":"TallySheetConsensusSummary"},"TallySheetFeedbackRequest":{"properties":{"decision":{"type":"string","pattern":"^(agree|disagree)$","title":"Decision"},"comment":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Comment"}},"type":"object","required":["decision"],"title":"TallySheetFeedbackRequest"},"TallySheetFeedbackResponse":{"properties":{"tally_sheet_id":{"type":"string","format":"uuid","title":"Tally Sheet Id"},"decision":{"type":"string","title":"Decision"},"agree_count":{"type":"integer","title":"Agree Count"},"disagree_count":{"type":"integer","title":"Disagree Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["tally_sheet_id","decision","agree_count","disagree_count","created_at"],"title":"TallySheetFeedbackResponse"},"TallySheetFeedbackSummaryResponse":{"properties":{"tally_sheet_id":{"type":"string","format":"uuid","title":"Tally Sheet Id"},"agree_count":{"type":"integer","title":"Agree Count"},"disagree_count":{"type":"integer","title":"Disagree Count"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["tally_sheet_id","agree_count","disagree_count"],"title":"TallySheetFeedbackSummaryResponse"},"TallySheetListResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"items":{"items":{"$ref":"#/components/schemas/TallySheetPreview"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_more":{"type":"boolean","title":"Has More"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"type":"object","required":["election_code","items","total","page","page_size","has_more","generated_at"],"title":"TallySheetListResponse"},"TallySheetLocationSummary":{"properties":{"country_code":{"type":"string","title":"Country Code"},"region":{"anyOf":[{"$ref":"#/components/schemas/ExplorerTerritorialSegment"},{"type":"null"}]},"department":{"anyOf":[{"$ref":"#/components/schemas/ExplorerTerritorialSegment"},{"type":"null"}]},"commune":{"anyOf":[{"$ref":"#/components/schemas/ExplorerTerritorialSegment"},{"type":"null"}]},"city":{"anyOf":[{"$ref":"#/components/schemas/ExplorerTerritorialSegment"},{"type":"null"}]}},"type":"object","required":["country_code"],"title":"TallySheetLocationSummary"},"TallySheetPreview":{"properties":{"id":{"type":"string","title":"Id"},"station_code":{"type":"string","title":"Station Code"},"station_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"location":{"$ref":"#/components/schemas/TallySheetLocationSummary"},"registered_voters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Registered Voters"},"voters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Voters"},"participation_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Participation Rate"},"consensus":{"$ref":"#/components/schemas/TallySheetConsensusSummary"},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"attachments_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Attachments Count"},"is_mine":{"type":"boolean","title":"Is Mine","default":false}},"type":"object","required":["id","station_code","location","consensus"],"title":"TallySheetPreview"},"TallySheetTemplateResponse":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_code":{"type":"string","title":"Station Code"},"station_name":{"type":"string","title":"Station Name"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"election_code":{"type":"string","title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"tally_sheet_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tally Sheet Id"},"status":{"type":"string","title":"Status","default":"draft"},"registered_voters":{"type":"integer","title":"Registered Voters"},"system_registered_voters":{"type":"integer","title":"System Registered Voters"},"voters":{"type":"integer","title":"Voters","default":0},"total_online_votes":{"type":"integer","title":"Total Online Votes","default":0},"blank_ballots":{"type":"integer","title":"Blank Ballots","default":0},"invalid_ballots":{"type":"integer","title":"Invalid Ballots","default":0},"candidates":{"items":{"$ref":"#/components/schemas/CandidateVoteItem"},"type":"array","title":"Candidates","default":[]},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"image_signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Signed Url"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["station_id","station_code","station_name","election_id","election_code","country_code","registered_voters","system_registered_voters"],"title":"TallySheetTemplateResponse","description":"Response for GET tally-sheet endpoint - loads existing PV or creates empty template."},"TaxonomyCategory":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"topics":{"items":{"$ref":"#/components/schemas/TopicSummary"},"type":"array","title":"Topics"}},"type":"object","required":["code","name"],"title":"TaxonomyCategory","description":"Category with its topics (for tree view)."},"TaxonomyDomain":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"categories":{"items":{"$ref":"#/components/schemas/TaxonomyCategory"},"type":"array","title":"Categories"}},"type":"object","required":["code","name"],"title":"TaxonomyDomain","description":"Domain with its categories and topics (for tree view)."},"TaxonomyDomainSummarySchema":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"color":{"type":"string","title":"Color"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["code","name","color","count"],"title":"TaxonomyDomainSummarySchema","description":"Summary of a taxonomy domain for campaign cards."},"TaxonomyItemSchema":{"properties":{"hierarchy_level":{"type":"integer","title":"Hierarchy Level","description":"1=domain, 2=category, 3=topic"},"code":{"type":"string","title":"Code","description":"Unique code/slug"},"name":{"type":"string","title":"Name","description":"Name in French"},"name_en":{"type":"string","title":"Name En","description":"Name in English","default":""},"description":{"type":"string","title":"Description","description":"Description in French","default":""},"parent_code":{"type":"string","title":"Parent Code","description":"Parent code (empty for L1)","default":""},"domain_code":{"type":"string","title":"Domain Code","description":"Root domain code"},"category_code":{"type":"string","title":"Category Code","description":"Category code (for L2/L3)","default":""},"topic_code":{"type":"string","title":"Topic Code","description":"Topic code (for L3 only)","default":""},"tags":{"type":"string","title":"Tags","description":"Comma-separated tags","default":""},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","description":"Hex color code"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon","description":"Icon name"},"urgency_level":{"type":"string","title":"Urgency Level","description":"low/medium/high/critical","default":"medium"},"impact_level":{"type":"string","title":"Impact Level","description":"low/medium/high/critical","default":"medium"},"is_active":{"type":"boolean","title":"Is Active","default":true},"children_count":{"type":"integer","title":"Children Count","description":"Number of child items","default":0}},"type":"object","required":["hierarchy_level","code","name","domain_code"],"title":"TaxonomyItemSchema","description":"A taxonomy item (domain, category, or topic)."},"TaxonomySyncResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/TaxonomySyncResultSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"TaxonomySyncResponse","description":"API response for taxonomy sync."},"TaxonomySyncResultSchema":{"properties":{"success":{"type":"boolean","title":"Success"},"domains_count":{"type":"integer","title":"Domains Count","default":0},"categories_count":{"type":"integer","title":"Categories Count","default":0},"topics_count":{"type":"integer","title":"Topics Count","default":0},"total_synced":{"type":"integer","title":"Total Synced","default":0},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"synced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Synced At"}},"type":"object","required":["success"],"title":"TaxonomySyncResultSchema","description":"Result of a taxonomy synchronization."},"TaxonomySyncSummary":{"properties":{"success":{"type":"boolean","title":"Success"},"domains_count":{"type":"integer","title":"Domains Count","default":0},"categories_count":{"type":"integer","title":"Categories Count","default":0},"topics_count":{"type":"integer","title":"Topics Count","default":0},"total_synced":{"type":"integer","title":"Total Synced","default":0},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success"],"title":"TaxonomySyncSummary","description":"Résumé de la synchronisation des domaines régaliens."},"TemplateDetailResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/TemplateDetailSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"TemplateDetailResponse","description":"API response for template detail."},"TemplateDetailSchema":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category"},"opinion_type_code":{"type":"string","title":"Opinion Type Code","default":"CONSULTATION"},"response_surface":{"type":"string","title":"Response Surface","default":"linear_options"},"editor_mode":{"type":"string","title":"Editor Mode","default":"linear_options_editor"},"preview_mode":{"type":"string","title":"Preview Mode","default":"linear_options_preview"},"item_type":{"type":"string","title":"Item Type","default":"SINGLE"},"item_codes":{"items":{"type":"string"},"type":"array","title":"Item Codes"},"items":{"items":{"$ref":"#/components/schemas/TemplateItemPreviewSchema"},"type":"array","title":"Items"},"validation_rules":{"additionalProperties":true,"type":"object","title":"Validation Rules"},"default_template_config":{"additionalProperties":true,"type":"object","title":"Default Template Config"},"normalized_answer_contract":{"additionalProperties":true,"type":"object","title":"Normalized Answer Contract"},"is_dynamic_items":{"type":"boolean","title":"Is Dynamic Items","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["code","name","description","category"],"title":"TemplateDetailSchema","description":"Full template details with resolved items."},"TemplateItemPreviewSchema":{"properties":{"code":{"type":"string","title":"Code","description":"Item code (e.g., 'FAVORABLE', 'OPPOSE')"},"label":{"type":"string","title":"Label","description":"Display label"},"label_short":{"type":"string","title":"Label Short","description":"Short label","default":""},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Semantic position: favorable, opposed, neutral"},"icon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Code","description":"Lucide icon name"},"color_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color Code","description":"Tailwind color class (e.g., 'green-500')"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url","description":"URL to SVG or image asset"}},"type":"object","required":["code","label"],"title":"TemplateItemPreviewSchema","description":"Preview of an item in a template."},"TemplateListItemSchema":{"properties":{"code":{"type":"string","title":"Code","description":"Template code (e.g., 'REFERENDUM_SIMPLE')"},"name":{"type":"string","title":"Name","description":"Display name"},"description":{"type":"string","title":"Description","description":"Template description","default":""},"category":{"type":"string","title":"Category","description":"Category: referendum, consultation, scale, priority, election","default":"general"},"opinion_type_code":{"type":"string","title":"Opinion Type Code","description":"Business opinion type code","default":"CONSULTATION"},"response_surface":{"type":"string","title":"Response Surface","description":"Rendering surface identifier","default":"linear_options"},"editor_mode":{"type":"string","title":"Editor Mode","description":"Admin editor mode identifier","default":"linear_options_editor"},"preview_mode":{"type":"string","title":"Preview Mode","description":"Preview renderer identifier","default":"linear_options_preview"},"item_type":{"type":"string","title":"Item Type","description":"Primary item type handled by the template","default":"SINGLE"},"items_count":{"type":"integer","title":"Items Count","description":"Number of items in template","default":0},"validation_rules":{"additionalProperties":true,"type":"object","title":"Validation Rules","description":"Template validation rules"},"default_template_config":{"additionalProperties":true,"type":"object","title":"Default Template Config","description":"Template runtime configuration"},"normalized_answer_contract":{"additionalProperties":true,"type":"object","title":"Normalized Answer Contract","description":"Analytical publication contract"},"is_dynamic_items":{"type":"boolean","title":"Is Dynamic Items","description":"Whether the template generates a dynamic number of items","default":false},"items_preview":{"items":{"$ref":"#/components/schemas/TemplateItemPreviewSchema"},"type":"array","title":"Items Preview","description":"Preview of template items"}},"type":"object","required":["code","name"],"title":"TemplateListItemSchema","description":"Template summary for list views."},"TemplateListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"items":{"$ref":"#/components/schemas/TemplateListItemSchema"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"TemplateListResponse","description":"API response for template list."},"TerritorialGlobalStats":{"properties":{"territory":{"$ref":"#/components/schemas/TerritorialInfo"},"timeslot":{"type":"string","title":"Timeslot"},"total_votes":{"type":"integer","title":"Total Votes"},"total_actors":{"type":"integer","title":"Total Actors"},"unique_voters":{"type":"integer","title":"Unique Voters"},"average_participation":{"type":"number","title":"Average Participation"}},"type":"object","required":["territory","timeslot","total_votes","total_actors","unique_voters","average_participation"],"title":"TerritorialGlobalStats","description":"Global engagement stats for a territory."},"TerritorialGlobalStatsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/TerritorialGlobalStats"}},"type":"object","required":["data"],"title":"TerritorialGlobalStatsResponse"},"TerritorialGridAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/TerritorialGridSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"TerritorialGridAPIResponse","description":"API response for territorial grid."},"TerritorialGridResponse":{"properties":{"parent":{"anyOf":[{"$ref":"#/components/schemas/TerritoryParent"},{"type":"null"}]},"children":{"items":{"$ref":"#/components/schemas/TerritoryChild"},"type":"array","title":"Children"},"pagination":{"$ref":"#/components/schemas/Pagination"}},"type":"object","required":["parent","children","pagination"],"title":"TerritorialGridResponse"},"TerritorialGridSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code"},"item_code":{"type":"string","title":"Item Code"},"item_label":{"type":"string","title":"Item Label"},"parent":{"additionalProperties":true,"type":"object","title":"Parent"},"children":{"items":{"$ref":"#/components/schemas/TerritoryResultSchema"},"type":"array","title":"Children"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"generated_at":{"type":"string","title":"Generated At"},"timeslot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeslot"}},"type":"object","required":["campaign_code","item_code","item_label","parent","children","pagination","generated_at"],"title":"TerritorialGridSchema","description":"Territorial drill-down response."},"TerritorialInfo":{"properties":{"level":{"type":"string","title":"Level"},"country_code":{"type":"string","title":"Country Code"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name"},"department_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Code"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name"},"city_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Code"},"city_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Name"}},"type":"object","required":["level","country_code"],"title":"TerritorialInfo","description":"Base territorial information."},"TerritorialLevelSummary":{"properties":{"level":{"type":"string","title":"Level"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["level","total"],"title":"TerritorialLevelSummary"},"TerritorialRanking":{"properties":{"territory":{"$ref":"#/components/schemas/TerritorialInfo"},"timeslot":{"type":"string","title":"Timeslot"},"total_actors":{"type":"integer","title":"Total Actors"},"ranking":{"items":{"$ref":"#/components/schemas/RankingActor"},"type":"array","title":"Ranking"}},"type":"object","required":["territory","timeslot","total_actors","ranking"],"title":"TerritorialRanking","description":"Actor ranking in a territory."},"TerritorialRankingResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/TerritorialRanking"}},"type":"object","required":["data"],"title":"TerritorialRankingResponse"},"TerritoryAutocompleteResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/TerritoryAutocompleteResult"},"type":"array","title":"Results"},"total":{"type":"integer","title":"Total"},"query":{"type":"string","title":"Query"}},"type":"object","required":["results","total","query"],"title":"TerritoryAutocompleteResponse","description":"Response for autocomplete search endpoint"},"TerritoryAutocompleteResult":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"type":{"type":"string","enum":["city","department","region"],"title":"Type"},"context":{"$ref":"#/components/schemas/TerritoryContext"},"coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Coordinates"},"relevance_score":{"type":"integer","title":"Relevance Score","description":"Score: 100=exact, 50=prefix, 10=contains","default":0}},"type":"object","required":["code","name","type","context"],"title":"TerritoryAutocompleteResult","description":"Single result from autocomplete search"},"TerritoryChild":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"level":{"type":"string","title":"Level"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Favorable Votes","default":0},"defavorable_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Defavorable Votes","default":0},"neutre_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Neutre Votes","default":0},"favorable_ratio":{"type":"number","title":"Favorable Ratio"},"rank":{"type":"integer","title":"Rank"},"rank_total":{"type":"integer","title":"Rank Total"},"trend_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trend 7D"},"has_children":{"type":"boolean","title":"Has Children"},"children_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Children Count"}},"type":"object","required":["code","name","level","score_net","total_votes","favorable_ratio","rank","rank_total","trend_7d","has_children"],"title":"TerritoryChild"},"TerritoryContext":{"properties":{"department":{"anyOf":[{"$ref":"#/components/schemas/TerritoryContextItem"},{"type":"null"}]},"region":{"anyOf":[{"$ref":"#/components/schemas/TerritoryContextItem"},{"type":"null"}]}},"type":"object","title":"TerritoryContext","description":"Hierarchical context for a territory result"},"TerritoryContextItem":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"}},"type":"object","required":["code","name"],"title":"TerritoryContextItem","description":"Context item for department or region reference"},"TerritoryFeature":{"properties":{"type":{"type":"string","title":"Type","default":"Feature"},"properties":{"$ref":"#/components/schemas/TerritoryProperties"},"geometry":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geometry"}},"type":"object","required":["properties"],"title":"TerritoryFeature"},"TerritoryFeatureCollection":{"properties":{"type":{"type":"string","title":"Type","default":"FeatureCollection"},"features":{"items":{"$ref":"#/components/schemas/TerritoryFeature"},"type":"array","title":"Features"}},"type":"object","required":["features"],"title":"TerritoryFeatureCollection"},"TerritoryLevel":{"type":"string","enum":["region","department","city"],"title":"TerritoryLevel"},"TerritoryParent":{"properties":{"level":{"type":"string","title":"Level"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"stats":{"$ref":"#/components/schemas/TerritoryStats"}},"type":"object","required":["level","code","name","stats"],"title":"TerritoryParent"},"TerritoryProperties":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"score_net":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score Net"},"total_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Votes"}},"additionalProperties":true,"type":"object","required":["code","name"],"title":"TerritoryProperties"},"TerritoryResolution":{"properties":{"level":{"type":"string","title":"Level"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["level"],"title":"TerritoryResolution"},"TerritoryResultSchema":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"level":{"type":"string","title":"Level"},"has_children":{"type":"boolean","title":"Has Children"},"total_votes":{"type":"integer","title":"Total Votes"},"unique_voters":{"type":"integer","title":"Unique Voters"},"results":{"items":{"$ref":"#/components/schemas/CandidateResultSchema"},"type":"array","title":"Results"},"comparison_to_parent":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Comparison To Parent"}},"type":"object","required":["code","name","level","has_children","total_votes","unique_voters","results"],"title":"TerritoryResultSchema","description":"Results for a single territory."},"TerritorySearchResult":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Coordinates"}},"type":"object","required":["code","name","type"],"title":"TerritorySearchResult"},"TerritoryStats":{"properties":{"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"}},"type":"object","required":["score_net","total_votes"],"title":"TerritoryStats"},"TimelineEvent":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date"},"type":{"type":"string","title":"Type"},"status":{"type":"string","title":"Status"},"election_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Id"},"icon_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Color"}},"type":"object","required":["id","title","type","status"],"title":"TimelineEvent"},"TokenIssueRequest":{"properties":{"election_id":{"type":"string","format":"uuid","title":"Election Id"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"country_code":{"type":"string","maxLength":3,"minLength":2,"title":"Country Code"},"count":{"type":"integer","maximum":1000.0,"exclusiveMinimum":0.0,"title":"Count","description":"Number of tokens to generate"},"qr_code_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qr Code Template","description":"Optional template to build QR URLs (use {token} placeholder)"}},"type":"object","required":["election_id","polling_station_id","country_code","count"],"title":"TokenIssueRequest"},"TokenIssueResponse":{"properties":{"tokens_created":{"type":"integer","title":"Tokens Created"},"tokens":{"items":{"type":"string"},"type":"array","title":"Tokens"}},"type":"object","required":["tokens_created","tokens"],"title":"TokenIssueResponse"},"TokenListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"tokens":{"items":{"$ref":"#/components/schemas/TokenSummaryItem"},"type":"array","title":"Tokens"}},"type":"object","required":["total","tokens"],"title":"TokenListResponse"},"TokenSummaryItem":{"properties":{"token_id":{"type":"string","format":"uuid","title":"Token Id"},"token":{"type":"string","format":"uuid","title":"Token"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"status":{"type":"string","title":"Status"},"claimed_at":{"type":"string","format":"date-time","title":"Claimed At"},"status_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Status Updated At"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["token_id","token","election_id","polling_station_id","status","claimed_at"],"title":"TokenSummaryItem"},"TopCitiesResponse":{"properties":{"cities":{"items":{"$ref":"#/components/schemas/CityStats"},"type":"array","title":"Cities"},"total_expressions":{"type":"integer","title":"Total Expressions"}},"type":"object","required":["cities","total_expressions"],"title":"TopCitiesResponse","description":"Top cities by expression count."},"TopDomainsResponse":{"properties":{"domains":{"items":{"$ref":"#/components/schemas/DomainStats"},"type":"array","title":"Domains"},"total_expressions":{"type":"integer","title":"Total Expressions"}},"type":"object","required":["domains","total_expressions"],"title":"TopDomainsResponse","description":"Top domains by expression count."},"TopicSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"full_path":{"type":"string","title":"Full Path"},"domain_code":{"type":"string","title":"Domain Code"},"domain_name":{"type":"string","title":"Domain Name"},"category_code":{"type":"string","title":"Category Code"},"category_name":{"type":"string","title":"Category Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"}},"type":"object","required":["code","name","full_path","domain_code","domain_name","category_code","category_name"],"title":"TopicSummary","description":"Topic summary for display."},"TopicsListResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"topics":{"items":{"$ref":"#/components/schemas/TopicSummary"},"type":"array","title":"Topics"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"TopicsListResponse","description":"Flat list of all topics."},"TreeChildrenResponse":{"properties":{"parent_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Level","description":"Niveau parent (None = racine)"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code","description":"Code parent"},"parent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Name","description":"Nom parent"},"children_level":{"type":"string","title":"Children Level","description":"Niveau enfants"},"total_children":{"type":"integer","minimum":0.0,"title":"Total Children","description":"Total enfants (sans pagination)"},"children":{"items":{"$ref":"#/components/schemas/TreeNodeItem"},"type":"array","title":"Children","description":"Liste enfants"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"}},"type":"object","required":["children_level","total_children","children","pagination"],"title":"TreeChildrenResponse","description":"Réponse get_children() - Lazy loading enfants","example":{"children":[{"code":"REG-11","consensus_rate":96.24,"has_anomalies":false,"has_children":true,"leading_candidate":"CAND-03","level":"region","name":"Île-de-France","participation_rate":83.38,"registered_voters":9876543,"total_votes":8234567}],"children_level":"region","pagination":{"has_more":false,"limit":100,"offset":0},"parent_code":"FR","parent_level":"country","parent_name":"France","total_children":13}},"TreeNodeItem":{"properties":{"level":{"type":"string","title":"Level","description":"Niveau: country/region/department/commune/station"},"code":{"type":"string","title":"Code","description":"Code territoire"},"name":{"type":"string","title":"Name","description":"Nom territoire"},"total_votes":{"type":"integer","minimum":0.0,"title":"Total Votes","description":"Total votes"},"registered_voters":{"type":"integer","minimum":0.0,"title":"Registered Voters","description":"Inscrits"},"participation_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Participation Rate","description":"Taux participation (%)"},"consensus_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Consensus Rate","description":"Taux consensus (%)"},"has_anomalies":{"type":"boolean","title":"Has Anomalies","description":"Territoire a des anomalies"},"leading_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leading Candidate","description":"Code candidat en tête"},"has_children":{"type":"boolean","title":"Has Children","description":"Nœud a des enfants (lazy loading)"}},"type":"object","required":["level","code","name","total_votes","registered_voters","participation_rate","consensus_rate","has_anomalies","has_children"],"title":"TreeNodeItem","description":"Item nœud arborescence TreeView","example":{"code":"REG-11","consensus_rate":96.24,"has_anomalies":false,"has_children":true,"leading_candidate":"CAND-03","level":"region","name":"Île-de-France","participation_rate":83.38,"registered_voters":9876543,"total_votes":8234567}},"TreePathResponse":{"properties":{"path":{"items":{"$ref":"#/components/schemas/PathItem"},"type":"array","title":"Path","description":"Chemin pays → nœud"}},"type":"object","required":["path"],"title":"TreePathResponse","description":"Réponse get_path() - Breadcrumb arborescence","example":{"path":[{"code":"FR","level":"country","name":"France"},{"code":"REG-11","level":"region","name":"Île-de-France"},{"code":"DEP-75","level":"department","name":"Paris"}]}},"TreeSearchResponse":{"properties":{"query":{"type":"string","minLength":3,"title":"Query","description":"Query recherche"},"total_results":{"type":"integer","minimum":0.0,"title":"Total Results","description":"Nombre résultats"},"results":{"items":{"$ref":"#/components/schemas/SearchResultItem"},"type":"array","title":"Results","description":"Résultats triés par pertinence"}},"type":"object","required":["query","total_results","results"],"title":"TreeSearchResponse","description":"Réponse search() - Recherche arborescence","example":{"query":"Paris","results":[{"code":"DEP-75","level":"department","name":"Paris","path":["FR","REG-11","DEP-75"],"path_labels":["France","Île-de-France","Paris"],"total_votes":1234567}],"total_results":3}},"TriggerJobRequest":{"properties":{"wait":{"type":"boolean","title":"Wait","description":"Wait for completion and return result","default":false}},"type":"object","title":"TriggerJobRequest","description":"Request body for POST /admin/scheduler/jobs/{id}/trigger."},"TriggerJobResponse":{"properties":{"status":{"type":"string","title":"Status"},"job_id":{"type":"string","title":"Job Id"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"stats":{"anyOf":[{"$ref":"#/components/schemas/JobExecutionStats"},{"type":"null"}]}},"type":"object","required":["status","job_id"],"title":"TriggerJobResponse","description":"Response for POST /admin/scheduler/jobs/{id}/trigger."},"TurnoutDataPoint":{"properties":{"hour":{"type":"string","title":"Hour"},"turnout":{"type":"number","title":"Turnout"},"registered":{"type":"integer","title":"Registered"}},"type":"object","required":["hour","turnout","registered"],"title":"TurnoutDataPoint"},"UnlinkActorRequest":{"properties":{"item_code":{"type":"string","title":"Item Code","description":"Target item code"},"actor_code":{"type":"string","title":"Actor Code","description":"Actor code to remove"}},"type":"object","required":["item_code","actor_code"],"title":"UnlinkActorRequest","description":"Request to unlink an actor from a campaign item."},"UpdateCampaignAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/CampaignDetailSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"UpdateCampaignAPIResponse","description":"API response for campaign update."},"UpdateCampaignDesignRequest":{"properties":{"chapo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapo","description":"Lead paragraph / hook text"},"context_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Html","description":"Contextual background (HTML)"},"stakes_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakes Html","description":"What's at stake (HTML)"},"hero_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Image Url","description":"Hero image URL"},"hero_image_alt":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Hero Image Alt","description":"Hero image alt text"},"reading_time_min":{"anyOf":[{"type":"integer","maximum":60.0,"minimum":1.0},{"type":"null"}],"title":"Reading Time Min","description":"Estimated reading time in minutes"},"blocks":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentBlock"},"type":"array","maxItems":20},{"type":"null"}],"title":"Blocks","description":"Structured editorial blocks (ContentV2)"},"source_links":{"anyOf":[{"items":{"$ref":"#/components/schemas/SourceLink"},"type":"array","maxItems":20},{"type":"null"}],"title":"Source Links","description":"External sources rendered below the campaign body"},"domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain Code","description":"Editorial domain code"},"topic_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Code","description":"Editorial topic code"},"deck_config":{"anyOf":[{"$ref":"#/components/schemas/DeckConfigSchema"},{"type":"null"}],"description":"Deck configuration stored alongside rich_content"},"response_mode":{"anyOf":[{"type":"string","enum":["PICK_ONE","PICK_MANY","RANK","RATE","CLASSIFY"]},{"type":"null"}],"title":"Response Mode","description":"Response mode mirrored in rich_content for consistency with full creation"}},"type":"object","title":"UpdateCampaignDesignRequest","description":"Request to update campaign rich content (design page)."},"UpdateCampaignDesignResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"rich_content":{"additionalProperties":true,"type":"object","title":"Rich Content"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["campaign_code","rich_content","updated_at"],"title":"UpdateCampaignDesignResponse","description":"Response after updating campaign design."},"UpdateCampaignRequest":{"properties":{"title":{"anyOf":[{"type":"string","minLength":3},{"type":"null"}],"title":"Title","description":"Campaign title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Campaign description"},"scope_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Name","description":"Display name for scope"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility","description":"PUBLIC or PRIVATE"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Campaign status (DRAFT, ACTIVE, CLOSED)"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Campaign start date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"Campaign end date (None = permanent)"},"response_mode":{"anyOf":[{"type":"string","enum":["PICK_ONE","PICK_MANY","RANK","RATE","CLASSIFY"]},{"type":"null"}],"title":"Response Mode","description":"Campaign response mode (PICK_ONE, PICK_MANY, RANK, RATE, CLASSIFY)"}},"type":"object","title":"UpdateCampaignRequest","description":"Request to update a campaign (partial update)."},"UpdateCatalogItemRequest":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Label"},"label_short":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Label Short"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"nomenclature":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Nomenclature"},"rich_content":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rich Content"},"is_special":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Special"}},"type":"object","title":"UpdateCatalogItemRequest","description":"Request to update a catalog item."},"UpdateItemRichContentRequest":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Label","description":"Display label override"},"label_extended":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Extended","description":"Extended label/subtitle"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Description of the option"},"argument_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Summary","description":"Key argument/quote"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Semantic position: favorable, opposed, neutral, nspp"},"intensity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intensity","description":"Intensity: extreme, strong, moderate, weak"},"icon_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Icon Code","description":"Lucide icon name"},"color_code":{"anyOf":[{"type":"string","maxLength":7},{"type":"null"}],"title":"Color Code","description":"Hex color code (e.g., #22c55e)"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url","description":"Image/icon URL"}},"type":"object","title":"UpdateItemRichContentRequest","description":"Request to update an item's rich content."},"UpdateItemRichContentResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"campaign_code":{"type":"string","title":"Campaign Code"},"item_code":{"type":"string","title":"Item Code"},"rich_content":{"additionalProperties":true,"type":"object","title":"Rich Content"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["campaign_code","item_code","rich_content","updated_at"],"title":"UpdateItemRichContentResponse","description":"Response after updating item rich content."},"UpdateSchedulerRequest":{"properties":{"is_active":{"type":"boolean","title":"Is Active"},"cadence_minutes":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Cadence Minutes","default":10},"batch_size":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Batch Size","default":100}},"type":"object","required":["is_active"],"title":"UpdateSchedulerRequest","description":"Request to update scheduler configuration."},"UpdateSchedulerResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"campaign_code":{"type":"string","title":"Campaign Code"},"scheduler":{"anyOf":[{"$ref":"#/components/schemas/SchedulerConfigSchema"},{"type":"null"}]},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["success","campaign_code"],"title":"UpdateSchedulerResponse","description":"Response for scheduler update."},"UserElectionListResponse":{"properties":{"elections":{"items":{"$ref":"#/components/schemas/UserElectionSummary"},"type":"array","title":"Elections"}},"type":"object","required":["elections"],"title":"UserElectionListResponse"},"UserElectionSummary":{"properties":{"election_code":{"type":"string","title":"Election Code"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"}},"type":"object","required":["election_code","name","status"],"title":"UserElectionSummary"},"UserElectionTerritoriesResponse":{"properties":{"election_code":{"type":"string","title":"Election Code"},"territories":{"items":{"$ref":"#/components/schemas/app__api__user_elections__schemas__TerritoryItem"},"type":"array","title":"Territories"}},"type":"object","required":["election_code","territories"],"title":"UserElectionTerritoriesResponse"},"UserPollingStation":{"properties":{"station_id":{"type":"string","format":"uuid","title":"Station Id"},"station_code":{"type":"string","title":"Station Code"},"station_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Name"},"election_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"},"election_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"is_primary":{"type":"boolean","title":"Is Primary","default":false},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"status":{"type":"string","title":"Status","default":"registered"}},"type":"object","required":["station_id","station_code","country_code"],"title":"UserPollingStation"},"UserPollingStationsResponse":{"properties":{"stations":{"items":{"$ref":"#/components/schemas/UserPollingStation"},"type":"array","title":"Stations"}},"type":"object","required":["stations"],"title":"UserPollingStationsResponse"},"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"},"VersionInfo":{"properties":{"version":{"type":"string","title":"Version"},"api":{"type":"string","title":"Api"},"commit":{"type":"string","title":"Commit"},"build_date":{"type":"string","title":"Build Date"}},"type":"object","required":["version","api","commit","build_date"],"title":"VersionInfo"},"VoteAPIResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/VoteResponseSchema"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["data","meta"],"title":"VoteAPIResponse","description":"API response wrapper for vote."},"VoteCounts":{"properties":{"votes_approve":{"type":"integer","title":"Votes Approve","default":0},"votes_disapprove":{"type":"integer","title":"Votes Disapprove","default":0}},"type":"object","title":"VoteCounts","description":"Vote counts for an expression."},"VoteCreate":{"properties":{"type":{"$ref":"#/components/schemas/VoteType"}},"type":"object","required":["type"],"title":"VoteCreate","description":"Request body for voting on an expression."},"VoteManagerAssignRequest":{"properties":{"identity_user_id":{"type":"string","format":"uuid","title":"Identity User Id"},"election_code":{"type":"string","title":"Election Code"},"scopes":{"items":{"$ref":"#/components/schemas/VoteManagerScope"},"type":"array","title":"Scopes"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["identity_user_id","election_code"],"title":"VoteManagerAssignRequest"},"VoteManagerAssignResponse":{"properties":{"identity_user_id":{"type":"string","title":"Identity User Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"},"election_code":{"type":"string","title":"Election Code"},"country_code":{"type":"string","title":"Country Code"},"scopes":{"items":{"$ref":"#/components/schemas/VoteManagerScopeRecord"},"type":"array","title":"Scopes"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["identity_user_id","election_id","election_code","country_code","scopes"],"title":"VoteManagerAssignResponse"},"VoteManagerRevokeResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"revoked_at":{"type":"string","format":"date-time","title":"Revoked At"}},"type":"object","required":["id","revoked_at"],"title":"VoteManagerRevokeResponse"},"VoteManagerScope":{"properties":{"level":{"type":"string","enum":["national","region","department","city","station"],"title":"Level","default":"national"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","title":"VoteManagerScope"},"VoteManagerScopeRecord":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"scope_level":{"type":"string","title":"Scope Level"},"scope_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Code"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"assigned_at":{"type":"string","format":"date-time","title":"Assigned At"}},"type":"object","required":["id","scope_level","assigned_at"],"title":"VoteManagerScopeRecord"},"VoteRequestSchema":{"properties":{"campaign_code":{"type":"string","title":"Campaign Code","description":"Campaign code (slug)"},"item_code":{"type":"string","title":"Item Code","description":"Item code (slug)"},"selected_value":{"type":"string","title":"Selected Value","description":"Selected option value (e.g., 'cand_macron')"},"comment":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Comment"},"bucket_code":{"anyOf":[{"type":"string","maxLength":40,"pattern":"^[A-Z0-9_]+$"},{"type":"null"}],"title":"Bucket Code"},"rank_in_bucket":{"anyOf":[{"type":"integer","maximum":65535.0,"minimum":1.0},{"type":"null"}],"title":"Rank In Bucket"}},"type":"object","required":["campaign_code","item_code","selected_value"],"title":"VoteRequestSchema","description":"Request to submit a vote."},"VoteResponse":{"properties":{"expression_id":{"type":"string","format":"uuid","title":"Expression Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"type":{"$ref":"#/components/schemas/VoteType"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_counts":{"$ref":"#/components/schemas/VoteCounts"}},"type":"object","required":["expression_id","user_id","type","created_at","updated_counts"],"title":"VoteResponse","description":"Response after voting."},"VoteResponseSchema":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"campaign_code":{"type":"string","title":"Campaign Code"},"selected_value":{"type":"string","title":"Selected Value"},"voted_at":{"type":"string","format":"date-time","title":"Voted At"}},"type":"object","required":["success","message","campaign_code","selected_value","voted_at"],"title":"VoteResponseSchema","description":"Response after vote submission."},"VoteResultItem":{"properties":{"candidate_code":{"type":"string","title":"Candidate Code"},"votes":{"type":"integer","minimum":0.0,"title":"Votes"},"candidate_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Candidate Id"}},"type":"object","required":["candidate_code","votes"],"title":"VoteResultItem"},"VoteSubmissionRequest":{"properties":{"election_code":{"type":"string","title":"Election Code"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"token":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Token"},"registered_voters":{"type":"integer","minimum":0.0,"title":"Registered Voters"},"voters":{"type":"integer","minimum":0.0,"title":"Voters"},"blank_ballots":{"type":"integer","minimum":0.0,"title":"Blank Ballots"},"invalid_ballots":{"type":"integer","minimum":0.0,"title":"Invalid Ballots"},"results":{"items":{"$ref":"#/components/schemas/VoteResultItem"},"type":"array","title":"Results"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["election_code","polling_station_id","registered_voters","voters","blank_ballots","invalid_ballots","results"],"title":"VoteSubmissionRequest"},"VoteSubmissionResponse":{"properties":{"tally_sheet_id":{"type":"string","format":"uuid","title":"Tally Sheet Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["tally_sheet_id","created_at"],"title":"VoteSubmissionResponse"},"VoteType":{"type":"string","enum":["approve","disapprove"],"title":"VoteType","description":"Vote types for expressions."},"app__api__citizen_profile__schemas__CitizenFavoriteCreateRequest":{"properties":{"actor_code":{"type":"string","title":"Actor Code"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"pinned_cards":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pinned Cards"}},"type":"object","required":["actor_code"],"title":"CitizenFavoriteCreateRequest"},"app__api__user_elections__schemas__TerritoryItem":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"level":{"type":"string","title":"Level"}},"type":"object","required":["code","name","level"],"title":"TerritoryItem"},"app__api__user_polling__schemas__TokenClaimRequest":{"properties":{"station_code":{"type":"string","title":"Station Code"},"device_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Fingerprint"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["station_code"],"title":"TokenClaimRequest"},"app__api__user_polling__schemas__TokenClaimResponse":{"properties":{"station_code":{"type":"string","title":"Station Code"},"token_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Token Id"},"token":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Token"},"polling_station_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Polling Station Id"},"election_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Election Id"},"claimed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Claimed At"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["station_code","token_id","token","polling_station_id","election_id","claimed_at"],"title":"TokenClaimResponse"},"app__api__v3__barometer__schemas__CurrentScoreData":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"country_code":{"type":"string","title":"Country Code"},"timeslot":{"type":"string","title":"Timeslot"},"vote_date":{"type":"string","format":"date","title":"Vote Date"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"favorable_ratio":{"type":"number","title":"Favorable Ratio"},"new_voters_today":{"type":"integer","title":"New Voters Today","default":0},"changed_votes_today":{"type":"integer","title":"Changed Votes Today","default":0},"total_commentaires":{"type":"integer","title":"Total Commentaires","default":0},"total_commentaires_approved":{"type":"integer","title":"Total Commentaires Approved","default":0}},"type":"object","required":["actor_id","country_code","timeslot","vote_date","score_net","total_votes","favorable_count","defavorable_count","neutre_count","favorable_ratio"],"title":"CurrentScoreData"},"app__api__v3__barometer__schemas__CurrentScoreResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__CurrentScoreData"},"meta":{"$ref":"#/components/schemas/BarometerMeta"}},"type":"object","required":["data","meta"],"title":"CurrentScoreResponse"},"app__api__v3__barometer__schemas__EvolutionData":{"properties":{"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"country_code":{"type":"string","title":"Country Code"},"period":{"additionalProperties":true,"type":"object","title":"Period"},"timeseries":{"items":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__EvolutionPoint"},"type":"array","title":"Timeseries"},"summary":{"$ref":"#/components/schemas/EvolutionSummary"}},"type":"object","required":["actor_id","country_code","period","timeseries","summary"],"title":"EvolutionData"},"app__api__v3__barometer__schemas__EvolutionPoint":{"properties":{"timeslot":{"type":"string","title":"Timeslot"},"date":{"type":"string","format":"date","title":"Date"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"new_voters":{"type":"integer","title":"New Voters","default":0},"changed_votes":{"type":"integer","title":"Changed Votes","default":0}},"type":"object","required":["timeslot","date","score_net","total_votes","favorable_count","defavorable_count","neutre_count"],"title":"EvolutionPoint"},"app__api__v3__barometer__schemas__EvolutionResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/app__api__v3__barometer__schemas__EvolutionData"},"meta":{"$ref":"#/components/schemas/BarometerMeta"}},"type":"object","required":["data","meta"],"title":"EvolutionResponse"},"app__api__v3__barometer__schemas__GlobalStatsResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/GlobalStatsData"},"meta":{"$ref":"#/components/schemas/BarometerMeta"}},"type":"object","required":["data","meta"],"title":"GlobalStatsResponse"},"app__api__v3__barometer__schemas__RankingItem":{"properties":{"rank":{"type":"integer","title":"Rank"},"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"actor_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Code"},"actor_name":{"type":"string","title":"Actor Name"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"trend_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trend 7D"}},"type":"object","required":["rank","actor_id","actor_name","score_net","total_votes","favorable_count","defavorable_count"],"title":"RankingItem"},"app__api__v3__barometer__schemas__RankingResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"data":{"$ref":"#/components/schemas/RankingData"},"meta":{"$ref":"#/components/schemas/BarometerMeta"}},"type":"object","required":["data","meta"],"title":"RankingResponse"},"app__api__v3__opinion__schemas__RichContentSchema":{"properties":{"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Type"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"label_extended":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Extended"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"argument_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Summary"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"intensity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intensity"},"icon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Code"},"color_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color Code"}},"type":"object","title":"RichContentSchema","description":"Rich content for an item."},"app__api__v3__opinion__schemas__TaxonomyTreeResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"items":{"items":{"$ref":"#/components/schemas/TaxonomyItemSchema"},"type":"array","title":"Items"},"level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Level"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"total":{"type":"integer","title":"Total"},"meta":{"$ref":"#/components/schemas/OpinionMeta"}},"type":"object","required":["items","total","meta"],"title":"TaxonomyTreeResponse","description":"Response for taxonomy tree listing."},"app__api__v3__opinion__schemas_items__RichContentSchema":{"properties":{"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Type"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"intensity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intensity"},"icon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Code"},"color_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color Code"},"label_extended":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Extended"},"argument_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Summary"}},"type":"object","title":"RichContentSchema","description":"Rich content for catalog item."},"app__api__v4__barometer__schemas__CurrentScoreData":{"properties":{"timeslot":{"type":"string","title":"Timeslot"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"favorable_ratio":{"type":"number","title":"Favorable Ratio"},"new_voters_today":{"type":"integer","title":"New Voters Today"},"changed_votes_today":{"type":"integer","title":"Changed Votes Today"},"total_commentaires":{"type":"integer","title":"Total Commentaires"},"total_commentaires_approved":{"type":"integer","title":"Total Commentaires Approved"}},"type":"object","required":["timeslot","score_net","total_votes","favorable_count","defavorable_count","neutre_count","favorable_ratio","new_voters_today","changed_votes_today","total_commentaires","total_commentaires_approved"],"title":"CurrentScoreData"},"app__api__v4__barometer__schemas__CurrentScoreResponse":{"properties":{"data":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__CurrentScoreData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"CurrentScoreResponse"},"app__api__v4__barometer__schemas__DrillDownStats":{"properties":{"total_votes":{"type":"integer","title":"Total Votes"},"favorable_votes":{"type":"integer","title":"Favorable Votes"},"defavorable_votes":{"type":"integer","title":"Defavorable Votes"},"neutre_votes":{"type":"integer","title":"Neutre Votes"},"net_score":{"type":"number","title":"Net Score"},"unique_voters":{"type":"integer","title":"Unique Voters"}},"type":"object","required":["total_votes","favorable_votes","defavorable_votes","neutre_votes","net_score","unique_voters"],"title":"DrillDownStats"},"app__api__v4__barometer__schemas__EvolutionData":{"properties":{"points":{"items":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__EvolutionPoint"},"type":"array","title":"Points"},"summary":{"$ref":"#/components/schemas/EvolutionSummary"}},"type":"object","required":["points","summary"],"title":"EvolutionData"},"app__api__v4__barometer__schemas__EvolutionPoint":{"properties":{"date":{"type":"string","title":"Date"},"score_net":{"type":"number","title":"Score Net"},"total_votes":{"type":"integer","title":"Total Votes"}},"type":"object","required":["date","score_net","total_votes"],"title":"EvolutionPoint"},"app__api__v4__barometer__schemas__EvolutionResponse":{"properties":{"data":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__EvolutionData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"EvolutionResponse"},"app__api__v4__barometer__schemas__RankingItem":{"properties":{"actor_code":{"type":"string","title":"Actor Code"},"score_net":{"type":"number","title":"Score Net"},"total_count":{"type":"integer","title":"Total Count"},"favorable_count":{"type":"integer","title":"Favorable Count"},"defavorable_count":{"type":"integer","title":"Defavorable Count"},"neutre_count":{"type":"integer","title":"Neutre Count"},"name":{"type":"string","title":"Name"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","required":["actor_code","score_net","total_count","favorable_count","defavorable_count","neutre_count","name","photo_url","party","role"],"title":"RankingItem"},"app__api__v4__barometer__schemas__RankingResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/app__api__v4__barometer__schemas__RankingItem"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"RankingResponse"},"app__schemas__campaign_taxonomy__TaxonomyTreeResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"domains":{"items":{"$ref":"#/components/schemas/TaxonomyDomain"},"type":"array","title":"Domains"},"total_topics":{"type":"integer","title":"Total Topics","default":0}},"type":"object","title":"TaxonomyTreeResponse","description":"Full taxonomy tree for the picker UI."},"app__schemas__citizen_expressions__GlobalStatsResponse":{"properties":{"total_expressions":{"type":"integer","title":"Total Expressions"},"today_expressions":{"type":"integer","title":"Today Expressions"},"avg_sentiment":{"type":"number","title":"Avg Sentiment"},"active_users":{"type":"integer","title":"Active Users"},"growth_percent":{"type":"number","title":"Growth Percent"}},"type":"object","required":["total_expressions","today_expressions","avg_sentiment","active_users","growth_percent"],"title":"GlobalStatsResponse","description":"Global statistics for expressions."},"app__schemas__citizens__CitizenFavoriteCreateRequest":{"properties":{"actor_code":{"type":"string","maxLength":128,"minLength":1,"title":"Actor Code"},"country_code":{"anyOf":[{"type":"string","maxLength":3,"minLength":2},{"type":"null"}],"title":"Country Code"},"pinned_cards":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pinned Cards"}},"type":"object","required":["actor_code"],"title":"CitizenFavoriteCreateRequest"},"app__schemas__drill_down__DrillDownStats":{"properties":{"total_registered_voters":{"type":"integer","title":"Total Registered Voters"},"total_polling_stations":{"type":"integer","title":"Total Polling Stations"},"stations_declared":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stations Declared"},"stations_validated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stations Validated"},"participation_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Participation Rate"},"consensus_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Consensus Rate"},"anomalies":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anomalies"}},"type":"object","required":["total_registered_voters","total_polling_stations"],"title":"DrillDownStats"},"app__schemas__drill_down_v3__TerritoryItem":{"properties":{"territory_type":{"type":"string","title":"Territory Type","description":"Type: region/department/commune/station"},"territory_code":{"type":"string","title":"Territory Code","description":"Code territoire"},"territory_name":{"type":"string","title":"Territory Name","description":"Nom territoire"},"total_votes":{"type":"integer","minimum":0.0,"title":"Total Votes","description":"Total votes"},"registered_voters":{"type":"integer","minimum":0.0,"title":"Registered Voters","description":"Inscrits"},"participation_rate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Participation Rate","description":"Taux participation (%)"},"num_stations":{"type":"integer","minimum":0.0,"title":"Num Stations","description":"Nombre bureaux"},"leading_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leading Candidate","description":"Code candidat en tête"},"leading_candidate_percentage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Leading Candidate Percentage","description":"% candidat en tête"}},"type":"object","required":["territory_type","territory_code","territory_name","total_votes","registered_voters","participation_rate","num_stations","leading_candidate_percentage"],"title":"TerritoryItem","description":"Territoire enfant pour drill-down","example":{"leading_candidate":"CAND-03","leading_candidate_percentage":32.45,"num_stations":12456,"participation_rate":83.38,"registered_voters":9876543,"territory_code":"REG-11","territory_name":"Île-de-France","territory_type":"region","total_votes":8234567}},"app__schemas__tokens__TokenClaimRequest":{"properties":{"election_code":{"type":"string","title":"Election Code"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"device_fingerprint":{"type":"string","minLength":1,"title":"Device Fingerprint"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address","description":"IPv4 address"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["election_code","polling_station_id","device_fingerprint"],"title":"TokenClaimRequest"},"app__schemas__tokens__TokenClaimResponse":{"properties":{"token_id":{"type":"string","format":"uuid","title":"Token Id"},"token":{"type":"string","format":"uuid","title":"Token"},"claimed_at":{"type":"string","format":"date-time","title":"Claimed At"},"polling_station_id":{"type":"string","format":"uuid","title":"Polling Station Id"},"election_id":{"type":"string","format":"uuid","title":"Election Id"}},"type":"object","required":["token_id","token","claimed_at","polling_station_id","election_id"],"title":"TokenClaimResponse"}}}}