Skip to main content

Installation

To install the ActivitySmith Go SDK, you can use go get:
Go
go get github.com/ActivitySmithHQ/activitysmith-go

Usage

  1. Create an API key
  2. Pass the API key into activitysmith.New.
Here’s an example of how to use the SDK with error handling:
Go
package main

import (
	"log"

	activitysmithsdk "github.com/ActivitySmithHQ/activitysmith-go"
)

func main() {
	activitysmith, err := activitysmithsdk.New("YOUR-API-KEY")
	if err != nil {
		log.Fatal(err)
	}
}

Send a Push Notification

Use activitysmith.Notifications.Send with an activitysmithsdk.PushNotificationInput. Push Notification
Go
input := activitysmithsdk.PushNotificationInput{
	Title:   "New subscription 💸",
	Message: "Customer upgraded to Pro plan",
}

response, err := activitysmith.Notifications.
	Send(input)
if err != nil {
	log.Fatal(err)
}

log.Println(response.GetSuccess())
log.Println(response.GetDevicesNotified())

Start a Live Activity

Start a Live Activity with activitysmith.LiveActivities.Start. For segmented_progress, include Title, NumberOfSteps, CurrentStep, and Type. For progress, set Type: "progress" and add WithPercentage(...) or WithValue(...).WithUpperLimit(...). Start Live Activity
Go
startInput := activitysmithsdk.LiveActivityStartInput{
	Title:         "Nightly database backup",
	Subtitle:      "create snapshot",
	NumberOfSteps: 3,
	CurrentStep:   1,
	Type:          "segmented_progress",
	Color:         "yellow",
}

start, err := activitysmith.LiveActivities.
	Start(startInput)
if err != nil {
	log.Fatal(err)
}

activityID := start.GetActivityId()
Progress type
Go
startInput := activitysmithsdk.LiveActivityStartInput{
	Title:      "EV Charging",
	Subtitle:   "Added 30 mi range",
	Percentage: 15,
	Type:       "progress",
	Color:      "lime",
}

start, err := activitysmith.LiveActivities.
	Start(startInput)
if err != nil {
	log.Fatal(err)
}

activityID := start.GetActivityId()

Update a Live Activity

Update a Live Activity with activitysmith.LiveActivities.Update using the activityID. For progress updates, use WithPercentage(...) or WithValue(...).WithUpperLimit(...) instead of CurrentStep. Update Live Activity
Go
updateInput := activitysmithsdk.LiveActivityUpdateInput{
	ActivityID:  activityID,
	Title:       "Nightly database backup",
	Subtitle:    "upload archive",
	CurrentStep: 2,
}

update, err := activitysmith.LiveActivities.
	Update(updateInput)
if err != nil {
	log.Fatal(err)
}

log.Println(update.GetDevicesNotified())
Progress type
Go
updateInput := activitysmithsdk.LiveActivityUpdateInput{
	ActivityID: activityID,
	Title:      "EV Charging",
	Subtitle:   "Added 120 mi range",
	Percentage: 60,
}

update, err := activitysmith.LiveActivities.
	Update(updateInput)
if err != nil {
	log.Fatal(err)
}

log.Println(update.GetDevicesNotified())

End a Live Activity

End a Live Activity with activitysmith.LiveActivities.End. If AutoDismissMinutes is omitted, backend default 3 is used. For progress activities, use WithPercentage(...) or WithValue(...).WithUpperLimit(...). End Live Activity
Go
endInput := activitysmithsdk.LiveActivityEndInput{
	ActivityID:         activityID,
	Title:              "Nightly database backup",
	Subtitle:           "verify restore",
	CurrentStep: 3,
	AutoDismissMinutes: 2,
}

end, err := activitysmith.LiveActivities.
	End(endInput)
if err != nil {
	log.Fatal(err)
}

log.Println(end.GetSuccess())
Progress type
Go
endInput := activitysmithsdk.LiveActivityEndInput{
	ActivityID:         activityID,
	Title:              "EV Charging",
	Subtitle:           "Added 200 mi range",
	Percentage:         100,
	AutoDismissMinutes: 2,
}

end, err := activitysmith.LiveActivities.
	End(endInput)
if err != nil {
	log.Fatal(err)
}

log.Println(end.GetSuccess())

Channels

You can target specific channels when sending a push or starting a Live Activity.
Go
pushInput := activitysmithsdk.PushNotificationInput{
	Title:    "New subscription 💸",
	Message:  "Customer upgraded to Pro plan",
	Channels: []string{"ios-builds", "engineering"},
}

_, err = activitysmith.Notifications.Send(pushInput)
if err != nil {
	log.Fatal(err)
}

startInput := activitysmithsdk.LiveActivityStartInput{
	Title:         "Nightly database backup",
	NumberOfSteps: 3,
	CurrentStep:   1,
	Type:          "segmented_progress",
	Channels:      []string{"ios-builds"},
}

_, err = activitysmith.LiveActivities.Start(startInput)
if err != nil {
	log.Fatal(err)
}

Error Handling

Handle API errors by checking the returned error from SDK calls.

Additional Resources