mirror of
https://github.com/kevin-DL/m3o-go.git
synced 2026-01-11 18:44:26 +00:00
535 lines
10 KiB
Markdown
Executable File
535 lines
10 KiB
Markdown
Executable File
# User
|
|
|
|
An [m3o.com](https://m3o.com) API. For example usage see [m3o.com/user/api](https://m3o.com/user/api).
|
|
|
|
Endpoints:
|
|
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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",
|
|
UserId: "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 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)
|
|
|
|
}
|
|
```
|
|
## 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{
|
|
Token: "012345",
|
|
|
|
})
|
|
fmt.Println(rsp, err)
|
|
|
|
}
|
|
```
|
|
## SendMagicLink
|
|
|
|
Login using email only - Passwordless
|
|
|
|
|
|
[https://m3o.com/user/api#SendMagicLink](https://m3o.com/user/api#SendMagicLink)
|
|
|
|
```go
|
|
package example
|
|
|
|
import(
|
|
"fmt"
|
|
"os"
|
|
|
|
"go.m3o.com/user"
|
|
)
|
|
|
|
// Login using email only - Passwordless
|
|
func SendAmagicLink() {
|
|
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
|
|
rsp, err := userService.SendMagicLink(&user.SendMagicLinkRequest{
|
|
Address: "www.example.com",
|
|
Email: "joe@example.com",
|
|
Endpoint: "verifytoken",
|
|
FromName: "Awesome Dot Com",
|
|
Subject: "MagicLink to access your account",
|
|
TextContent: `Hi there,
|
|
|
|
Click here to access your account $micro_verification_link`,
|
|
|
|
})
|
|
fmt.Println(rsp, err)
|
|
|
|
}
|
|
```
|
|
## VerifyToken
|
|
|
|
Check whether the token attached to MagicLink is valid or not.
|
|
Ideally, you need to call this endpoint from your http request
|
|
handler that handles the endpoint which is specified in the
|
|
SendMagicLink request.
|
|
|
|
|
|
[https://m3o.com/user/api#VerifyToken](https://m3o.com/user/api#VerifyToken)
|
|
|
|
```go
|
|
package example
|
|
|
|
import(
|
|
"fmt"
|
|
"os"
|
|
|
|
"go.m3o.com/user"
|
|
)
|
|
|
|
// Check whether the token attached to MagicLink is valid or not.
|
|
// Ideally, you need to call this endpoint from your http request
|
|
// handler that handles the endpoint which is specified in the
|
|
// SendMagicLink request.
|
|
func VerifyAtoken() {
|
|
userService := user.NewUserService(os.Getenv("M3O_API_TOKEN"))
|
|
rsp, err := userService.VerifyToken(&user.VerifyTokenRequest{
|
|
Token: "EdsUiidouJJJLldjlloofUiorkojflsWWdld",
|
|
|
|
})
|
|
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)
|
|
|
|
}
|
|
```
|
|
## SendVerificationEmail
|
|
|
|
Send a verification email to a user.
|
|
Email "from" will be 'noreply@email.m3ocontent.com'.
|
|
The verification link will be injected in the email
|
|
as a template variable, $micro_verification_link e.g
|
|
'Welcome to M3O! Use the link below to verify your email: $micro_verification_link'
|
|
The variable will be replaced with a url similar to:
|
|
'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 a user.
|
|
// Email "from" will be 'noreply@email.m3ocontent.com'.
|
|
// The verification link will be injected in the email
|
|
// as a template variable, $micro_verification_link e.g
|
|
// 'Welcome to M3O! Use the link below to verify your email: $micro_verification_link'
|
|
// The variable will be replaced with a url similar to:
|
|
// '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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|
|
## 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)
|
|
|
|
}
|
|
```
|