{"swagger":"2.0","info":{"version":"v2","title":"MemberZone Mobile API v2","description":"API Gateway: http://192.168.254.156:8065/MobileApi"},"host":"api08.paradigm-shift.net","schemes":["https"],"paths":{"/api/view/message":{"get":{"tags":["Chat"],"summary":"Retrieves chat messages for a conversation between two members.","description":"- Marks unread messages as read in bulk.\r\n- Response message objects include: message_id, Message, FileAttach, Created, reply_to_message_id, From, To, ReplyMessage, EditedDate.\r\n- Returned timestamps are UTC.","operationId":"Chat_ViewConversationHistoryAsync","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"senderZoneID","in":"query","description":"MemberZoneID of the first participant (required).","required":true,"type":"string"},{"name":"recipientZoneID2","in":"query","description":"MemberZoneID of the second participant (required).","required":true,"type":"string"}],"responses":{"200":{"description":"Successful retrieval of chat messages.","schema":{"type":"array","items":{"type":"object"}}},"400":{"description":"Invalid member zone ID supplied."},"404":{"description":"No chat messages found for the given member zone ID."}},"security":[{"Bearer":[]}]}},"/api/create/message":{"post":{"tags":["Chat"],"summary":"Sends a message from one member to another. Creates the conversation (chat category) if it does not exist.","description":"- New messages are created with Status = Unread and Created timestamp set to UTC now.\r\n- The endpoint requires Authorization: Bearer {token}.","operationId":"Chat_SendMessage","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"chatHistory","in":"body","description":"Payload with sentBy, sentTo, Message and optional ReplyMsg_ID/FileAttach.","required":true,"schema":{"$ref":"#/definitions/NewMessage"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/conversation/list":{"get":{"tags":["Chat"],"summary":"Returns conversation summaries (one entry per conversation) for the specified member.","description":"Each summary contains Image, FromZoneID, From, LatestMessage, Time and UnreadCount.","operationId":"Chat_LoadAllMessageAsync","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"zoneid","in":"query","description":"MemberZoneID for which to list conversations.","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/edit/{messageID}":{"patch":{"tags":["Chat"],"summary":"Updates the text of an existing message.","description":"- Sets UpdateDate to UTC now after editing.\r\n- Requires Authorization: Bearer {token}.","operationId":"Chat_EditMsg","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"messageID","in":"path","description":"ID of the message to edit (path parameter).","required":true,"type":"integer","format":"int32"},{"name":"msg","in":"body","description":"Payload containing the new Message text.","required":true,"schema":{"$ref":"#/definitions/updateMsg"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/read/{messageID}":{"put":{"tags":["Chat"],"summary":"Marks a chat message as read.","operationId":"Chat_MarkMessageAsRead","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"messageID","in":"path","description":"ID of the message to mark as read (path parameter).","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Message marked as read successfully."},"400":{"description":"Invalid message ID supplied."},"404":{"description":"Message with the specified ID not found."}},"security":[{"Bearer":[]}]}},"/api/delete/{messageID}":{"delete":{"tags":["Chat"],"summary":"Soft-deletes a message by replacing its content and changing its status.","description":"- Soft delete keeps a placeholder text (\"This message was deleted\") and clears attachments.\r\n- This preserves conversation history while removing original content.","operationId":"Chat_DeleteMsg","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"messageID","in":"path","description":"ID of the message to delete (path parameter).","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/chat/delete/conversation":{"delete":{"tags":["Chat"],"summary":"Removes a conversation from the requesting user's conversation list by marking it hidden for that user.","description":"- This does not delete messages; it sets ChatCategory.HiddenForUserID to the requesting user's ID.\r\n- Requires Authorization: Bearer {token}.","operationId":"Chat_DeleteConversation","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"senderZoneID","in":"query","description":"MemberZoneID of the requester (query parameter).","required":true,"type":"string"},{"name":"recipientZoneID","in":"query","description":"MemberZoneID of the other participant (query parameter).","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/chatbot/start":{"post":{"tags":["ChatBot"],"operationId":"ChatBot_Start","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"lang","in":"query","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/chatbot/action":{"post":{"tags":["ChatBot"],"operationId":"ChatBot_Action","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/ChatActionRequest"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/global-translation":{"get":{"tags":["ChatTranslation"],"summary":"Get all chatbot translations (ADMIN ONLY)","operationId":"ChatTranslation_Get","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]},"post":{"tags":["ChatTranslation"],"summary":"Add new translation record (ADMIN ONLY)","operationId":"ChatTranslation_Add","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"","required":true,"schema":{"$ref":"#/definitions/ChatTranslation"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/global-translation/{id}":{"put":{"tags":["ChatTranslation"],"summary":"Update existing translation (ADMIN ONLY)","operationId":"ChatTranslation_Update","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"path","description":"","required":true,"type":"integer","format":"int32"},{"name":"model","in":"body","description":"","required":true,"schema":{"$ref":"#/definitions/ChatTranslation"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]},"delete":{"tags":["ChatTranslation"],"summary":"Delete translation by Id (ADMIN ONLY)","operationId":"ChatTranslation_Delete","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"path","description":"","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/lang":{"get":{"tags":["Language"],"operationId":"Language_getLangauge","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"OK","schema":{"type":"object"}}}}},"/api/news":{"get":{"tags":["News"],"summary":"Retrieves all news items available for the specified site.","operationId":"News_GetNews","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"siteID","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Successfully retrieved news."},"404":{"description":"No news found."},"500":{"description":"Error processing request."}}}},"/api/news/{newsid}":{"get":{"tags":["News"],"summary":"Retrieves news item by ID.","operationId":"News_GetNewsByID","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"newsid","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully retrieved news."},"404":{"description":"No news found."},"500":{"description":"Error processing request."}},"security":[{"Bearer":[]}]}},"/api/update-news":{"put":{"tags":["News"],"summary":"Updates an existing news item with the provided details. (ADMIN ONLY)","operationId":"News_UpdateNews","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"request","in":"body","description":"The request payload containing the updated news information.","required":true,"schema":{"$ref":"#/definitions/UpdateNewsRequest"}}],"responses":{"200":{"description":"News updated successfully."},"400":{"description":"Invalid request."},"500":{"description":"An error occurred while processing the request."}},"security":[{"Bearer":[]}]}},"/api/news/create":{"post":{"tags":["News"],"operationId":"News_CreateNews","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/CreateNewsRequest"}}],"responses":{"200":{"description":"News created successfully."},"400":{"description":"Invalid request."},"500":{"description":"An error occurred while processing the request."}},"security":[{"Bearer":[]}]}},"/api/alerts":{"get":{"tags":["Notification"],"summary":"Returns a paged list of notifications for the given member.","description":"Authorization: Bearer {token}\r\nResponse object contains: notificationID, memberZoneID, created, subject, message.","operationId":"Notification_GetAlerts","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"memberZoneID","in":"query","description":"MemberZoneID to filter notifications by (required).","required":true,"type":"string"},{"name":"page","in":"query","description":"Page number (1-based). Default 1.","required":false,"type":"integer","format":"int32"},{"name":"pageSize","in":"query","description":"Page size. Default 20.","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Notifications returned.","schema":{"type":"array","items":{"type":"object"}}},"400":{"description":"Missing or invalid memberZoneID."},"404":{"description":"No notifications found."}},"security":[{"Bearer":[]}]}},"/api/nofication":{"get":{"tags":["Notification"],"summary":"Returns a paged list of notifications for the given member.","description":"Authorization: Bearer {token}\r\nResponse object contains: notificationID, memberZoneID, created, subject, message.","operationId":"Notification_GetNotify","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"memberZoneID","in":"query","description":"MemberZoneID to filter notifications by (required).","required":true,"type":"string"},{"name":"page","in":"query","description":"Page number (1-based). Default 1.","required":false,"type":"integer","format":"int32"},{"name":"pageSize","in":"query","description":"Page size. Default 20.","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Notifications returned.","schema":{"type":"array","items":{"type":"object"}}},"400":{"description":"Missing or invalid memberZoneID."},"404":{"description":"No notifications found."}},"security":[{"Bearer":[]}]}},"/api/notification/unread-count":{"get":{"tags":["Notification"],"summary":"Gets the count of unread notifications for the given member.","description":"Authorization: Bearer {token}","operationId":"Notification_GetUnreadCount","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"memberZoneID","in":"query","description":"MemberZoneID to filter notifications by (required).","required":true,"type":"string"}],"responses":{"200":{"description":"Unread count returned.","schema":{"type":"object"}},"400":{"description":"Missing or invalid memberZoneID."}},"security":[{"Bearer":[]}]}},"/api/newnotication":{"post":{"tags":["Notification"],"summary":"Creates a new notification for the provided MemberZoneID.","description":"Authorization: Bearer {token}\r\n- Created notifications default to Unread status.\r\n- The response is intentionally minimal to be mobile-friendly.","operationId":"Notification_CreateNotification","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Notification payload containing MemberZoneID, subject and message.","required":true,"schema":{"$ref":"#/definitions/NewNotificationRequest"}}],"responses":{"200":{"description":"Notification created.","schema":{"type":"object"}},"400":{"description":"Invalid request body."},"404":{"description":"Target user not found."},"500":{"description":"Server error."}},"security":[{"Bearer":[]}]}},"/api/notification/{notificationID}/read":{"put":{"tags":["Notification"],"summary":"Marks a specific notification as read.","description":"Authorization: Bearer {token}","operationId":"Notification_ReadNotification","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"notificationID","in":"path","description":"Notification identifier (path parameter).","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Notification marked as read.","schema":{"type":"object"}},"400":{"description":"Invalid notificationID."},"404":{"description":"Notification not found."}},"security":[{"Bearer":[]}]}},"/api/notification/read-all":{"put":{"tags":["Notification"],"summary":"Marks all unread notifications as read.","description":"Authorization: Bearer {token}\r\nNote: This updates all notifications in the notifications table that are currently Unread.","operationId":"Notification_ReadAll","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"All notifications marked as read."},"500":{"description":"Server error."}},"security":[{"Bearer":[]}]}},"/api/refresh-login":{"post":{"tags":["OAuth"],"summary":"Refreshes an access token using a valid refresh token.","operationId":"OAuth_Refresh","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"request","in":"body","description":"Contains the refresh token issued previously.","required":true,"schema":{"$ref":"#/definitions/RefreshRequest"}}],"responses":{"200":{"description":"Refresh successful. Returns a new access token.","schema":{"type":"object"}},"400":{"description":"Invalid request payload."},"401":{"description":"Refresh token invalid, revoked or expired."}}}},"/api/login":{"post":{"tags":["OAuth"],"summary":"Authenticates a user and returns a JWT token.","operationId":"OAuth_Login","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"userLogin","in":"body","description":"Login payload containing Username and Password.","required":true,"schema":{"$ref":"#/definitions/UserLogin"}}],"responses":{"200":{"description":"Authentication successful. Returns a token.","schema":{"type":"object"}},"400":{"description":"Invalid request payload."},"401":{"description":"Invalid username or password."},"429":{"description":"Too many login attempts."}}}},"/api/logout":{"post":{"tags":["OAuth"],"summary":"Logs out the current authenticated user by revoking the provided bearer token.","operationId":"OAuth_Logout","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"Logged out successfully.","schema":{"type":"object"}},"400":{"description":"Authorization header missing."},"401":{"description":"Authentication required."}},"security":[{"Bearer":[]}]}},"/api/forgot-password":{"post":{"tags":["OAuth"],"summary":"Initiates a password reset flow by creating a reset token and sending a reset link to the email.","description":"- For security the endpoint always returns 200 to avoid revealing whether the email exists.\r\n- Reset token lifetime: 30 minutes.\r\n- Reset link base URL should be configured in application settings (currently hard-coded).","operationId":"OAuth_ForgotPassword","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Contains the Email to send the reset link to.","required":true,"schema":{"$ref":"#/definitions/ForgotPasswordRequest"}}],"responses":{"200":{"description":"Reset link sent (if email exists)."},"400":{"description":"Invalid request payload."},"500":{"description":"Server error."}}}},"/api/forgot-password-otp":{"post":{"tags":["OAuth"],"summary":"Requests a one-time password (OTP) to be sent to a user's email for password reset.","description":"- OTP is 6 digits and expires in 30 minutes.\r\n- Does not reveal if email exists (returns 200).\r\n- Avoid logging the OTP or including it in any non-secure logs.","operationId":"OAuth_RequestOtp","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Contains the Email to receive the OTP.","required":true,"schema":{"$ref":"#/definitions/RequestOtpModel"}}],"responses":{"200":{"description":"OTP sent (if email exists)."},"400":{"description":"Invalid request payload."},"500":{"description":"Server error."}}}},"/api/reset-password":{"post":{"tags":["OAuth"],"summary":"Resets a user's password using a reset token (from email link).","description":"- Tokens are single-use and cleared after successful reset.\r\n- Passwords are hashed using BCrypt.","operationId":"OAuth_ResetPassword","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Contains the reset token and the new password.","required":true,"schema":{"$ref":"#/definitions/ResetPasswordUser"}}],"responses":{"200":{"description":"Password updated."},"400":{"description":"Invalid or expired token."},"500":{"description":"Server error."}}}},"/api/reset-password-otp":{"post":{"tags":["OAuth"],"summary":"Resets a user's password using an OTP code.","description":"- OTP is cleared after successful reset.\r\n- Passwords are hashed using BCrypt.","operationId":"OAuth_ResetPasswordOtp","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Contains the OTP and the new password.","required":true,"schema":{"$ref":"#/definitions/ResetPasswordModel"}}],"responses":{"200":{"description":"Password updated."},"400":{"description":"Invalid or expired OTP."}}}},"/api/verify-otp":{"post":{"tags":["OAuth"],"summary":"Verifies an OTP code for the specified email.","operationId":"OAuth_VerifyOtp","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"model","in":"body","description":"Contains the Email and OTP to verify.","required":true,"schema":{"$ref":"#/definitions/VerifyOtpModel"}}],"responses":{"200":{"description":"OTP verified."},"400":{"description":"Invalid or expired OTP."}}}},"/api/unlock-useraccount":{"post":{"tags":["OAuth"],"summary":"To unlock user account","operationId":"OAuth_UnLockUserAccount","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"username","in":"query","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/onboarding":{"get":{"tags":["OnBoarding"],"summary":"Retrieves a list of onboarding sites.","operationId":"OnBoarding_getOnboardings","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"lang","in":"query","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully retrieved the list of onboarding sites.","schema":{"type":"array","items":{"$ref":"#/definitions/OnboardingResponse"}}},"404":{"description":"No onboarding sites found."},"500":{"description":"An error occurred while processing the request."}}}},"/api/gettingstarted/id":{"get":{"tags":["OnBoarding"],"summary":"Retrieves a list of onboarding sites. (ADMIN ONLY)","operationId":"OnBoarding_GetGettingStartedByIDAsync","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Successfully retrieved the list of onboarding sites.","schema":{"type":"array","items":{"$ref":"#/definitions/OnBoarding"}}},"404":{"description":"No onboarding sites found."},"500":{"description":"An error occurred while processing the request."}},"security":[{"Bearer":[]}]}},"/api/gettingstartedlist":{"get":{"tags":["OnBoarding"],"summary":"Retrieves a list of onboarding sites. (ADMIN ONLY)","operationId":"OnBoarding_GetGettingStartedAsync","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"lang","in":"query","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully retrieved the list of onboarding sites.","schema":{"type":"array","items":{"$ref":"#/definitions/OnBoarding"}}},"404":{"description":"No onboarding sites found."},"500":{"description":"An error occurred while processing the request."}},"security":[{"Bearer":[]}]}},"/api/updateonboarding":{"put":{"tags":["OnBoarding"],"summary":"Updates an onboarding record. (ADMIN ONLY)","operationId":"OnBoarding_UpdateOnBoarding","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"updateBoard","in":"body","required":true,"schema":{"$ref":"#/definitions/onBoardingMsg"}}],"responses":{"200":{"description":"Successfully updated the onboarding record.","schema":{"$ref":"#/definitions/OnboardingResponse"}},"400":{"description":"Invalid data provided."},"404":{"description":"Onboarding record not found."},"500":{"description":"An error occurred while updating the onboarding record."}},"security":[{"Bearer":[]}]}},"/api/newonboarding":{"post":{"tags":["OnBoarding"],"summary":"Creates a new onboarding record. (ADMIN ONLY)","operationId":"OnBoarding_NewOnBoarding","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"newBoard","in":"body","required":true,"schema":{"$ref":"#/definitions/newonBoardingMsg"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Successfully created a new onboarding record.","schema":{"$ref":"#/definitions/OnboardingResponse"}},"400":{"description":"Invalid data provided."},"500":{"description":"An error occurred while creating the onboarding record."}},"security":[{"Bearer":[]}]}},"/api/removeonboarding":{"delete":{"tags":["OnBoarding"],"summary":"Creates a new onboarding record. (ADMIN ONLY)","operationId":"OnBoarding_DeleteOnBoarding","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"query","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Successfully deleted a new onboarding record.","schema":{"$ref":"#/definitions/OnboardingResponse"}},"400":{"description":"Invalid id provided."},"500":{"description":"An error occurred while creating the onboarding record."}},"security":[{"Bearer":[]}]}},"/api/clubs":{"get":{"tags":["Site"],"summary":"Retrieves a list of clubs/sites.","operationId":"Site_GetSites","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"Successfully retrieved the list of clubs/sites.","schema":{"type":"array","items":{"$ref":"#/definitions/SiteResponse"}}},"404":{"description":"No clubs/sites found."},"500":{"description":"An error occurred while processing the request."}}}},"/api/clubs/linked":{"get":{"tags":["Site"],"summary":"Retrieves a list of clubs/sites.","operationId":"Site_GetLinkedSites","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"memberzoneID","in":"query","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully retrieved the list of clubs/sites.","schema":{"type":"array","items":{"$ref":"#/definitions/SiteResponse"}}},"404":{"description":"No clubs/sites found."},"500":{"description":"An error occurred while processing the request."}},"security":[{"Bearer":[]}]}},"/api/clubs/create":{"post":{"tags":["Site"],"summary":"Create new site (ADMIN ONLY)","operationId":"Site_CreateSite","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/CreateSiteRequest"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/clubs/edit/{siteCode}":{"put":{"tags":["Site"],"summary":"Update site details (ADMIN ONLY)","operationId":"Site_UpdateSite","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"siteCode","in":"path","required":true,"type":"string"},{"name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/UpdateSiteRequest"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/modules/all":{"get":{"tags":["SiteModule"],"summary":"Get all modules. Optionally filter by siteCode query parameter.\r\nGET /api/modules?siteCode={siteCode}","operationId":"SiteModule_GetAll","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"siteCode","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}}}},"/api/modules/get/{id}":{"get":{"tags":["SiteModule"],"summary":"Get module by AutoId.\r\nGET /api/modules/{id} (ADMIN ONLY)","operationId":"SiteModule_GetById","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"path","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/modules/update/{id}":{"put":{"tags":["SiteModule"],"summary":"Update module by AutoId.\r\nPUT /api/modules/{id}\r\nBody: SiteModule (ADMIN ONLY)","operationId":"SiteModule_Update","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"id","in":"path","required":true,"type":"integer","format":"int32"},{"name":"module","in":"body","required":true,"schema":{"$ref":"#/definitions/SiteModule"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/modules/delete/{id}":{"delete":{"tags":["SiteModule"],"summary":"Delete module by AutoId.\r\nDELETE /api/modules/{id} (ADMIN ONLY)","operationId":"SiteModule_Delete","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"sitecode","in":"query","required":true,"type":"string"},{"name":"id","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}}},"security":[{"Bearer":[]}]}},"/api/register":{"post":{"tags":["User"],"summary":"Registers a new user account.","operationId":"User_Register","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"userRegistration","in":"body","description":"Registration payload containing Password, Email, FirstName, LastName, MobileNo and DOB.","required":true,"schema":{"$ref":"#/definitions/UserRegistration"}}],"responses":{"200":{"description":"Account created successfully.","schema":{"type":"object"}},"400":{"description":"Invalid payload or registration error."},"500":{"description":"Server error."}}}},"/api/userdetail":{"get":{"tags":["User"],"summary":"Gets user details for the specified MemberZoneID.","description":"Requires authorization header: \"Authorization: Bearer &lt;Token&gt;\".","operationId":"User_GetUser","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"MemberZoneID","in":"query","description":"The member zone identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"User found.","schema":{"type":"object"}},"400":{"description":"Missing or invalid MemberZoneID."},"404":{"description":"User not found."}},"security":[{"Bearer":[]}]}},"/api/userList":{"get":{"tags":["User"],"summary":"Returns the full list of users.","description":"Requires authorization header: \"Authorization: Bearer &lt;Token&gt;\".","operationId":"User_GetUserList","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"responses":{"200":{"description":"List of users returned.","schema":{"type":"array","items":{"$ref":"#/definitions/User"}}},"404":{"description":"No users found."}},"security":[{"Bearer":[]}]}},"/api/userClubAccess":{"get":{"tags":["User"],"summary":"Retrieves the user's club access information.","operationId":"User_getuserClub","consumes":[],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"memberzoneID","in":"query","description":"Member zone identifier.","required":true,"type":"string"}],"responses":{"200":{"description":"User club access returned.","schema":{"type":"object"}},"400":{"description":"Invalid memberzoneID."},"404":{"description":"No club access found."}},"security":[{"Bearer":[]}]}},"/api/memberConnect":{"post":{"tags":["User"],"summary":"Connects a member to an external club API and stores access metadata.","operationId":"User_ConnectClub","consumes":["application/json","text/json","application/xml","text/xml","application/x-www-form-urlencoded"],"produces":["application/json","text/json","application/xml","text/xml"],"parameters":[{"name":"userConnect","in":"body","description":"Payload required to connect the member to a club.","required":true,"schema":{"$ref":"#/definitions/memberConnect"}}],"responses":{"200":{"description":"Connection successful.","schema":{"type":"object"}},"400":{"description":"Invalid payload or external API failed."},"404":{"description":"User or club configuration not found."},"500":{"description":"Server error."}},"security":[{"Bearer":[]}]}}},"definitions":{"NewMessage":{"type":"object","properties":{"sentBy":{"type":"string"},"sentTo":{"type":"string"},"ReplyMsg_ID":{"format":"int32","type":"integer"},"Status":{"format":"int32","type":"integer"},"Message":{"type":"string"},"FileAttach":{"format":"byte","type":"string"}}},"updateMsg":{"type":"object","properties":{"Message":{"type":"string"}}},"ChatActionRequest":{"type":"object","properties":{"SessionId":{"type":"string"},"Action":{"type":"string"},"Value":{"type":"string"}}},"ChatTranslation":{"type":"object","properties":{"Id":{"format":"int32","type":"integer"},"Key":{"type":"string"},"Lang":{"type":"string"},"TextValue":{"type":"string"}}},"UpdateNewsRequest":{"type":"object","properties":{"newsID":{"format":"int32","type":"integer"},"siteID":{"type":"string"},"description":{"type":"string"},"title":{"type":"string"},"Image":{"format":"byte","type":"string"},"expiryDate":{"format":"date-time","type":"string"},"updatedDate":{"format":"date-time","type":"string"},"url":{"type":"string"}}},"CreateNewsRequest":{"type":"object","properties":{"siteID":{"type":"string"},"description":{"type":"string"},"title":{"type":"string"},"image":{"format":"byte","type":"string"},"startDate":{"format":"date-time","type":"string"},"updatedDate":{"format":"date-time","type":"string"},"expiryDate":{"format":"date-time","type":"string"},"url":{"type":"string"}}},"NewNotificationRequest":{"description":"Request payload to create a notification for a member.","type":"object","properties":{"MemberZoneID":{"description":"MemberZoneID of the recipient (required).","type":"string"},"subject":{"description":"Notification subject (optional but recommended).","type":"string"},"message":{"description":"Notification message body.","type":"string"}}},"RefreshRequest":{"type":"object","properties":{"RefreshToken":{"type":"string"}}},"UserLogin":{"type":"object","properties":{"Username":{"type":"string"},"Password":{"type":"string"}}},"ForgotPasswordRequest":{"type":"object","properties":{"Email":{"type":"string"}}},"RequestOtpModel":{"type":"object","properties":{"Email":{"type":"string"}}},"ResetPasswordUser":{"type":"object","properties":{"Email":{"type":"string"},"token":{"type":"string"},"NewPassword":{"type":"string"}}},"ResetPasswordModel":{"type":"object","properties":{"Email":{"type":"string"},"Otp":{"type":"string"},"NewPassword":{"type":"string"}}},"VerifyOtpModel":{"type":"object","properties":{"Email":{"type":"string"},"Otp":{"type":"string"}}},"OnboardingResponse":{"type":"object","properties":{"Sequence":{"format":"int32","type":"integer"},"Title":{"type":"string"},"Message":{"type":"string"},"Image":{"format":"byte","type":"string"}}},"OnBoarding":{"type":"object","properties":{"AutoID":{"format":"int32","type":"integer"},"language":{"type":"string"},"Sequence":{"format":"int32","type":"integer"},"Title":{"type":"string"},"Status":{"type":"string"},"Message":{"type":"string"},"created":{"format":"date-time","type":"string"},"updated":{"format":"date-time","type":"string"},"Image":{"format":"byte","type":"string"}}},"onBoardingMsg":{"type":"object","properties":{"id":{"format":"int32","type":"integer"},"body":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"sequence":{"format":"int32","type":"integer"},"Image":{"format":"byte","type":"string"}}},"newonBoardingMsg":{"type":"object","properties":{"body":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"language":{"type":"string"},"sequence":{"format":"int32","type":"integer"},"Image":{"format":"byte","type":"string"}}},"SiteResponse":{"type":"object","properties":{"SiteName":{"type":"string"},"SiteDescription":{"type":"string"},"SiteAddress":{"type":"string"},"SiteCode":{"type":"string"},"TemporaryKey":{"type":"string"},"URL":{"type":"string"},"Linked":{"type":"boolean"}}},"CreateSiteRequest":{"type":"object","properties":{"SiteName":{"type":"string"},"SiteDescription":{"type":"string"},"SiteAddress":{"type":"string"},"SiteCode":{"type":"string"},"SiteApiKey":{"type":"string"},"URL":{"type":"string"}}},"UpdateSiteRequest":{"type":"object","properties":{"SiteName":{"type":"string"},"SiteDescription":{"type":"string"},"SiteAddress":{"type":"string"},"URL":{"type":"string"},"SiteApiKey":{"type":"string"}}},"SiteModule":{"type":"object","properties":{"autoId":{"format":"int32","type":"integer"},"moduleId":{"format":"int32","type":"integer"},"Code":{"type":"string"},"Label":{"type":"string"},"Description":{"type":"string"},"siteID":{"type":"string"},"active":{"type":"boolean"}}},"UserRegistration":{"type":"object","properties":{"Password":{"type":"string"},"Email":{"type":"string"},"FirstName":{"type":"string"},"LastName":{"type":"string"},"MobileNo":{"type":"string"},"DOB":{"format":"date-time","type":"string"}}},"User":{"required":["User_ID","FirstName","LastName","Username","PasswordHash"],"type":"object","properties":{"AutoID":{"format":"int32","type":"integer"},"MemberZoneID":{"type":"string"},"Image":{"format":"byte","type":"string"},"Category_ID":{"format":"int32","type":"integer"},"User_ID":{"type":"string"},"Email":{"type":"string"},"isLocked":{"maxLength":1,"minLength":0,"type":"string"},"LockedDate":{"format":"date-time","type":"string"},"FirstName":{"maxLength":50,"minLength":0,"type":"string"},"LastName":{"maxLength":50,"minLength":0,"type":"string"},"MobileNo":{"type":"string"},"DOB":{"format":"date-time","type":"string"},"Username":{"type":"string"},"PasswordHash":{"type":"string"},"CreationDate":{"format":"date-time","type":"string"},"UpdatedDate":{"format":"date-time","type":"string"},"AccessRights":{"format":"int32","type":"integer"},"LanguageID":{"type":"string"}}},"memberConnect":{"type":"object","properties":{"memberzoneID":{"type":"string"},"clubResponseToken":{"type":"string"},"MembershipNo":{"type":"string"},"MembershipStatus":{"type":"string"},"MembershipType":{"type":"string"},"AccountType":{"type":"string"},"siteID":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"type":"apiKey","description":"JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"","name":"Authorization","in":"header"}}}