SDK Documentation
NotiBoost provides SDKs for popular languages to make integration easier.
Installation
Install SDK for your language:
Node.js
npm install @notiboost/sdk
SDK for Node.js applications.
const { NotiBoost } = require('@notiboost/sdk');
const client = new NotiBoost({
apiKey: 'YOUR_API_KEY'
});
// Send an event
await client.events.ingest({
event_name: 'order_created',
event_id: 'evt_001',
occurred_at: new Date().toISOString(),
user_id: 'u_123',
properties: {
order_id: 'A001',
amount: 350000
}
});
PHP
composer require notiboost/php-sdk
SDK for PHP applications (PHP 7.4+).
<?php
require 'vendor/autoload.php';
use NotiBoost\NotiBoostClient;
$client = new NotiBoostClient([
'api_key' => 'YOUR_API_KEY'
]);
// Send an event
$client->events->ingest([
'event_name' => 'order_created',
'event_id' => 'evt_001',
'occurred_at' => date('c'),
'user_id' => 'u_123',
'properties' => [
'order_id' => 'A001',
'amount' => 350000
]
]);
Python
pip install notiboost
SDK for Python applications (Python 3.7+).
from notiboost import NotiBoostClient
from datetime import datetime
client = NotiBoostClient(
api_key='YOUR_API_KEY'
)
# Send an event
client.events.ingest({
'event_name': 'order_created',
'event_id': 'evt_001',
'occurred_at': datetime.now().isoformat(),
'user_id': 'u_123',
'properties': {
'order_id': 'A001',
'amount': 350000
}
})
Go
go get github.com/notiboost-com/go-sdk
SDK for Go applications.
package main
import (
"time"
"github.com/notiboost-com/go-sdk"
)
func main() {
client := notiboost.NewClient(¬iboost.Config{
APIKey: "YOUR_API_KEY",
})
// Send an event
event := ¬iboost.Event{
EventName: "order_created",
EventID: "evt_001",
OccurredAt: time.Now(),
UserID: "u_123",
Properties: map[string]interface{}{
"order_id": "A001",
"amount": 350000,
},
}
client.Events.Ingest(event)
}
SDK Features
All SDKs support:
- Event ingestion
- User management
- Audience management
- Flow management
- Error handling and retry logic
User Management
Examples for managing users with SDK:
Node.js Example
// Create user
await client.users.create({
user_id: 'u_123',
name: 'Nguyễn Văn A',
email: 'user@example.com',
phone: '+84901234567'
});
// Get user
const user = await client.users.get('u_123');
// Update user
await client.users.update('u_123', {
name: 'Nguyễn Văn B'
});
PHP Example
// Create user
$client->users->create([
'user_id' => 'u_123',
'name' => 'Nguyễn Văn A',
'email' => 'user@example.com',
'phone' => '+84901234567'
]);
// Get user
$user = $client->users->get('u_123');
// Update user
$client->users->update('u_123', [
'name' => 'Nguyễn Văn B'
]);
Audience Management
Examples for managing audiences with SDK:
Node.js Example
// Create audience
await client.audiences.create({
name: 'VIP Customers',
filter: {
'properties.order_count': { gte: 10 }
}
});
// List audiences
const audiences = await client.audiences.list();
// Get audience users
const users = await client.audiences.getUsers('aud_123');
Sending Events
Examples for sending events with SDK:
Node.js Example
// Ingest event
const result = await client.events.ingest({
event_name: 'order_created',
event_id: 'evt_001',
occurred_at: new Date().toISOString(),
user_id: 'u_123',
properties: {
order_id: 'A001',
amount: 350000
}
});
console.log('Trace ID:', result.trace_id);
Error Handling
SDKs automatically handle errors and retries.
Node.js Error Handling
try {
await client.events.ingest(event);
} catch (error) {
if (error.statusCode === 429) {
// Rate limit exceeded
console.log('Rate limit exceeded, retrying...');
} else if (error.statusCode === 401) {
// Invalid API key
console.error('Invalid API key');
}
}
Ruby
gem install notiboost
SDK for Ruby applications (Ruby 2.7+).
require 'notiboost'
client = NotiBoost::Client.new(
api_key: 'YOUR_API_KEY'
)
# Send an event
client.events.ingest(
event_name: 'order_created',
event_id: 'evt_001',
occurred_at: Time.now.iso8601,
user_id: 'u_123',
properties: {
order_id: 'A001',
amount: 350000
}
)
Java
<dependency>
<groupId>com.notiboost</groupId>
<artifactId>notiboost-sdk</artifactId>
<version>1.0.0</version>
</dependency>
SDK for Java applications (Java 8+).
import com.notiboost.NotiBoostClient;
import com.notiboost.models.Event;
NotiBoostClient client = new NotiBoostClient.Builder()
.apiKey("YOUR_API_KEY")
.build();
// Send an event
Event event = Event.builder()
.eventName("order_created")
.eventId("evt_001")
.occurredAt(new Date())
.userId("u_123")
.properties(Map.of(
"order_id", "A001",
"amount", 350000
))
.build();
client.events().ingest(event);
C# / .NET
dotnet add package NotiBoost.Sdk
SDK for C# and .NET applications (.NET 6.0+).
using NotiBoost.Sdk;
var client = new NotiBoostClient(new NotiBoostConfig
{
ApiKey = "YOUR_API_KEY"
});
// Send an event
var @event = new Event
{
EventName = "order_created",
EventId = "evt_001",
OccurredAt = DateTime.UtcNow,
UserId = "u_123",
Properties = new Dictionary<string, object>
{
{ "order_id", "A001" },
{ "amount", 350000 }
}
};
await client.Events.IngestAsync(@event);
JavaScript / TypeScript (Browser)
npm install @notiboost/browser-sdk
SDK for browser-based JavaScript and TypeScript applications.
import { NotiBoost } from '@notiboost/browser-sdk';
const client = new NotiBoost({
apiKey: 'YOUR_API_KEY'
});
// Send an event
await client.events.ingest({
event_name: 'order_created',
event_id: 'evt_001',
occurred_at: new Date().toISOString(),
user_id: 'u_123',
properties: {
order_id: 'A001',
amount: 350000
}
});
React
npm install @notiboost/react-sdk
SDK for React applications with hooks and components.
import { NotiBoostProvider, useNotiBoost } from '@notiboost/react-sdk';
function App() {
return (
<NotiBoostProvider apiKey="YOUR_API_KEY">
<YourComponent />
</NotiBoostProvider>
);
}
function YourComponent() {
const { client } = useNotiBoost();
const handleEvent = async () => {
await client.events.ingest({
event_name: 'order_created',
event_id: 'evt_001',
occurred_at: new Date().toISOString(),
user_id: 'u_123',
properties: {
order_id: 'A001',
amount: 350000
}
});
};
return <button onClick={handleEvent}>Send Event</button>;
}
Best Practices
- Use singleton pattern for client instance
- Cache API key and don't hardcode in code
- Use async/await for non-blocking calls
- Monitor errors and retry logic
