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.replace('id', {
name: 'Email via SendGrid v2',
routing: { method: 'single', channels: ['email'] },
channels: { email: { providers: ['ses', 'sendgrid'] } },
description: 'Updated routing with SES primary',
providers: { ses: { override: {} } },
tags: ['production', 'email', 'v2'],
});
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.replace(
id="id",
name="Email via SendGrid v2",
routing={
"method": "single",
"channels": ["email"],
},
channels={
"email": {
"providers": ["ses", "sendgrid"]
}
},
description="Updated routing with SES primary",
providers={
"ses": {
"override": {}
}
},
tags=["production", "email", "v2"],
)
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.Replace(
context.TODO(),
"id",
courier.RoutingStrategyReplaceParams{
RoutingStrategyReplaceRequest: courier.RoutingStrategyReplaceRequestParam{
Name: "Email via SendGrid v2",
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.RoutingStrategyGetResponse;
import com.courier.models.routingstrategies.RoutingStrategyReplaceParams;
import com.courier.models.routingstrategies.RoutingStrategyReplaceRequest;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
RoutingStrategyReplaceParams params = RoutingStrategyReplaceParams.builder()
.id("id")
.routingStrategyReplaceRequest(RoutingStrategyReplaceRequest.builder()
.name("Email via SendGrid v2")
.routing(MessageRouting.builder()
.addChannel("email")
.method(MessageRouting.Method.SINGLE)
.build())
.build())
.build();
RoutingStrategyGetResponse routingStrategyGetResponse = client.routingStrategies().replace(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
routing_strategy_get_response = courier.routing_strategies.replace(
"id",
name: "Email via SendGrid v2",
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->replace(
'id',
name: 'Email via SendGrid v2',
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' => ['ses', 'sendgrid'],
'routingMethod' => 'all',
'timeouts' => ['channel' => 0, 'provider' => 0],
],
],
description: 'Updated routing with SES primary',
providers: [
'ses' => [
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => [],
'timeouts' => 0,
],
],
tags: ['production', 'email', 'v2'],
);
var_dump($routingStrategyGetResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models;
using TryCourier.Models.RoutingStrategies;
CourierClient client = new();
RoutingStrategyReplaceParams parameters = new()
{
ID = "id",
Name = "Email via SendGrid v2",
Routing = new()
{
Channels =
[
"email"
],
Method = Method.Single,
},
};
var routingStrategyGetResponse = await client.RoutingStrategies.Replace(parameters);
Console.WriteLine(routingStrategyGetResponse);courier routing-strategies replace \
--api-key 'My API Key' \
--id id \
--name 'Email via SendGrid v2' \
--routing '{channels: [email], method: single}'curl --request PUT \
--url https://api.courier.com/routing-strategies/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Email via SendGrid v2",
"description": "Updated routing with SES primary",
"tags": [
"production",
"email",
"v2"
],
"routing": {
"method": "single",
"channels": [
"email"
]
},
"channels": {
"email": {
"providers": [
"ses",
"sendgrid"
]
}
},
"providers": {
"ses": {
"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"
}{
"type": "invalid_request_error",
"message": "Routing strategy rs_01kx4kepxgfq9ty3rersxgwk8x not found"
}Replace Routing Strategy
Replace a routing strategy. Full document replacement; the caller must send the complete desired state. Missing optional fields are cleared.
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.replace('id', {
name: 'Email via SendGrid v2',
routing: { method: 'single', channels: ['email'] },
channels: { email: { providers: ['ses', 'sendgrid'] } },
description: 'Updated routing with SES primary',
providers: { ses: { override: {} } },
tags: ['production', 'email', 'v2'],
});
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.replace(
id="id",
name="Email via SendGrid v2",
routing={
"method": "single",
"channels": ["email"],
},
channels={
"email": {
"providers": ["ses", "sendgrid"]
}
},
description="Updated routing with SES primary",
providers={
"ses": {
"override": {}
}
},
tags=["production", "email", "v2"],
)
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.Replace(
context.TODO(),
"id",
courier.RoutingStrategyReplaceParams{
RoutingStrategyReplaceRequest: courier.RoutingStrategyReplaceRequestParam{
Name: "Email via SendGrid v2",
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.RoutingStrategyGetResponse;
import com.courier.models.routingstrategies.RoutingStrategyReplaceParams;
import com.courier.models.routingstrategies.RoutingStrategyReplaceRequest;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
RoutingStrategyReplaceParams params = RoutingStrategyReplaceParams.builder()
.id("id")
.routingStrategyReplaceRequest(RoutingStrategyReplaceRequest.builder()
.name("Email via SendGrid v2")
.routing(MessageRouting.builder()
.addChannel("email")
.method(MessageRouting.Method.SINGLE)
.build())
.build())
.build();
RoutingStrategyGetResponse routingStrategyGetResponse = client.routingStrategies().replace(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
routing_strategy_get_response = courier.routing_strategies.replace(
"id",
name: "Email via SendGrid v2",
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->replace(
'id',
name: 'Email via SendGrid v2',
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' => ['ses', 'sendgrid'],
'routingMethod' => 'all',
'timeouts' => ['channel' => 0, 'provider' => 0],
],
],
description: 'Updated routing with SES primary',
providers: [
'ses' => [
'if' => 'if',
'metadata' => [
'utm' => [
'campaign' => 'campaign',
'content' => 'content',
'medium' => 'medium',
'source' => 'source',
'term' => 'term',
],
],
'override' => [],
'timeouts' => 0,
],
],
tags: ['production', 'email', 'v2'],
);
var_dump($routingStrategyGetResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models;
using TryCourier.Models.RoutingStrategies;
CourierClient client = new();
RoutingStrategyReplaceParams parameters = new()
{
ID = "id",
Name = "Email via SendGrid v2",
Routing = new()
{
Channels =
[
"email"
],
Method = Method.Single,
},
};
var routingStrategyGetResponse = await client.RoutingStrategies.Replace(parameters);
Console.WriteLine(routingStrategyGetResponse);courier routing-strategies replace \
--api-key 'My API Key' \
--id id \
--name 'Email via SendGrid v2' \
--routing '{channels: [email], method: single}'curl --request PUT \
--url https://api.courier.com/routing-strategies/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Email via SendGrid v2",
"description": "Updated routing with SES primary",
"tags": [
"production",
"email",
"v2"
],
"routing": {
"method": "single",
"channels": [
"email"
]
},
"channels": {
"email": {
"providers": [
"ses",
"sendgrid"
]
}
},
"providers": {
"ses": {
"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"
}{
"type": "invalid_request_error",
"message": "Routing strategy rs_01kx4kepxgfq9ty3rersxgwk8x not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Routing strategy ID (rs_ prefix).
Body
Request body for replacing a routing strategy. Full document replacement; missing optional fields are cleared.
Human-readable name for the routing strategy.
Routing tree defining channel selection method and order.
Show child attributes
Show child attributes
Optional description. Omit or null to clear.
Optional tags. Omit or null to clear.
Per-channel delivery configuration. Omit to clear.
Show child attributes
Show child attributes
Per-provider delivery configuration. Omit to clear.
Show child attributes
Show child attributes
Response
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.