Skip to content

novuhq/go-novu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

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