{"openapi":"3.1.0","info":{"title":"HR Portal","description":"企業人資管理系統 - 整合 Keycloak SSO","version":"1.0.0"},"paths":{"/api/v1/employees/":{"get":{"tags":["employees"],"summary":"List Employees","description":"列出所有員工\n\n- **skip**: 跳過前 N 筆\n- **limit**: 每頁筆數\n- **status**: 過濾狀態 (active, inactive, terminated)\n- **business_unit_id**: 過濾事業部","operationId":"list_employees_api_v1_employees__get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}},{"name":"business_unit_id","in":"query","required":false,"schema":{"type":"integer","title":"Business Unit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["employees"],"summary":"Create Employee","description":"創建新員工\n\n- **create_full**: True = 自動建立 Keycloak 帳號、郵箱、網路硬碟\n- **create_full**: False = 只建立資料庫記錄","operationId":"create_employee_api_v1_employees__post","parameters":[{"name":"create_full","in":"query","required":false,"schema":{"type":"boolean","description":"是否自動建立 Keycloak/Email/NAS","default":false,"title":"Create Full"},"description":"是否自動建立 Keycloak/Email/NAS"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/employees/{employee_id}":{"get":{"tags":["employees"],"summary":"Get Employee","description":"取得單一員工資訊\n\n- **employee_id**: 員工編號 (例如: E0001)","operationId":"get_employee_api_v1_employees__employee_id__get","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"string","title":"Employee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["employees"],"summary":"Update Employee","description":"更新員工資訊\n\n- **employee_id**: 員工編號","operationId":"update_employee_api_v1_employees__employee_id__patch","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"string","title":"Employee Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["employees"],"summary":"Terminate Employee","description":"員工離職處理\n\n- 停用 Keycloak 帳號\n- 停用郵箱\n- 停用網路硬碟\n- 撤銷系統權限\n- 更新狀態為 terminated","operationId":"terminate_employee_api_v1_employees__employee_id__delete","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"string","title":"Employee Id"}},{"name":"archive_data","in":"query","required":false,"schema":{"type":"boolean","description":"是否備份資料","default":true,"title":"Archive Data"},"description":"是否備份資料"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/employees/{employee_id}/reset-password":{"post":{"tags":["employees"],"summary":"Reset Employee Password","description":"重設員工密碼 (Keycloak + Email)","operationId":"reset_employee_password_api_v1_employees__employee_id__reset_password_post","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"string","title":"Employee Id"}},{"name":"new_password","in":"query","required":false,"schema":{"type":"string","description":"新密碼 (不提供則自動生成)","title":"New Password"},"description":"新密碼 (不提供則自動生成)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/business-units/":{"get":{"tags":["business-units"],"summary":"List Business Units","description":"列出所有事業部\n\n- **skip**: 跳過前 N 筆\n- **limit**: 每頁筆數\n- **is_active**: 過濾啟用狀態","operationId":"list_business_units_api_v1_business_units__get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BusinessUnitResponse"},"title":"Response List Business Units Api V1 Business Units  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["business-units"],"summary":"Create Business Unit","description":"創建新事業部","operationId":"create_business_unit_api_v1_business_units__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUnitCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUnitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/business-units/{business_unit_id}":{"get":{"tags":["business-units"],"summary":"Get Business Unit","description":"取得單一事業部資訊\n\n- **business_unit_id**: 事業部 ID","operationId":"get_business_unit_api_v1_business_units__business_unit_id__get","parameters":[{"name":"business_unit_id","in":"path","required":true,"schema":{"type":"integer","title":"Business Unit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUnitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["business-units"],"summary":"Update Business Unit","description":"更新事業部資訊\n\n- **business_unit_id**: 事業部 ID","operationId":"update_business_unit_api_v1_business_units__business_unit_id__patch","parameters":[{"name":"business_unit_id","in":"path","required":true,"schema":{"type":"integer","title":"Business Unit Id"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Name"}},{"name":"name_en","in":"query","required":false,"schema":{"type":"string","maxLength":100,"title":"Name En"}},{"name":"description","in":"query","required":false,"schema":{"type":"string","title":"Description"}},{"name":"email_domain","in":"query","required":false,"schema":{"type":"string","maxLength":50,"title":"Email Domain"}},{"name":"manager_id","in":"query","required":false,"schema":{"type":"integer","title":"Manager Id"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUnitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["business-units"],"summary":"Delete Business Unit","description":"停用事業部 (不會真正刪除,只是設為 inactive)\n\n- **business_unit_id**: 事業部 ID","operationId":"delete_business_unit_api_v1_business_units__business_unit_id__delete","parameters":[{"name":"business_unit_id","in":"path","required":true,"schema":{"type":"integer","title":"Business Unit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/divisions/":{"get":{"tags":["divisions"],"summary":"List Divisions","description":"列出所有部門\n\n- **skip**: 跳過前 N 筆\n- **limit**: 每頁筆數\n- **business_unit_id**: 過濾事業部\n- **is_active**: 過濾啟用狀態","operationId":"list_divisions_api_v1_divisions__get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"business_unit_id","in":"query","required":false,"schema":{"type":"integer","title":"Business Unit Id"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DivisionResponse"},"title":"Response List Divisions Api V1 Divisions  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["divisions"],"summary":"Create Division","description":"創建新部門","operationId":"create_division_api_v1_divisions__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/divisions/{division_id}":{"get":{"tags":["divisions"],"summary":"Get Division","description":"取得單一部門資訊\n\n- **division_id**: 部門 ID","operationId":"get_division_api_v1_divisions__division_id__get","parameters":[{"name":"division_id","in":"path","required":true,"schema":{"type":"integer","title":"Division Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["divisions"],"summary":"Update Division","description":"更新部門資訊\n\n- **division_id**: 部門 ID","operationId":"update_division_api_v1_divisions__division_id__patch","parameters":[{"name":"division_id","in":"path","required":true,"schema":{"type":"integer","title":"Division Id"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Name"}},{"name":"name_en","in":"query","required":false,"schema":{"type":"string","maxLength":100,"title":"Name En"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","maxLength":100,"title":"Email"}},{"name":"manager_id","in":"query","required":false,"schema":{"type":"integer","title":"Manager Id"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["divisions"],"summary":"Delete Division","description":"停用部門 (不會真正刪除,只是設為 inactive)\n\n- **division_id**: 部門 ID","operationId":"delete_division_api_v1_divisions__division_id__delete","parameters":[{"name":"division_id","in":"path","required":true,"schema":{"type":"integer","title":"Division Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/emails/":{"get":{"tags":["emails"],"summary":"List Email Accounts","description":"列出所有郵件帳號\n\n- **skip**: 跳過前 N 筆\n- **limit**: 每頁筆數\n- **is_active**: 過濾啟用狀態\n- **employee_id**: 過濾員工","operationId":"list_email_accounts_api_v1_emails__get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}},{"name":"employee_id","in":"query","required":false,"schema":{"type":"integer","title":"Employee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailAccountResponse"},"title":"Response List Email Accounts Api V1 Emails  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["emails"],"summary":"Create Email Account","description":"創建新郵件帳號","operationId":"create_email_account_api_v1_emails__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAccountBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/emails/{email_id}":{"get":{"tags":["emails"],"summary":"Get Email Account","description":"取得單一郵件帳號資訊\n\n- **email_id**: 郵件帳號 ID","operationId":"get_email_account_api_v1_emails__email_id__get","parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["emails"],"summary":"Update Email Account","description":"更新郵件帳號設定\n\n- **email_id**: 郵件帳號 ID\n- **mailbox_quota_mb**: 信箱容量 (MB)\n- **forward_to**: 轉寄地址\n- **auto_reply**: 是否啟用自動回覆\n- **auto_reply_message**: 自動回覆訊息\n- **is_active**: 是否啟用","operationId":"update_email_account_api_v1_emails__email_id__patch","parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}},{"name":"mailbox_quota_mb","in":"query","required":false,"schema":{"type":"integer","maximum":102400,"minimum":1024,"title":"Mailbox Quota Mb"}},{"name":"forward_to","in":"query","required":false,"schema":{"type":"string","maxLength":255,"title":"Forward To"}},{"name":"auto_reply","in":"query","required":false,"schema":{"type":"boolean","title":"Auto Reply"}},{"name":"auto_reply_message","in":"query","required":false,"schema":{"type":"string","title":"Auto Reply Message"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["emails"],"summary":"Delete Email Account","description":"停用郵件帳號 (不會真正刪除,只是設為 inactive)\n\n- **email_id**: 郵件帳號 ID","operationId":"delete_email_account_api_v1_emails__email_id__delete","parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/emails/by-employee/{employee_id}":{"get":{"tags":["emails"],"summary":"Get Employee Emails","description":"取得指定員工的所有郵件帳號\n\n- **employee_id**: 員工 ID","operationId":"get_employee_emails_api_v1_emails_by_employee__employee_id__get","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"integer","title":"Employee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailAccountResponse"},"title":"Response Get Employee Emails Api V1 Emails By Employee  Employee Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/network-drives/":{"get":{"tags":["network-drives"],"summary":"List Network Drives","description":"列出所有網路硬碟\n\n- **skip**: 跳過前 N 筆\n- **limit**: 每頁筆數\n- **is_active**: 過濾啟用狀態\n- **employee_id**: 過濾員工","operationId":"list_network_drives_api_v1_network_drives__get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}},{"name":"employee_id","in":"query","required":false,"schema":{"type":"integer","title":"Employee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NetworkDriveResponse"},"title":"Response List Network Drives Api V1 Network Drives  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["network-drives"],"summary":"Create Network Drive","description":"創建新網路硬碟","operationId":"create_network_drive_api_v1_network_drives__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkDriveBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkDriveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/network-drives/{drive_id}":{"get":{"tags":["network-drives"],"summary":"Get Network Drive","description":"取得單一網路硬碟資訊\n\n- **drive_id**: 網路硬碟 ID","operationId":"get_network_drive_api_v1_network_drives__drive_id__get","parameters":[{"name":"drive_id","in":"path","required":true,"schema":{"type":"integer","title":"Drive Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkDriveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["network-drives"],"summary":"Update Network Drive","description":"更新網路硬碟設定\n\n- **drive_id**: 網路硬碟 ID\n- **quota_gb**: 配額 (GB)\n- **webdav_url**: WebDAV 連結\n- **smb_path**: SMB 網路路徑\n- **is_active**: 是否啟用","operationId":"update_network_drive_api_v1_network_drives__drive_id__patch","parameters":[{"name":"drive_id","in":"path","required":true,"schema":{"type":"integer","title":"Drive Id"}},{"name":"quota_gb","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":10,"title":"Quota Gb"}},{"name":"webdav_url","in":"query","required":false,"schema":{"type":"string","maxLength":255,"title":"Webdav Url"}},{"name":"smb_path","in":"query","required":false,"schema":{"type":"string","maxLength":255,"title":"Smb Path"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkDriveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["network-drives"],"summary":"Delete Network Drive","description":"停用網路硬碟 (不會真正刪除,只是設為 inactive)\n\n- **drive_id**: 網路硬碟 ID","operationId":"delete_network_drive_api_v1_network_drives__drive_id__delete","parameters":[{"name":"drive_id","in":"path","required":true,"schema":{"type":"integer","title":"Drive Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/network-drives/by-employee/{employee_id}":{"get":{"tags":["network-drives"],"summary":"Get Employee Drives","description":"取得指定員工的所有網路硬碟\n\n- **employee_id**: 員工 ID","operationId":"get_employee_drives_api_v1_network_drives_by_employee__employee_id__get","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"integer","title":"Employee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NetworkDriveResponse"},"title":"Response Get Employee Drives Api V1 Network Drives By Employee  Employee Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"根路徑","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","description":"健康檢查","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BusinessUnitCreate":{"properties":{"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"name_en":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name En"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"email_domain":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Email Domain"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code","name"],"title":"BusinessUnitCreate","description":"創建事業部 Schema"},"BusinessUnitResponse":{"properties":{"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"name_en":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name En"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"email_domain":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Email Domain"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"},"manager_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["code","name","id","created_at"],"title":"BusinessUnitResponse","description":"事業部回應 Schema"},"DivisionCreate":{"properties":{"business_unit_id":{"type":"integer","title":"Business Unit Id"},"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"name_en":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name En"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["business_unit_id","code","name"],"title":"DivisionCreate","description":"創建部門 Schema"},"DivisionResponse":{"properties":{"business_unit_id":{"type":"integer","title":"Business Unit Id"},"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"name_en":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name En"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"},"manager_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["business_unit_id","code","name","id","created_at"],"title":"DivisionResponse","description":"部門回應 Schema"},"EmailAccountBase":{"properties":{"employee_id":{"type":"integer","title":"Employee Id"},"email_address":{"type":"string","format":"email","title":"Email Address"},"mailbox_quota_mb":{"type":"integer","title":"Mailbox Quota Mb","default":5120},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["employee_id","email_address"],"title":"EmailAccountBase","description":"郵件帳號基礎 Schema"},"EmailAccountResponse":{"properties":{"employee_id":{"type":"integer","title":"Employee Id"},"email_address":{"type":"string","format":"email","title":"Email Address"},"mailbox_quota_mb":{"type":"integer","title":"Mailbox Quota Mb","default":5120},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["employee_id","email_address","id","created_at"],"title":"EmailAccountResponse","description":"郵件帳號回應 Schema"},"EmployeeCreate":{"properties":{"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username"},"first_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Last Name"},"chinese_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Chinese Name"},"email":{"type":"string","format":"email","title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone"},"mobile":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Mobile"},"business_unit_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Business Unit Id"},"division_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division Id"},"position":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Position"},"job_level":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Job Level"},"hire_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Hire Date"},"status":{"type":"string","maxLength":20,"title":"Status","default":"active"},"employee_id":{"type":"string","maxLength":20,"minLength":3,"title":"Employee Id"},"password":{"anyOf":[{"type":"string","minLength":8},{"type":"null"}],"title":"Password"},"keycloak_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Keycloak User Id"}},"type":"object","required":["username","email","employee_id"],"title":"EmployeeCreate","description":"創建員工 Schema"},"EmployeeListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/EmployeeResponse"},"type":"array","title":"Items"},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":50}},"type":"object","required":["total","items"],"title":"EmployeeListResponse","description":"員工列表回應 Schema"},"EmployeeResponse":{"properties":{"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username"},"first_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Last Name"},"chinese_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Chinese Name"},"email":{"type":"string","format":"email","title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone"},"mobile":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Mobile"},"business_unit_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Business Unit Id"},"division_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division Id"},"position":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Position"},"job_level":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Job Level"},"hire_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Hire Date"},"status":{"type":"string","maxLength":20,"title":"Status","default":"active"},"id":{"type":"integer","title":"Id"},"employee_id":{"type":"string","title":"Employee Id"},"keycloak_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Keycloak User Id"},"termination_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Termination Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["username","email","id","employee_id","created_at"],"title":"EmployeeResponse","description":"員工回應 Schema"},"EmployeeUpdate":{"properties":{"first_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Last Name"},"chinese_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Chinese Name"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone"},"mobile":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Mobile"},"business_unit_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Business Unit Id"},"division_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division Id"},"position":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Position"},"job_level":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Job Level"},"status":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Status"}},"type":"object","title":"EmployeeUpdate","description":"更新員工 Schema"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"NetworkDriveBase":{"properties":{"employee_id":{"type":"integer","title":"Employee Id"},"drive_name":{"type":"string","maxLength":100,"title":"Drive Name"},"drive_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Drive Path"},"quota_gb":{"type":"integer","title":"Quota Gb","default":50},"webdav_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webdav Url"},"smb_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Smb Path"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["employee_id","drive_name"],"title":"NetworkDriveBase","description":"網路硬碟基礎 Schema"},"NetworkDriveResponse":{"properties":{"employee_id":{"type":"integer","title":"Employee Id"},"drive_name":{"type":"string","maxLength":100,"title":"Drive Name"},"drive_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Drive Path"},"quota_gb":{"type":"integer","title":"Quota Gb","default":50},"webdav_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webdav Url"},"smb_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Smb Path"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["employee_id","drive_name","id","created_at"],"title":"NetworkDriveResponse","description":"網路硬碟回應 Schema"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}