HelloJohn / docs
SDKsGo SDK

Users

Manage users server-side with the HelloJohn Go SDK — get, update, create, disable, and list users.

Users

The Go SDK provides a Users service for managing users from your backend.

hj := hellojohn.New(hellojohn.Config{
    TenantID:  os.Getenv("HELLOJOHN_TENANT_ID"),
    SecretKey: os.Getenv("HELLOJOHN_SECRET_KEY"),
})

Get a User

user, err := hj.Users.Get(ctx, "usr_01HABCDEF123456")
if err != nil {
    log.Fatal(err)
}
fmt.Println(user.Email)

Get by Email

user, err := hj.Users.GetByEmail(ctx, "jane@example.com")

List Users

result, err := hj.Users.List(ctx, hellojohn.ListUsersParams{
    Limit:  50,
    Status: "active",
})

for _, user := range result.Users {
    fmt.Println(user.ID, user.Email)
}

// Paginate
if result.NextCursor != "" {
    next, _ := hj.Users.List(ctx, hellojohn.ListUsersParams{
        Cursor: result.NextCursor,
    })
    _ = next
}

Create a User

user, err := hj.Users.Create(ctx, hellojohn.CreateUserParams{
    Email:         "jane@example.com",
    Password:      "TemporaryPass123!",
    FirstName:     "Jane",
    LastName:      "Doe",
    EmailVerified: true,
    Metadata: map[string]interface{}{
        "plan": "pro",
    },
})

Update a User

_, err := hj.Users.Update(ctx, "usr_01HABCDEF123456", hellojohn.UpdateUserParams{
    FirstName: "Jane",
    LastName:  "Smith",
    Metadata: map[string]interface{}{
        "plan": "enterprise",
    },
})

Disable / Enable

// Disable
err = hj.Users.Disable(ctx, "usr_01HABCDEF123456")

// Enable
err = hj.Users.Enable(ctx, "usr_01HABCDEF123456")

Delete

err = hj.Users.Delete(ctx, "usr_01HABCDEF123456")

Error Handling

The SDK returns typed errors:

user, err := hj.Users.Get(ctx, userID)
if err != nil {
    var hjErr *hellojohn.Error
    if errors.As(err, &hjErr) {
        switch hjErr.Code {
        case "user_not_found":
            http.Error(w, "User not found", http.StatusNotFound)
        default:
            http.Error(w, "Internal error", http.StatusInternalServerError)
        }
        return
    }
    // Network or other error
    http.Error(w, "Internal error", http.StatusInternalServerError)
}

On this page