{"openapi":"3.1.0","info":{"title":"dolbomcare API","description":"AI-powered care management platform","version":"0.1.0"},"paths":{"/api/v1/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/health/db":{"get":{"tags":["health"],"summary":"Health Check Db","operationId":"health_check_db_api_v1_health_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/users/register":{"post":{"tags":["users"],"summary":"Register","description":"센터장이 같은 센터에 직원 계정을 만든다","operationId":"register_api_v1_users_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/import":{"post":{"tags":["users"],"summary":"Import Staff","description":"요양사 계정을 한꺼번에 만든다 (센터장). 문제가 하나도 없을 때만 저장하고, 저장하면 줄마다 임시 비밀번호를\n한 번만 돌려준다(화면에서 안내문으로 내려받아 나눠 주고, 직원은 로그인 뒤 바꾼다).","operationId":"import_staff_api_v1_users_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffImportRows"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/login":{"post":{"tags":["users"],"summary":"Login","operationId":"login_api_v1_users_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/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/v1/users/forgot-password":{"post":{"tags":["users"],"summary":"Forgot Password","description":"비밀번호 재설정 이메일을 보낸다. 계정이 있든 없든 같은 응답을 줘서 이메일 존재 여부가\n새어나가지 않게 한다 - 실제 발송 여부는 SMTP 설정(app/email_service.py)에 달려있다.","operationId":"forgot_password_api_v1_users_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"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/users/reset-password":{"post":{"tags":["users"],"summary":"Reset Password With Token","description":"이메일로 받은 토큰으로 비밀번호를 재설정한다 (로그인 불필요).","operationId":"reset_password_with_token_api_v1_users_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordWithTokenRequest"}}},"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/users/":{"get":{"tags":["users"],"summary":"List Users","description":"사용자 목록 조회 (선택적으로 역할로 필터링). 항상 로그인한 사람의 센터 직원만 보인다 (이메일·연락처가 있어 다른 센터에는 보이면 안 된다).","operationId":"list_users_api_v1_users__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"center_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}":{"put":{"tags":["users"],"summary":"Update User","description":"사용자 정보 수정 (내 센터 직원만)","operationId":"update_user_api_v1_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Delete User","description":"사용자 삭제 (내 센터 직원만, 본인 계정은 불가)","operationId":"delete_user_api_v1_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/password":{"post":{"tags":["users"],"summary":"Reset Password","description":"센터장이 같은 센터 직원의 비밀번호를 재설정","operationId":"reset_password_api_v1_users__user_id__password_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me":{"get":{"tags":["users"],"summary":"Get My Profile","description":"본인 프로필 조회 (역할 공통 - 요양사·센터장·보호자 모두).","operationId":"get_my_profile_api_v1_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["users"],"summary":"Update My Profile","description":"본인 프로필 수정 (이름·연락처·사진). 이메일·역할은 본인이 바꿀 수 없다.","operationId":"update_my_profile_api_v1_users_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/me/notification-settings":{"get":{"tags":["users"],"summary":"Get My Notification Settings","description":"본인의 알림톡 수신 설정 조회. alimtalk_categories가 비어있으면(null) 전체 종류를 받는 것이다.","operationId":"get_my_notification_settings_api_v1_users_me_notification_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["users"],"summary":"Update My Notification Settings","description":"본인의 알림톡 수신 여부와 종류별 수신 여부를 설정한다 (인앱 알림은 이 설정과 무관하게 항상 온다)","operationId":"update_my_notification_settings_api_v1_users_me_notification_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/register":{"post":{"tags":["auth"],"summary":"Register","description":"센터장이 같은 센터에 직원 계정을 만든다","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/import":{"post":{"tags":["auth"],"summary":"Import Staff","description":"요양사 계정을 한꺼번에 만든다 (센터장). 문제가 하나도 없을 때만 저장하고, 저장하면 줄마다 임시 비밀번호를\n한 번만 돌려준다(화면에서 안내문으로 내려받아 나눠 주고, 직원은 로그인 뒤 바꾼다).","operationId":"import_staff_api_v1_auth_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffImportRows"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/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/v1/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","description":"비밀번호 재설정 이메일을 보낸다. 계정이 있든 없든 같은 응답을 줘서 이메일 존재 여부가\n새어나가지 않게 한다 - 실제 발송 여부는 SMTP 설정(app/email_service.py)에 달려있다.","operationId":"forgot_password_api_v1_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"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/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password With Token","description":"이메일로 받은 토큰으로 비밀번호를 재설정한다 (로그인 불필요).","operationId":"reset_password_with_token_api_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordWithTokenRequest"}}},"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/":{"get":{"tags":["auth"],"summary":"List Users","description":"사용자 목록 조회 (선택적으로 역할로 필터링). 항상 로그인한 사람의 센터 직원만 보인다 (이메일·연락처가 있어 다른 센터에는 보이면 안 된다).","operationId":"list_users_api_v1_auth__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"center_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/{user_id}":{"put":{"tags":["auth"],"summary":"Update User","description":"사용자 정보 수정 (내 센터 직원만)","operationId":"update_user_api_v1_auth__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Delete User","description":"사용자 삭제 (내 센터 직원만, 본인 계정은 불가)","operationId":"delete_user_api_v1_auth__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/{user_id}/password":{"post":{"tags":["auth"],"summary":"Reset Password","description":"센터장이 같은 센터 직원의 비밀번호를 재설정","operationId":"reset_password_api_v1_auth__user_id__password_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordReset"}}}},"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 My Profile","description":"본인 프로필 조회 (역할 공통 - 요양사·센터장·보호자 모두).","operationId":"get_my_profile_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["auth"],"summary":"Update My Profile","description":"본인 프로필 수정 (이름·연락처·사진). 이메일·역할은 본인이 바꿀 수 없다.","operationId":"update_my_profile_api_v1_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me/notification-settings":{"get":{"tags":["auth"],"summary":"Get My Notification Settings","description":"본인의 알림톡 수신 설정 조회. alimtalk_categories가 비어있으면(null) 전체 종류를 받는 것이다.","operationId":"get_my_notification_settings_api_v1_auth_me_notification_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["auth"],"summary":"Update My Notification Settings","description":"본인의 알림톡 수신 여부와 종류별 수신 여부를 설정한다 (인앱 알림은 이 설정과 무관하게 항상 온다)","operationId":"update_my_notification_settings_api_v1_auth_me_notification_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/record":{"post":{"tags":["billing"],"summary":"Create Billing Record","description":"음성 기록 → 청구 기록 자동 생성 (등급별 청구액 적용)","operationId":"create_billing_record_api_v1_billing_record_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_category","in":"query","required":false,"schema":{"type":"string","default":"재가급여","title":"Service Category"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingRecordCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/monthly/{year_month}":{"get":{"tags":["billing"],"summary":"Get Monthly Billing","description":"월간 청구 현황 조회 (자동 계산)","operationId":"get_monthly_billing_api_v1_billing_monthly__year_month__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"path","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingMonthlySummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/today":{"get":{"tags":["billing"],"summary":"Get Today Billing","description":"오늘의 청구 현황","operationId":"get_today_billing_api_v1_billing_today_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/{record_id}/approve":{"post":{"tags":["billing"],"summary":"Approve Billing Record","description":"청구 기록을 승인 (센터장만 가능)","operationId":"approve_billing_record_api_v1_billing__record_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{record_id}/reject":{"post":{"tags":["billing"],"summary":"Reject Billing Record","description":"청구 기록을 거절 (센터장만 가능)","operationId":"reject_billing_record_api_v1_billing__record_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/":{"get":{"tags":["billing"],"summary":"List Billing Records","description":"청구 기록 목록 조회 (기본: 활성 청구만, include_archived=true면 아카이브도 포함)","operationId":"list_billing_records_api_v1_billing__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":false,"schema":{"type":"integer","title":"Center Id"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{billing_id}/submit-to-nhis":{"post":{"tags":["billing"],"summary":"Submit Billing To Nhis","description":"청구를 건강보험공단에 청구 제출 (센터장만 가능, 수동 처리)","operationId":"submit_billing_to_nhis_api_v1_billing__billing_id__submit_to_nhis_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{billing_id}/confirm-reimbursement":{"post":{"tags":["billing"],"summary":"Confirm Reimbursement","description":"건보 환급 확인 (센터장만 가능, 완료된 청구는 자동 아카이브)","operationId":"confirm_reimbursement_api_v1_billing__billing_id__confirm_reimbursement_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{billing_id}/cancel-nhis-submission":{"patch":{"tags":["billing"],"summary":"Cancel Nhis Submission","description":"건보 청구 취소 (센터장만 가능, submitted_to_nhis → approved)","operationId":"cancel_nhis_submission_api_v1_billing__billing_id__cancel_nhis_submission_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{billing_id}/submit":{"post":{"tags":["billing"],"summary":"Submit Billing For Approval","description":"청구를 센터장 승인을 위해 제출 (요양사만 가능)","operationId":"submit_billing_for_approval_api_v1_billing__billing_id__submit_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/{billing_id}":{"patch":{"tags":["billing"],"summary":"Update Billing Status","description":"청구 상태 되돌리기 (센터장만: approved → pending, pending → draft)","operationId":"update_billing_status_api_v1_billing__billing_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["billing"],"summary":"Delete Billing","description":"청구 삭제 (요양사: draft 상태만, 센터장: 자신 것만)","operationId":"delete_billing_api_v1_billing__billing_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"billing_id","in":"path","required":true,"schema":{"type":"integer","title":"Billing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/test":{"post":{"tags":["records"],"summary":"Test Endpoint","description":"테스트 엔드포인트","operationId":"test_endpoint_api_v1_records_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/records/create":{"post":{"tags":["records"],"summary":"Create Record","description":"일일 기록 생성 및 청구 자동 계산","operationId":"create_record_api_v1_records_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/records/batch-delete":{"post":{"tags":["records"],"summary":"Batch Delete Records","description":"여러 기록 일괄 삭제 (자신의 기록 또는 센터장만)","operationId":"batch_delete_records_api_v1_records_batch_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/records/upload-audio":{"post":{"tags":["records"],"summary":"Upload Audio","description":"음성 파일 업로드\n실제 Whisper API 연동 시 텍스트 변환","operationId":"upload_audio_api_v1_records_upload_audio_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_audio_api_v1_records_upload_audio_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/recent":{"get":{"tags":["records"],"summary":"Get Recent Records","description":"지난 N일간의 기록 조회 (기본: 7일)\nresident_id가 주어지면 해당 이용자의 기록만 조회","operationId":"get_recent_records_api_v1_records_recent_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"resident_id","in":"query","required":false,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/all":{"get":{"tags":["records"],"summary":"Get All Records","description":"모든 기록 조회\nresident_id가 주어지면 해당 이용자의 기록만 조회","operationId":"get_all_records_api_v1_records_all_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"resident_id","in":"query","required":false,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/today":{"get":{"tags":["records"],"summary":"Get Today Records","description":"오늘의 기록 조회 + 청구액\nresident_id가 주어지면 해당 이용자의 기록만 조회","operationId":"get_today_records_api_v1_records_today_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"resident_id","in":"query","required":false,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/all/center":{"get":{"tags":["records"],"summary":"Get All Center Records","description":"센터 전체의 모든 기록 조회 (센터장용)\n해당 센터 요양관리사의 모든 기록 조회","operationId":"get_all_center_records_api_v1_records_all_center_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/today/center":{"get":{"tags":["records"],"summary":"Get Today Center Records","description":"센터 전체의 오늘 기록 조회 (센터장용)\n해당 센터 요양관리사의 오늘 기록만 조회","operationId":"get_today_center_records_api_v1_records_today_center_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/prefill":{"get":{"tags":["records"],"summary":"Prefill Record","description":"기록을 쓰기 전에 미리 채워 줄 값: 오늘 승인된 방문 계획의 제공 항목, 지난 방문의 항목·상태 (요양보호사가 확인·수정한다).","operationId":"prefill_record_api_v1_records_prefill_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/daily/{record_id}":{"get":{"tags":["records"],"summary":"Get Record","description":"기록 상세 조회\n- 센터장: 모든 기록 조회 가능\n- 요양사: 자신의 기록만 조회 가능","operationId":"get_record_api_v1_records_daily__record_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["records"],"summary":"Update Record","description":"음성기록 수정 (메모/서비스 유형 변경)","operationId":"update_record_api_v1_records_daily__record_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["records"],"summary":"Delete Record","description":"기록 삭제\n- 센터장: 모든 기록 삭제 가능\n- 요양사: 자신의 기록만 삭제 가능\n\nQuery Parameters:\n- 요청자는 로그인 토큰으로 확인합니다 (본인 기록 또는 센터장)","operationId":"delete_record_api_v1_records_daily__record_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/monthly-summary":{"get":{"tags":["records"],"summary":"Get Monthly Summary","description":"월별 정산 요약 조회\n- center_id: 필수 (센터 ID, 내 센터만)\n- year_month: 선택 (YYYY-MM 형식, 미지정시 현재월)\n- caregiver_id: 선택 (특정 요양사만, 미지정시 전체)","operationId":"get_monthly_summary_api_v1_records_monthly_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":true,"schema":{"type":"integer","title":"Center Id"}},{"name":"year_month","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year Month"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/monthly-statistics":{"get":{"tags":["records"],"summary":"Get Monthly Statistics","description":"월별 통계 조회\n- center_id: 필수 (내 센터만)\n- year, month: 선택 (미지정시 현재월)","operationId":"get_monthly_statistics_api_v1_records_monthly_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":true,"schema":{"type":"integer","title":"Center Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/voice/create":{"post":{"tags":["records"],"summary":"Create Voice Record","description":"Create voice record + auto-generate billing","operationId":"create_voice_record_api_v1_records_voice_create_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"service_type","in":"query","required":false,"schema":{"type":"string","default":"basic_care","title":"Service Type"}},{"name":"duration_minutes","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Duration Minutes"}},{"name":"transcription","in":"query","required":false,"schema":{"type":"string","default":"","title":"Transcription"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/{resident_id}/change-requests":{"post":{"tags":["residents"],"summary":"Create Change Request","description":"요양사가 청구에 영향을 주는 정보의 변경을 센터장에게 요청한다","operationId":"create_change_request_api_v1_residents__resident_id__change_requests_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/change-requests/mine":{"get":{"tags":["residents"],"summary":"My Change Requests","description":"요양사가 올린 변경 요청과 처리 결과 (최근 순)","operationId":"my_change_requests_api_v1_residents_change_requests_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/residents/change-requests":{"get":{"tags":["residents"],"summary":"List Change Requests","operationId":"list_change_requests_api_v1_residents_change_requests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/change-requests/{request_id}/approve":{"post":{"tags":["residents"],"summary":"Approve Change Request","operationId":"approve_change_request_api_v1_residents_change_requests__request_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/change-requests/{request_id}/reject":{"post":{"tags":["residents"],"summary":"Reject Change Request","operationId":"reject_change_request_api_v1_residents_change_requests__request_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/{resident_id}/care-notes":{"patch":{"tags":["residents"],"summary":"Update Care Notes","description":"요양 기록 편집 (요양사, 센터장 가능)","operationId":"update_care_notes_api_v1_residents__resident_id__care_notes_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CareNotesUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/":{"get":{"tags":["residents"],"summary":"Get Residents","description":"이용자 목록 조회 (caregiver_id로 필터링 가능). 항상 로그인한 사람의 센터 이용자만 보인다.\ncaregiver_id는 담당 요양보호사(primary_caregiver_id)로 지정된 이용자만 걸러낸다.","operationId":"get_residents_api_v1_residents__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":false,"schema":{"type":"integer","title":"Center Id"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"type":"integer","title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["residents"],"summary":"Create Resident","description":"이용자 생성 (센터장, 요양사 가능)","operationId":"create_resident_api_v1_residents__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResidentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/center/{center_id}":{"get":{"tags":["residents"],"summary":"Get Residents By Center","description":"센터 내 모든 이용자 조회 (내 센터만)","operationId":"get_residents_by_center_api_v1_residents_center__center_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/{resident_id}":{"get":{"tags":["residents"],"summary":"Get Resident","description":"이용자 상세 조회 (내 센터 이용자, 보호자는 연결된 이용자만)","operationId":"get_resident_api_v1_residents__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["residents"],"summary":"Update Resident","description":"이용자 정보 수정 (JSON Body)\n- 센터장: 모든 필드 수정 가능\n- 요양사: 건강상태, 주소, 보호자 정보만 수정 가능 (등급·소득분류·인정·이름·생년월일은 변경 요청으로)","operationId":"update_resident_api_v1_residents__resident_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResidentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["residents"],"summary":"Delete Resident","description":"이용자 삭제 (센터장만 가능, 자기 센터 이용자만).\n방문 기록·청구 등 딸린 기록이 있으면 기본적으로 삭제하지 않고 무엇이 있는지 알려 준다(409).\nforce=true일 때만 딸린 기록까지 함께 지운다 (복구 불가).","operationId":"delete_resident_api_v1_residents__resident_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/{resident_id}/update-grade":{"put":{"tags":["residents"],"summary":"Update Resident Grade","description":"이용자 등급 및 클라이언트 타입 수정","operationId":"update_resident_grade_api_v1_residents__resident_id__update_grade_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"client_type","in":"query","required":true,"schema":{"type":"string","title":"Client Type"}},{"name":"care_grade","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Care Grade"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/import":{"post":{"tags":["residents"],"summary":"Import Residents","description":"이용자를 한꺼번에 등록한다 (센터장). 먼저 dry_run으로 검사해 줄마다 문제를 알려 주고,\n문제가 하나도 없을 때만 저장한다 (일부만 저장되어 다시 올리면 중복되는 일을 막는다).","operationId":"import_residents_api_v1_residents_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRows"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/residents/{resident_id}/guardians":{"post":{"tags":["residents"],"summary":"Add Additional Guardian","description":"추가 보호자 등록 (센터장만). 주 보호자는 이용자 정보의 보호자 이름·연락처에 적는다.","operationId":"add_additional_guardian_api_v1_residents__resident_id__guardians_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardianIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/residents/{resident_id}/guardians/{guardian_id}":{"delete":{"tags":["residents"],"summary":"Delete Additional Guardian","operationId":"delete_additional_guardian_api_v1_residents__resident_id__guardians__guardian_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"guardian_id","in":"path","required":true,"schema":{"type":"integer","title":"Guardian Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/salary/current":{"get":{"tags":["salary"],"summary":"Get Current Salary","description":"현재 월의 급여 조회","operationId":"get_current_salary_api_v1_salary_current_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/salary/history":{"get":{"tags":["salary"],"summary":"Get Salary History","description":"최근 급여 내역 조회 (최대 12개월)","operationId":"get_salary_history_api_v1_salary_history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/salary/monthly/{year_month}":{"get":{"tags":["salary"],"summary":"Get Monthly Salary","description":"특정 월의 상세 급여 정보","operationId":"get_monthly_salary_api_v1_salary_monthly__year_month__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"path","required":true,"schema":{"type":"string","title":"Year Month"}},{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/salary/contract":{"get":{"tags":["salary"],"summary":"Get Contract","description":"근로계약서 정보 조회\n실제 파일 다운로드는 별도 구현","operationId":"get_contract_api_v1_salary_contract_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/":{"get":{"tags":["schedule"],"summary":"Get Schedules","description":"스케줄 목록 조회 (필터링 가능). 항상 로그인한 사람의 센터 일정만 보인다.","operationId":"get_schedules_api_v1_schedule__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":false,"schema":{"type":"integer","title":"Center Id"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"resident_id","in":"query","required":false,"schema":{"type":"integer","title":"Resident Id"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["schedule"],"summary":"Create Schedule","description":"스케줄 생성 (센터장만 가능, 내 센터의 요양사·이용자만)","operationId":"create_schedule_api_v1_schedule__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/recurring":{"post":{"tags":["schedule"],"summary":"Create Recurring Schedule","description":"요일별 반복 방문을 기간 안의 날짜마다 한 번에 만든다 (같은 요양사·이용자·날짜에 이미 있으면 건너뜀)","operationId":"create_recurring_schedule_api_v1_schedule_recurring_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/schedule/caregiver-view":{"get":{"tags":["schedule"],"summary":"Caregiver Schedule View","description":"요양사 방문 계획: 계획된 방문과 실제 기록·도착/퇴실 시각을 날짜·이용자 기준으로 맞춘 결과","operationId":"caregiver_schedule_view_api_v1_schedule_caregiver_view_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"caregiver_id","in":"query","required":true,"schema":{"type":"integer","title":"Caregiver Id"}},{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/arrive":{"post":{"tags":["schedule"],"summary":"Mark Arrived","description":"도착 시각 기록 (이미 도착한 경우 처음 시각 유지)","operationId":"mark_arrived_api_v1_schedule__schedule_id__arrive_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/depart":{"post":{"tags":["schedule"],"summary":"Mark Left","description":"퇴실 시각 기록 (도착 기록 이후에만 가능). 처음 퇴실 기록 시 방문 기록 작성 알림을 보낸다.","operationId":"mark_left_api_v1_schedule__schedule_id__depart_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/propose":{"post":{"tags":["schedule"],"summary":"Propose Schedule","description":"요양사가 방문 계획을 제안 (센터장 승인 대기)","operationId":"propose_schedule_api_v1_schedule_propose_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/schedule/proposals":{"get":{"tags":["schedule"],"summary":"List Proposals","description":"센터장 승인 대기·반려 계획 목록","operationId":"list_proposals_api_v1_schedule_proposals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/approve":{"post":{"tags":["schedule"],"summary":"Approve Schedule","description":"센터장이 방문 계획 승인 → 요양사 나의일정에 확정","operationId":"approve_schedule_api_v1_schedule__schedule_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/reject":{"post":{"tags":["schedule"],"summary":"Reject Schedule","description":"센터장이 방문 계획 반려 (사유 필수)","operationId":"reject_schedule_api_v1_schedule__schedule_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/resubmit":{"post":{"tags":["schedule"],"summary":"Resubmit Schedule","description":"요양사가 반려된 계획을 수정해 다시 제안","operationId":"resubmit_schedule_api_v1_schedule__schedule_id__resubmit_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResubmitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/change-request":{"post":{"tags":["schedule"],"summary":"Request Schedule Change","description":"요양보호사가 승인된 예정 일정의 날짜·시간 변경을 요청 (센터장 승인 전까지 원래 일정 유지)","operationId":"request_schedule_change_api_v1_schedule__schedule_id__change_request_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/change-cancel":{"post":{"tags":["schedule"],"summary":"Cancel Schedule Change","description":"요양보호사가 보낸 변경 요청을 철회","operationId":"cancel_schedule_change_api_v1_schedule__schedule_id__change_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/change-requests":{"get":{"tags":["schedule"],"summary":"List Change Requests","description":"센터장 승인 대기 중인 일정 변경 요청","operationId":"list_change_requests_api_v1_schedule_change_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/schedule/{schedule_id}/change-approve":{"post":{"tags":["schedule"],"summary":"Approve Schedule Change","operationId":"approve_schedule_change_api_v1_schedule__schedule_id__change_approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/change-reject":{"post":{"tags":["schedule"],"summary":"Reject Schedule Change","operationId":"reject_schedule_change_api_v1_schedule__schedule_id__change_reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}":{"get":{"tags":["schedule"],"summary":"Get Schedule","description":"스케줄 상세 조회","operationId":"get_schedule_api_v1_schedule__schedule_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["schedule"],"summary":"Update Schedule","description":"스케줄 수정 (센터장만 가능)","operationId":"update_schedule_api_v1_schedule__schedule_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["schedule"],"summary":"Delete Schedule","description":"스케줄 삭제 (센터장만 가능)","operationId":"delete_schedule_api_v1_schedule__schedule_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{schedule_id}/status":{"patch":{"tags":["schedule"],"summary":"Update Schedule Status","description":"스케줄 상태 변경","operationId":"update_schedule_status_api_v1_schedule__schedule_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/mine":{"get":{"tags":["notifications"],"summary":"List My Notifications","operationId":"list_my_notifications_api_v1_notifications_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_api_v1_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"mark_read_api_v1_notifications__notification_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/guardian/invites":{"get":{"tags":["guardian"],"summary":"List Invites","description":"센터의 발급된 초대 코드 전체 조회 (읽기 전용, 보호자 목록/발급내역 표시용)","operationId":"list_invites_api_v1_guardian_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["guardian"],"summary":"Create Invite","description":"초대 코드 발급. 센터장뿐 아니라 요양사도 자신이 방문하는 이용자의 보호자를 직접 초대할 수 있다.","operationId":"create_invite_api_v1_guardian_invites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/guardian/signup":{"post":{"tags":["guardian"],"summary":"Guardian Signup","description":"보호자 회원가입. 초대 코드가 있어야 하고, 센터장이 승인하기 전까지는 아무 이용자도 볼 수 없다.","operationId":"guardian_signup_api_v1_guardian_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupBody"}}},"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/guardian/redeem-invite":{"post":{"tags":["guardian"],"summary":"Redeem Invite","description":"로그인한 보호자가 초대 코드를 입력한다. 센터장이 승인하기 전까지는 이용자가 보이지 않는다.","operationId":"redeem_invite_api_v1_guardian_redeem_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/guardian/requests":{"get":{"tags":["guardian"],"summary":"List Requests","operationId":"list_requests_api_v1_guardian_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/guardian/requests/{request_id}/approve":{"post":{"tags":["guardian"],"summary":"Approve Request","operationId":"approve_request_api_v1_guardian_requests__request_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/guardian/requests/{request_id}/reject":{"post":{"tags":["guardian"],"summary":"Reject Request","operationId":"reject_request_api_v1_guardian_requests__request_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/guardian/my-residents":{"get":{"tags":["guardian"],"summary":"My Residents","operationId":"my_residents_api_v1_guardian_my_residents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/guardian/residents/{resident_id}/visits":{"get":{"tags":["guardian"],"summary":"Resident Visits","description":"보호자에게는 방문 기록만 보인다. 청구 금액과 요양사 급여는 포함하지 않는다.","operationId":"resident_visits_api_v1_guardian_residents__resident_id__visits_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/guardian/view-logs":{"get":{"tags":["guardian"],"summary":"View Logs","description":"센터장이 이용자 기록을 보호자가 언제 열어 봤는지 확인한다(우리 센터 이용자만).","operationId":"view_logs_api_v1_guardian_view_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/residents/{resident_id}":{"get":{"tags":["messages"],"summary":"List Messages","operationId":"list_messages_api_v1_messages_residents__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["messages"],"summary":"Send Message","operationId":"send_message_api_v1_messages_residents__resident_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/unread-count":{"get":{"tags":["messages"],"summary":"Unread Count","operationId":"unread_count_api_v1_messages_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/residents/{resident_id}/read":{"post":{"tags":["messages"],"summary":"Mark Read","operationId":"mark_read_api_v1_messages_residents__resident_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/{message_id}":{"delete":{"tags":["messages"],"summary":"Delete Message","operationId":"delete_message_api_v1_messages__message_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/statements/confirm":{"post":{"tags":["statements"],"summary":"Confirm Statement","description":"센터장이 한 달의 급여를 확정한다. 확정한 시점의 금액을 저장하며, 이후 청구가 바뀌어도 명세는 그대로 둔다.","operationId":"confirm_statement_api_v1_statements_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/statements/reconfirm":{"post":{"tags":["statements"],"summary":"Reconfirm Statement","description":"확정 후 승인 청구가 바뀐 달의 명세 금액을 현재 승인 청구 기준으로 다시 저장한다. 바뀐 것이 없으면 하지 않는다.","operationId":"reconfirm_statement_api_v1_statements_reconfirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/statements/mine":{"get":{"tags":["statements"],"summary":"My Statements","description":"요양사는 센터가 확정한 명세만 본다. 확정되지 않은 달은 여기에 나오지 않는다.","operationId":"my_statements_api_v1_statements_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/statements/status":{"get":{"tags":["statements"],"summary":"Month Status","description":"센터장 화면: 달별로 요양사의 승인 청구 합계와 확정 여부를 본다.\n확정한 요양사는 확정 당시 저장된 금액을 보여 주고, 그 뒤 승인 청구가 바뀌었으면 stale로 알려 준다(재확정 필요).","operationId":"month_status_api_v1_statements_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/statements/ledger/{year_month}":{"get":{"tags":["statements"],"summary":"Pay Ledger","description":"월별 급여 지급 대장: 확정된 명세서를 직원별 한 줄로 모으고, 아직 확정 안 된 직원은 따로 알려 준다.\n금액은 확정 당시 저장된 값을 그대로 쓴다(다시 계산하지 않는다).","operationId":"pay_ledger_api_v1_statements_ledger__year_month__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"path","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/certificates/":{"get":{"tags":["certificates"],"summary":"List Certificates","description":"센터의 직원 자격증 목록","operationId":"list_certificates_api_v1_certificates__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["certificates"],"summary":"Create Certificate","description":"센터장이 직원의 자격증을 등록한다","operationId":"create_certificate_api_v1_certificates__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/certificates/{cert_id}":{"delete":{"tags":["certificates"],"summary":"Delete Certificate","description":"센터장이 자격증을 삭제한다","operationId":"delete_certificate_api_v1_certificates__cert_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cert_id","in":"path","required":true,"schema":{"type":"integer","title":"Cert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/needs-assessments/options":{"get":{"tags":["needs_assessments"],"summary":"Get Options","description":"화면에서 쓸 코드표 (라벨은 서버가 기준이다 - 프론트엔드에 따로 베끼지 않는다)","operationId":"get_options_api_v1_needs_assessments_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/needs-assessments/":{"post":{"tags":["needs_assessments"],"summary":"Create Assessment","description":"기초평가(욕구조사) 작성 (요양사·센터장). 매 방문이 아니라 주기 평가용이라 이력으로 계속 쌓인다.","operationId":"create_assessment_api_v1_needs_assessments__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NeedsAssessmentCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/needs-assessments/status":{"get":{"tags":["needs_assessments"],"summary":"Assessment Status","description":"이용자별 마지막 기초평가 날짜와 경과일. 기록이 없거나 주기(REVIEW_DAYS)를 넘기면 확인 필요로 표시한다.","operationId":"assessment_status_api_v1_needs_assessments_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/needs-assessments/resident/{resident_id}":{"get":{"tags":["needs_assessments"],"summary":"List Assessments","description":"한 이용자의 기초평가 이력 (최신순)","operationId":"list_assessments_api_v1_needs_assessments_resident__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/needs-assessments/{assessment_id}/form":{"get":{"tags":["needs_assessments"],"summary":"Assessment Form","description":"욕구조사기록지(공단 별지 양식) 출력용 값. 기록하지 않은 칸은 빈 값으로 두고 출력 화면에서 빈칸으로 남긴다.","operationId":"assessment_form_api_v1_needs_assessments__assessment_id__form_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"integer","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/copay/summary":{"get":{"tags":["copay"],"summary":"Get Copay Summary","description":"해당 월, 센터 전체 이용자의 본인부담금 청구/수납 현황.","operationId":"get_copay_summary_api_v1_copay_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/copay/remind":{"post":{"tags":["copay"],"summary":"Remind Unpaid Copay","description":"해당 월 미수납·부분수납 이용자의 보호자에게 잔액을 인앱 알림으로 안내한다.\n보호자가 연결되지 않은 이용자는 보내지 않고 이름만 돌려준다 (센터가 직접 연락).","operationId":"remind_unpaid_copay_api_v1_copay_remind_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/copay/{resident_id}/pay":{"post":{"tags":["copay"],"summary":"Record Copay Payment","description":"본인부담금 수납 기록 (분할 납부 가능 - 여러 번 호출하면 누적된다).","operationId":"record_copay_payment_api_v1_copay__resident_id__pay_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopayPaymentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/copay/resident/{resident_id}/history":{"get":{"tags":["copay"],"summary":"Get Resident Copay History","description":"한 이용자의 월별 본인부담금 납부 이력 (최신순). 연말정산용 연간 납부확인서에도 쓸 수 있다.","operationId":"get_resident_copay_history_api_v1_copay_resident__resident_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/copay/resident/{resident_id}/annual-statement":{"get":{"tags":["copay"],"summary":"Get Annual Payment Statement","description":"연말정산용 본인부담금 납부확인서 - 세액공제는 \"실제로 낸 돈\" 기준이라 total_amount(청구액)가 아니라\npaid_amount(실제 수납액)를 월별로 집계한다. 보호자도 본인이 연결된 이용자 것은 직접 발급받을 수 있다.","operationId":"get_annual_payment_statement_api_v1_copay_resident__resident_id__annual_statement_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/risk-assessments/options":{"get":{"tags":["risk_assessments"],"summary":"Get Options","operationId":"get_options_api_v1_risk_assessments_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/risk-assessments/":{"post":{"tags":["risk_assessments"],"summary":"Create Risk Assessment","description":"낙상위험도·욕창위험도·인지기능평가 기록 (요양사·센터장). 반기마다 쌓이는 이력이다.","operationId":"create_risk_assessment_api_v1_risk_assessments__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskAssessmentCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/risk-assessments/resident/{resident_id}":{"get":{"tags":["risk_assessments"],"summary":"List Risk Assessments","description":"한 이용자의 위험도/기능평가 현황. 종류별로 최신 평가 + 다음 평가 기한 + 이력을 묶어 돌려준다.","operationId":"list_risk_assessments_api_v1_risk_assessments_resident__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/risk-assessments/center-due":{"get":{"tags":["risk_assessments"],"summary":"Center Due","description":"센터 이용자 중 낙상·욕창·인지기능 평가 기한이 지났거나 한 번도 안 한 항목. 센터장·사회복지사용.","operationId":"center_due_api_v1_risk_assessments_center_due_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/risk-assessments/center-due/notify":{"post":{"tags":["risk_assessments"],"summary":"Notify Center Due","description":"기한이 지난 평가를 센터장·사회복지사에게 인앱 알림으로 보낸다. 같은 이용자·같은 평가는 달마다 한 번만 보낸다.","operationId":"notify_center_due_api_v1_risk_assessments_center_due_notify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/audit-prep/resident/{resident_id}":{"get":{"tags":["audit_prep"],"summary":"Get Resident Audit Packet","description":"한 이용자의 기간 내 평가 준비 자료 (방문기록·기초평가·위험도평가·본인부담금)를 한 번에 모은다.","operationId":"get_resident_audit_packet_api_v1_audit_prep_resident__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"start","in":"query","required":true,"schema":{"type":"string","title":"Start"}},{"name":"end","in":"query","required":true,"schema":{"type":"string","title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit-prep/center":{"get":{"tags":["audit_prep"],"summary":"Get Center Audit Packet","description":"센터 공통 증빙(직원 교육·직원 상담·사례관리 회의)을 기간별로 모은다.","operationId":"get_center_audit_packet_api_v1_audit_prep_center_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","title":"Start"}},{"name":"end","in":"query","required":true,"schema":{"type":"string","title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trainings/sessions":{"get":{"tags":["trainings"],"summary":"List Sessions","operationId":"list_sessions_api_v1_trainings_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["trainings"],"summary":"Create Session","operationId":"create_session_api_v1_trainings_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/trainings/sessions/mine":{"get":{"tags":["trainings"],"summary":"My Sessions","description":"요양보호사 본인이 참석한 교육 이력 (참석 여부와 서명 여부 포함).","operationId":"my_sessions_api_v1_trainings_sessions_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/trainings/sessions/{session_id}":{"delete":{"tags":["trainings"],"summary":"Delete Session","operationId":"delete_session_api_v1_trainings_sessions__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trainings/status":{"get":{"tags":["trainings"],"summary":"Get Training Status","operationId":"get_training_status_api_v1_trainings_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/trainings/notices":{"get":{"tags":["trainings"],"summary":"List Notices","operationId":"list_notices_api_v1_trainings_notices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["trainings"],"summary":"Create Notice","operationId":"create_notice_api_v1_trainings_notices_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoticeBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/trainings/notices/{notice_id}":{"delete":{"tags":["trainings"],"summary":"Delete Notice","operationId":"delete_notice_api_v1_trainings_notices__notice_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"notice_id","in":"path","required":true,"schema":{"type":"integer","title":"Notice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trainings/notices/status":{"get":{"tags":["trainings"],"summary":"Get Notice Status","operationId":"get_notice_status_api_v1_trainings_notices_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/trainings/options":{"get":{"tags":["trainings"],"summary":"Get Options","operationId":"get_options_api_v1_trainings_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-reviews/evaluations":{"post":{"tags":["service_reviews"],"summary":"Create Evaluation","operationId":"create_evaluation_api_v1_service_reviews_evaluations_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["service_reviews"],"summary":"List Evaluations","operationId":"list_evaluations_api_v1_service_reviews_evaluations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-reviews/evaluations/{ev_id}":{"delete":{"tags":["service_reviews"],"summary":"Delete Evaluation","operationId":"delete_evaluation_api_v1_service_reviews_evaluations__ev_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ev_id","in":"path","required":true,"schema":{"type":"integer","title":"Ev Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-reviews/evaluations/status":{"get":{"tags":["service_reviews"],"summary":"Get Evaluation Status","operationId":"get_evaluation_status_api_v1_service_reviews_evaluations_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-reviews/conferences":{"get":{"tags":["service_reviews"],"summary":"List Conferences","operationId":"list_conferences_api_v1_service_reviews_conferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["service_reviews"],"summary":"Create Conference","operationId":"create_conference_api_v1_service_reviews_conferences_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-reviews/conferences/{conf_id}/follow-up":{"put":{"tags":["service_reviews"],"summary":"Update Follow Up","operationId":"update_follow_up_api_v1_service_reviews_conferences__conf_id__follow_up_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conf_id","in":"path","required":true,"schema":{"type":"integer","title":"Conf Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceFollowUp"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-reviews/conferences/{conf_id}":{"delete":{"tags":["service_reviews"],"summary":"Delete Conference","operationId":"delete_conference_api_v1_service_reviews_conferences__conf_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conf_id","in":"path","required":true,"schema":{"type":"integer","title":"Conf Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-reviews/conferences/status":{"get":{"tags":["service_reviews"],"summary":"Get Conference Status","operationId":"get_conference_status_api_v1_service_reviews_conferences_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/care-plans":{"post":{"tags":["care_plans"],"summary":"Create Plan","operationId":"create_plan_api_v1_care_plans_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__care_plans__PlanBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["care_plans"],"summary":"List Plans","operationId":"list_plans_api_v1_care_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/{plan_id}/progress":{"put":{"tags":["care_plans"],"summary":"Update Progress","description":"보호자 설명·확인서명일과 공단 통보일을 기록한다.","operationId":"update_progress_api_v1_care_plans__plan_id__progress_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__care_plans__ProgressBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/{plan_id}/entry-sheet":{"get":{"tags":["care_plans"],"summary":"Plan Entry Sheet","description":"공단 급여제공계획서 전산 등록 화면 순서대로 옮겨 적을 내용 (엑셀 업로드 대신 쓰는 입력 보조, 시스템에 전송하지 않음).","operationId":"plan_entry_sheet_api_v1_care_plans__plan_id__entry_sheet_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/{plan_id}/form":{"get":{"tags":["care_plans"],"summary":"Plan Form","description":"장기요양급여 제공 계획서(별지 제11호의3서식) 출력용 값. 시스템에 없는 칸(계약일·계약기간·이용계획서 번호·전화번호 등)은 비워 둔다.","operationId":"plan_form_api_v1_care_plans__plan_id__form_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/{plan_id}":{"delete":{"tags":["care_plans"],"summary":"Delete Plan","operationId":"delete_plan_api_v1_care_plans__plan_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/status":{"get":{"tags":["care_plans"],"summary":"Get Status","operationId":"get_status_api_v1_care_plans_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/care-plans/{plan_id}/share":{"post":{"tags":["care_plans"],"summary":"Share With Guardian","description":"계획서를 설명한 뒤 보호자에게 확인·서명을 요청한다 (이때부터 보호자 화면에 보인다).","operationId":"share_with_guardian_api_v1_care_plans__plan_id__share_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/guardian":{"get":{"tags":["care_plans"],"summary":"Guardian Plans","operationId":"guardian_plans_api_v1_care_plans_guardian_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/care-plans/{plan_id}/sign":{"post":{"tags":["care_plans"],"summary":"Guardian Sign","operationId":"guardian_sign_api_v1_care_plans__plan_id__sign_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/mine":{"get":{"tags":["care_plans"],"summary":"Caregiver Plans","description":"요양보호사: 내가 담당하는 이용자의 최신 급여제공계획과 내 확인 여부.","operationId":"caregiver_plans_api_v1_care_plans_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/care-plans/{plan_id}/ack":{"post":{"tags":["care_plans"],"summary":"Caregiver Ack","operationId":"caregiver_ack_api_v1_care_plans__plan_id__ack_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-plans/{plan_id}/signature":{"get":{"tags":["care_plans"],"summary":"Plan Signature","description":"평가 준비·인쇄용: 보호자가 전자서명한 이미지를 센터장만 열람한다.","operationId":"plan_signature_api_v1_care_plans__plan_id__signature_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/handovers/options":{"get":{"tags":["handovers"],"summary":"Options","operationId":"options_api_v1_handovers_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/handovers":{"get":{"tags":["handovers"],"summary":"List Notes","description":"센터장은 센터 전체, 요양보호사는 내가 쓴 것과 나에게 온 것만 본다.","operationId":"list_notes_api_v1_handovers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["handovers"],"summary":"Create Note","operationId":"create_note_api_v1_handovers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandoverBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/handovers/{note_id}/ack":{"post":{"tags":["handovers"],"summary":"Acknowledge","operationId":"acknowledge_api_v1_handovers__note_id__ack_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-sheet":{"get":{"tags":["care-sheet"],"summary":"Care Sheet","description":"센터장은 센터 이용자 전체, 요양보호사는 본인이 작성한 기록만 서식에 넣는다.","operationId":"care_sheet_api_v1_care_sheet_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"week_start","in":"query","required":true,"schema":{"type":"string","format":"date","description":"주의 시작 날짜(YYYY-MM-DD). 이 날부터 7일을 보여 준다","title":"Week Start"},"description":"주의 시작 날짜(YYYY-MM-DD). 이 날부터 7일을 보여 준다"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/care-sheet/visits":{"get":{"tags":["care-sheet"],"summary":"Visit Sheet","description":"방문목욕·방문간호 기록지(공단 서식 101·102)용 방문 목록. 방문 한 번이 서식 한 칸이다. 저장하지 않은 칸(상태 확인, 혈압 등)은 비워 둔다.","operationId":"visit_sheet_api_v1_care_sheet_visits_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"week_start","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Week Start"}},{"name":"benefit_type","in":"query","required":true,"schema":{"type":"string","description":"home_bath 또는 home_nursing","title":"Benefit Type"},"description":"home_bath 또는 home_nursing"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nursing-orders":{"post":{"tags":["nursing-orders"],"summary":"Create Order","operationId":"create_order_api_v1_nursing_orders_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["nursing-orders"],"summary":"List Orders","operationId":"list_orders_api_v1_nursing_orders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nursing-orders/{order_id}/file":{"get":{"tags":["nursing-orders"],"summary":"Order File","operationId":"order_file_api_v1_nursing_orders__order_id__file_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nursing-orders/{order_id}":{"delete":{"tags":["nursing-orders"],"summary":"Delete Order","operationId":"delete_order_api_v1_nursing_orders__order_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-work/logs":{"post":{"tags":["social-work"],"summary":"Create Log","operationId":"create_log_api_v1_social_work_logs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__social_work__LogBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["social-work"],"summary":"List Logs","operationId":"list_logs_api_v1_social_work_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-work/logs/{log_id}/form":{"get":{"tags":["social-work"],"summary":"Log Form","description":"업무수행일지 출력(별지 제24호 1쪽)에 필요한 값. 시스템에 없는 칸은 돌려주지 않고 출력 화면에서 빈칸으로 둔다.","operationId":"log_form_api_v1_social_work_logs__log_id__form_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"integer","title":"Log Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-work/monitoring":{"post":{"tags":["social-work"],"summary":"Record Monitoring","operationId":"record_monitoring_api_v1_social_work_monitoring_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/social-work/monitoring/status":{"get":{"tags":["social-work"],"summary":"Monitoring Status","description":"이번 달 방문 확인이 빠진 이용자 목록 (고시 제57조: 가산 대상 모든 수급자 매월 1회 이상).","operationId":"monitoring_status_api_v1_social_work_monitoring_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-work/visit-plans":{"post":{"tags":["social-work"],"summary":"Add Plan","operationId":"add_plan_api_v1_social_work_visit_plans_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__social_work__PlanBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["social-work"],"summary":"List Plans","operationId":"list_plans_api_v1_social_work_visit_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"from_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"From Date"}},{"name":"to_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-work/visit-plans/{plan_id}/done":{"post":{"tags":["social-work"],"summary":"Mark Done","description":"방문 예정을 완료하면 같은 달 월 방문 확인 기록도 함께 남긴다. 이미 그 달 기록이 있으면 새로 만들지 않는다.","operationId":"mark_done_api_v1_social_work_visit_plans__plan_id__done_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DoneBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/record-review/records":{"get":{"tags":["record_review"],"summary":"List Records","description":"센터의 요양보호사 제공 기록을 최근 며칠 치로 보여 준다. 탭별 건수는 기간 안 전체 기준이다.","operationId":"list_records_api_v1_record_review_records_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","pattern":"^(pending|confirmed|returned|all)$","default":"pending","title":"Status"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/record-review/records/{record_id}/confirm":{"post":{"tags":["record_review"],"summary":"Confirm Record","operationId":"confirm_record_api_v1_record_review_records__record_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/record-review/records/{record_id}/return":{"post":{"tags":["record_review"],"summary":"Return Record","operationId":"return_record_api_v1_record_review_records__record_id__return_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReturnBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/record-review/pending-count":{"get":{"tags":["record_review"],"summary":"Pending Count","description":"메뉴 배지용: 최근 14일 안에 사회복지사 확인을 기다리는 제공 기록 수.","operationId":"pending_count_api_v1_record_review_pending_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/leave/requests":{"post":{"tags":["leave"],"summary":"Create Request","operationId":"create_request_api_v1_leave_requests_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaveBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["leave"],"summary":"Center Requests","operationId":"center_requests_api_v1_leave_requests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","pattern":"^(pending|approved|rejected|cancelled|all)$","default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leave/requests/mine":{"get":{"tags":["leave"],"summary":"My Requests","operationId":"my_requests_api_v1_leave_requests_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/leave/requests/{request_id}/cancel":{"post":{"tags":["leave"],"summary":"Cancel Request","operationId":"cancel_request_api_v1_leave_requests__request_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leave/requests/{request_id}/approve":{"post":{"tags":["leave"],"summary":"Approve","operationId":"approve_api_v1_leave_requests__request_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DecisionBody"}],"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leave/requests/{request_id}/reject":{"post":{"tags":["leave"],"summary":"Reject","operationId":"reject_api_v1_leave_requests__request_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/committee":{"get":{"tags":["committee"],"summary":"List Meetings","operationId":"list_meetings_api_v1_committee_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["committee"],"summary":"Create Meeting","operationId":"create_meeting_api_v1_committee_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/committee/{meeting_id}":{"put":{"tags":["committee"],"summary":"Update Meeting","operationId":"update_meeting_api_v1_committee__meeting_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"meeting_id","in":"path","required":true,"schema":{"type":"integer","title":"Meeting Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/equipment":{"get":{"tags":["equipment"],"summary":"List Equipment","operationId":"list_equipment_api_v1_equipment_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","pattern":"^(all|in_use|repair|disposed)$","default":"all","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["equipment"],"summary":"Create Equipment","operationId":"create_equipment_api_v1_equipment_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EquipmentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/equipment/{equipment_id}/status":{"post":{"tags":["equipment"],"summary":"Change Status","operationId":"change_status_api_v1_equipment__equipment_id__status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"equipment_id","in":"path","required":true,"schema":{"type":"integer","title":"Equipment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__equipment__StatusBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resident-logs":{"get":{"tags":["resident_logs"],"summary":"List Logs","operationId":"list_logs_api_v1_resident_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(observation|feedback)$","default":"observation","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["resident_logs"],"summary":"Create Log","operationId":"create_log_api_v1_resident_logs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__resident_logs__LogBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resident-logs/{log_id}":{"put":{"tags":["resident_logs"],"summary":"Update Log","operationId":"update_log_api_v1_resident_logs__log_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"integer","title":"Log Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__resident_logs__LogBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training-certs":{"get":{"tags":["training_certs"],"summary":"List Certs","description":"센터장은 센터 직원 전체, 그 밖의 직원은 본인 수료증만 본다.","operationId":"list_certs_api_v1_training_certs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["training_certs"],"summary":"Create Cert","operationId":"create_cert_api_v1_training_certs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training-certs/{cert_id}/file":{"get":{"tags":["training_certs"],"summary":"Get File","operationId":"get_file_api_v1_training_certs__cert_id__file_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cert_id","in":"path","required":true,"schema":{"type":"integer","title":"Cert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training-certs/{cert_id}":{"delete":{"tags":["training_certs"],"summary":"Delete Cert","operationId":"delete_cert_api_v1_training_certs__cert_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cert_id","in":"path","required":true,"schema":{"type":"integer","title":"Cert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/public/copay/estimate":{"get":{"tags":["public_copay"],"summary":"Estimate","operationId":"estimate_api_v1_public_copay_estimate_get","parameters":[{"name":"grade","in":"query","required":true,"schema":{"type":"string","description":"1~5 또는 cognitive(인지지원등급)","title":"Grade"},"description":"1~5 또는 cognitive(인지지원등급)"},{"name":"client_type","in":"query","required":false,"schema":{"type":"string","default":"일반","title":"Client Type"}},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Minutes"}},{"name":"visits_per_month","in":"query","required":false,"schema":{"type":"integer","maximum":31,"minimum":1,"default":8,"title":"Visits Per Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-self/me":{"get":{"tags":["staff-self"],"summary":"My Records","operationId":"my_records_api_v1_staff_self_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-self/grievance":{"post":{"tags":["staff-self"],"summary":"Submit Grievance","operationId":"submit_grievance_api_v1_staff_self_grievance_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrievanceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-self/education-status":{"get":{"tags":["staff-self"],"summary":"Center Education Status","description":"센터장: 보수교육 대상 요양보호사별 상태와 이수 필요 명단.","operationId":"center_education_status_api_v1_staff_self_education_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-self/grievance/{record_id}/status":{"put":{"tags":["staff-self"],"summary":"Update Grievance","operationId":"update_grievance_api_v1_staff_self_grievance__record_id__status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__staff_self__StatusBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-self/grievances":{"get":{"tags":["staff-self"],"summary":"Center Grievances","description":"센터장: 우리 센터 직원이 접수한 고충 전체 (접수 순서 최신순).","operationId":"center_grievances_api_v1_staff_self_grievances_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-self/career-ratio":{"get":{"tags":["staff-self"],"summary":"Career Ratio","description":"센터장: 경력직 비율 (지표적용기간 2023.1~2025.12). 근무 월은 입·퇴사일과 요양보호사의 실제 급여제공 월로 산정.","operationId":"career_ratio_api_v1_staff_self_career_ratio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-self/publication-check":{"get":{"tags":["staff-self"],"summary":"Publication Check","description":"인력현황 게시 점검 (2026 방문요양 평가 '기관정보 게시' 지표). 센터 정보로 확인되는 항목은 자동 표시, 나머지는 센터장이 직접 확인.","operationId":"publication_check_api_v1_staff_self_publication_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/attendance/clock-in":{"post":{"tags":["attendance"],"summary":"Clock In","operationId":"clock_in_api_v1_attendance_clock_in_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/attendance/clock-out":{"post":{"tags":["attendance"],"summary":"Clock Out","operationId":"clock_out_api_v1_attendance_clock_out_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/attendance/me":{"get":{"tags":["attendance"],"summary":"My Month","operationId":"my_month_api_v1_attendance_me_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/attendance/center":{"get":{"tags":["attendance"],"summary":"Center Month","description":"센터장: 직원별 월 근무 시간과, 방문 기록은 있는데 출근 기록이 없는 날 수(방문·출근 불일치).","operationId":"center_month_api_v1_attendance_center_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inspections/items":{"get":{"tags":["inspections"],"summary":"Items","operationId":"items_api_v1_inspections_items_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/inspections":{"post":{"tags":["inspections"],"summary":"Create","operationId":"create_api_v1_inspections_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InspectionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["inspections"],"summary":"List Logs","operationId":"list_logs_api_v1_inspections_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contract-notice/draft":{"get":{"tags":["contract-notice"],"summary":"Draft","operationId":"draft_api_v1_contract_notice_draft_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"benefit_type","in":"query","required":true,"schema":{"type":"string","title":"Benefit Type"}},{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/today-board":{"get":{"tags":["today-board"],"summary":"Board","operationId":"board_api_v1_today_board_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"day","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Day"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/visit-map/day":{"get":{"tags":["visit-map"],"summary":"Day Map","operationId":"day_map_api_v1_visit_map_day_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"day","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Day"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/visit-map/resident-map":{"get":{"tags":["visit-map"],"summary":"Resident Map","description":"수급자별 이용 일정 지도: 기간 안의 방문 예정이 있는 수급자를 집 위치에 표시하고, 방문 횟수와 날짜를 보여 준다.","operationId":"resident_map_api_v1_visit_map_resident_map_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Start"}},{"name":"end","in":"query","required":true,"schema":{"type":"string","format":"date","title":"End"}},{"name":"caregiver_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Caregiver Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/visit-map/report":{"get":{"tags":["visit-map"],"summary":"Visit Report","description":"전체 방문 일정 리포트: 기간 안의 방문을 요양보호사별·상태별로 센다. 상태 계산은 오늘 방문 현황과 같다.","operationId":"visit_report_api_v1_visit_map_report_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Start"}},{"name":"end","in":"query","required":true,"schema":{"type":"string","format":"date","title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sms/send":{"post":{"tags":["sms"],"summary":"Send Guardian Sms","operationId":"send_guardian_sms_api_v1_sms_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsSendIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/sms/history":{"get":{"tags":["sms"],"summary":"Sms History","operationId":"sms_history_api_v1_sms_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/cognitive/catalog":{"get":{"tags":["cognitive"],"summary":"Catalog","operationId":"catalog_api_v1_cognitive_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/cognitive/plan":{"get":{"tags":["cognitive"],"summary":"Get Plan","operationId":"get_plan_api_v1_cognitive_plan_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"query","required":true,"schema":{"type":"integer","title":"Resident Id"}},{"name":"year_month","in":"query","required":true,"schema":{"type":"string","title":"Year Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["cognitive"],"summary":"Save Plan","operationId":"save_plan_api_v1_cognitive_plan_put","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inbox":{"get":{"tags":["inbox"],"summary":"Manager Inbox","operationId":"manager_inbox_api_v1_inbox_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/inbox/caregivers":{"get":{"tags":["inbox"],"summary":"Caregiver Board","description":"요양보호사별 현황판 - 한 사람씩 무엇이 밀려 있는지 한눈에 본다 (센터장 전용).","operationId":"caregiver_board_api_v1_inbox_caregivers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/inbox/visits-overview":{"get":{"tags":["inbox"],"summary":"Visits Overview","description":"방문 기록 현황 오른쪽 패널용: 센터 전체의 오늘 방문, 기록이 비어 있는 방문, 이번 달 이행 현황 (센터장 전용).\n\n요양보호사별 일정 조회(caregiver_schedule_view)와 같은 판정을 쓰므로 요양보호사 화면과 상태가 일치한다.","operationId":"visits_overview_api_v1_inbox_visits_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/incidents/residents":{"get":{"tags":["incidents"],"summary":"Residents","operationId":"residents_api_v1_incidents_residents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/incidents":{"get":{"tags":["incidents"],"summary":"List Reports","description":"센터장·사회복지사는 센터 전체를 본다(사회복지사는 열람만), 요양보호사는 본인이 보고한 건만 본다.","operationId":"list_reports_api_v1_incidents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["incidents"],"summary":"Create Report","operationId":"create_report_api_v1_incidents_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/incidents/{report_id}/progress":{"put":{"tags":["incidents"],"summary":"Update Progress","operationId":"update_progress_api_v1_incidents__report_id__progress_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__api__incidents__ProgressBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/counseling":{"post":{"tags":["counseling"],"summary":"Create Counseling","operationId":"create_counseling_api_v1_counseling_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CounselingBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["counseling"],"summary":"List Counselings","operationId":"list_counselings_api_v1_counseling_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Month"}},{"name":"resident_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/counseling/{counseling_id}/action":{"put":{"tags":["counseling"],"summary":"Record Action","description":"조치가 필요했던 상담에 조치 내용과 반영일을 남긴다 (직원 상담결과는 반기별 1회 이상 기관운영 등에 반영해야 함).","operationId":"record_action_api_v1_counseling__counseling_id__action_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"counseling_id","in":"path","required":true,"schema":{"type":"integer","title":"Counseling Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/counseling/{counseling_id}":{"delete":{"tags":["counseling"],"summary":"Delete Counseling","operationId":"delete_counseling_api_v1_counseling__counseling_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"counseling_id","in":"path","required":true,"schema":{"type":"integer","title":"Counseling Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/counseling/status":{"get":{"tags":["counseling"],"summary":"Get Status","operationId":"get_status_api_v1_counseling_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/counseling/caregiver-changes":{"get":{"tags":["counseling"],"summary":"Get Caregiver Changes","operationId":"get_caregiver_changes_api_v1_counseling_caregiver_changes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/visit-precheck":{"get":{"tags":["visit_precheck"],"summary":"Get Visit Precheck","description":"공단 전송(전자태그) 사전점검 - 최근 N일 방문 일정·기록과 이용자 인정기간 점검 (센터장 전용).","operationId":"get_visit_precheck_api_v1_visit_precheck_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-records/options":{"get":{"tags":["staff_records"],"summary":"Get Options","operationId":"get_options_api_v1_staff_records_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-records/":{"post":{"tags":["staff_records"],"summary":"Create Staff Record","description":"직원 규정준수 기록 추가 (센터장 전용).","operationId":"create_staff_record_api_v1_staff_records__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRecordCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/staff-records/staff/{staff_id}":{"get":{"tags":["staff_records"],"summary":"List Staff Records","description":"한 직원의 규정준수 기록 전체 (종류별로 묶어서 최신순).","operationId":"list_staff_records_api_v1_staff_records_staff__staff_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"integer","title":"Staff Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-records/staff/{staff_id}/annual-leave":{"get":{"tags":["staff_records"],"summary":"Get Annual Leave Estimate","description":"근로기준법 제60조 기준 연차유급휴가 발생일수 (참고용 자동계산).","operationId":"get_annual_leave_estimate_api_v1_staff_records_staff__staff_id__annual_leave_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"integer","title":"Staff Id"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-records/staff/{staff_id}/retirement-estimate":{"get":{"tags":["staff_records"],"summary":"Get Retirement Estimate","description":"근로자퇴직급여보장법 기준 퇴직금 추정액 (참고용 자동계산) - 최근 확정 급여 3개월을 평균임금 산정에 쓴다.","operationId":"get_retirement_estimate_api_v1_staff_records_staff__staff_id__retirement_estimate_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"integer","title":"Staff Id"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/staff-records/{record_id}":{"delete":{"tags":["staff_records"],"summary":"Delete Staff Record","operationId":"delete_staff_record_api_v1_staff_records__record_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resident-media/":{"post":{"tags":["resident_media"],"summary":"Upload Media","description":"사진 업로드 (요양사·센터장·보호자 모두 가능 - 양쪽 다 올릴 수 있어야 신뢰가 쌓인다).","operationId":"upload_media_api_v1_resident_media__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResidentMediaCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/resident-media/resident/{resident_id}":{"get":{"tags":["resident_media"],"summary":"List Media","description":"한 이용자의 사진첩 (최신순). 직원이 올린 것/보호자가 올린 것 개수를 따로 센다.","operationId":"list_media_api_v1_resident_media_resident__resident_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resident_id","in":"path","required":true,"schema":{"type":"integer","title":"Resident Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resident-media/{media_id}":{"delete":{"tags":["resident_media"],"summary":"Delete Media","description":"본인이 올린 사진이거나 센터장이면 삭제할 수 있다.","operationId":"delete_media_api_v1_resident_media__media_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/centers/me":{"get":{"tags":["centers"],"summary":"Get My Center","description":"내 센터 정보 조회 (센터장 전용).","operationId":"get_my_center_api_v1_centers_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["centers"],"summary":"Update My Center","description":"내 센터 정보 수정 (센터장 전용).","operationId":"update_my_center_api_v1_centers_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CenterUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/centers/me/alimtalk-usage":{"get":{"tags":["centers"],"summary":"Get My Alimtalk Usage","description":"내 센터의 이번 달 알림톡 발송 현황·잔액 (센터장 전용).","operationId":"get_my_alimtalk_usage_api_v1_centers_me_alimtalk_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/centers/me/region-options":{"get":{"tags":["centers"],"summary":"Get My Region Options","description":"등급판정 현황 카드의 지역 선택 칸 목록 + 센터 주소 기준 기본 지역 (센터장 전용).","operationId":"get_my_region_options_api_v1_centers_me_region_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/centers/me/region-demand":{"get":{"tags":["centers"],"summary":"Get My Region Demand","description":"장기요양 등급판정 신청 현황 (센터장 전용, 공공데이터 통계). 지역을 안 고르면 센터 주소 지역.","operationId":"get_my_region_demand_api_v1_centers_me_region_demand_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sido","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sido"}},{"name":"sigungu","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sigungu"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/centers/kakao-js-key":{"get":{"tags":["centers"],"summary":"Get Kakao Js Key","description":"센터 찾기 지도에 쓸 카카오맵 JavaScript 키 (공개 가능 - 도메인으로 제한됨).\n미설정이면 key: null을 내려주고, 화면은 지도 없이 목록만 보여준다.","operationId":"get_kakao_js_key_api_v1_centers_kakao_js_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/centers/trial-requests":{"post":{"tags":["centers"],"summary":"Submit Trial Request","description":"로그인 없이 접수하는 무료체험·파트너 신청. 저장해 두고 운영자에게 앱 알림을 보낸다.","operationId":"submit_trial_request_api_v1_centers_trial_requests_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialRequestIn"}}},"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/centers/signup":{"post":{"tags":["centers"],"summary":"Signup Center","description":"센터장 셀프 가입. 공단 기관 확인과 지정서 사본이 맞아야 계정이 만들어지고, 운영자가 지정서를 확인할 때까지는 읽기 전용이다.","operationId":"signup_center_api_v1_centers_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupIn"}}},"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/centers/partner-slots":{"get":{"tags":["centers"],"summary":"Partner Slots","description":"파트너 센터 이벤트의 남은 자리 (로그인 없이 볼 수 있다: 요금제·로그인 화면 안내용). 센터 이름은 내려주지 않는다.","operationId":"partner_slots_api_v1_centers_partner_slots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/centers/directory":{"get":{"tags":["centers"],"summary":"List Public Centers","description":"센터를 못 정한 예비 보호자용 공개 디렉토리 (로그인 불필요, find_center.html이 쓴다).\ncenters.router는 전체에 로그인 필수 의존성이 걸려 있어 이 엔드포인트만 별도 라우터로 분리했다.","operationId":"list_public_centers_api_v1_centers_directory_get","parameters":[{"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/v1/centers/nearby-facilities":{"get":{"tags":["centers"],"summary":"Nearby Facilities","description":"카카오맵 기반 \"주변 요양시설\" 참고용 검색 (로그인 불필요). 공단 인증 목록이 아니므로\n참고용임을 화면에서 반드시 밝혀야 한다 - app/kakao_local.py 모듈 docstring 참고.","operationId":"nearby_facilities_api_v1_centers_nearby_facilities_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nhis/ltc-institution/{institution_code}":{"get":{"tags":["nhis"],"summary":"Lookup Institution","description":"장기요양기관코드로 공단 일반현황·인력현황을 조회한다 (센터 정보 설정 화면용, 센터장 전용).","operationId":"lookup_institution_api_v1_nhis_ltc_institution__institution_code__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"institution_code","in":"path","required":true,"schema":{"type":"string","title":"Institution Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/is-admin":{"get":{"tags":["admin"],"summary":"Check Is Admin","description":"프런트에서 운영자 콘솔 링크를 보여줄지 판단하기 위한 가벼운 확인용 (DB 조회 없음).","operationId":"check_is_admin_api_v1_admin_is_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/demo/status":{"get":{"tags":["admin"],"summary":"Demo Status","description":"로그인 화면 '둘러보기' 버튼이 쓰는 데모 계정이 운영 DB에 있는지 읽기만 한다.","operationId":"demo_status_api_v1_admin_demo_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/demo/reset":{"post":{"tags":["admin"],"summary":"Demo Reset","description":"데모 체험 센터·계정·방문 데이터를 (다시) 만든다. 실제 센터 데이터는 건드리지 않고 데모 전용 데이터만 지우고 새로 만든다.","operationId":"demo_reset_api_v1_admin_demo_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/users/lookup":{"get":{"tags":["admin"],"summary":"Lookup User","description":"이메일로 계정을 찾는다 (운영자 전용). 로그인이 안 된다는 문의가 왔을 때 어느 센터\n소속인지, 역할이 뭔지 확인한 뒤 바로 비밀번호를 재설정해 줄 수 있게 한다.","operationId":"lookup_user_api_v1_admin_users_lookup_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}/reset-password":{"post":{"tags":["admin"],"summary":"Admin Reset Password","description":"운영자가 어떤 계정이든 비밀번호를 바로 재설정한다 (센터장을 거치지 않고 즉시 처리할 때 사용).","operationId":"admin_reset_password_api_v1_admin_users__user_id__reset_password_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminResetPasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/centers":{"post":{"tags":["admin"],"summary":"Create Center","description":"새 센터와 센터장 계정을 만든다 (운영자 전용). 지금은 가입 페이지가 실제 계정을 만들지\n않기 때문에, 파일럿 센터를 쓰게 하려면 운영자가 이 화면에서 직접 만들어 전달해야 한다.\n무료 체험(TRIAL_DAYS일)이 자동으로 시작되고, 기간이 지나면 읽기 전용이 된다 (plans.py 참고).","operationId":"create_center_api_v1_admin_centers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CenterCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/alimtalk-overview":{"get":{"tags":["admin"],"summary":"List Alimtalk Overview","description":"센터별 이번 달 알림톡 사용량·충전 잔액 (운영자 전용).","operationId":"list_alimtalk_overview_api_v1_admin_alimtalk_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/centers/{center_id}/extend-trial":{"post":{"tags":["admin"],"summary":"Extend Trial","description":"체험 기간을 연장한다 (운영자 전용). 이미 지난 센터는 오늘부터, 아직 안 지난 센터는\n남은 기간에 이어서 더한다.","operationId":"extend_trial_api_v1_admin_centers__center_id__extend_trial_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendTrialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/centers/{center_id}/convert-to-paid":{"post":{"tags":["admin"],"summary":"Convert To Paid","description":"체험 기간 제한을 완전히 없앤다 (운영자 전용) - 정식 계약 전환 시 사용.","operationId":"convert_to_paid_api_v1_admin_centers__center_id__convert_to_paid_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/trial-requests":{"get":{"tags":["admin"],"summary":"List Trial Requests","description":"로그인 화면으로 들어온 무료체험·파트너 신청 (새 신청이 위로).","operationId":"list_trial_requests_api_v1_admin_trial_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/facilities/status":{"get":{"tags":["admin"],"summary":"Facilities Status","description":"공단 장기요양기관 목록이 마지막으로 언제 가져와졌는지 (체험 신청의 기관기호 대조에 쓴다).","operationId":"facilities_status_api_v1_admin_facilities_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/facilities/import":{"post":{"tags":["admin"],"summary":"Import Facilities","description":"공단 '장기요양기관 시설별 현황' 엑셀을 올려 기관 목록을 새로 바꾼다.","operationId":"import_facilities_api_v1_admin_facilities_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_facilities_api_v1_admin_facilities_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/trial-requests/{request_id}/certificate":{"get":{"tags":["admin"],"summary":"Get Trial Certificate","description":"체험 신청에 올라온 지정서 사본. 운영자만 연다.","operationId":"get_trial_certificate_api_v1_admin_trial_requests__request_id__certificate_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/trial-requests/{request_id}/handled":{"post":{"tags":["admin"],"summary":"Mark Trial Request Handled","operationId":"mark_trial_request_handled_api_v1_admin_trial_requests__request_id__handled_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/partners":{"get":{"tags":["admin"],"summary":"List Partners","description":"파트너(무기한 무료 이벤트) 센터와 남은 자리 (운영자 전용).","operationId":"list_partners_api_v1_admin_partners_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/centers/{center_id}/partner":{"post":{"tags":["admin"],"summary":"Make Partner","description":"센터를 파트너로 지정한다: 기간 제한 없이 무료. 자리가 남아 있을 때만 지정할 수 있다.","operationId":"make_partner_api_v1_admin_centers__center_id__partner_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/centers/{center_id}/end-partner":{"post":{"tags":["admin"],"summary":"End Partner","description":"파트너를 해제한다. 갑자기 막히지 않도록 days일 동안의 체험 기간으로 돌려보낸다(기본 30일, 0이면 바로 읽기 전용).","operationId":"end_partner_api_v1_admin_centers__center_id__end_partner_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndPartnerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/centers/{center_id}":{"delete":{"tags":["admin"],"summary":"Delete Center","description":"사용하지 않는 센터를 삭제한다 (운영자 전용). 이용자가 한 명이라도 있거나 센터장 외에\n직원이 등록돼 있으면 실수로 실제 운영 데이터를 지우는 것을 막기 위해 거부한다.\n데이터가 있는 센터를 지우려면 /centers/{center_id}/force를 쓴다.","operationId":"delete_center_api_v1_admin_centers__center_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/centers/{center_id}/force":{"delete":{"tags":["admin"],"summary":"Force Delete Center","description":"이용자·직원이 있는 센터도 강제로 삭제한다 (운영자 전용, 복구 불가능).\n실수 방지를 위해 센터명을 정확히 입력해야만 실행된다.","operationId":"force_delete_center_api_v1_admin_centers__center_id__force_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"center_id","in":"path","required":true,"schema":{"type":"integer","title":"Center Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForceDeleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/alimtalk-charge":{"post":{"tags":["admin"],"summary":"Charge Alimtalk Balance","description":"센터 충전 잔액을 수동으로 올린다 (운영자 전용). 입금 확인 후 운영자가 직접 호출한다.","operationId":"charge_alimtalk_balance_api_v1_admin_alimtalk_charge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/rfid-compare/parse":{"post":{"tags":["rfid_compare"],"summary":"Parse File","description":"공단에서 내려받은 전자태그 전송내역 파일(.xlsx/.csv)을 읽어 제목 줄과 내용을 돌려준다. 파일은 저장하지 않는다.","operationId":"parse_file_api_v1_rfid_compare_parse_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_file_api_v1_rfid_compare_parse_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/rfid-compare/compare":{"post":{"tags":["rfid_compare"],"summary":"Compare","description":"공단 전자태그 전송내역과 돌봄케어의 방문 계획·도착 기록을 이용자·날짜·시간으로 맞춰 본다.\n올린 내용은 저장하지 않고 이 요청 안에서만 쓴다.","operationId":"compare_api_v1_rfid_compare_compare_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/claim-helper":{"get":{"tags":["claim_helper"],"summary":"Claim Helper","operationId":"claim_helper_api_v1_claim_helper_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","description":"급여제공월 YYYY-MM","title":"Year Month"},"description":"급여제공월 YYYY-MM"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/benefits":{"get":{"tags":["benefits"],"summary":"My Center Benefits","description":"내 센터가 제공하는 급여 종류를 프로그램(가정방문·주야간보호·시설·공생)별로 보여 준다.\nenabled는 센터가 고른 급여, implemented는 돌봄케어에 기능이 만들어졌는지다.","operationId":"my_center_benefits_api_v1_benefits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/benefits/visit-surcharge":{"get":{"tags":["benefits"],"summary":"Visit Surcharge Preview","description":"방문요양·방문간호의 야간(22~06시)·일요일 가산금액 미리보기. 기록 화면의 금액 안내가 서버 계산과 같은 값을 쓰게 한다.","operationId":"visit_surcharge_preview_api_v1_benefits_visit_surcharge_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"benefit_type","in":"query","required":true,"schema":{"type":"string","title":"Benefit Type"}},{"name":"minutes","in":"query","required":true,"schema":{"type":"integer","title":"Minutes"}},{"name":"start","in":"query","required":true,"schema":{"type":"string","title":"Start"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/day-care/preview":{"post":{"tags":["day_care"],"summary":"Preview","description":"저장하기 전에 금액을 미리 계산한다. 입력이 아직 부족해서 계산할 수 없으면 ok=false와 이유를 돌려준다.","operationId":"preview_api_v1_day_care_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/day-care":{"post":{"tags":["day_care"],"summary":"Create Attendance","operationId":"create_attendance_api_v1_day_care_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["day_care"],"summary":"List Attendance","operationId":"list_attendance_api_v1_day_care_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM","title":"Year Month"},"description":"YYYY-MM"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/day-care/{attendance_id}":{"delete":{"tags":["day_care"],"summary":"Delete Attendance","operationId":"delete_attendance_api_v1_day_care__attendance_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"attendance_id","in":"path","required":true,"schema":{"type":"integer","title":"Attendance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/value-report":{"get":{"tags":["value_report"],"summary":"Value Report","operationId":"value_report_api_v1_value_report_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year_month","in":"query","required":false,"schema":{"type":"string","description":"YYYY-MM, 비우면 이번 달","title":"Year Month"},"description":"YYYY-MM, 비우면 이번 달"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActionBody":{"properties":{"action_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Note"},"action_done_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Action Done Date"}},"type":"object","title":"ActionBody"},"AdminResetPasswordRequest":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"AdminResetPasswordRequest"},"ApprovalRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["user_id","user_role"],"title":"ApprovalRequest"},"AttendanceIn":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Caregiver Id"},"attendance_date":{"type":"string","format":"date","title":"Attendance Date"},"arrive_time":{"type":"string","title":"Arrive Time"},"leave_time":{"type":"string","title":"Leave Time"},"transport":{"type":"string","enum":["none","in","out","both"],"title":"Transport","default":"none"},"distance_km":{"anyOf":[{"type":"number","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Distance Km"},"bath_given":{"type":"boolean","title":"Bath Given","default":false},"special_note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Special Note"},"notes":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Notes"}},"type":"object","required":["resident_id","attendance_date","arrive_time","leave_time"],"title":"AttendanceIn"},"Attendee":{"properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"opinion":{"type":"string","title":"Opinion"},"signed":{"type":"boolean","title":"Signed","default":false}},"type":"object","required":["name","role","opinion"],"title":"Attendee"},"BatchDeleteRequest":{"properties":{"record_ids":{"items":{},"type":"array","title":"Record Ids"},"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"}},"type":"object","required":["record_ids","user_id","user_role"],"title":"BatchDeleteRequest"},"BillingMonthlySummary":{"properties":{"year_month":{"type":"string","title":"Year Month"},"total_records":{"type":"integer","title":"Total Records"},"total_amount":{"type":"integer","title":"Total Amount"},"submitted_count":{"type":"integer","title":"Submitted Count"},"paid_count":{"type":"integer","title":"Paid Count"},"pending_count":{"type":"integer","title":"Pending Count"},"approved_count":{"type":"integer","title":"Approved Count","default":0},"approved_amount":{"type":"integer","title":"Approved Amount","default":0}},"type":"object","required":["year_month","total_records","total_amount","submitted_count","paid_count","pending_count"],"title":"BillingMonthlySummary"},"BillingRecordCreate":{"properties":{"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"recorded_date":{"type":"string","format":"date-time","title":"Recorded Date"},"service_type":{"type":"string","title":"Service Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["caregiver_id","resident_id","recorded_date","service_type"],"title":"BillingRecordCreate"},"BillingRecordResponse":{"properties":{"id":{"type":"integer","title":"Id"},"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"service_type":{"type":"string","title":"Service Type"},"amount":{"type":"integer","title":"Amount"},"status":{"type":"string","title":"Status"},"recorded_date":{"type":"string","format":"date-time","title":"Recorded Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","caregiver_id","resident_id","service_type","amount","status","recorded_date","created_at"],"title":"BillingRecordResponse"},"BillingStatusUpdate":{"properties":{"approval_status":{"type":"string","title":"Approval Status"},"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"}},"type":"object","required":["approval_status","user_id","user_role"],"title":"BillingStatusUpdate"},"Body_import_facilities_api_v1_admin_facilities_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_import_facilities_api_v1_admin_facilities_import_post"},"Body_parse_file_api_v1_rfid_compare_parse_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_parse_file_api_v1_rfid_compare_parse_post"},"Body_upload_audio_api_v1_records_upload_audio_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_audio_api_v1_records_upload_audio_post"},"CareNotesUpdate":{"properties":{"care_notes":{"type":"string","title":"Care Notes"},"user_role":{"type":"string","title":"User Role","default":"caregiver"}},"type":"object","required":["care_notes"],"title":"CareNotesUpdate"},"CenterCreateRequest":{"properties":{"center_name":{"type":"string","title":"Center Name"},"manager_name":{"type":"string","title":"Manager Name"},"manager_email":{"type":"string","title":"Manager Email"},"manager_password":{"type":"string","title":"Manager Password"}},"type":"object","required":["center_name","manager_name","manager_email","manager_password"],"title":"CenterCreateRequest"},"CenterUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"institution_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution Code"},"logo_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Image"},"is_public_listed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public Listed"},"service_types":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Service Types"}},"type":"object","title":"CenterUpdate"},"CertBody":{"properties":{"user_id":{"type":"integer","title":"User Id"},"title":{"type":"string","title":"Title"},"completed_on":{"type":"string","format":"date","title":"Completed On"},"hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hours"},"issuer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuer"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name"},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data"}},"type":"object","required":["user_id","title","completed_on"],"title":"CertBody"},"CertificateCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grade"},"issued_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Issued On"},"expires_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Expires On"}},"type":"object","required":["user_id","name"],"title":"CertificateCreate"},"ChangeRequest":{"properties":{"scheduled_date":{"type":"string","title":"Scheduled Date"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"service_type":{"type":"string","title":"Service Type"},"planned_items":{"type":"string","title":"Planned Items"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["scheduled_date"],"title":"ChangeRequest"},"ChangeRequestCreate":{"properties":{"field":{"type":"string","title":"Field"},"value":{"type":"string","title":"Value"}},"type":"object","required":["field","value"],"title":"ChangeRequestCreate"},"ChargeRequest":{"properties":{"center_id":{"type":"integer","title":"Center Id"},"amount":{"type":"integer","title":"Amount"}},"type":"object","required":["center_id","amount"],"title":"ChargeRequest"},"CompareRequest":{"properties":{"rows":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Rows"},"resident_col":{"type":"integer","title":"Resident Col"},"start_col":{"type":"integer","title":"Start Col"},"end_col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Col"},"date_col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Date Col"},"caregiver_col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Caregiver Col"},"use_col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Use Col"},"tolerance_minutes":{"type":"integer","title":"Tolerance Minutes","default":30}},"type":"object","required":["rows","resident_col","start_col"],"title":"CompareRequest"},"ConferenceBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"conference_date":{"type":"string","format":"date","title":"Conference Date"},"reason":{"type":"string","title":"Reason"},"content":{"type":"string","title":"Content"},"plan":{"type":"string","title":"Plan"},"attendees":{"items":{"$ref":"#/components/schemas/Attendee"},"type":"array","title":"Attendees"}},"type":"object","required":["resident_id","conference_date","reason","content","plan","attendees"],"title":"ConferenceBody"},"ConferenceFollowUp":{"properties":{"reflected_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Reflected Date"},"reflected_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reflected Note"},"evaluated_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Evaluated Date"},"evaluator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluator Name"},"resolved":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Resolved"},"next_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action"}},"type":"object","title":"ConferenceFollowUp"},"ConfirmBody":{"properties":{"caregiver_id":{"type":"integer","title":"Caregiver Id"},"year_month":{"type":"string","title":"Year Month"}},"type":"object","required":["caregiver_id","year_month"],"title":"ConfirmBody"},"CopayPaymentRequest":{"properties":{"year_month":{"type":"string","title":"Year Month"},"amount":{"type":"integer","title":"Amount"},"payment_method":{"type":"string","title":"Payment Method","default":""},"memo":{"type":"string","title":"Memo","default":""}},"type":"object","required":["year_month","amount"],"title":"CopayPaymentRequest"},"CounselingBody":{"properties":{"kind":{"type":"string","title":"Kind"},"resident_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resident Id"},"staff_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staff Id"},"counselee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Counselee Name"},"counsel_date":{"type":"string","format":"date","title":"Counsel Date"},"method":{"type":"string","title":"Method","default":"visit"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":"monthly"},"content":{"type":"string","title":"Content"},"action_needed":{"type":"boolean","title":"Action Needed","default":false},"action_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Note"}},"type":"object","required":["kind","counsel_date","content"],"title":"CounselingBody"},"CreateRecordRequest":{"properties":{"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"service_type":{"type":"string","title":"Service Type"},"notes":{"type":"string","title":"Notes","default":""},"care_items":{"type":"string","title":"Care Items","default":""},"item_minutes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Minutes"},"condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition"},"duration_minutes":{"type":"integer","maximum":240.0,"minimum":1.0,"title":"Duration Minutes","default":60},"benefit_type":{"anyOf":[{"type":"string","enum":["home_care","home_bath","home_nursing"]},{"type":"null"}],"title":"Benefit Type"},"bath_mode":{"anyOf":[{"type":"string","enum":["vehicle_in","vehicle_home","no_vehicle"]},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"},"nursing_order_note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Nursing Order Note"},"special_note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Special Note"},"bath_solo_exception":{"type":"boolean","title":"Bath Solo Exception","default":false},"recorded_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Recorded Date"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature"},"physical_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Physical Change"},"meal_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Meal Change"},"cognitive_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Cognitive Change"},"stool_accidents":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Stool Accidents"},"urine_accidents":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Urine Accidents"}},"type":"object","required":["caregiver_id","resident_id","service_type"],"title":"CreateRecordRequest"},"DecisionBody":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"DecisionBody"},"DoneBody":{"properties":{"service_checked":{"type":"boolean","title":"Service Checked","default":true},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","title":"DoneBody"},"EndPartnerRequest":{"properties":{"days":{"type":"integer","title":"Days","default":30}},"type":"object","title":"EndPartnerRequest"},"EquipmentBody":{"properties":{"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"quantity":{"type":"integer","title":"Quantity","default":1},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"purchase_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Purchase Date"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["name"],"title":"EquipmentBody"},"EvaluationBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"evaluated_date":{"type":"string","format":"date","title":"Evaluated Date"},"summary":{"type":"string","title":"Summary"},"status_changed":{"type":"boolean","title":"Status Changed","default":true},"no_change_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"No Change Basis"}},"type":"object","required":["resident_id","evaluated_date","summary"],"title":"EvaluationBody"},"ExtendTrialRequest":{"properties":{"days":{"type":"integer","title":"Days"}},"type":"object","required":["days"],"title":"ExtendTrialRequest"},"ForceDeleteRequest":{"properties":{"confirm_name":{"type":"string","title":"Confirm Name"}},"type":"object","required":["confirm_name"],"title":"ForceDeleteRequest"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"GrievanceBody":{"properties":{"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"},"detail":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Detail"}},"type":"object","required":["title"],"title":"GrievanceBody"},"GuardianIn":{"properties":{"name":{"type":"string","title":"Name"},"relation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relation"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["name"],"title":"GuardianIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HandoverBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"to_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Caregiver Id"},"content":{"type":"string","title":"Content"}},"type":"object","required":["resident_id","content"],"title":"HandoverBody"},"ImportRows":{"properties":{"rows":{"items":{"type":"object"},"type":"array","title":"Rows"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","required":["rows"],"title":"ImportRows"},"IncidentBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"occurred_date":{"type":"string","format":"date","title":"Occurred Date"},"incident_type":{"type":"string","title":"Incident Type"},"description":{"type":"string","title":"Description"},"action_taken":{"type":"string","title":"Action Taken"}},"type":"object","required":["resident_id","occurred_date","incident_type","description","action_taken"],"title":"IncidentBody"},"InspectionBody":{"properties":{"kind":{"type":"string","title":"Kind"},"check_date":{"type":"string","format":"date","title":"Check Date"},"results":{"additionalProperties":{"type":"string"},"type":"object","title":"Results"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["kind","check_date","results"],"title":"InspectionBody"},"InviteCreate":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"}},"type":"object","required":["resident_id"],"title":"InviteCreate"},"LeaveBody":{"properties":{"leave_date":{"type":"string","format":"date","title":"Leave Date"},"leave_type":{"type":"string","title":"Leave Type"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["leave_date","leave_type"],"title":"LeaveBody"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MeetingBody":{"properties":{"meeting_date":{"type":"string","format":"date","title":"Meeting Date"},"title":{"type":"string","title":"Title"},"attendees":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attendees"},"agenda":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agenda"},"minutes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Minutes"},"decisions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decisions"}},"type":"object","required":["meeting_date","title"],"title":"MeetingBody"},"MessageCreate":{"properties":{"body":{"type":"string","title":"Body"}},"type":"object","required":["body"],"title":"MessageCreate"},"MonitoringBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"year_month":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","title":"Year Month"},"visit_date":{"type":"string","format":"date-time","title":"Visit Date"},"service_checked":{"type":"boolean","title":"Service Checked","default":true},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Note"}},"type":"object","required":["resident_id","year_month","visit_date"],"title":"MonitoringBody"},"NeedsAssessmentCreate":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"diseases":{"type":"string","title":"Diseases","default":""},"nutrition_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nutrition Status"},"nutrition_detail":{"type":"string","title":"Nutrition Detail","default":""},"mobility_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mobility Status"},"function_status":{"type":"object","title":"Function Status","default":{}},"notes":{"type":"string","title":"Notes","default":""},"cognition_note":{"type":"string","title":"Cognition Note","default":""},"communication_note":{"type":"string","title":"Communication Note","default":""},"family_env_note":{"type":"string","title":"Family Env Note","default":""},"subjective_needs":{"type":"string","title":"Subjective Needs","default":""},"resource_use":{"type":"string","title":"Resource Use","default":""},"overall_opinion":{"type":"string","title":"Overall Opinion","default":""}},"type":"object","required":["resident_id"],"title":"NeedsAssessmentCreate"},"NoticeBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"notice_type":{"type":"string","title":"Notice Type"},"notice_date":{"type":"string","format":"date","title":"Notice Date"},"method":{"type":"string","title":"Method"},"recipient":{"type":"string","title":"Recipient"},"items":{"items":{"type":"string"},"type":"array","title":"Items","default":[]},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["resident_id","notice_type","notice_date","method","recipient"],"title":"NoticeBody"},"NotificationSettingsUpdate":{"properties":{"alimtalk_opt_in":{"type":"boolean","title":"Alimtalk Opt In"},"alimtalk_categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Alimtalk Categories"}},"type":"object","required":["alimtalk_opt_in"],"title":"NotificationSettingsUpdate"},"OrderBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"issued_date":{"type":"string","format":"date","title":"Issued Date"},"order_no":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Order No"},"physician":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Physician"},"file_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"File Name"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type"},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data"}},"type":"object","required":["resident_id","issued_date"],"title":"OrderBody"},"PartnerRequest":{"properties":{"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"PartnerRequest"},"PasswordReset":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"PasswordReset"},"PlanIn":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"year_month":{"type":"string","title":"Year Month"},"items":{"items":{"$ref":"#/components/schemas/PlanItem"},"type":"array","maxItems":8,"title":"Items"}},"type":"object","required":["resident_id","year_month","items"],"title":"PlanIn"},"PlanItem":{"properties":{"code":{"type":"string","title":"Code"},"frequency_per_week":{"type":"integer","maximum":7.0,"minimum":1.0,"title":"Frequency Per Week"},"minutes":{"type":"integer","maximum":120.0,"minimum":5.0,"title":"Minutes"},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note"}},"type":"object","required":["code","frequency_per_week","minutes"],"title":"PlanItem"},"ProfileUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"profile_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Image"}},"type":"object","title":"ProfileUpdate"},"ProposalRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"},"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"scheduled_date":{"type":"string","title":"Scheduled Date"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"planned_items":{"type":"string","title":"Planned Items"},"service_type":{"type":"string","title":"Service Type","default":"basic_care"},"notes":{"type":"string","title":"Notes"},"benefit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Benefit Type"},"bath_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"}},"type":"object","required":["user_id","user_role","caregiver_id","resident_id","scheduled_date"],"title":"ProposalRequest"},"RecurringCreate":{"properties":{"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"weekdays":{"items":{},"type":"array","title":"Weekdays"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"start_time":{"type":"string","title":"Start Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"service_type":{"type":"string","title":"Service Type","default":"basic_care"},"planned_items":{"type":"string","title":"Planned Items"},"benefit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Benefit Type"},"bath_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"}},"type":"object","required":["caregiver_id","resident_id","weekdays","start_date","end_date","start_time"],"title":"RecurringCreate"},"RedeemBody":{"properties":{"invite_code":{"type":"string","title":"Invite Code"}},"type":"object","required":["invite_code"],"title":"RedeemBody"},"RejectBody":{"properties":{"reason":{"type":"string","title":"Reason","default":""}},"type":"object","title":"RejectBody"},"RejectionRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["user_id","user_role"],"title":"RejectionRequest"},"ResetPasswordWithTokenRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordWithTokenRequest"},"ResidentCreate":{"properties":{"name":{"type":"string","title":"Name"},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date"},"age":{"type":"integer","title":"Age"},"health_status":{"type":"string","title":"Health Status"},"center_id":{"type":"integer","title":"Center Id"},"guardian_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Guardian Id"},"primary_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Primary Caregiver Id"},"care_grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Care Grade","default":1},"client_type":{"type":"string","title":"Client Type","default":"일반"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"recognition_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition Number"},"recognition_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition Start"},"recognition_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition End"},"guardian_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardian Name"},"guardian_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardian Phone"}},"type":"object","required":["name","age","health_status","center_id"],"title":"ResidentCreate"},"ResidentMediaCreate":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"image_data":{"type":"string","title":"Image Data"},"caption":{"type":"string","title":"Caption","default":""}},"type":"object","required":["resident_id","image_data"],"title":"ResidentMediaCreate"},"ResidentUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date"},"age":{"type":"integer","title":"Age"},"care_grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Care Grade"},"client_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Type"},"health_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Status"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"recognition_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition Number"},"recognition_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition Start"},"recognition_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recognition End"},"guardian_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardian Name"},"guardian_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardian Phone"},"service_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Start Date"},"billing_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address"},"billing_channels":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Billing Channels"},"primary_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Primary Caregiver Id"},"user_role":{"type":"string","title":"User Role","default":"center_manager"}},"type":"object","title":"ResidentUpdate"},"ResubmitRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"},"scheduled_date":{"type":"string","title":"Scheduled Date"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"planned_items":{"type":"string","title":"Planned Items"},"service_type":{"type":"string","title":"Service Type"},"bath_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"}},"type":"object","required":["user_id","user_role"],"title":"ResubmitRequest"},"ReturnBody":{"properties":{"note":{"type":"string","title":"Note"}},"type":"object","required":["note"],"title":"ReturnBody"},"ReviewRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_role":{"type":"string","title":"User Role"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["user_id","user_role"],"title":"ReviewRequest"},"RiskAssessmentCreate":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"assessment_type":{"type":"string","title":"Assessment Type"},"tool_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"},"item_scores":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Item Scores"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"risk_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Risk Level"},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["resident_id","assessment_type"],"title":"RiskAssessmentCreate"},"ScheduleCreate":{"properties":{"caregiver_id":{"type":"integer","title":"Caregiver Id"},"resident_id":{"type":"integer","title":"Resident Id"},"center_id":{"type":"integer","title":"Center Id"},"scheduled_date":{"type":"string","title":"Scheduled Date"},"service_type":{"type":"string","title":"Service Type","default":"basic_care"},"notes":{"type":"string","title":"Notes"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"planned_items":{"type":"string","title":"Planned Items"},"benefit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Benefit Type"},"bath_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"}},"type":"object","required":["caregiver_id","resident_id","center_id","scheduled_date"],"title":"ScheduleCreate"},"ScheduleStatusUpdate":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"ScheduleStatusUpdate"},"ScheduleUpdate":{"properties":{"scheduled_date":{"type":"string","title":"Scheduled Date"},"service_type":{"type":"string","title":"Service Type"},"status":{"type":"string","title":"Status"},"notes":{"type":"string","title":"Notes"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"planned_items":{"type":"string","title":"Planned Items"},"benefit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Benefit Type"},"bath_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"}},"type":"object","title":"ScheduleUpdate"},"SessionBody":{"properties":{"topic":{"type":"string","title":"Topic"},"session_date":{"type":"string","format":"date","title":"Session Date"},"method":{"type":"string","title":"Method"},"instructor":{"type":"string","title":"Instructor"},"content":{"type":"string","title":"Content"},"attendee_ids":{"items":{"type":"integer"},"type":"array","title":"Attendee Ids"},"signed_ids":{"items":{"type":"integer"},"type":"array","title":"Signed Ids","default":[]}},"type":"object","required":["topic","session_date","method","instructor","content","attendee_ids"],"title":"SessionBody"},"SignBody":{"properties":{"signer_name":{"type":"string","title":"Signer Name"},"relation":{"type":"string","title":"Relation"},"signature":{"type":"string","title":"Signature"}},"type":"object","required":["signer_name","relation","signature"],"title":"SignBody"},"SignupBody":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"type":"string","title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"invite_code":{"type":"string","title":"Invite Code"}},"type":"object","required":["email","password","full_name","invite_code"],"title":"SignupBody"},"SignupIn":{"properties":{"center_name":{"type":"string","title":"Center Name"},"sido_code":{"type":"string","title":"Sido Code"},"institution_code":{"type":"string","title":"Institution Code"},"manager_name":{"type":"string","title":"Manager Name"},"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"partner_interest":{"type":"boolean","title":"Partner Interest","default":false},"certificate_name":{"type":"string","title":"Certificate Name"},"certificate_type":{"type":"string","title":"Certificate Type"},"certificate_data":{"type":"string","title":"Certificate Data"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","required":["center_name","sido_code","institution_code","manager_name","email","password","certificate_name","certificate_type","certificate_data"],"title":"SignupIn"},"SmsSendIn":{"properties":{"resident_ids":{"items":{"type":"integer"},"type":"array","maxItems":200,"minItems":1,"title":"Resident Ids"},"text":{"type":"string","maxLength":300,"minLength":1,"title":"Text"}},"type":"object","required":["resident_ids","text"],"title":"SmsSendIn"},"StaffImportRows":{"properties":{"rows":{"items":{"type":"object"},"type":"array","title":"Rows"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","required":["rows"],"title":"StaffImportRows"},"StaffRecordCreate":{"properties":{"staff_id":{"type":"integer","title":"Staff Id"},"record_type":{"type":"string","title":"Record Type"},"record_date":{"type":"string","format":"date","title":"Record Date"},"title":{"type":"string","title":"Title","default":""},"detail":{"type":"string","title":"Detail","default":""},"status":{"type":"string","title":"Status","default":""},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount"}},"type":"object","required":["staff_id","record_type","record_date"],"title":"StaffRecordCreate"},"TrialRequestIn":{"properties":{"center_name":{"type":"string","title":"Center Name"},"institution_code":{"type":"string","title":"Institution Code"},"sido_code":{"type":"string","title":"Sido Code"},"certificate_name":{"type":"string","title":"Certificate Name"},"certificate_type":{"type":"string","title":"Certificate Type"},"certificate_data":{"type":"string","title":"Certificate Data"},"manager_name":{"type":"string","title":"Manager Name"},"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"partner_interest":{"type":"boolean","title":"Partner Interest","default":false},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","required":["center_name","institution_code","sido_code","certificate_name","certificate_type","certificate_data","manager_name","email"],"title":"TrialRequestIn"},"UpdateRecordRequest":{"properties":{"service_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"care_grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Care Grade"},"client_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Type"},"duration_minutes":{"anyOf":[{"type":"integer","maximum":240.0,"minimum":1.0},{"type":"null"}],"title":"Duration Minutes"},"bath_mode":{"anyOf":[{"type":"string","enum":["vehicle_in","vehicle_home","no_vehicle"]},{"type":"null"}],"title":"Bath Mode"},"co_caregiver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Co Caregiver Id"},"nursing_order_note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Nursing Order Note"},"special_note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Special Note"},"care_items":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Care Items"},"item_minutes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Minutes"},"condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition"},"physical_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Physical Change"},"meal_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Meal Change"},"cognitive_change":{"anyOf":[{"type":"string","enum":["improved","maintained","worsened"]},{"type":"null"}],"title":"Cognitive Change"},"stool_accidents":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Stool Accidents"},"urine_accidents":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Urine Accidents"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},"type":"object","title":"UpdateRecordRequest"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"role":{"type":"string","title":"Role"},"password":{"type":"string","title":"Password"},"care_bonus_registered":{"type":"boolean","title":"Care Bonus Registered","default":false}},"type":"object","required":["email","full_name","role","password"],"title":"UserCreate"},"UserResponse":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"role":{"type":"string","title":"Role"},"id":{"type":"integer","title":"Id"},"center_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Center Id"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["email","full_name","role","id","is_active","created_at"],"title":"UserResponse"},"UserUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"hire_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Hire Date"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"emergency_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emergency Contact"},"employment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employment Status"},"wage_ratio":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wage Ratio"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"birth_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birth Date"},"leave_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Leave Date"},"career_excluded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Career Excluded"}},"type":"object","title":"UserUpdate"},"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"},"app__api__care_plans__PlanBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"plan_type":{"type":"string","title":"Plan Type","default":"regular"},"change_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Reason"},"written_date":{"type":"string","format":"date","title":"Written Date"},"service_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Service Start Date"},"service_type":{"type":"string","title":"Service Type","default":"방문요양"},"goals":{"type":"string","title":"Goals"},"needs":{"type":"string","title":"Needs"},"details":{"type":"string","title":"Details"},"frequency":{"type":"string","title":"Frequency"},"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes"},"opinion":{"type":"string","title":"Opinion"}},"type":"object","required":["resident_id","written_date","goals","needs","details","frequency","opinion"],"title":"PlanBody"},"app__api__care_plans__ProgressBody":{"properties":{"guardian_signed_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Guardian Signed Date"},"guardian_signer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardian Signer"},"nhis_notified_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Nhis Notified Date"}},"type":"object","title":"ProgressBody"},"app__api__equipment__StatusBody":{"properties":{"status":{"type":"string","title":"Status"},"disposed_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Disposed Date"}},"type":"object","required":["status"],"title":"StatusBody"},"app__api__incidents__ProgressBody":{"properties":{"guardian_notified_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Guardian Notified Date"},"prevention":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prevention"}},"type":"object","title":"ProgressBody"},"app__api__resident_logs__LogBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"log_date":{"type":"string","format":"date","title":"Log Date"},"kind":{"type":"string","title":"Kind"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"content":{"type":"string","title":"Content"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},"type":"object","required":["resident_id","log_date","kind","content"],"title":"LogBody"},"app__api__social_work__LogBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"visited_at":{"type":"string","format":"date-time","title":"Visited At"},"counseling_target":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Counseling Target"},"counseling_result":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Counseling Result"},"content":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Content"},"monitoring_checked":{"type":"boolean","title":"Monitoring Checked","default":false}},"type":"object","required":["resident_id","visited_at"],"title":"LogBody"},"app__api__social_work__PlanBody":{"properties":{"resident_id":{"type":"integer","title":"Resident Id"},"planned_date":{"type":"string","format":"date","title":"Planned Date"},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note"}},"type":"object","required":["resident_id","planned_date"],"title":"PlanBody"},"app__api__staff_self__StatusBody":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"StatusBody"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}