Suger

Go SDK

Follow these steps to get started with the Suger Go SDK.

Step 1: Install the SDK

To include the Suger SDK in your project, you can clone new release version of the SDK in your terminal:

git clone https://github.com/sugerio/suger-sdk-go.git

Put the package under your project folder and add the following in import:

import suger "github.com/sugerio/suger-sdk-go"

Step 2: Get an OAuth access token

The Suger API uses the OAuth 2.0 client-credentials flow. First, create an OAuth App in your organization settings to get a Client ID and Client Secret. Then exchange them for a short-lived (1 hour) bearer token:

import (
	"encoding/json"
	"net/http"
	"net/url"
)

// getAccessToken exchanges OAuth App credentials for a bearer token.
// Cache the returned token in memory and request a new one when it expires.
func getAccessToken(clientID, clientSecret string) (string, error) {
	resp, err := http.PostForm("https://apiv2.suger.cloud/oauth2/token", url.Values{
		"grant_type":    {"client_credentials"},
		"client_id":     {clientID},
		"client_secret": {clientSecret},
		"resource":      {"https://api.suger.cloud"},
	})
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()

	var token struct {
		AccessToken string `json:"access_token"`
		ExpiresIn   int    `json:"expires_in"`
	}
	if err := json.NewDecoder(resp.Body).Decode(&token); err != nil {
		return "", err
	}
	return token.AccessToken, nil
}

The resource=https://api.suger.cloud parameter is required — it scopes the issued JWT to the Suger API. See API Access for the full token exchange, caching, and rotation details.

Step 3: Set up your configuration and create the ApiClient

Create a configuration and attach the bearer token. APIKeyAuth writes the Authorization header verbatim, so pass the OAuth token as Bearer <token>:

configuration := suger.NewConfiguration()
configuration.Servers = suger.ServerConfigurations{
	{
		URL:         "https://api.suger.cloud",
		Description: "No description provided",
	},
}
apiClient := suger.NewAPIClient(configuration)

accessToken, err := getAccessToken("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
if err != nil {
	// handle error
}
auth := context.WithValue(
	context.Background(),
	suger.ContextAPIKeys,
	map[string]suger.APIKey{
		"APIKeyAuth": {Key: "Bearer " + accessToken},
	},
)

Step 4: Use the Client

Now that you have your client set up, you can call Suger services. Here’s a simple example of how to make a service call:

var orgId = "your_org_id"
var offerId = "your_offer_id"
execute, response, err := apiClient.OfferAPI.GetOffer(auth, orgId, offerId).Execute()

Legacy authentication (API key)

To authenticate an existing integration with an API key, pass it as Key <key> instead of a bearer token:

auth := context.WithValue(
	context.Background(),
	suger.ContextAPIKeys,
	map[string]suger.APIKey{
		"APIKeyAuth": {Key: "Key " + "your_api_key"},
	},
)

Conclusion

You are now ready to use the Suger Go SDK in your application! For more detailed information and advanced usage, please refer to the official documentation.

Spotted something wrong or out of date on this page? Tell us and we'll correct it.