{"openapi":"3.1.0","info":{"title":"AgentsBots Enterprise Gateway","description":"Gateway Central Multi-Tenant para Atención Ciudadana y Encuestas Electorales Querétaro 2027","version":"6.0.0"},"paths":{"/api/v1/auth/login":{"post":{"tags":["tenant"],"summary":"Tenant Login","description":"Autenticación de usuarios por cuenta/tenant con generación de JWT contextual.","operationId":"tenant_login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["auth"],"summary":"Get Current User Profile","description":"Retorna el usuario actual basado en el token.","operationId":"get_current_user_profile_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh Token","description":"Refresca la sesión.","operationId":"refresh_token_api_v1_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout User","description":"Cierra sesión.","operationId":"logout_user_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/surveys/{survey_id}/public":{"get":{"tags":["public-surveys"],"summary":"Get Public Survey Definition","description":"Retorna la definición de una encuesta y sus preguntas para responder públicamente en la Web.","operationId":"get_public_survey_definition_api_v1_surveys__survey_id__public_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"string","title":"Survey Id"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/responses":{"post":{"tags":["public-surveys"],"summary":"Submit Public Survey Response","description":"Registra una respuesta enviada desde el portal web ciudadano.","operationId":"submit_public_survey_response_api_v1_surveys__survey_id__responses_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"string","title":"Survey Id"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitWebResponseModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["tenant"],"summary":"List Survey Responses","description":"Lista las respuestas ciudadanas de una encuesta.","operationId":"list_survey_responses_api_v1_surveys__survey_id__responses_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/respond":{"post":{"tags":["public-surveys"],"summary":"Submit Public Survey Response","description":"Registra una respuesta enviada desde el portal web ciudadano.","operationId":"submit_public_survey_response_api_v1_surveys__survey_id__respond_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"string","title":"Survey Id"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitWebResponseModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/political-public-stats":{"get":{"tags":["public-surveys"],"summary":"Get Public Political Stats","description":"Retorna estadísticas electorales para portales públicos.","operationId":"get_public_political_stats_api_v1_surveys__survey_id__political_public_stats_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"string","title":"Survey Id"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/upload-image":{"post":{"tags":["public-surveys"],"summary":"Upload Survey Image","description":"Subida universal de imágenes para encuestas, candidatos y partidos.","operationId":"upload_survey_image_api_v1_surveys_upload_image_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_survey_image_api_v1_surveys_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/tenant/auth/login":{"post":{"tags":["tenant"],"summary":"Tenant Login","description":"Autenticación de usuarios por cuenta/tenant con generación de JWT contextual.","operationId":"tenant_login_api_tenant_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/profile":{"get":{"tags":["tenant"],"summary":"Get Tenant Profile","description":"Retorna el perfil y branding del tenant actual.","operationId":"get_tenant_profile_api_tenant_profile_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/workspaces":{"get":{"tags":["tenant"],"summary":"List Tenant Workspaces","description":"Lista los workspaces en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_tenant_workspaces_api_tenant_surveys_workspaces_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Tenant Workspace","description":"Crea un nuevo workspace para el tenant.","operationId":"create_tenant_workspace_api_tenant_surveys_workspaces_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/workspaces":{"get":{"tags":["tenant"],"summary":"List Tenant Workspaces","description":"Lista los workspaces en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_tenant_workspaces_api_tenant_workspaces_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Tenant Workspace","description":"Crea un nuevo workspace para el tenant.","operationId":"create_tenant_workspace_api_tenant_workspaces_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/workspaces/{workspace_id}":{"put":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_tenant_surveys_workspaces__workspace_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_tenant_surveys_workspaces__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Tenant Workspace","description":"Elimina un workspace del tenant.","operationId":"delete_tenant_workspace_api_tenant_surveys_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/workspaces/{workspace_id}":{"put":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_tenant_workspaces__workspace_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_tenant_workspaces__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Tenant Workspace","description":"Elimina un workspace del tenant.","operationId":"delete_tenant_workspace_api_tenant_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/workspaces/{workspace_id}/folders":{"get":{"tags":["tenant"],"summary":"List Workspace Folders","description":"Lista las carpetas de un workspace.","operationId":"list_workspace_folders_api_tenant_surveys_workspaces__workspace_id__folders_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Workspace Folder","description":"Crea una carpeta dentro de un workspace.","operationId":"create_workspace_folder_api_tenant_surveys_workspaces__workspace_id__folders_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/workspaces/{workspace_id}/folders":{"get":{"tags":["tenant"],"summary":"List Workspace Folders","description":"Lista las carpetas de un workspace.","operationId":"list_workspace_folders_api_tenant_workspaces__workspace_id__folders_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Workspace Folder","description":"Crea una carpeta dentro de un workspace.","operationId":"create_workspace_folder_api_tenant_workspaces__workspace_id__folders_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/folders/{folder_id}":{"post":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_tenant_surveys_folders__folder_id__post","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_tenant_surveys_folders__folder_id__put","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Folder","description":"Elimina una carpeta.","operationId":"delete_folder_api_tenant_surveys_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/folders/{folder_id}":{"put":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_tenant_folders__folder_id__put","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Folder","description":"Elimina una carpeta.","operationId":"delete_folder_api_tenant_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys":{"get":{"tags":["tenant"],"summary":"List Surveys","description":"Lista las encuestas en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_surveys_api_tenant_surveys_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Survey","description":"Crea una nueva encuesta y la registra en el índice central de WhatsApp.","operationId":"create_survey_api_tenant_surveys_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSurveyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}":{"get":{"tags":["tenant"],"summary":"Get Survey Detail","description":"Detalle completo de una encuesta con sus preguntas y candidatos.","operationId":"get_survey_detail_api_tenant_surveys__survey_id__get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Survey","description":"Actualiza una encuesta existente y sincroniza automáticamente con Meta WhatsApp Flows.","operationId":"update_survey_api_tenant_surveys__survey_id__put","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSurveyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Survey","description":"Elimina una encuesta del tenant, la desvincula de WhatsApp en Meta y limpia survey_registry.","operationId":"delete_survey_api_tenant_surveys__survey_id__delete","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/toggle-status":{"post":{"tags":["tenant"],"summary":"Toggle Survey Status","description":"Activa o desactiva una encuesta tanto en el esquema del tenant como en WhatsApp survey_registry.","operationId":"toggle_survey_status_api_tenant_surveys__survey_id__toggle_status_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/political-candidates":{"get":{"tags":["tenant"],"summary":"List Survey Candidates","description":"Lista todos los candidatos de una encuesta política.","operationId":"list_survey_candidates_api_tenant_surveys__survey_id__political_candidates_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Survey Candidate","description":"Agrega un candidato político a la encuesta.","operationId":"create_survey_candidate_api_tenant_surveys__survey_id__political_candidates_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/political-candidates/{candidate_id}":{"get":{"tags":["tenant"],"summary":"Get Candidate Detail","description":"Obtiene el detalle de un candidato político.","operationId":"get_candidate_detail_api_tenant_political_candidates__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Candidate Detail","description":"Actualiza los datos de un candidato político.","operationId":"update_candidate_detail_api_tenant_political_candidates__candidate_id__put","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Candidate","description":"Elimina un candidato político.","operationId":"delete_candidate_api_tenant_political_candidates__candidate_id__delete","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/political-candidates/reorder":{"post":{"tags":["tenant"],"summary":"Reorder Survey Candidates","description":"Reordena la lista de candidatos de una encuesta.","operationId":"reorder_survey_candidates_api_tenant_surveys__survey_id__political_candidates_reorder_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderCandidatesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/political-results":{"get":{"tags":["tenant"],"summary":"Get Survey Political Stats","description":"Calcula analítica electoral completa de una encuesta.","operationId":"get_survey_political_stats_api_tenant_surveys__survey_id__political_results_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/political-stats":{"get":{"tags":["tenant"],"summary":"Get Survey Political Stats","description":"Calcula analítica electoral completa de una encuesta.","operationId":"get_survey_political_stats_api_tenant_surveys__survey_id__political_stats_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/stats":{"get":{"tags":["tenant"],"summary":"Get Survey General Stats","description":"Calcula estadísticas generales de respuestas para una encuesta.","operationId":"get_survey_general_stats_api_tenant_surveys__survey_id__stats_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/responses":{"get":{"tags":["tenant"],"summary":"List Survey Responses","description":"Lista las respuestas ciudadanas de una encuesta.","operationId":"list_survey_responses_api_tenant_surveys__survey_id__responses_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/submit":{"post":{"tags":["tenant"],"summary":"Submit Public Survey Response","description":"Guarda una respuesta ciudadana anónima desde web o WhatsApp.","operationId":"submit_public_survey_response_api_tenant_surveys__survey_id__submit_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/export/csv":{"get":{"tags":["tenant"],"summary":"Export Survey Csv","description":"Exporta todas las respuestas de una encuesta en formato CSV UTF-8.","operationId":"export_survey_csv_api_tenant_surveys__survey_id__export_csv_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/publish-flow":{"post":{"tags":["tenant"],"summary":"Publish Survey Flow","description":"Compila las preguntas de la encuesta y las publica como Meta WhatsApp Flow.","operationId":"publish_survey_flow_api_tenant_surveys__survey_id__publish_flow_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/surveys/{survey_id}/qr":{"get":{"tags":["tenant"],"summary":"Get Survey Qr Code","description":"Genera paquete QR oficial y Deep Link de WhatsApp para la encuesta.","operationId":"get_survey_qr_code_api_tenant_surveys__survey_id__qr_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tenant/upload-asset":{"post":{"tags":["tenant"],"summary":"Upload General Tenant Asset Endpoint","description":"Sube cualquier banner o imagen a Wasabi S3 antes o después de crear una encuesta.","operationId":"upload_general_tenant_asset_endpoint_api_tenant_upload_asset_post","parameters":[{"name":"folder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"banners","title":"Folder"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_general_tenant_asset_endpoint_api_tenant_upload_asset_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/profile":{"get":{"tags":["tenant"],"summary":"Get Tenant Profile","description":"Retorna el perfil y branding del tenant actual.","operationId":"get_tenant_profile_api_v1_profile_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/workspaces":{"get":{"tags":["tenant"],"summary":"List Tenant Workspaces","description":"Lista los workspaces en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_tenant_workspaces_api_v1_surveys_workspaces_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Tenant Workspace","description":"Crea un nuevo workspace para el tenant.","operationId":"create_tenant_workspace_api_v1_surveys_workspaces_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspaces":{"get":{"tags":["tenant"],"summary":"List Tenant Workspaces","description":"Lista los workspaces en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_tenant_workspaces_api_v1_workspaces_get","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Tenant Workspace","description":"Crea un nuevo workspace para el tenant.","operationId":"create_tenant_workspace_api_v1_workspaces_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/workspaces/{workspace_id}":{"put":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_v1_surveys_workspaces__workspace_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_v1_surveys_workspaces__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Tenant Workspace","description":"Elimina un workspace del tenant.","operationId":"delete_tenant_workspace_api_v1_surveys_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspaces/{workspace_id}":{"put":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_v1_workspaces__workspace_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenant"],"summary":"Update Tenant Workspace","description":"Actualiza un workspace del tenant.","operationId":"update_tenant_workspace_api_v1_workspaces__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Tenant Workspace","description":"Elimina un workspace del tenant.","operationId":"delete_tenant_workspace_api_v1_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/workspaces/{workspace_id}/folders":{"get":{"tags":["tenant"],"summary":"List Workspace Folders","description":"Lista las carpetas de un workspace.","operationId":"list_workspace_folders_api_v1_surveys_workspaces__workspace_id__folders_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Workspace Folder","description":"Crea una carpeta dentro de un workspace.","operationId":"create_workspace_folder_api_v1_surveys_workspaces__workspace_id__folders_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspaces/{workspace_id}/folders":{"get":{"tags":["tenant"],"summary":"List Workspace Folders","description":"Lista las carpetas de un workspace.","operationId":"list_workspace_folders_api_v1_workspaces__workspace_id__folders_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Workspace Folder","description":"Crea una carpeta dentro de un workspace.","operationId":"create_workspace_folder_api_v1_workspaces__workspace_id__folders_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/folders/{folder_id}":{"post":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_v1_surveys_folders__folder_id__post","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_v1_surveys_folders__folder_id__put","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Folder","description":"Elimina una carpeta.","operationId":"delete_folder_api_v1_surveys_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/folders/{folder_id}":{"put":{"tags":["tenant"],"summary":"Update Folder","description":"Actualiza el nombre de una carpeta.","operationId":"update_folder_api_v1_folders__folder_id__put","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Folder","description":"Elimina una carpeta.","operationId":"delete_folder_api_v1_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys":{"get":{"tags":["tenant"],"summary":"List Surveys","description":"Lista las encuestas en el esquema aislado del tenant o consolidado global si es Master.","operationId":"list_surveys_api_v1_surveys_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"tenant_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Survey","description":"Crea una nueva encuesta y la registra en el índice central de WhatsApp.","operationId":"create_survey_api_v1_surveys_post","parameters":[{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSurveyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}":{"get":{"tags":["tenant"],"summary":"Get Survey Detail","description":"Detalle completo de una encuesta con sus preguntas y candidatos.","operationId":"get_survey_detail_api_v1_surveys__survey_id__get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Survey","description":"Actualiza una encuesta existente y sincroniza automáticamente con Meta WhatsApp Flows.","operationId":"update_survey_api_v1_surveys__survey_id__put","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSurveyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Survey","description":"Elimina una encuesta del tenant, la desvincula de WhatsApp en Meta y limpia survey_registry.","operationId":"delete_survey_api_v1_surveys__survey_id__delete","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/toggle-status":{"post":{"tags":["tenant"],"summary":"Toggle Survey Status","description":"Activa o desactiva una encuesta tanto en el esquema del tenant como en WhatsApp survey_registry.","operationId":"toggle_survey_status_api_v1_surveys__survey_id__toggle_status_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/political-candidates":{"get":{"tags":["tenant"],"summary":"List Survey Candidates","description":"Lista todos los candidatos de una encuesta política.","operationId":"list_survey_candidates_api_v1_surveys__survey_id__political_candidates_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenant"],"summary":"Create Survey Candidate","description":"Agrega un candidato político a la encuesta.","operationId":"create_survey_candidate_api_v1_surveys__survey_id__political_candidates_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/political-candidates/{candidate_id}":{"get":{"tags":["tenant"],"summary":"Get Candidate Detail","description":"Obtiene el detalle de un candidato político.","operationId":"get_candidate_detail_api_v1_political_candidates__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tenant"],"summary":"Update Candidate Detail","description":"Actualiza los datos de un candidato político.","operationId":"update_candidate_detail_api_v1_political_candidates__candidate_id__put","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Candidate","description":"Elimina un candidato político.","operationId":"delete_candidate_api_v1_political_candidates__candidate_id__delete","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/political-candidates/reorder":{"post":{"tags":["tenant"],"summary":"Reorder Survey Candidates","description":"Reordena la lista de candidatos de una encuesta.","operationId":"reorder_survey_candidates_api_v1_surveys__survey_id__political_candidates_reorder_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderCandidatesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/political-results":{"get":{"tags":["tenant"],"summary":"Get Survey Political Stats","description":"Calcula analítica electoral completa de una encuesta.","operationId":"get_survey_political_stats_api_v1_surveys__survey_id__political_results_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/political-stats":{"get":{"tags":["tenant"],"summary":"Get Survey Political Stats","description":"Calcula analítica electoral completa de una encuesta.","operationId":"get_survey_political_stats_api_v1_surveys__survey_id__political_stats_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/stats":{"get":{"tags":["tenant"],"summary":"Get Survey General Stats","description":"Calcula estadísticas generales de respuestas para una encuesta.","operationId":"get_survey_general_stats_api_v1_surveys__survey_id__stats_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/submit":{"post":{"tags":["tenant"],"summary":"Submit Public Survey Response","description":"Guarda una respuesta ciudadana anónima desde web o WhatsApp.","operationId":"submit_public_survey_response_api_v1_surveys__survey_id__submit_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/export/csv":{"get":{"tags":["tenant"],"summary":"Export Survey Csv","description":"Exporta todas las respuestas de una encuesta en formato CSV UTF-8.","operationId":"export_survey_csv_api_v1_surveys__survey_id__export_csv_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/publish-flow":{"post":{"tags":["tenant"],"summary":"Publish Survey Flow","description":"Compila las preguntas de la encuesta y las publica como Meta WhatsApp Flow.","operationId":"publish_survey_flow_api_v1_surveys__survey_id__publish_flow_post","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/surveys/{survey_id}/qr":{"get":{"tags":["tenant"],"summary":"Get Survey Qr Code","description":"Genera paquete QR oficial y Deep Link de WhatsApp para la encuesta.","operationId":"get_survey_qr_code_api_v1_surveys__survey_id__qr_get","parameters":[{"name":"survey_id","in":"path","required":true,"schema":{"type":"integer","title":"Survey Id"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/upload-asset":{"post":{"tags":["tenant"],"summary":"Upload General Tenant Asset Endpoint","description":"Sube cualquier banner o imagen a Wasabi S3 antes o después de crear una encuesta.","operationId":"upload_general_tenant_asset_endpoint_api_v1_upload_asset_post","parameters":[{"name":"folder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"banners","title":"Folder"}},{"name":"X-Tenant-Slug","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Slug"}},{"name":"X-Tenant-Schema","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Tenant-Schema"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_general_tenant_asset_endpoint_api_v1_upload_asset_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/auth/login":{"post":{"tags":["master"],"summary":"Master Login","description":"Inicio de sesión seguro para el SuperAdmin Master.","operationId":"master_login_api_master_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MasterLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/tenants":{"get":{"tags":["master"],"summary":"List Tenants","description":"Lista todos los tenants con sus métricas consolidadas en tiempo real.","operationId":"list_tenants_api_master_tenants_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["master"],"summary":"Create Tenant","description":"Crea un nuevo Tenant y aprovisiona su esquema aislado en PostgreSQL.","operationId":"create_tenant_api_master_tenants_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTenantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/impersonate/{tenant_id}":{"post":{"tags":["master"],"summary":"Impersonate Tenant","description":"Permite al SuperAdmin Master personificar/entrar a la cuenta de cualquier Tenant.\nGenera un token JWT contextual con permisos administrativos para ese esquema y branding.","operationId":"impersonate_tenant_api_master_impersonate__tenant_id__post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/tenants/{tenant_id}":{"patch":{"tags":["master"],"summary":"Update Tenant","description":"Actualiza configuración, branding o estado público/privado de un tenant.","operationId":"update_tenant_api_master_tenants__tenant_id__patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTenantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["master"],"summary":"Delete Tenant","description":"Elimina un tenant, sus usuarios y su esquema PostgreSQL.","operationId":"delete_tenant_api_master_tenants__tenant_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/surveys-registry":{"get":{"tags":["master"],"summary":"List Registered Surveys","description":"Catálogo central de todas las encuestas y palabras clave de WhatsApp.","operationId":"list_registered_surveys_api_master_surveys_registry_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/master/tenants/{tenant_id}/upload-logo":{"post":{"tags":["master"],"summary":"Master Upload Tenant Logo","description":"Sube un logo a Wasabi S3 en la carpeta dedicada del tenant y actualiza logo_url.","operationId":"master_upload_tenant_logo_api_master_tenants__tenant_id__upload_logo_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer Token JWT","title":"Authorization"},"description":"Bearer Token JWT"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_master_upload_tenant_logo_api_master_tenants__tenant_id__upload_logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/surveys":{"get":{"tags":["public"],"summary":"List Public Surveys","description":"Lista todas las encuestas públicas activas en la plataforma.","operationId":"list_public_surveys_api_public_surveys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public/surveys/{tenant_slug}/{survey_slug}":{"get":{"tags":["public"],"summary":"Get Public Survey Results","description":"Retorna los resultados agregados y anónimos de una encuesta pública.\nGarantiza privacidad total (cero exposición de teléfonos o PII).","operationId":"get_public_survey_results_api_public_surveys__tenant_slug___survey_slug__get","parameters":[{"name":"tenant_slug","in":"path","required":true,"schema":{"type":"string","title":"Tenant Slug"}},{"name":"survey_slug","in":"path","required":true,"schema":{"type":"string","title":"Survey Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/assets/{path}":{"get":{"tags":["public"],"summary":"Get Public Asset","description":"Sirve directamente cualquier logotipo o banner almacenado en Wasabi S3.\nEvita bloqueos de acceso público y optimiza la entrega con caché HTTP.","operationId":"get_public_asset_api_public_assets__path__get","parameters":[{"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/public/surveys/{keyword}/qr":{"get":{"tags":["public"],"summary":"Get Public Survey Qr","description":"Genera el código QR y deep link público de WhatsApp para cualquier palabra clave.","operationId":"get_public_survey_qr_api_public_surveys__keyword__qr_get","parameters":[{"name":"keyword","in":"path","required":true,"schema":{"type":"string","title":"Keyword"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/surveys/{keyword}/qr/download":{"get":{"tags":["public"],"summary":"Download Public Survey Qr","description":"Descarga pública directa del código QR en PNG de alta resolución.","operationId":"download_public_survey_qr_api_public_surveys__keyword__qr_download_get","parameters":[{"name":"keyword","in":"path","required":true,"schema":{"type":"string","title":"Keyword"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["analytics"],"summary":"Login","description":"Endpoint de autenticación para el panel ejecutivo.","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bot__api__analytics__LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/summary":{"get":{"tags":["analytics"],"summary":"Get Summary","description":"Retorna los KPIs clave y métricas territoriales del Dashboard.","operationId":"get_summary_api_analytics_summary_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/metrics":{"get":{"tags":["analytics"],"summary":"Get Summary","description":"Retorna los KPIs clave y métricas territoriales del Dashboard.","operationId":"get_summary_api_analytics_metrics_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/municipios":{"get":{"tags":["analytics"],"summary":"Get Municipios","description":"Retorna el desglose geográfico de los 18 municipios para el mapa interactivo.","operationId":"get_municipios_api_analytics_municipios_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/evaluaciones":{"get":{"tags":["analytics"],"summary":"Get Evaluaciones","description":"Retorna la matriz de percepción de las 9 figuras públicas.","operationId":"get_evaluaciones_api_analytics_evaluaciones_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/careos":{"get":{"tags":["analytics"],"summary":"Get Careos","description":"Retorna los resultados de los 8 escenarios de careos electorales 2027.","operationId":"get_careos_api_analytics_careos_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/partidos":{"get":{"tags":["analytics"],"summary":"Get Partidos","description":"Retorna la preferencia partidista general para la gráfica de dona.","operationId":"get_partidos_api_analytics_partidos_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/demographics":{"get":{"tags":["analytics"],"summary":"Get Demographics","description":"Retorna el desglose demográfico (edad, género, afinidad, servidor público).","operationId":"get_demographics_api_analytics_demographics_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo/municipios":{"get":{"tags":["analytics"],"summary":"Get Geo Municipios","description":"Retorna los polígonos GeoJSON de los 18 municipios directamente desde PostGIS con caché de alta velocidad.","operationId":"get_geo_municipios_api_geo_municipios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/geo/secciones":{"get":{"tags":["analytics"],"summary":"Get Geo Secciones","description":"Retorna las secciones electorales en GeoJSON con filtro opcional por municipio.","operationId":"get_geo_secciones_api_geo_secciones_get","parameters":[{"name":"municipio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipio"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo/secciones/list":{"get":{"tags":["analytics"],"summary":"Get Secciones Dropdown","description":"Retorna la lista de secciones para el selector/buscador interactivo.","operationId":"get_secciones_dropdown_api_geo_secciones_list_get","parameters":[{"name":"municipio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipio"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo/colonias/list":{"get":{"tags":["analytics"],"summary":"Get Colonias Dropdown","description":"Retorna la lista de colonias y códigos postales para el selector/buscador interactivo.","operationId":"get_colonias_dropdown_api_geo_colonias_list_get","parameters":[{"name":"municipio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipio"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo/points":{"get":{"tags":["analytics"],"summary":"Get Geo Points","description":"Retorna todas las ubicaciones GPS exactas capturadas para trazado en el mapa.","operationId":"get_geo_points_api_geo_points_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtro de municipio (uno o varios separados por coma)","title":"Municipality"},"description":"Filtro de municipio (uno o varios separados por coma)"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hombre / Mujer","title":"Gender"},"description":"Hombre / Mujer"},{"name":"age_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"18 a 29 años, etc.","title":"Age Range"},"description":"18 a 29 años, etc."},{"name":"party_affinity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PAN, PRI, MORENA, MC","title":"Party Affinity"},"description":"PAN, PRI, MORENA, MC"},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número de sección electoral","title":"Seccion"},"description":"Número de sección electoral"},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nombre de colonia","title":"Colonia"},"description":"Nombre de colonia"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo/colonias":{"get":{"tags":["analytics"],"summary":"Get Geo Colonias","description":"Retorna polígonos GeoJSON optimizados de colonias desde PostGIS con caché de alta velocidad.\nAgrupa sub-polígonos por colonia usando ST_Union para reducir el volumen.","operationId":"get_geo_colonias_api_geo_colonias_get","parameters":[{"name":"municipio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipio"}},{"name":"seccion","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seccion"}},{"name":"colonia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Colonia"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/rankings":{"get":{"tags":["analytics"],"summary":"Get Rankings","description":"Retorna los Top 5 Rankings de Municipios, Secciones, Colonias y Figuras/Partidos con estructura uniforme.","operationId":"get_rankings_api_analytics_rankings_get","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality"}},{"name":"survey_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Survey Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook":{"get":{"tags":["webhook"],"summary":"Verify Webhook","description":"Verificación handshake inicial de Meta WhatsApp Cloud API.","operationId":"verify_webhook_webhook_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"type":"string","title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"type":"string","title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"type":"string","title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["webhook"],"summary":"Receive Webhook","description":"Recepción y enrutamiento inteligente de webhooks entrantes de WhatsApp:\n  - Valida firma criptográfica HMAC SHA-256\n  - Enruta según Phone Number ID de destino\n  - Retorna status 200 en < 50ms (Requerimiento estricto de Meta)","operationId":"receive_webhook_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard":{"get":{"tags":["gateway"],"summary":"Serve Gateway Home","description":"Portal interactivo y elegante del Gateway API.","operationId":"serve_gateway_home_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/gateway":{"get":{"tags":["gateway"],"summary":"Serve Gateway Home","description":"Portal interactivo y elegante del Gateway API.","operationId":"serve_gateway_home_gateway_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/":{"get":{"tags":["gateway"],"summary":"Serve Gateway Home","description":"Portal interactivo y elegante del Gateway API.","operationId":"serve_gateway_home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/login":{"get":{"tags":["gateway"],"summary":"Serve Login Info","description":"Informa sobre el portal de login del sistema.","operationId":"serve_login_info_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"tags":["system"],"summary":"Health Check","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["system"],"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_master_upload_tenant_logo_api_master_tenants__tenant_id__upload_logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_master_upload_tenant_logo_api_master_tenants__tenant_id__upload_logo_post"},"Body_upload_general_tenant_asset_endpoint_api_tenant_upload_asset_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_general_tenant_asset_endpoint_api_tenant_upload_asset_post"},"Body_upload_general_tenant_asset_endpoint_api_v1_upload_asset_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_general_tenant_asset_endpoint_api_v1_upload_asset_post"},"Body_upload_survey_image_api_v1_surveys_upload_image_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Image"},"folder":{"type":"string","title":"Folder","default":"general"}},"type":"object","title":"Body_upload_survey_image_api_v1_surveys_upload_image_post"},"CandidateRequest":{"properties":{"name":{"type":"string","title":"Name"},"party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"},"photo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo"},"party_logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party Logo"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","default":"#002b49"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"}},"type":"object","required":["name"],"title":"CandidateRequest"},"CreateQuestionModel":{"properties":{"screen_id":{"type":"string","title":"Screen Id","default":"DEMOGRAFIA"},"question_key":{"type":"string","title":"Question Key"},"question_label":{"type":"string","title":"Question Label"},"question_type":{"type":"string","title":"Question Type","default":"radio"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"items":{},"type":"array"}],"title":"Options","default":[]},"order_index":{"type":"integer","title":"Order Index","default":0},"required":{"type":"boolean","title":"Required","default":true}},"type":"object","required":["question_key","question_label"],"title":"CreateQuestionModel"},"CreateSurveyRequest":{"properties":{"title":{"type":"string","title":"Title"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public","default":true},"territory_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Type","default":"estado"},"territory_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Name","default":"Querétaro"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"general"},"questions":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateQuestionModel"},"type":"array"},{"type":"null"}],"title":"Questions","default":[]}},"type":"object","required":["title"],"title":"CreateSurveyRequest"},"CreateTenantRequest":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"admin_username":{"type":"string","title":"Admin Username"},"admin_email":{"type":"string","title":"Admin Email"},"admin_password":{"type":"string","title":"Admin Password"},"admin_name":{"type":"string","title":"Admin Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"primary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Color","default":"#002b49"},"secondary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Color","default":"#d4a017"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public","default":false},"organization_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Type","default":"publica"}},"type":"object","required":["slug","name","admin_username","admin_email","admin_password","admin_name"],"title":"CreateTenantRequest"},"FolderRequest":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"FolderRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MasterLoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"MasterLoginRequest"},"ReorderCandidatesRequest":{"properties":{"orders":{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array","title":"Orders"}},"type":"object","required":["orders"],"title":"ReorderCandidatesRequest"},"SubmitWebResponseModel":{"properties":{"answers":{"additionalProperties":true,"type":"object","title":"Answers"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["answers"],"title":"SubmitWebResponseModel"},"TenantLoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"TenantLoginRequest"},"UpdateSurveyRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"target_responses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Responses"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"territory_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Type"},"territory_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Territory Name"},"questions":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateQuestionModel"},"type":"array"},{"type":"null"}],"title":"Questions"}},"type":"object","title":"UpdateSurveyRequest"},"UpdateTenantRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"primary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Color"},"secondary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Color"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"organization_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Type"}},"type":"object","title":"UpdateTenantRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkspaceRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"WorkspaceRequest"},"bot__api__analytics__LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"bot__api__unified_auth_api__LoginRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"LoginRequest"}}}}