{"openapi":"3.1.0","info":{"title":"LS Messenger API","version":"0.1.0"},"paths":{"/":{"get":{"tags":["dashboard"],"summary":"Dashboard Home","operationId":"dashboard_home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console/mobile":{"get":{"tags":["dashboard"],"summary":"Dashboard Mobile","operationId":"dashboard_mobile_console_mobile_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console/users":{"get":{"tags":["dashboard"],"summary":"Dashboard Users","operationId":"dashboard_users_console_users_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console/activity":{"get":{"tags":["dashboard"],"summary":"Dashboard Activity","operationId":"dashboard_activity_console_activity_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console/project":{"get":{"tags":["dashboard"],"summary":"Dashboard Project","operationId":"dashboard_project_console_project_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/console/architecture":{"get":{"tags":["dashboard"],"summary":"Dashboard Architecture","operationId":"dashboard_architecture_console_architecture_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"tags":["dashboard"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/token":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_auth_token_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"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users":{"get":{"tags":["users"],"summary":"Search Users","operationId":"search_users_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","minLength":0,"maxLength":64,"default":"","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRead"},"title":"Response Search Users Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/contacts":{"get":{"tags":["users"],"summary":"List Contacts","operationId":"list_contacts_users_contacts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ContactRead"},"type":"array","title":"Response List Contacts Users Contacts Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/contacts/{contact_id}":{"post":{"tags":["users"],"summary":"Add Contact","operationId":"add_contact_users_contacts__contact_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chats":{"get":{"tags":["chats"],"summary":"List Chats","operationId":"list_chats_chats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ChatSummary"},"type":"array","title":"Response List Chats Chats Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["chats"],"summary":"Create Chat","operationId":"create_chat_chats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chats/{chat_id}":{"get":{"tags":["chats"],"summary":"Get Chat","operationId":"get_chat_chats__chat_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"integer","title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chats/{chat_id}/messages":{"post":{"tags":["chats"],"summary":"Send Message","operationId":"send_message_chats__chat_id__messages_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"integer","title":"Chat Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/upload":{"post":{"tags":["files"],"summary":"Upload File","operationId":"upload_file_files_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_files_upload_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}}},"components":{"schemas":{"Body_login_auth_token_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_auth_token_post"},"Body_upload_file_files_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_files_upload_post"},"ChatCreate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Name"},"chat_type":{"type":"string","pattern":"^(direct|group)$","title":"Chat Type","default":"direct"},"member_ids":{"items":{"type":"integer"},"type":"array","title":"Member Ids"}},"type":"object","title":"ChatCreate"},"ChatDetail":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"chat_type":{"type":"string","title":"Chat Type"},"members":{"items":{"$ref":"#/components/schemas/UserRead"},"type":"array","title":"Members"},"last_message":{"anyOf":[{"$ref":"#/components/schemas/MessageRead"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"messages":{"items":{"$ref":"#/components/schemas/MessageRead"},"type":"array","title":"Messages"}},"type":"object","required":["id","name","chat_type","members","created_at","messages"],"title":"ChatDetail"},"ChatSummary":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"chat_type":{"type":"string","title":"Chat Type"},"members":{"items":{"$ref":"#/components/schemas/UserRead"},"type":"array","title":"Members"},"last_message":{"anyOf":[{"$ref":"#/components/schemas/MessageRead"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","chat_type","members","created_at"],"title":"ChatSummary"},"ContactRead":{"properties":{"id":{"type":"integer","title":"Id"},"contact":{"$ref":"#/components/schemas/UserRead"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","contact","created_at"],"title":"ContactRead"},"FileUploadResponse":{"properties":{"file_url":{"type":"string","title":"File Url"},"original_name":{"type":"string","title":"Original Name"}},"type":"object","required":["file_url","original_name"],"title":"FileUploadResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MessageCreate":{"properties":{"kind":{"type":"string","maxLength":24,"title":"Kind","default":"text"},"body":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Body"},"file_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Url"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","title":"MessageCreate"},"MessageRead":{"properties":{"id":{"type":"integer","title":"Id"},"chat_id":{"type":"integer","title":"Chat Id"},"sender":{"$ref":"#/components/schemas/UserRead"},"kind":{"type":"string","title":"Kind"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"file_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Url"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","chat_id","sender","kind","created_at"],"title":"MessageRead"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserRead"}},"type":"object","required":["access_token","user"],"title":"Token"},"UserCreate":{"properties":{"username":{"type":"string","maxLength":32,"minLength":3,"title":"Username"},"display_name":{"type":"string","maxLength":64,"minLength":2,"title":"Display Name"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"}},"type":"object","required":["username","display_name","password"],"title":"UserCreate"},"UserRead":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"display_name":{"type":"string","title":"Display Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","username","display_name","created_at"],"title":"UserRead"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/auth/token"}}}}}}