stytch-go

module
v5.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2022 License: MIT

README

Stytch Go Library

The Stytch Go library makes it easy to use the Stytch user infrastructure API in Go applications.

It pairs well with the Stytch Web SDK or your own custom authentication flow.

Install

$ go get github.com/stytchauth/stytch-go/v5

Usage

You can find your API credentials in the Stytch Dashboard.

This client library supports all of Stytch's live products:

Example usage

Create an API client:

import (
	"os"

	"github.com/stytchauth/stytch-go/v5/stytch"
	"github.com/stytchauth/stytch-go/v5/stytch/stytchapi"
)

stytchAPIClient, err := stytchapi.NewAPIClient(
	stytch.EnvTest, // available environments are EnvTest and EnvLive
	"project-live-c60c0abe-c25a-4472-a9ed-320c6667d317",
	"secret-live-80JASucyk7z_G8Z-7dVwZVGXL5NT_qGAQ2I=",
)
if err != nil {
	panic(err)
}

Send a magic link by email:

	res, err := stytchAPIClient.MagicLinks.Email.Send(&stytch.MagicLinksEmailSendParams{
		Email:              "sandbox@stytch.com",
		Attributes:         stytch.Attributes{
			IPAddress: "10.0.0.0",
		},
    })

Authenticate the token from the magic link:

	res, err := stytchAPIClient.MagicLinks.Authenticate(
		&stytch.MagicLinksAuthenticateParams{
			Token:      "DOYoip3rvIMMW5lgItikFK-Ak1CfMsgjuiCyI7uuU94=",
			Options:    stytch.Options{IPMatchRequired: true},
			Attributes: stytch.Attributes{IPAddress: "10.0.0.0"},
		})

Get all users

    res, err := stytchAPIClient.Users.Search(
		&stytch.UsersSearchParams{
			Limit: 1000	
		})

Search users

	res, err := stytchAPIClient.Users.Search(
		&stytch.UsersSearchParams{
			Limit: 1000,
			Query: stytch.UsersSearchQuery{
				Operator: stytch.UserSearchOperatorOR,
				Operands: []json.Marshaler{
					stytch.UsersSearchQueryPhoneVerifiedFilter{true},
					stytch.UsersSearchQueryEmailVerifiedFilter{true},
					stytch.UsersSearchQueryWebAuthnRegistrationVerifiedFilter{true},
				}           
			}
		})

Iterate over all pages of users for a search query

	var users []stytch.User
	iter := stytchAPIClient.Users.SearchAll(&stytch.UsersSearchParams{})
	for iter.HasNext() {
		res, err := iter.Next()
		if err != nil {
			fmt.Println(err)
			return nil, err
		}
		users = append(users, res...)
	}

Handling Errors

When possible Stytch returns an error prepended with Stytch Error. Additionally, the error should include a type that can be used to distinguish errors.

Learn more about errors in the docs.

Documentation

See example requests and responses for all the endpoints in the Stytch API Reference.

Follow one of the integration guides or start with one of our example apps.

Support

If you've found a bug, open an issue!

If you have questions or want help troubleshooting, join us in Slack or email support@stytch.com.

If you've found a security vulnerability, please follow our responsible disclosure instructions.

Development

See DEVELOPMENT.md

Code of Conduct

Everyone interacting in the Stytch project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL