# User An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/User/api](https://m3o.com/User/api). Endpoints: ## UpdatePassword Update the account password [https://m3o.com/user/api#UpdatePassword](https://m3o.com/user/api#UpdatePassword) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Update the account password func UpdateTheAccountPassword() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.UpdatePassword(&user.UpdatePasswordRequest{ ConfirmPassword: "Password2", NewPassword: "Password2", OldPassword: "Password1", }) fmt.Println(rsp, err) } ``` ## Read Read an account by id, username or email. Only one need to be specified. [https://m3o.com/user/api#Read](https://m3o.com/user/api#Read) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Read an account by id, username or email. Only one need to be specified. func ReadAnAccountById() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Read(&user.ReadRequest{ Id: "user-1", }) fmt.Println(rsp, err) } ``` ## Read Read an account by id, username or email. Only one need to be specified. [https://m3o.com/user/api#Read](https://m3o.com/user/api#Read) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Read an account by id, username or email. Only one need to be specified. func ReadAccountByUsernameOrEmail() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Read(&user.ReadRequest{ Username: "joe", }) fmt.Println(rsp, err) } ``` ## Read Read an account by id, username or email. Only one need to be specified. [https://m3o.com/user/api#Read](https://m3o.com/user/api#Read) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Read an account by id, username or email. Only one need to be specified. func ReadAccountByEmail() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Read(&user.ReadRequest{ Email: "joe@example.com", }) fmt.Println(rsp, err) } ``` ## SendVerificationEmail Send a verification email to the user being signed up. Email from will be from 'noreply@email.m3ocontent.com', but you can provide the title and contents. The verification link will be injected in to the email as a template variable, $micro_verification_link. Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link' The variable will be replaced with an actual url that will look similar to this: 'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url' [https://m3o.com/user/api#SendVerificationEmail](https://m3o.com/user/api#SendVerificationEmail) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Send a verification email // to the user being signed up. Email from will be from 'noreply@email.m3ocontent.com', // but you can provide the title and contents. // The verification link will be injected in to the email as a template variable, $micro_verification_link. // Example: 'Hi there, welcome onboard! Use the link below to verify your email: $micro_verification_link' // The variable will be replaced with an actual url that will look similar to this: // 'https://user.m3o.com/user/verify?token=a-verification-token&redirectUrl=your-redir-url' func SendVerificationEmail() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.SendVerificationEmail(&user.SendVerificationEmailRequest{ Email: "joe@example.com", FailureRedirectUrl: "https://m3o.com/verification-failed", FromName: "Awesome Dot Com", RedirectUrl: "https://m3o.com", Subject: "Email verification", TextContent: `Hi there, Please verify your email by clicking this link: $micro_verification_link`, }) fmt.Println(rsp, err) } ``` ## SendPasswordResetEmail Send an email with a verification code to reset password. Call "ResetPassword" endpoint once user provides the code. [https://m3o.com/user/api#SendPasswordResetEmail](https://m3o.com/user/api#SendPasswordResetEmail) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Send an email with a verification code to reset password. // Call "ResetPassword" endpoint once user provides the code. func SendPasswordResetEmail() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.SendPasswordResetEmail(&user.SendPasswordResetEmailRequest{ Email: "joe@example.com", FromName: "Awesome Dot Com", Subject: "Password reset", TextContent: `Hi there, click here to reset your password: myapp.com/reset/code?=$code`, }) fmt.Println(rsp, err) } ``` ## VerifyEmail Verify the email address of an account from a token sent in an email to the user. [https://m3o.com/user/api#VerifyEmail](https://m3o.com/user/api#VerifyEmail) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Verify the email address of an account from a token sent in an email to the user. func VerifyEmail() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.VerifyEmail(&user.VerifyEmailRequest{ Email: "joe@example.com", Token: "012345", }) fmt.Println(rsp, err) } ``` ## Delete Delete an account by id [https://m3o.com/user/api#Delete](https://m3o.com/user/api#Delete) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Delete an account by id func DeleteUserAccount() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Delete(&user.DeleteRequest{ Id: "8b98acbe-0b6a-4d66-a414-5ffbf666786f", }) fmt.Println(rsp, err) } ``` ## Login Login using username or email. The response will return a new session for successful login, 401 in the case of login failure and 500 for any other error [https://m3o.com/user/api#Login](https://m3o.com/user/api#Login) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Login using username or email. The response will return a new session for successful login, // 401 in the case of login failure and 500 for any other error func LogAuserIn() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Login(&user.LoginRequest{ Email: "joe@example.com", Password: "Password1", }) fmt.Println(rsp, err) } ``` ## Logout Logout a user account [https://m3o.com/user/api#Logout](https://m3o.com/user/api#Logout) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Logout a user account func LogAuserOut() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Logout(&user.LogoutRequest{ SessionId: "df91a612-5b24-4634-99ff-240220ab8f55", }) fmt.Println(rsp, err) } ``` ## ReadSession Read a session by the session id. In the event it has expired or is not found and error is returned. [https://m3o.com/user/api#ReadSession](https://m3o.com/user/api#ReadSession) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Read a session by the session id. In the event it has expired or is not found and error is returned. func ReadAsessionByTheSessionId() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.ReadSession(&user.ReadSessionRequest{ SessionId: "df91a612-5b24-4634-99ff-240220ab8f55", }) fmt.Println(rsp, err) } ``` ## List List all users. Returns a paged list of results [https://m3o.com/user/api#List](https://m3o.com/user/api#List) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // List all users. Returns a paged list of results func ListAllUsers() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.List(&user.ListRequest{ Limit: 100, Offset: 0, }) fmt.Println(rsp, err) } ``` ## Create Create a new user account. The email address and username for the account must be unique. [https://m3o.com/user/api#Create](https://m3o.com/user/api#Create) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Create a new user account. The email address and username for the account must be unique. func CreateAnAccount() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Create(&user.CreateRequest{ Email: "joe@example.com", Id: "user-1", Password: "Password1", Username: "joe", }) fmt.Println(rsp, err) } ``` ## Update Update the account username or email [https://m3o.com/user/api#Update](https://m3o.com/user/api#Update) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Update the account username or email func UpdateAnAccount() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.Update(&user.UpdateRequest{ Email: "joe+2@example.com", Id: "user-1", }) fmt.Println(rsp, err) } ``` ## ResetPassword Reset password with the code sent by the "SendPasswordResetEmail" endoint. [https://m3o.com/user/api#ResetPassword](https://m3o.com/user/api#ResetPassword) ```go package example import( "fmt" "os" "go.m3o.com/user" ) // Reset password with the code sent by the "SendPasswordResetEmail" endoint. func ResetPassword() { userService := user.NewUserService(os.Getenv("M3O_API_TOKEN")) rsp, err := userService.ResetPassword(&user.ResetPasswordRequest{ Code: "012345", ConfirmPassword: "NewPassword1", Email: "joe@example.com", NewPassword: "NewPassword1", }) fmt.Println(rsp, err) } ```