Replace the routing of one or more streams
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://reputecast.example.com/api/v1/workspaces/acme-newsletter/routing"
payload := strings.NewReader("{ \"acknowledgeBulkTerms\": true, \"streams\": [ { \"conditions\": [ { \"field\": \"mailbox_provider\", \"note\": \"example\", \"providerId\": \"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0\", \"values\": [ \"example\" ] } ], \"failover\": \"automatic\", \"fallback\": \"example\", \"priority\": true, \"splits\": [ { \"providerId\": \"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0\", \"weight\": 1 } ], \"stream\": \"broadcast\" } ] }")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://reputecast.example.com/api/v1/workspaces/acme-newsletter/routing';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"acknowledgeBulkTerms":true,"streams":[{"conditions":[{"field":"mailbox_provider","note":"example","providerId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","values":["example"]}],"failover":"automatic","fallback":"example","priority":true,"splits":[{"providerId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","weight":1}],"stream":"broadcast"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://reputecast.example.com/api/v1/workspaces/acme-newsletter/routing \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "acknowledgeBulkTerms": true, "streams": [ { "conditions": [ { "field": "mailbox_provider", "note": "example", "providerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "values": [ "example" ] } ], "failover": "automatic", "fallback": "example", "priority": true, "splits": [ { "providerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "weight": 1 } ], "stream": "broadcast" } ] }'Permission: providers:manage (sensitive)
Validates splits, fallbacks and conditions against the connected providers. A Broadcast route that a provider’s terms don’t allow is refused with code bulk_terms unless acknowledgeBulkTerms is set; the decision is audited.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Workspace slug
Workspace slug
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
object
Category: a transactional category (Transactional stream only)
Provider id, or empty for none
object
Responses
Section titled “Responses”OK
object
object
object
object
object
object
object
object
object
object
Category: a transactional category (Transactional stream only)
object
object
object
Example
{ "providers": [ { "bulk": "allowed", "color": "ses", "terms": [ { "bulk": "allowed" } ] } ], "streams": [ { "conditions": [ { "field": "mailbox_provider" } ], "failover": "automatic", "stream": "broadcast", "volume": { "per": "day" } } ]}default
Section titled “default”Error
object
Stable error code, e.g. permission_denied
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
Members who hold the missing permission
A URI reference that identifies the specific occurrence of the problem.
object
The missing permission key
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}