import Courier from '@trycourier/courier';
const client = new Courier({
apiKey: process.env['COURIER_API_KEY'], // This is the default and can be omitted
});
const routingStrategyGetResponse = await client.routingStrategies.create({
name: 'Email via SendGrid',
routing: { method: 'single', channels: ['email'] },
channels: { email: { providers: ['sendgrid', 'ses'] } },
description: 'Routes email through sendgrid with SES failover',
providers: { sendgrid: { override: {} } },
tags: ['production', 'email'],
});
console.log(routingStrategyGetResponse.id);import os
from courier import Courier
client = Courier(
api_key=os.environ.get("COURIER_API_KEY"), # This is the default and can be omitted
)
routing_strategy_get_response = client.routing_strategies.create(
name="Email via SendGrid",
routing={
"method": "single",
"channels": ["email"],
},
channels={
"email": {
"providers": ["sendgrid", "ses"]
}
},
description="Routes email through sendgrid with SES failover",
providers={
"sendgrid": {
"override": {}
}
},
tags=["production", "email"],
)
print(routing_strategy_get_response.id)package main
import (
"context"
"fmt"
"github.com/trycourier/courier-go"
"github.com/trycourier/courier-go/option"
"github.com/trycourier/courier-go/shared"
)
func main() {
client := courier.NewClient(
option.WithAPIKey("My API Key"),
)
routingStrategyGetResponse, err := client.RoutingStrategies.New(context.TODO(), courier.RoutingStrategyNewParams{
RoutingStrategyCreateRequest: courier.RoutingStrategyCreateRequestParam{
Name: "Email via SendGrid",
Routing: shared.MessageRoutingParam{
Channels: []shared.MessageRoutingChannelUnionParam{{
OfString: courier.String("email"),
}},
Method: shared.MessageRoutingMethodSingle,
},
},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", routingStrategyGetResponse.ID)
}package com.courier.example;
import com.courier.client.CourierClient;
import com.courier.client.okhttp.CourierOkHttpClient;
import com.courier.models.MessageRouting;
import com.courier.models.routingstrategies.RoutingStrategyCreateRequest;
import com.courier.models.routingstrategies.RoutingStrategyGetResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
RoutingStrategyCreateRequest params = RoutingStrategyCreateRequest.builder()
.name("Email via SendGrid")
.routing(MessageRouting.builder()
.addChannel("email")
.method(MessageRouting.Method.SINGLE)
.build())
.build();
RoutingStrategyGetResponse routingStrategyGetResponse = client.routingStrategies().create(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
routing_strategy_get_response = courier.routing_strategies.create(
name: "Email via SendGrid",
routing: {channels: ["email"], method: :single}
)
puts(routing_strategy_get_response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Courier\Client;
use Courier\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('COURIER_API_KEY') ?: 'My API Key');
try {
$routingStrategyGetResponse = $client->routingStrategies->create(
name: 'Email via SendGrid',
routing: ['channels' => ['email'], 'method' => 'single'],
channels: [
'email' => [
'brandID' => 'brand_id',
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => ['foo' => 'bar'],
'providers' => ['sendgrid', 'ses'],
'routingMethod' => 'all',
'timeouts' => ['channel' => 0, 'provider' => 0],
],
],
description: 'Routes email through sendgrid with SES failover',
providers: [
'sendgrid' => [
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => [],
'timeouts' => 0,
],
],
tags: ['production', 'email'],
);
var_dump($routingStrategyGetResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models;
using TryCourier.Models.RoutingStrategies;
CourierClient client = new();
RoutingStrategyCreateParams parameters = new()
{
Name = "Email via SendGrid",
Routing = new()
{
Channels =
[
"email"
],
Method = Method.Single,
},
};
var routingStrategyGetResponse = await client.RoutingStrategies.Create(parameters);
Console.WriteLine(routingStrategyGetResponse);courier routing-strategies create \
--api-key 'My API Key' \
--name 'Email via SendGrid' \
--routing '{channels: [email], method: single}'curl --request POST \
--url https://api.courier.com/routing-strategies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Email via SendGrid",
"description": "Routes email through sendgrid with SES failover",
"tags": [
"production",
"email"
],
"routing": {
"method": "single",
"channels": [
"email"
]
},
"channels": {
"email": {
"providers": [
"sendgrid",
"ses"
]
}
},
"providers": {
"sendgrid": {
"override": {}
}
}
}
'{
"id": "rs_01kx4h2jdafq8bk9amzvy6hbv0",
"name": "Example Name",
"description": "An example description.",
"tags": [
"string"
],
"routing": {
"method": "all",
"channels": [
"string"
]
},
"channels": {
"channels_key": {
"brand_id": "bnd_01kx4mrd0pfzw8wt7pn7p2fzag",
"providers": [
"string"
],
"routing_method": "all",
"if": "string",
"timeouts": {
"provider": 1,
"channel": 1
},
"override": {},
"metadata": {
"utm": {
"source": "string",
"medium": "string",
"campaign": "string",
"term": "string",
"content": "string"
}
}
}
},
"providers": {
"providers_key": {
"override": {},
"if": "string",
"timeouts": 1,
"metadata": {
"utm": {
"source": "string",
"medium": "string",
"campaign": "string",
"term": "string",
"content": "string"
}
}
}
},
"created": 1,
"creator": "user_123",
"updated": 1,
"updater": "user_123"
}{
"type": "invalid_request_error",
"message": "name: Required; routing: Required"
}Create Routing Strategy
Create a routing strategy. Requires a name and routing configuration at minimum. Channels and providers default to empty if omitted.
import Courier from '@trycourier/courier';
const client = new Courier({
apiKey: process.env['COURIER_API_KEY'], // This is the default and can be omitted
});
const routingStrategyGetResponse = await client.routingStrategies.create({
name: 'Email via SendGrid',
routing: { method: 'single', channels: ['email'] },
channels: { email: { providers: ['sendgrid', 'ses'] } },
description: 'Routes email through sendgrid with SES failover',
providers: { sendgrid: { override: {} } },
tags: ['production', 'email'],
});
console.log(routingStrategyGetResponse.id);import os
from courier import Courier
client = Courier(
api_key=os.environ.get("COURIER_API_KEY"), # This is the default and can be omitted
)
routing_strategy_get_response = client.routing_strategies.create(
name="Email via SendGrid",
routing={
"method": "single",
"channels": ["email"],
},
channels={
"email": {
"providers": ["sendgrid", "ses"]
}
},
description="Routes email through sendgrid with SES failover",
providers={
"sendgrid": {
"override": {}
}
},
tags=["production", "email"],
)
print(routing_strategy_get_response.id)package main
import (
"context"
"fmt"
"github.com/trycourier/courier-go"
"github.com/trycourier/courier-go/option"
"github.com/trycourier/courier-go/shared"
)
func main() {
client := courier.NewClient(
option.WithAPIKey("My API Key"),
)
routingStrategyGetResponse, err := client.RoutingStrategies.New(context.TODO(), courier.RoutingStrategyNewParams{
RoutingStrategyCreateRequest: courier.RoutingStrategyCreateRequestParam{
Name: "Email via SendGrid",
Routing: shared.MessageRoutingParam{
Channels: []shared.MessageRoutingChannelUnionParam{{
OfString: courier.String("email"),
}},
Method: shared.MessageRoutingMethodSingle,
},
},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", routingStrategyGetResponse.ID)
}package com.courier.example;
import com.courier.client.CourierClient;
import com.courier.client.okhttp.CourierOkHttpClient;
import com.courier.models.MessageRouting;
import com.courier.models.routingstrategies.RoutingStrategyCreateRequest;
import com.courier.models.routingstrategies.RoutingStrategyGetResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
RoutingStrategyCreateRequest params = RoutingStrategyCreateRequest.builder()
.name("Email via SendGrid")
.routing(MessageRouting.builder()
.addChannel("email")
.method(MessageRouting.Method.SINGLE)
.build())
.build();
RoutingStrategyGetResponse routingStrategyGetResponse = client.routingStrategies().create(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
routing_strategy_get_response = courier.routing_strategies.create(
name: "Email via SendGrid",
routing: {channels: ["email"], method: :single}
)
puts(routing_strategy_get_response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Courier\Client;
use Courier\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('COURIER_API_KEY') ?: 'My API Key');
try {
$routingStrategyGetResponse = $client->routingStrategies->create(
name: 'Email via SendGrid',
routing: ['channels' => ['email'], 'method' => 'single'],
channels: [
'email' => [
'brandID' => 'brand_id',
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => ['foo' => 'bar'],
'providers' => ['sendgrid', 'ses'],
'routingMethod' => 'all',
'timeouts' => ['channel' => 0, 'provider' => 0],
],
],
description: 'Routes email through sendgrid with SES failover',
providers: [
'sendgrid' => [
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => [],
'timeouts' => 0,
],
],
tags: ['production', 'email'],
);
var_dump($routingStrategyGetResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models;
using TryCourier.Models.RoutingStrategies;
CourierClient client = new();
RoutingStrategyCreateParams parameters = new()
{
Name = "Email via SendGrid",
Routing = new()
{
Channels =
[
"email"
],
Method = Method.Single,
},
};
var routingStrategyGetResponse = await client.RoutingStrategies.Create(parameters);
Console.WriteLine(routingStrategyGetResponse);courier routing-strategies create \
--api-key 'My API Key' \
--name 'Email via SendGrid' \
--routing '{channels: [email], method: single}'curl --request POST \
--url https://api.courier.com/routing-strategies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Email via SendGrid",
"description": "Routes email through sendgrid with SES failover",
"tags": [
"production",
"email"
],
"routing": {
"method": "single",
"channels": [
"email"
]
},
"channels": {
"email": {
"providers": [
"sendgrid",
"ses"
]
}
},
"providers": {
"sendgrid": {
"override": {}
}
}
}
'{
"id": "rs_01kx4h2jdafq8bk9amzvy6hbv0",
"name": "Example Name",
"description": "An example description.",
"tags": [
"string"
],
"routing": {
"method": "all",
"channels": [
"string"
]
},
"channels": {
"channels_key": {
"brand_id": "bnd_01kx4mrd0pfzw8wt7pn7p2fzag",
"providers": [
"string"
],
"routing_method": "all",
"if": "string",
"timeouts": {
"provider": 1,
"channel": 1
},
"override": {},
"metadata": {
"utm": {
"source": "string",
"medium": "string",
"campaign": "string",
"term": "string",
"content": "string"
}
}
}
},
"providers": {
"providers_key": {
"override": {},
"if": "string",
"timeouts": 1,
"metadata": {
"utm": {
"source": "string",
"medium": "string",
"campaign": "string",
"term": "string",
"content": "string"
}
}
}
},
"created": 1,
"creator": "user_123",
"updated": 1,
"updater": "user_123"
}{
"type": "invalid_request_error",
"message": "name: Required; routing: Required"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request body for creating a routing strategy.
Human-readable name for the routing strategy.
Routing tree defining channel selection method and order.
Show child attributes
Show child attributes
Optional description of the routing strategy.
Optional tags for categorization.
Per-channel delivery configuration. Defaults to empty if omitted.
Show child attributes
Show child attributes
Per-provider delivery configuration. Defaults to empty if omitted.
Show child attributes
Show child attributes
Response
Created
Full routing strategy entity returned by GET.
The routing strategy ID (rs_ prefix).
Human-readable name.
Routing tree defining channel selection method and order.
Show child attributes
Show child attributes
Per-channel delivery configuration. May be empty.
Show child attributes
Show child attributes
Per-provider delivery configuration. May be empty.
Show child attributes
Show child attributes
Epoch milliseconds when the strategy was created.
User ID of the creator.
Description of the routing strategy.
Tags for categorization.
Epoch milliseconds of last update.
User ID of the last updater.