{"text_format":"2","workbook":"xlsx","n_sheets":1,"sheets":["Sheet"],"not_rendered":{"charts":0,"images":0,"macros":0,"external_links":0,"defined_names":0,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Sheet","index":0,"n_rows":32,"n_cols":6,"rows_kept":32,"cut":false,"hidden":false,"merged":[]}
["Code","HTTP","Class / Type","Triggers / Description","Location","Example Message"]
["EMAIL_EXISTS","409","EmailAlreadyExistsError (ConflictError)","Email already registered","auth_service.py:65","Email already registered"]
["INVALID_CREDENTIALS","401","InvalidCredentialsError (UnauthorizedError)","Wrong email/password or OAuth fail","auth_service.py:105,111,169,242","Invalid credentials"]
["USER_NOT_FOUND","404","UserNotFoundError (NotFoundError)","User not found","auth_service.py:136,165, project_service.py:83","User not found"]
["INVALID_CURRENT_PASSWORD","401","InvalidCurrentPasswordError","Wrong current password","auth_service.py:175","Invalid current password"]
["PROJECT_NOT_FOUND","404","ProjectNotFoundError","Project missing/deleted","project_service.py:151,175,211,314","Project not found"]
["PROJECT_NAME_EXISTS","400","ProjectNameExistsError (ValidationError)","Duplicate project name","project_service.py","Project name already exists"]
["PROJECT_CODE_EXISTS","400","ProjectCodeExistsError","Duplicate project code","project_service.py:78","Project code already exists"]
["PROJECT_ACCESS_DENIED","400","ProjectAccessDeniedError","User not allowed/not member","project_service.py, member_service.py","Access denied to project"]
["MEMBER_NOT_FOUND","404","MemberNotFoundError","Member not found","member_service.py:129,147,181,267,272","Project member not found"]
["USER_ALREADY_MEMBER","400","UserAlreadyMemberError","User already a member","member_service.py:82","User is already a member"]
["MEMBER_ACCESS_DENIED","400","MemberAccessDeniedError","No permission to manage members","member_service.py:75,136,195,226,261,311","Access denied to manage members"]
["OWNER_ROLE_CHANGE_DENIED","400","OwnerRoleChangeError","Owner can’t change role","member_service.py:141","Owner cannot change own role"]
["OWNER_REMOVAL_DENIED","400","OwnerRemovalError","Owner cannot be removed","member_service.py:187","Owner cannot remove themselves"]
["FUNCTION_GENERATION_ALREADY_RUNNING","409","FunctionGenerationAlreadyRunningError","Task already running","function_generation_service.py","Function generation already running"]
["PROJECT_ALREADY_HAS_FUNCTION_LIST","409","ProjectAlreadyHasFunctionListError","Only one function list allowed","function_generation_service.py","Already has function list"]
["FILE_NOT_FOUND","404","NotFoundError","File missing","file_service.py:961,965,1196,1200","File not found"]
["FOLDER_NOT_FOUND","404","NotFoundError","Folder missing","file_service.py:1335,1339,1364","Folder not found"]
["CANNOT_PREVIEW_FOLDER","400","HTTPException","Preview folder as file","file_service.py:969","Cannot preview folder as file"]
["FILE_TYPE_NOT_SUPPORTED","422","UnprocessableEntityError","Unsupported type for preview","file_service.py:1759","File type not supported"]
["FILE_METADATA_MISSING_KEY","500","HTTPException","Missing object_key","file_service.py:1762","File metadata missing key"]
["FOLDER_LOCK_TIMEOUT","429","HTTPException","Folder lock timeout","file_service.py:151","Unable to acquire lock for folder"]
["FILE_UPLOAD_LOCK_TIMEOUT","429","HTTPException","Upload lock timeout","file_service.py:764","Unable to acquire lock for upload"]
["FILE_UPLOAD_ERROR","500","HTTPException","Unexpected upload error","file_service.py:877","Unexpected error during upload"]
["VALIDATION_ERROR","400","ValidationError","Invalid data / unimplemented login","auth_service.py, api/routes/v1","Login provider not implemented"]
["UNPROCESSABLE_ENTITY","422","UnprocessableEntityError","Cannot be processed","file_service.py:1759","File type not supported"]
["DATABASE_ERROR","500","DatabaseError","DB failure","—","Database operation error"]
["CONNECTION_ERROR","503","ConnectionError","External service offline","—","Connection error"]
["CONFIGURATION_ERROR","500","ConfigurationError","Misconfiguration","—","Configuration error"]
["REPOSITORY_ERROR","500","RepositoryError","Repository failure","—","Repository operation error"]
["INTERNAL_SERVER_ERROR","500","—","Unhandled exception","—","Internal server error"]
["MISSING_AUTH_TOKEN","401","—","Missing JWT","core/auth.py:48","Not authenticated"]