Java SDK
The norq Java package provides a client for sending and linting notification templates from Java applications.
Install
Maven
<dependency>
<groupId>com.suprsend</groupId>
<artifactId>norq</artifactId>
<version>0.1.0-alpha.1</version>
</dependency>Gradle
implementation 'com.suprsend:norq:0.1.0-alpha.1'Requires the norq binary to be installed and available in $PATH.
Quick start
import com.suprsend.Norq;
import com.suprsend.Types.*;
import java.util.Map;
public class Example {
public static void main(String[] args) {
Norq notif = new Norq();
// Send
SendMultiResult result = notif.send("transactional/order-shipped", new SendOpts()
.to(new Recipient().email("gaurav@example.com"))
.data(Map.of("user", Map.of("first_name", "Gaurav"))));
for (SendResult r : result.getResults()) {
System.out.printf("%s: success=%b%n", r.getChannel(), r.isSuccess());
}
}
}Builder pattern
Norq notif = Norq.builder()
.binaryPath("/usr/local/bin/norq")
.cwd("/path/to/project")
.recipientResolver(myResolver)
.build();API
send(notification, opts)
SendMultiResult result = notif.send("transactional/welcome", new SendOpts()
.to(new Recipient().email("user@example.com"))
.data(Map.of("user", Map.of("first_name", "Gaurav")))
.channels(List.of("email"))
.dryRun(false));lint(notification)
List<LintResult> results = notif.lint(null); // all
List<LintResult> results = notif.lint("transactional/welcome"); // one
for (LintResult result : results) {
for (LintDiagnostic diag : result.getDiagnostics()) {
System.out.printf("%s: %s [%s]%n",
diag.getSeverity(), diag.getMessage(), diag.getRule());
}
}RecipientResolver
public class MyResolver implements RecipientResolver {
private final UserRepository repo;
public MyResolver(UserRepository repo) {
this.repo = repo;
}
@Override
public Recipient resolve(String userId) {
User user = repo.findById(userId);
return new Recipient()
.email(user.getEmail())
.phone(user.getPhone());
}
}
Norq notif = Norq.builder()
.recipientResolver(new MyResolver(userRepo))
.build();Error handling
import com.suprsend.NorqException;
try {
notif.send("transactional/welcome", opts);
} catch (NorqException e) {
System.err.println("Norq error: " + e.getMessage());
}Codegen
norq codegen --lang java --out src/main/java/com/example/NorqTypes.javaGenerates typed Java classes for each notification's data shape.