go-novu
go-novu copied to clipboard
GO SDK for Novu - The open-source notification infrastructure for engineers. 🚀
Novu's API v1 Go Library
Novu's API exposes the entire Novu features via a standardized programmatic interface. Please refer to the full documentation to learn more.
Installation & Usage
Install the package to your GoLang project.
go get github.com/novuhq/go-novu
Getting Started
Please follow the installation procedure and then run the following:
package main
import (
"context"
"fmt"
novu "github.com/novuhq/go-novu/lib"
"log"
)
func main() {
subscriberID := "<<REPLACE_WITH_YOUR_SUBSCRIBER>"
apiKey := "<REPLACE_WITH_YOUR_API_KEY>"
eventId := "<REPLACE_WITH_YOUR_EVENT_ID>"
ctx := context.Background()
to := map[string]interface{}{
"lastName": "Doe",
"firstName": "John",
"subscriberId": subscriberID,
"email": "[email protected]",
}
payload := map[string]interface{}{
"name": "Hello World",
"organization": map[string]interface{}{
"logo": "https://happycorp.com/logo.png",
},
}
data := novu.ITriggerPayloadOptions{To: to, Payload: payload}
novuClient := novu.NewAPIClient(apiKey, &novu.Config{})
resp, err := novuClient.EventApi.Trigger(ctx, eventId, data)
if err != nil {
log.Fatal("novu error", err.Error())
return
}
fmt.Println(resp)
// get integrations
integrations, err := novuClient.IntegrationsApi.GetAll(ctx)
if err != nil {
log.Fatal("Get all integrations error: ", err.Error())
}
fmt.Println(integrations)
}
NOTE
Check the cmd
directory to see a sample implementation and test files to see sample tests
Documentation for API Endpoints
Class | Method | HTTP request | Description |
---|---|---|---|
EventApi | Trigger | Post /events/trigger | Trigger |
EventApi | TriggerBulk | Post /v1/events/trigger/bulk | Bulk trigger event |
EventApi | BroadcastToAll | Post /v1/events/trigger/broadcast | Broadcast event to all |
EventApi | CancelTrigger | Delete /v1/events/trigger/:transactionId | Cancel triggered event |
SubscriberApi | Get | Get /subscribers/:subscriberId | Get a subscriber |
SubscriberApi | Identify | Post /subscribers | Create a subscriber |
SubscriberApi | Update | Put /subscribers/:subscriberID | Update subscriber data |
SubscriberApi | Delete | Delete /subscribers/:subscriberID | Removing a subscriber |
SubscriberApi | Get | Get /subscribers/:subscriberId/notifications/feed | Get a notification feed for a particular subscriber |
SubscriberApi | Get | Get /subscribers/:subscriberId/notifications/feed | Get the unseen notification count for subscribers feed |
SubscriberApi | Post | Post /v1/subscribers/:subscriberId/messages/markAs | Mark a subscriber feed message as seen |
SubscriberApi | Get | Get /subscribers/:subscriberId/preferences | Get subscriber preferences |
SubscriberApi | Patch | Patch /subscribers/:subscriberId/preferences/:templateId | Update subscriber preference |
TopicsApi | Get | Get /topics | Get a list of topics |
TopicsApi | Get | Get /topics/:topicKey | Get a topic by its topic key |
TopicsApi | Post | Post /topics | Create a topic |
TopicsApi | Patch | Patch /topics/:topicKey | Rename a topic |
TopicsApi | Delete | Delete /topics/:topicKey | Delete a topic |
TopicsApi | Post | Post /topics/:topicKey/subscribers | Add subscribers to a topic by key |
TopicsApi | Post | Post /topics/:topicKey/subscribers/removal | Remove subscribers from a topic |
IntegrationsApi | Create | Post /integrations | Create an integration |
IntegrationsApi | Update | Put /integrations/:integrationId | Update an integration |
IntegrationsApi | Delete | Delete /integrations/:integrationId | Delete an integration |
IntegrationsApi | Get | Get /integrations | Get all integrations |
IntegrationsApi | GetActive | Get /integrations/active | Get all active integrations |
InboundParserApi | Get | Get /inbound-parse/mx/status | Validate the mx record setup for the inbound parse functionality |
Authorization (api-key)
- Type: API key
- API key parameter name: ApiKey
- Location: HTTP header
For more information about these methods and their parameters, see the API documentation.
Support and Feedback
Be sure to visit the Novu official documentation website for additional information about our API.
If you find a bug, please post the issue on Github.
As always, if you need additional assistance, join our Discord us a note here.
Contributors
Name |
---|
Oyewole Samuel |
Dima Grossman |