-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi.json
More file actions
1 lines (1 loc) · 23.7 KB
/
Copy pathopenapi.json
File metadata and controls
1 lines (1 loc) · 23.7 KB
1
{"openapi":"3.1.0","info":{"title":"AI-TLS-DLP Backend","description":"AI 기반 개인정보 탐지 API (인증 필수)","version":"1.1.0"},"paths":{"/api/v1/auth/register":{"post":{"tags":["Authentication"],"summary":"Register","description":"회원가입\n\n- **username**: 사용자명 (3-50자, 고유값)\n- **email**: 이메일 주소 (고유값)\n- **password**: 비밀번호 (최소 8자)\n- **full_name**: 이름 (선택)","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Authentication"],"summary":"Login","description":"로그인\n\n- **username**: 사용자명\n- **password**: 비밀번호\n\n성공 시 JWT 액세스 토큰 반환","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_api_v1_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["Authentication"],"summary":"Read Users Me","description":"현재 로그인한 사용자 정보 조회\n\nJWT 토큰 필요\n\nNote: 이 엔드포인트는 get_current_user dependency에서 이미 UseCase를 통해\n사용자를 조회하므로, 추가적인 Use Case 호출이 필요 없음","operationId":"read_users_me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/pii/detect":{"post":{"tags":["PII Detection"],"summary":"PII 탐지 (프록시용, 인증 불필요)","description":"입력된 텍스트에서 개인정보를 탐지하고 결과를 반환합니다. 프록시 서버에서 호출합니다.","operationId":"detect_pii_api_v1_pii_detect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIIDetectionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIIDetectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pii/health":{"get":{"tags":["PII Detection"],"summary":"PII 탐지 서비스 상태 확인","description":"PII 탐지 모델이 정상적으로 로드되었는지 확인합니다. 인증 불필요.","operationId":"health_check_api_v1_pii_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/logs":{"get":{"tags":["Admin Dashboard"],"summary":"PII 검사 로그 조회","description":"관리자 전용: PII 검사 로그를 조회합니다. 필터링 및 페이징 지원. 기본 조회 기간: 최근 24시간","operationId":"get_logs_api_v1_admin_logs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)","title":"Start Date"},"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"종료 날짜 (ISO 8601, 기본: 현재)","title":"End Date"},"description":"종료 날짜 (ISO 8601, 기본: 현재)"},{"name":"client_ip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"클라이언트 IP 주소 필터","title":"Client Ip"},"description":"클라이언트 IP 주소 필터"},{"name":"has_pii","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"PII 탐지 여부 필터 (true/false)","title":"Has Pii"},"description":"PII 탐지 여부 필터 (true/false)"},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PII 타입 필터 (PERSON, PHONE_NUM 등)","title":"Entity Type"},"description":"PII 타입 필터 (PERSON, PHONE_NUM 등)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"페이지 번호","default":1,"title":"Page"},"description":"페이지 번호"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"페이지 크기 (1-100)","default":20,"title":"Page Size"},"description":"페이지 크기 (1-100)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"정렬 (field:asc 또는 field:desc)","default":"timestamp:desc","title":"Sort"},"description":"정렬 (field:asc 또는 field:desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/statistics/overview":{"get":{"tags":["Admin Dashboard"],"summary":"전체 통계 개요","description":"관리자 전용: 지정된 기간의 전체 PII 검사 통계를 조회합니다. 기본 조회 기간: 최근 24시간","operationId":"get_statistics_overview_api_v1_admin_statistics_overview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)","title":"Start Date"},"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"종료 날짜 (ISO 8601, 기본: 현재)","title":"End Date"},"description":"종료 날짜 (ISO 8601, 기본: 현재)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatisticsOverview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/statistics/timeline":{"get":{"tags":["Admin Dashboard"],"summary":"시간대별 추세 분석","description":"관리자 전용: 시간대별 PII 검사 추세를 조회합니다. 기본 조회 기간: 최근 24시간","operationId":"get_statistics_timeline_api_v1_admin_statistics_timeline_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)","title":"Start Date"},"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"종료 날짜 (ISO 8601, 기본: 현재)","title":"End Date"},"description":"종료 날짜 (ISO 8601, 기본: 현재)"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","description":"집계 간격 (1h, 1d, 1w, 1M 등)","default":"1h","title":"Interval"},"description":"집계 간격 (1h, 1d, 1w, 1M 등)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/statistics/by-pii-type":{"get":{"tags":["Admin Dashboard"],"summary":"PII 타입별 통계","description":"관리자 전용: PII 타입별 탐지 통계를 조회합니다. 기본 조회 기간: 최근 24시간","operationId":"get_statistics_by_pii_type_api_v1_admin_statistics_by_pii_type_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)","title":"Start Date"},"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"종료 날짜 (ISO 8601, 기본: 현재)","title":"End Date"},"description":"종료 날짜 (ISO 8601, 기본: 현재)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIITypeStatisticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/statistics/by-ip":{"get":{"tags":["Admin Dashboard"],"summary":"IP별 통계","description":"관리자 전용: IP 주소별 요청 및 탐지 통계를 조회합니다. 기본 조회 기간: 최근 24시간","operationId":"get_statistics_by_ip_api_v1_admin_statistics_by_ip_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)","title":"Start Date"},"description":"시작 날짜 (ISO 8601, 기본: 24시간 전)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"종료 날짜 (ISO 8601, 기본: 현재)","title":"End Date"},"description":"종료 날짜 (ISO 8601, 기본: 현재)"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"조회할 IP 개수 (1-100)","default":20,"title":"Size"},"description":"조회할 IP 개수 (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IPStatisticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/pii-settings":{"get":{"tags":["PII Settings"],"summary":"PII 탐지 설정 전체 조회","description":"관리자 전용: 모든 PII 탐지 설정을 조회합니다.","operationId":"get_all_pii_settings_api_v1_admin_pii_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIISettingsListResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/pii-settings/{entity_type}":{"get":{"tags":["PII Settings"],"summary":"특정 PII 타입 설정 조회","description":"관리자 전용: 특정 PII 타입의 설정을 조회합니다.","operationId":"get_pii_setting_api_v1_admin_pii_settings__entity_type__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIISettingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["PII Settings"],"summary":"PII 타입 설정 업데이트","description":"관리자 전용: 특정 PII 타입의 활성화 여부 및 민감도를 업데이트합니다.","operationId":"update_pii_setting_api_v1_admin_pii_settings__entity_type__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIISettingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIISettingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"API 상태 확인","description":"루트 엔드포인트 - API 상태 확인","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_login_api_v1_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_v1_auth_login_post"},"DetectedEntity":{"properties":{"type":{"type":"string","title":"Type","description":"PII 타입 (예: PERSON, PHONE, EMAIL 등)"},"value":{"type":"string","title":"Value","description":"탐지된 개인정보 값"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","description":"탐지 신뢰도 (0.0 ~ 1.0)"},"token_count":{"type":"integer","exclusiveMinimum":0.0,"title":"Token Count","description":"해당 엔티티의 토큰 개수"}},"type":"object","required":["type","value","confidence","token_count"],"title":"DetectedEntity"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IPStatistics":{"properties":{"client_ip":{"type":"string","title":"Client Ip"},"total_requests":{"type":"integer","title":"Total Requests"},"detected_requests":{"type":"integer","title":"Detected Requests"},"detection_rate":{"type":"number","title":"Detection Rate"},"most_detected_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Most Detected Type"}},"type":"object","required":["client_ip","total_requests","detected_requests","detection_rate"],"title":"IPStatistics","description":"IP별 통계"},"IPStatisticsResponse":{"properties":{"statistics":{"items":{"$ref":"#/components/schemas/IPStatistics"},"type":"array","title":"Statistics"}},"type":"object","required":["statistics"],"title":"IPStatisticsResponse","description":"IP별 통계 응답"},"LogListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"logs":{"items":{"$ref":"#/components/schemas/PIILogResponse"},"type":"array","title":"Logs"}},"type":"object","required":["total","page","page_size","logs"],"title":"LogListResponse","description":"로그 목록 응답"},"PIIDetectionRequest":{"properties":{"text":{"type":"string","maxLength":10000,"minLength":1,"title":"Text","description":"분석할 텍스트"}},"type":"object","required":["text"],"title":"PIIDetectionRequest"},"PIIDetectionResponse":{"properties":{"has_pii":{"type":"boolean","title":"Has Pii","description":"개인정보 탐지 여부"},"reason":{"type":"string","title":"Reason","description":"탐지 결과에 대한 이유"},"details":{"type":"string","title":"Details","description":"구체적인 설명 및 탐지된 데이터"},"entities":{"items":{"$ref":"#/components/schemas/DetectedEntity"},"type":"array","title":"Entities","description":"탐지된 개인정보 엔티티 목록"}},"type":"object","required":["has_pii","reason","details"],"title":"PIIDetectionResponse","examples":[{"details":"이름 '홍길동'과 전화번호 '010-1234-5678'이 탐지되었습니다.","entities":[{"confidence":0.95,"token_count":2,"type":"PERSON","value":"홍길동"},{"confidence":0.89,"token_count":3,"type":"PHONE","value":"010-1234-5678"}],"has_pii":true,"reason":"개인정보 2개 탐지됨 (PERSON, PHONE)"}]},"PIILogResponse":{"properties":{"id":{"type":"string","title":"Id"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"client_ip":{"type":"string","title":"Client Ip"},"original_text":{"type":"string","title":"Original Text"},"text_length":{"type":"integer","title":"Text Length"},"has_pii":{"type":"boolean","title":"Has Pii"},"detected_entities":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Detected Entities"},"entity_types":{"items":{"type":"string"},"type":"array","title":"Entity Types"},"entity_count":{"type":"integer","title":"Entity Count"},"blocked":{"type":"boolean","title":"Blocked"},"reason":{"type":"string","title":"Reason"},"response_time_ms":{"type":"number","title":"Response Time Ms"},"model_version":{"type":"string","title":"Model Version"},"api_version":{"type":"string","title":"Api Version"}},"type":"object","required":["id","timestamp","client_ip","original_text","text_length","has_pii","detected_entities","entity_types","entity_count","blocked","reason","response_time_ms","model_version","api_version"],"title":"PIILogResponse","description":"PII 검사 로그 응답 스키마"},"PIISettingResponse":{"properties":{"entity_type":{"type":"string","title":"Entity Type","description":"PII 엔티티 타입 (PERSON, PHONE_NUM 등)"},"enabled":{"type":"boolean","title":"Enabled","description":"탐지 활성화 여부"},"threshold":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Threshold","description":"탐지 민감도 (0-100)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"PII 타입 설명"},"id":{"type":"integer","title":"Id","description":"설정 ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"생성 시간"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"수정 시간"}},"type":"object","required":["entity_type","enabled","threshold","id","created_at","updated_at"],"title":"PIISettingResponse","description":"PII 설정 조회 응답","examples":[{"created_at":"2025-11-04T01:00:00Z","description":"사람 이름 (예: 홍길동, John Doe)","enabled":true,"entity_type":"PERSON","id":1,"threshold":59,"updated_at":"2025-11-04T01:00:00Z"}]},"PIISettingUpdate":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"탐지 활성화 여부"},"threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Threshold","description":"탐지 민감도 (0-100)"}},"type":"object","title":"PIISettingUpdate","description":"PII 설정 업데이트 요청","examples":[{"enabled":false},{"threshold":80},{"enabled":true,"threshold":75}]},"PIISettingsListResponse":{"properties":{"settings":{"items":{"$ref":"#/components/schemas/PIISettingResponse"},"type":"array","title":"Settings","description":"PII 설정 목록"},"total":{"type":"integer","title":"Total","description":"전체 설정 개수"}},"type":"object","required":["settings","total"],"title":"PIISettingsListResponse","description":"PII 설정 목록 응답","examples":[{"settings":[{"created_at":"2025-11-04T01:00:00Z","description":"사람 이름","enabled":true,"entity_type":"PERSON","id":1,"threshold":59,"updated_at":"2025-11-04T01:00:00Z"}],"total":10}]},"PIITypeStatistics":{"properties":{"pii_type":{"type":"string","title":"Pii Type"},"count":{"type":"integer","title":"Count"},"percentage":{"type":"number","title":"Percentage"},"avg_confidence":{"type":"number","title":"Avg Confidence"}},"type":"object","required":["pii_type","count","percentage","avg_confidence"],"title":"PIITypeStatistics","description":"PII 타입별 통계"},"PIITypeStatisticsResponse":{"properties":{"statistics":{"items":{"$ref":"#/components/schemas/PIITypeStatistics"},"type":"array","title":"Statistics"}},"type":"object","required":["statistics"],"title":"PIITypeStatisticsResponse","description":"PII 타입별 통계 응답"},"StatisticsOverview":{"properties":{"period":{"additionalProperties":true,"type":"object","title":"Period"},"total_requests":{"type":"integer","title":"Total Requests"},"detected_requests":{"type":"integer","title":"Detected Requests"},"detection_rate":{"type":"number","title":"Detection Rate"},"blocked_requests":{"type":"integer","title":"Blocked Requests"},"blocked_rate":{"type":"number","title":"Blocked Rate"},"avg_response_time_ms":{"type":"number","title":"Avg Response Time Ms"},"unique_ips":{"type":"integer","title":"Unique Ips"},"top_detected_types":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Detected Types"},"top_ips":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Ips"}},"type":"object","required":["period","total_requests","detected_requests","detection_rate","blocked_requests","blocked_rate","avg_response_time_ms","unique_ips","top_detected_types","top_ips"],"title":"StatisticsOverview","description":"전체 통계 개요 (IP 기반)"},"TimelineDataPoint":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"total_requests":{"type":"integer","title":"Total Requests"},"detected_requests":{"type":"integer","title":"Detected Requests"},"detection_rate":{"type":"number","title":"Detection Rate"}},"type":"object","required":["timestamp","total_requests","detected_requests","detection_rate"],"title":"TimelineDataPoint","description":"시간대별 통계 데이터 포인트"},"TimelineResponse":{"properties":{"timeline":{"items":{"$ref":"#/components/schemas/TimelineDataPoint"},"type":"array","title":"Timeline"}},"type":"object","required":["timeline"],"title":"TimelineResponse","description":"시간대별 추세 응답"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"Token","description":"JWT 토큰 응답"},"UserRegister":{"properties":{"username":{"type":"string","maxLength":50,"minLength":3,"title":"Username","description":"사용자명 (3-50자)"},"email":{"type":"string","format":"email","title":"Email","description":"이메일 주소"},"password":{"type":"string","maxLength":100,"minLength":8,"title":"Password","description":"비밀번호 (최소 8자)"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"이름 (선택)"}},"type":"object","required":["username","email","password"],"title":"UserRegister","description":"회원가입 요청"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"type":"string","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"}},"type":"object","required":["id","username","email","full_name","is_active","is_superuser"],"title":"UserResponse","description":"사용자 정보 응답"},"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"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/login"}}}}}}