{"openapi":"3.1.0","info":{"title":"ChulaSSO Service","description":"Service for ChulaSSO, CopyRight © 2022-present Krerk Piromsopa,Ph.D.","version":"2.0"},"paths":{"/html/login.html":{"get":{"summary":"Get Legacy Login","operationId":"get_legacy_login_html_login_html_get","parameters":[{"required":false,"schema":{"type":"string","title":"Service"},"name":"service","in":"query"},{"required":false,"schema":{"type":"string","title":"Servicename"},"name":"serviceName","in":"query"},{"required":false,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/json":{"post":{"tags":["users"],"summary":"Post Auth Json","operationId":"post_auth_json_api_auth_json_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["users"],"summary":"Post Logout","operationId":"post_logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/totp/status":{"get":{"tags":["2fa"],"summary":"Get Status","operationId":"get_status_api_auth_totp_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}}}},"/api/auth/totp/enroll":{"post":{"tags":["2fa"],"summary":"Post Enroll","operationId":"post_enroll_api_auth_totp_enroll_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollResponse"}}}}}}},"/api/auth/totp/activate":{"post":{"tags":["2fa"],"summary":"Post Activate","operationId":"post_activate_api_auth_totp_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/totp/verify":{"post":{"tags":["2fa"],"summary":"Post Verify","operationId":"post_verify_api_auth_totp_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/totp/disable":{"post":{"tags":["2fa"],"summary":"Post Disable","operationId":"post_disable_api_auth_totp_disable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/me":{"get":{"tags":["users"],"summary":"Get Me","description":"GET info. of active user\n\n:param user_session: cookies\n:return: User","operationId":"get_me_api_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Me Api Users Me Get"}}}}}}},"/api/users/me/preferences":{"put":{"tags":["users"],"summary":"Put My Preferences","operationId":"put_my_preferences_api_users_me_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Put My Preferences Api Users Me Preferences Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tickets/grantTicket":{"post":{"tags":["tickets"],"summary":"Post Grant Ticket","operationId":"post_grant_ticket_api_tickets_grantTicket_post","parameters":[{"required":true,"schema":{"type":"string","title":"Sso Requestservice"},"name":"SSO_requestService","in":"cookie"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tickets/":{"get":{"tags":["tickets"],"summary":"Get Tickets","operationId":"get_tickets_api_tickets__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/myapps/":{"get":{"tags":["myapps"],"summary":"List Apps","operationId":"list_apps_api_myapps__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MyAppPublic"},"type":"array","title":"Response List Apps Api Myapps  Get"}}}}}},"post":{"tags":["myapps"],"summary":"Create App","operationId":"create_app_api_myapps__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/myapps/{app_id}":{"get":{"tags":["myapps"],"summary":"Get App","operationId":"get_app_api_myapps__app_id__get","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["myapps"],"summary":"Delete App","operationId":"delete_app_api_myapps__app_id__delete","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["myapps"],"summary":"Update App","operationId":"update_app_api_myapps__app_id__patch","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppUpdateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/myapps/{app_id}/rotate-secret":{"post":{"tags":["myapps"],"summary":"Rotate Secret","operationId":"rotate_secret_api_myapps__app_id__rotate_secret_post","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppSecretOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/myapps/":{"get":{"tags":["admin"],"summary":"List Requests","operationId":"list_requests_api_admin_myapps__get","parameters":[{"required":false,"schema":{"type":"string","title":"Status"},"name":"status","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MyAppPublic"},"type":"array","title":"Response List Requests Api Admin Myapps  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/myapps/{app_id}":{"get":{"tags":["admin"],"summary":"Get Request","operationId":"get_request_api_admin_myapps__app_id__get","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/myapps/{app_id}/approve":{"post":{"tags":["admin"],"summary":"Approve Request","operationId":"approve_request_api_admin_myapps__app_id__approve_post","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/myapps/{app_id}/reject":{"post":{"tags":["admin"],"summary":"Reject Request","operationId":"reject_request_api_admin_myapps__app_id__reject_post","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAppPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/search":{"get":{"tags":["admin"],"summary":"Search Users","description":"Substring search over username, email and Thai/English names. Admin only.","operationId":"search_users_api_admin_users_search_get","parameters":[{"required":true,"schema":{"type":"string","title":"Q"},"name":"q","in":"query"},{"required":false,"schema":{"type":"integer","title":"Limit","default":50},"name":"limit","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"object"},"type":"array","title":"Response Search Users Api Admin Users Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{username}/info":{"get":{"tags":["admin"],"summary":"Get User Info","description":"Full profile (minus the password hash) plus 2FA and session state. Admin only.","operationId":"get_user_info_api_admin_users__username__info_get","parameters":[{"required":true,"schema":{"type":"string","title":"Username"},"name":"username","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get User Info Api Admin Users  Username  Info Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/delegates":{"get":{"tags":["admin"],"summary":"List Delegates","description":"Every user holding the TOTP_RESETTER bit.","operationId":"list_delegates_api_admin_users_delegates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"object"},"type":"array","title":"Response List Delegates Api Admin Users Delegates Get"}}}}}}},"/api/admin/users/{username}/delegate":{"post":{"tags":["admin"],"summary":"Grant Delegate","operationId":"grant_delegate_api_admin_users__username__delegate_post","parameters":[{"required":true,"schema":{"type":"string","title":"Username"},"name":"username","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Grant Delegate Api Admin Users  Username  Delegate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Revoke Delegate","operationId":"revoke_delegate_api_admin_users__username__delegate_delete","parameters":[{"required":true,"schema":{"type":"string","title":"Username"},"name":"username","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Delegate Api Admin Users  Username  Delegate Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/2fa-audit":{"get":{"tags":["admin"],"summary":"List 2Fa Audit","description":"Recent 2FA audit trail, most recent first. Admin only.","operationId":"list_2fa_audit_api_admin_users_2fa_audit_get","parameters":[{"required":false,"schema":{"type":"string","title":"Username"},"name":"username","in":"query"},{"required":false,"schema":{"type":"string","title":"Actor"},"name":"actor","in":"query"},{"required":false,"schema":{"type":"integer","title":"Limit","default":100},"name":"limit","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"object"},"type":"array","title":"Response List 2Fa Audit Api Admin Users 2Fa Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{username}/2fa-status":{"get":{"tags":["admin"],"summary":"Get 2Fa Status","description":"Enrollment summary for the confirm-before-reset step.\n\n``resettable``/``reason`` let the UI disable the button for targets the\ncaller may not touch, instead of failing at submit time.","operationId":"get_2fa_status_api_admin_users__username__2fa_status_get","parameters":[{"required":true,"schema":{"type":"string","title":"Username"},"name":"username","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get 2Fa Status Api Admin Users  Username  2Fa Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{username}/reset-2fa":{"post":{"tags":["admin"],"summary":"Reset 2Fa","operationId":"reset_2fa_api_admin_users__username__reset_2fa_post","parameters":[{"required":true,"schema":{"type":"string","title":"Username"},"name":"username","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reset2FAIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Reset 2Fa Api Admin Users  Username  Reset 2Fa Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/qr/myQR":{"get":{"tags":["qr"],"summary":"Get My Qr","operationId":"get_my_qr_api_qr_myQR_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/myapps/{app_id}/usage":{"get":{"tags":["usage"],"summary":"App Usage","operationId":"app_usage_api_myapps__app_id__usage_get","parameters":[{"required":true,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"path"},{"required":false,"schema":{"type":"integer","title":"Days","default":30},"name":"days","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/usage/overview":{"get":{"tags":["usage"],"summary":"Admin Overview","operationId":"admin_overview_api_admin_usage_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/usage/daily":{"get":{"tags":["usage"],"summary":"Admin Daily","operationId":"admin_daily_api_admin_usage_daily_get","parameters":[{"required":false,"schema":{"type":"integer","title":"Days","default":30},"name":"days","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/usage/apps":{"get":{"tags":["usage"],"summary":"Admin Apps","operationId":"admin_apps_api_admin_usage_apps_get","parameters":[{"required":false,"schema":{"type":"integer","title":"Days","default":30},"name":"days","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/stats":{"get":{"tags":["usage"],"summary":"Public Stats","operationId":"public_stats_api_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Get Root","operationId":"get_root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/login":{"get":{"summary":"Get Login","operationId":"get_login_login_get","parameters":[{"required":false,"schema":{"type":"string","title":"Service"},"name":"service","in":"query"},{"required":false,"schema":{"type":"string","title":"Servicename"},"name":"serviceName","in":"query"},{"required":false,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Login","operationId":"post_login_login_post","parameters":[{"required":false,"schema":{"type":"string","title":"Service"},"name":"service","in":"query"},{"required":false,"schema":{"type":"string","title":"Servicename"},"name":"serviceName","in":"query"},{"required":false,"schema":{"type":"string","title":"App Id"},"name":"app_id","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/logout":{"get":{"summary":"Get Logout","operationId":"get_logout_logout_get","parameters":[{"required":false,"schema":{"type":"string","title":"Service"},"name":"service","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Logout","operationId":"post_logout_logout_post","parameters":[{"required":false,"schema":{"type":"string","title":"Service"},"name":"service","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/qrValidation":{"post":{"summary":"Post Qr Validation","description":"Redeem a ChulaSSO QR token.\n\nThe app passes the raw QR text it scanned (BASE_URL/qr/<token_id>).\nReturns the same user-profile payload as /serviceValidation.\nEach token is one-time-use and expires in 20 seconds.","operationId":"post_qr_validation_qrValidation_post","parameters":[{"required":true,"schema":{"type":"string","title":"Deeappid"},"name":"DeeAppId","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeappsecret"},"name":"DeeAppSecret","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeqrtoken"},"name":"DeeQrToken","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/serviceValidation":{"get":{"summary":"Get Service Validation","operationId":"get_service_validation_serviceValidation_get","parameters":[{"required":true,"schema":{"type":"string","title":"Deeticket"},"name":"DeeTicket","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeappid"},"name":"DeeAppId","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeappsecret"},"name":"DeeAppSecret","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Service Validation","operationId":"post_service_validation_serviceValidation_post","parameters":[{"required":true,"schema":{"type":"string","title":"Deeticket"},"name":"DeeTicket","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeappid"},"name":"DeeAppId","in":"header"},{"required":true,"schema":{"type":"string","title":"Deeappsecret"},"name":"DeeAppSecret","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/about":{"get":{"summary":"About","description":"Return application information in a JSON to the frontend.","operationId":"about_about_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response About About Get"}}}}}}}},"components":{"schemas":{"ActivateInput":{"properties":{"totp_id":{"type":"string","title":"Totp Id"},"code":{"type":"string","title":"Code"}},"type":"object","required":["totp_id","code"],"title":"ActivateInput"},"AuthInput":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"remember":{"type":"boolean","title":"Remember","default":false}},"type":"object","required":["username","password"],"title":"AuthInput"},"CodeInput":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"CodeInput"},"DelegateIn":{"properties":{"note":{"type":"string","title":"Note"}},"type":"object","title":"DelegateIn"},"EnrollResponse":{"properties":{"totp_id":{"type":"string","title":"Totp Id"},"otpauth_uri":{"type":"string","title":"Otpauth Uri"},"secret":{"type":"string","title":"Secret"},"qr_png_b64":{"type":"string","title":"Qr Png B64"}},"type":"object","required":["totp_id","otpauth_uri","secret","qr_png_b64"],"title":"EnrollResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MyAppCreateIn":{"properties":{"app_name":{"type":"string","title":"App Name"},"description":{"type":"string","title":"Description","default":""},"service_url":{"type":"string","title":"Service Url"},"app_icon":{"type":"string","title":"App Icon"},"notes":{"type":"string","title":"Notes"}},"type":"object","required":["app_name","service_url"],"title":"MyAppCreateIn"},"MyAppCreatedOut":{"properties":{"app_id":{"type":"string","title":"App Id"},"app_name":{"type":"string","title":"App Name"},"app_icon":{"type":"string","title":"App Icon"},"description":{"type":"string","title":"Description"},"service_url":{"type":"string","title":"Service Url"},"notes":{"type":"string","title":"Notes"},"username":{"type":"string","title":"Username"},"status":{"type":"string","title":"Status"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"expire_time":{"type":"string","format":"date-time","title":"Expire Time"},"app_secret":{"type":"string","title":"App Secret"}},"type":"object","required":["app_id","status","app_secret"],"title":"MyAppCreatedOut"},"MyAppPublic":{"properties":{"app_id":{"type":"string","title":"App Id"},"app_name":{"type":"string","title":"App Name"},"app_icon":{"type":"string","title":"App Icon"},"description":{"type":"string","title":"Description"},"service_url":{"type":"string","title":"Service Url"},"notes":{"type":"string","title":"Notes"},"username":{"type":"string","title":"Username"},"status":{"type":"string","title":"Status"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"expire_time":{"type":"string","format":"date-time","title":"Expire Time"}},"type":"object","required":["app_id","status"],"title":"MyAppPublic"},"MyAppSecretOut":{"properties":{"app_id":{"type":"string","title":"App Id"},"app_secret":{"type":"string","title":"App Secret"}},"type":"object","required":["app_id","app_secret"],"title":"MyAppSecretOut"},"MyAppUpdateIn":{"properties":{"app_name":{"type":"string","title":"App Name"},"description":{"type":"string","title":"Description"},"service_url":{"type":"string","title":"Service Url"},"app_icon":{"type":"string","title":"App Icon"},"notes":{"type":"string","title":"Notes"}},"type":"object","title":"MyAppUpdateIn"},"PreferencesIn":{"properties":{"theme":{"type":"string","title":"Theme"}},"type":"object","title":"PreferencesIn"},"RejectIn":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"RejectIn"},"Reset2FAIn":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","title":"Reset2FAIn"},"StatusResponse":{"properties":{"enrolled":{"type":"boolean","title":"Enrolled"},"backup_codes_remaining":{"type":"integer","title":"Backup Codes Remaining"}},"type":"object","required":["enrolled","backup_codes_remaining"],"title":"StatusResponse"},"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"},"VerifyInput":{"properties":{"challenge_token":{"type":"string","title":"Challenge Token"},"code":{"type":"string","title":"Code"}},"type":"object","required":["challenge_token","code"],"title":"VerifyInput"}}}}