curl --request PUT \
--url https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"maxSendsPerUser": 2,
"maxSendsPerUserWindowDays": 30,
"eligibleScheduleVariants": [
{
"day": "monday",
"time": "morning"
}
],
"eligibilityFilter": {
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "country"
},
"propertyType": "string",
"operator": "=",
"value": [
"US",
"CA"
]
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "lifetime_value"
},
"propertyType": "number",
"operator": "between",
"value": {
"min": 50,
"max": 500
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "is_subscribed"
},
"propertyType": "boolean",
"operator": "=",
"value": true
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "signed_up_at"
},
"propertyType": "timestamp",
"operator": "within",
"timeType": "relative",
"value": {
"interval": "day",
"quantity": 90,
"direction": "backward"
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "phone"
},
"propertyType": "string",
"operator": "exists",
"value": null
},
{
"type": "property",
"property": {
"type": "related",
"path": [
"10"
],
"column": {
"type": "raw",
"modelId": "200",
"name": "plan"
}
},
"propertyType": "string",
"operator": "<>",
"value": [
"free"
]
},
{
"type": "property",
"property": {
"type": "transformed",
"column": {
"type": "trait",
"traitDefinitionId": "2d88e50f-76b2-4023-97cf-e56b72d9861e",
"conditions": []
}
},
"propertyType": "boolean",
"operator": "=",
"value": true
},
{
"type": "number_of",
"relationshipId": "20",
"operator": ">=",
"value": 1,
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "300",
"name": "amount"
},
"propertyType": "number",
"operator": ">",
"value": 25
}
]
}
]
},
{
"type": "event",
"eventModelId": "400",
"relationshipId": "30",
"operator": "=",
"value": 0,
"window": {
"operator": "within",
"timeType": "relative",
"value": {
"interval": "week",
"quantity": 2,
"direction": "backward"
}
},
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "400",
"name": "event_name"
},
"propertyType": "string",
"operator": "=",
"value": [
"email_open"
]
}
]
}
]
},
{
"type": "or",
"conditions": [
{
"type": "segment_set",
"modelId": "500",
"includes": true
},
{
"type": "segment_set",
"modelId": "600",
"includes": false
}
]
}
]
}
}
'import requests
url = "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings"
payload = {
"maxSendsPerUser": 2,
"maxSendsPerUserWindowDays": 30,
"eligibleScheduleVariants": [
{
"day": "monday",
"time": "morning"
}
],
"eligibilityFilter": {
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "country"
},
"propertyType": "string",
"operator": "=",
"value": ["US", "CA"]
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "lifetime_value"
},
"propertyType": "number",
"operator": "between",
"value": {
"min": 50,
"max": 500
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "is_subscribed"
},
"propertyType": "boolean",
"operator": "=",
"value": True
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "signed_up_at"
},
"propertyType": "timestamp",
"operator": "within",
"timeType": "relative",
"value": {
"interval": "day",
"quantity": 90,
"direction": "backward"
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "phone"
},
"propertyType": "string",
"operator": "exists",
"value": None
},
{
"type": "property",
"property": {
"type": "related",
"path": ["10"],
"column": {
"type": "raw",
"modelId": "200",
"name": "plan"
}
},
"propertyType": "string",
"operator": "<>",
"value": ["free"]
},
{
"type": "property",
"property": {
"type": "transformed",
"column": {
"type": "trait",
"traitDefinitionId": "2d88e50f-76b2-4023-97cf-e56b72d9861e",
"conditions": []
}
},
"propertyType": "boolean",
"operator": "=",
"value": True
},
{
"type": "number_of",
"relationshipId": "20",
"operator": ">=",
"value": 1,
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "300",
"name": "amount"
},
"propertyType": "number",
"operator": ">",
"value": 25
}
]
}
]
},
{
"type": "event",
"eventModelId": "400",
"relationshipId": "30",
"operator": "=",
"value": 0,
"window": {
"operator": "within",
"timeType": "relative",
"value": {
"interval": "week",
"quantity": 2,
"direction": "backward"
}
},
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "400",
"name": "event_name"
},
"propertyType": "string",
"operator": "=",
"value": ["email_open"]
}
]
}
]
},
{
"type": "or",
"conditions": [
{
"type": "segment_set",
"modelId": "500",
"includes": True
},
{
"type": "segment_set",
"modelId": "600",
"includes": False
}
]
}
]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
maxSendsPerUser: 2,
maxSendsPerUserWindowDays: 30,
eligibleScheduleVariants: [{day: 'monday', time: 'morning'}],
eligibilityFilter: {
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'country'},
propertyType: 'string',
operator: '=',
value: ['US', 'CA']
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'lifetime_value'},
propertyType: 'number',
operator: 'between',
value: {min: 50, max: 500}
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'is_subscribed'},
propertyType: 'boolean',
operator: '=',
value: true
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'signed_up_at'},
propertyType: 'timestamp',
operator: 'within',
timeType: 'relative',
value: {interval: 'day', quantity: 90, direction: 'backward'}
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'phone'},
propertyType: 'string',
operator: 'exists',
value: null
},
{
type: 'property',
property: {
type: 'related',
path: ['10'],
column: {type: 'raw', modelId: '200', name: 'plan'}
},
propertyType: 'string',
operator: '<>',
value: ['free']
},
{
type: 'property',
property: {
type: 'transformed',
column: {
type: 'trait',
traitDefinitionId: '2d88e50f-76b2-4023-97cf-e56b72d9861e',
conditions: []
}
},
propertyType: 'boolean',
operator: '=',
value: true
},
{
type: 'number_of',
relationshipId: '20',
operator: '>=',
value: 1,
subconditions: [
{
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '300', name: 'amount'},
propertyType: 'number',
operator: '>',
value: 25
}
]
}
]
},
{
type: 'event',
eventModelId: '400',
relationshipId: '30',
operator: '=',
value: 0,
window: {
operator: 'within',
timeType: 'relative',
value: {interval: 'week', quantity: 2, direction: 'backward'}
},
subconditions: [
{
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '400', name: 'event_name'},
propertyType: 'string',
operator: '=',
value: ['email_open']
}
]
}
]
},
{
type: 'or',
conditions: [
{type: 'segment_set', modelId: '500', includes: true},
{type: 'segment_set', modelId: '600', includes: false}
]
}
]
}
})
};
fetch('https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'maxSendsPerUser' => 2,
'maxSendsPerUserWindowDays' => 30,
'eligibleScheduleVariants' => [
[
'day' => 'monday',
'time' => 'morning'
]
],
'eligibilityFilter' => [
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'country'
],
'propertyType' => 'string',
'operator' => '=',
'value' => [
'US',
'CA'
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'lifetime_value'
],
'propertyType' => 'number',
'operator' => 'between',
'value' => [
'min' => 50,
'max' => 500
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'is_subscribed'
],
'propertyType' => 'boolean',
'operator' => '=',
'value' => true
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'signed_up_at'
],
'propertyType' => 'timestamp',
'operator' => 'within',
'timeType' => 'relative',
'value' => [
'interval' => 'day',
'quantity' => 90,
'direction' => 'backward'
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'phone'
],
'propertyType' => 'string',
'operator' => 'exists',
'value' => null
],
[
'type' => 'property',
'property' => [
'type' => 'related',
'path' => [
'10'
],
'column' => [
'type' => 'raw',
'modelId' => '200',
'name' => 'plan'
]
],
'propertyType' => 'string',
'operator' => '<>',
'value' => [
'free'
]
],
[
'type' => 'property',
'property' => [
'type' => 'transformed',
'column' => [
'type' => 'trait',
'traitDefinitionId' => '2d88e50f-76b2-4023-97cf-e56b72d9861e',
'conditions' => [
]
]
],
'propertyType' => 'boolean',
'operator' => '=',
'value' => true
],
[
'type' => 'number_of',
'relationshipId' => '20',
'operator' => '>=',
'value' => 1,
'subconditions' => [
[
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '300',
'name' => 'amount'
],
'propertyType' => 'number',
'operator' => '>',
'value' => 25
]
]
]
]
],
[
'type' => 'event',
'eventModelId' => '400',
'relationshipId' => '30',
'operator' => '=',
'value' => 0,
'window' => [
'operator' => 'within',
'timeType' => 'relative',
'value' => [
'interval' => 'week',
'quantity' => 2,
'direction' => 'backward'
]
],
'subconditions' => [
[
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '400',
'name' => 'event_name'
],
'propertyType' => 'string',
'operator' => '=',
'value' => [
'email_open'
]
]
]
]
]
],
[
'type' => 'or',
'conditions' => [
[
'type' => 'segment_set',
'modelId' => '500',
'includes' => true
],
[
'type' => 'segment_set',
'modelId' => '600',
'includes' => false
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings"
payload := strings.NewReader("{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}")
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(string(body))
}HttpResponse<String> response = Unirest.put("https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"channelId": "<string>",
"config": {},
"tags": {},
"guardrails": {
"maxSendsPerUser": 123,
"maxSendsPerUserWindowDays": 123,
"minOtherMessagesInBetween": 123,
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>"
},
"settings": {
"maxSendsPerUser": 123,
"maxSendsPerUserWindowDays": 123,
"minOtherMessagesInBetween": 123,
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>",
"eligibilityFilter": "<unknown>",
"eligibleScheduleVariants": [
{
"day": "sunday",
"time": "midnight"
}
],
"attributionCampaignIds": [
"<string>"
]
},
"state": {
"enabled": true,
"status": "draft",
"disabledAt": "2023-11-07T05:31:56Z",
"audienceSize": 123,
"audienceSizeComputedAt": "2023-11-07T05:31:56Z"
},
"content": "<string>",
"variables": [
{
"name": "<string>",
"variants": [
{
"value": "<string>",
"tags": {},
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>",
"userAudienceFilter": "<unknown>",
"localeValues": {}
}
],
"config": {
"localizationEnabled": true,
"maxSendsPerUserWindowDays": 123,
"maxSendsPerUser": 123
}
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Save Decision Engine Message Settings
Replace the settings of a message in a flow: its eligibility filter, send limits, eligible schedule slots, and attribution campaign IDs. Settings left out of the body are cleared.
curl --request PUT \
--url https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"maxSendsPerUser": 2,
"maxSendsPerUserWindowDays": 30,
"eligibleScheduleVariants": [
{
"day": "monday",
"time": "morning"
}
],
"eligibilityFilter": {
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "country"
},
"propertyType": "string",
"operator": "=",
"value": [
"US",
"CA"
]
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "lifetime_value"
},
"propertyType": "number",
"operator": "between",
"value": {
"min": 50,
"max": 500
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "is_subscribed"
},
"propertyType": "boolean",
"operator": "=",
"value": true
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "signed_up_at"
},
"propertyType": "timestamp",
"operator": "within",
"timeType": "relative",
"value": {
"interval": "day",
"quantity": 90,
"direction": "backward"
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "phone"
},
"propertyType": "string",
"operator": "exists",
"value": null
},
{
"type": "property",
"property": {
"type": "related",
"path": [
"10"
],
"column": {
"type": "raw",
"modelId": "200",
"name": "plan"
}
},
"propertyType": "string",
"operator": "<>",
"value": [
"free"
]
},
{
"type": "property",
"property": {
"type": "transformed",
"column": {
"type": "trait",
"traitDefinitionId": "2d88e50f-76b2-4023-97cf-e56b72d9861e",
"conditions": []
}
},
"propertyType": "boolean",
"operator": "=",
"value": true
},
{
"type": "number_of",
"relationshipId": "20",
"operator": ">=",
"value": 1,
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "300",
"name": "amount"
},
"propertyType": "number",
"operator": ">",
"value": 25
}
]
}
]
},
{
"type": "event",
"eventModelId": "400",
"relationshipId": "30",
"operator": "=",
"value": 0,
"window": {
"operator": "within",
"timeType": "relative",
"value": {
"interval": "week",
"quantity": 2,
"direction": "backward"
}
},
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "400",
"name": "event_name"
},
"propertyType": "string",
"operator": "=",
"value": [
"email_open"
]
}
]
}
]
},
{
"type": "or",
"conditions": [
{
"type": "segment_set",
"modelId": "500",
"includes": true
},
{
"type": "segment_set",
"modelId": "600",
"includes": false
}
]
}
]
}
}
'import requests
url = "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings"
payload = {
"maxSendsPerUser": 2,
"maxSendsPerUserWindowDays": 30,
"eligibleScheduleVariants": [
{
"day": "monday",
"time": "morning"
}
],
"eligibilityFilter": {
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "country"
},
"propertyType": "string",
"operator": "=",
"value": ["US", "CA"]
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "lifetime_value"
},
"propertyType": "number",
"operator": "between",
"value": {
"min": 50,
"max": 500
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "is_subscribed"
},
"propertyType": "boolean",
"operator": "=",
"value": True
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "signed_up_at"
},
"propertyType": "timestamp",
"operator": "within",
"timeType": "relative",
"value": {
"interval": "day",
"quantity": 90,
"direction": "backward"
}
},
{
"type": "property",
"property": {
"type": "raw",
"modelId": "100",
"name": "phone"
},
"propertyType": "string",
"operator": "exists",
"value": None
},
{
"type": "property",
"property": {
"type": "related",
"path": ["10"],
"column": {
"type": "raw",
"modelId": "200",
"name": "plan"
}
},
"propertyType": "string",
"operator": "<>",
"value": ["free"]
},
{
"type": "property",
"property": {
"type": "transformed",
"column": {
"type": "trait",
"traitDefinitionId": "2d88e50f-76b2-4023-97cf-e56b72d9861e",
"conditions": []
}
},
"propertyType": "boolean",
"operator": "=",
"value": True
},
{
"type": "number_of",
"relationshipId": "20",
"operator": ">=",
"value": 1,
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "300",
"name": "amount"
},
"propertyType": "number",
"operator": ">",
"value": 25
}
]
}
]
},
{
"type": "event",
"eventModelId": "400",
"relationshipId": "30",
"operator": "=",
"value": 0,
"window": {
"operator": "within",
"timeType": "relative",
"value": {
"interval": "week",
"quantity": 2,
"direction": "backward"
}
},
"subconditions": [
{
"type": "and",
"conditions": [
{
"type": "property",
"property": {
"type": "raw",
"modelId": "400",
"name": "event_name"
},
"propertyType": "string",
"operator": "=",
"value": ["email_open"]
}
]
}
]
},
{
"type": "or",
"conditions": [
{
"type": "segment_set",
"modelId": "500",
"includes": True
},
{
"type": "segment_set",
"modelId": "600",
"includes": False
}
]
}
]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
maxSendsPerUser: 2,
maxSendsPerUserWindowDays: 30,
eligibleScheduleVariants: [{day: 'monday', time: 'morning'}],
eligibilityFilter: {
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'country'},
propertyType: 'string',
operator: '=',
value: ['US', 'CA']
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'lifetime_value'},
propertyType: 'number',
operator: 'between',
value: {min: 50, max: 500}
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'is_subscribed'},
propertyType: 'boolean',
operator: '=',
value: true
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'signed_up_at'},
propertyType: 'timestamp',
operator: 'within',
timeType: 'relative',
value: {interval: 'day', quantity: 90, direction: 'backward'}
},
{
type: 'property',
property: {type: 'raw', modelId: '100', name: 'phone'},
propertyType: 'string',
operator: 'exists',
value: null
},
{
type: 'property',
property: {
type: 'related',
path: ['10'],
column: {type: 'raw', modelId: '200', name: 'plan'}
},
propertyType: 'string',
operator: '<>',
value: ['free']
},
{
type: 'property',
property: {
type: 'transformed',
column: {
type: 'trait',
traitDefinitionId: '2d88e50f-76b2-4023-97cf-e56b72d9861e',
conditions: []
}
},
propertyType: 'boolean',
operator: '=',
value: true
},
{
type: 'number_of',
relationshipId: '20',
operator: '>=',
value: 1,
subconditions: [
{
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '300', name: 'amount'},
propertyType: 'number',
operator: '>',
value: 25
}
]
}
]
},
{
type: 'event',
eventModelId: '400',
relationshipId: '30',
operator: '=',
value: 0,
window: {
operator: 'within',
timeType: 'relative',
value: {interval: 'week', quantity: 2, direction: 'backward'}
},
subconditions: [
{
type: 'and',
conditions: [
{
type: 'property',
property: {type: 'raw', modelId: '400', name: 'event_name'},
propertyType: 'string',
operator: '=',
value: ['email_open']
}
]
}
]
},
{
type: 'or',
conditions: [
{type: 'segment_set', modelId: '500', includes: true},
{type: 'segment_set', modelId: '600', includes: false}
]
}
]
}
})
};
fetch('https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'maxSendsPerUser' => 2,
'maxSendsPerUserWindowDays' => 30,
'eligibleScheduleVariants' => [
[
'day' => 'monday',
'time' => 'morning'
]
],
'eligibilityFilter' => [
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'country'
],
'propertyType' => 'string',
'operator' => '=',
'value' => [
'US',
'CA'
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'lifetime_value'
],
'propertyType' => 'number',
'operator' => 'between',
'value' => [
'min' => 50,
'max' => 500
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'is_subscribed'
],
'propertyType' => 'boolean',
'operator' => '=',
'value' => true
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'signed_up_at'
],
'propertyType' => 'timestamp',
'operator' => 'within',
'timeType' => 'relative',
'value' => [
'interval' => 'day',
'quantity' => 90,
'direction' => 'backward'
]
],
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '100',
'name' => 'phone'
],
'propertyType' => 'string',
'operator' => 'exists',
'value' => null
],
[
'type' => 'property',
'property' => [
'type' => 'related',
'path' => [
'10'
],
'column' => [
'type' => 'raw',
'modelId' => '200',
'name' => 'plan'
]
],
'propertyType' => 'string',
'operator' => '<>',
'value' => [
'free'
]
],
[
'type' => 'property',
'property' => [
'type' => 'transformed',
'column' => [
'type' => 'trait',
'traitDefinitionId' => '2d88e50f-76b2-4023-97cf-e56b72d9861e',
'conditions' => [
]
]
],
'propertyType' => 'boolean',
'operator' => '=',
'value' => true
],
[
'type' => 'number_of',
'relationshipId' => '20',
'operator' => '>=',
'value' => 1,
'subconditions' => [
[
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '300',
'name' => 'amount'
],
'propertyType' => 'number',
'operator' => '>',
'value' => 25
]
]
]
]
],
[
'type' => 'event',
'eventModelId' => '400',
'relationshipId' => '30',
'operator' => '=',
'value' => 0,
'window' => [
'operator' => 'within',
'timeType' => 'relative',
'value' => [
'interval' => 'week',
'quantity' => 2,
'direction' => 'backward'
]
],
'subconditions' => [
[
'type' => 'and',
'conditions' => [
[
'type' => 'property',
'property' => [
'type' => 'raw',
'modelId' => '400',
'name' => 'event_name'
],
'propertyType' => 'string',
'operator' => '=',
'value' => [
'email_open'
]
]
]
]
]
],
[
'type' => 'or',
'conditions' => [
[
'type' => 'segment_set',
'modelId' => '500',
'includes' => true
],
[
'type' => 'segment_set',
'modelId' => '600',
'includes' => false
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings"
payload := strings.NewReader("{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}")
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(string(body))
}HttpResponse<String> response = Unirest.put("https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hightouch.com/api/v1/decision-engine/flow/{flowId}/messages/{messageId}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"maxSendsPerUser\": 2,\n \"maxSendsPerUserWindowDays\": 30,\n \"eligibleScheduleVariants\": [\n {\n \"day\": \"monday\",\n \"time\": \"morning\"\n }\n ],\n \"eligibilityFilter\": {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"country\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"US\",\n \"CA\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"lifetime_value\"\n },\n \"propertyType\": \"number\",\n \"operator\": \"between\",\n \"value\": {\n \"min\": 50,\n \"max\": 500\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"is_subscribed\"\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"signed_up_at\"\n },\n \"propertyType\": \"timestamp\",\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"day\",\n \"quantity\": 90,\n \"direction\": \"backward\"\n }\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"100\",\n \"name\": \"phone\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"exists\",\n \"value\": null\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"related\",\n \"path\": [\n \"10\"\n ],\n \"column\": {\n \"type\": \"raw\",\n \"modelId\": \"200\",\n \"name\": \"plan\"\n }\n },\n \"propertyType\": \"string\",\n \"operator\": \"<>\",\n \"value\": [\n \"free\"\n ]\n },\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"transformed\",\n \"column\": {\n \"type\": \"trait\",\n \"traitDefinitionId\": \"2d88e50f-76b2-4023-97cf-e56b72d9861e\",\n \"conditions\": []\n }\n },\n \"propertyType\": \"boolean\",\n \"operator\": \"=\",\n \"value\": true\n },\n {\n \"type\": \"number_of\",\n \"relationshipId\": \"20\",\n \"operator\": \">=\",\n \"value\": 1,\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"300\",\n \"name\": \"amount\"\n },\n \"propertyType\": \"number\",\n \"operator\": \">\",\n \"value\": 25\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"eventModelId\": \"400\",\n \"relationshipId\": \"30\",\n \"operator\": \"=\",\n \"value\": 0,\n \"window\": {\n \"operator\": \"within\",\n \"timeType\": \"relative\",\n \"value\": {\n \"interval\": \"week\",\n \"quantity\": 2,\n \"direction\": \"backward\"\n }\n },\n \"subconditions\": [\n {\n \"type\": \"and\",\n \"conditions\": [\n {\n \"type\": \"property\",\n \"property\": {\n \"type\": \"raw\",\n \"modelId\": \"400\",\n \"name\": \"event_name\"\n },\n \"propertyType\": \"string\",\n \"operator\": \"=\",\n \"value\": [\n \"email_open\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"or\",\n \"conditions\": [\n {\n \"type\": \"segment_set\",\n \"modelId\": \"500\",\n \"includes\": true\n },\n {\n \"type\": \"segment_set\",\n \"modelId\": \"600\",\n \"includes\": false\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"channelId": "<string>",
"config": {},
"tags": {},
"guardrails": {
"maxSendsPerUser": 123,
"maxSendsPerUserWindowDays": 123,
"minOtherMessagesInBetween": 123,
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>"
},
"settings": {
"maxSendsPerUser": 123,
"maxSendsPerUserWindowDays": 123,
"minOtherMessagesInBetween": 123,
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>",
"eligibilityFilter": "<unknown>",
"eligibleScheduleVariants": [
{
"day": "sunday",
"time": "midnight"
}
],
"attributionCampaignIds": [
"<string>"
]
},
"state": {
"enabled": true,
"status": "draft",
"disabledAt": "2023-11-07T05:31:56Z",
"audienceSize": 123,
"audienceSizeComputedAt": "2023-11-07T05:31:56Z"
},
"content": "<string>",
"variables": [
{
"name": "<string>",
"variants": [
{
"value": "<string>",
"tags": {},
"firstEligibleSendDate": "<string>",
"lastEligibleSendDate": "<string>",
"userAudienceFilter": "<unknown>",
"localeValues": {}
}
],
"config": {
"localizationEnabled": true,
"maxSendsPerUserWindowDays": 123,
"maxSendsPerUser": 123
}
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The UUID of the flow
The UUID of the message
Body
The settings of a message within a flow: eligibility and send limits
Audience condition a user must match to be eligible for the message, in the same format as the flow's audience filter.
The root is an and or or condition with a conditions list.
{"type": "and", "conditions": []} makes every user eligible.
The request fails with 422 when a model, relationship, or column in the filter does not exist.
Condition types:
and,or:conditionsis a list of conditions.property: compares a column withvalue. SetpropertyTypetostring,number,boolean,timestamp,date, orjson-array-strings.number_of: counts the related rows throughrelationshipIdand compares the count withvalue.subconditionsis a list ofandororconditions on the columns of the related model.event: counts the events ofeventModelIdthroughrelationshipId.windowlimits the events to a time range.funnelConditionrequires that the user did (didPerform: true) or did not do a second event after the first one.segment_set: includes (includes: true) or excludes the users of the audiencemodelId.
Columns in property:
- A column of a model:
{"type": "raw", "modelId": "<model ID>", "name": "<column>"}. The model must be the flow's parent model, or the model of the enclosingnumber_oforeventcondition. - A column of a related model:
{"type": "related", "path": ["<relationship ID>"], "column": {"type": "raw", ...}}. The path starts from the flow's parent model. - A trait:
{"type": "transformed", "column": {"type": "trait", "traitDefinitionId": "<trait ID>", "conditions": []}}.
Operators and values:
string:=,<>,contains,notcontains,startswith,notstartswith,endswith,notendswithtake a list of strings, such as["US", "CA"].number:=,<>take a list of numbers.>,>=,<,<=take a number.betweentakes{"min": 1, "max": 9}.boolean:=,<>taketrueorfalse.timestamp,date:before,aftertake a time, such as"2026-10-28 09:00:00", with"timeType": "absolute".within,notwithin, and alsobefore,after, take an interval, such as{"interval": "day", "quantity": 30, "direction": "backward"}, with"timeType": "relative". The interval isminute,hour,day,week,month, oryear. The direction isbackwardfor the past orforwardfor the future.json-array-strings:contains,notcontains,contains-liketake a list of strings.- All types:
exists,notexiststakenull.stringalso hasexistsandisnotempty. number_ofandeventcounts:=,<>,>,>=,<,<=take a number.
Day and time slots in which the message may be sent. All slots are eligible when omitted.
Show child attributes
Show child attributes
Additional destination campaign IDs whose outcomes are attributed to this message
Response
Ok
Decision Engine Message (Public API)
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Guardrail fields on a message (max sends, eligibility dates, etc.)
Show child attributes
Show child attributes
The settings of a message within a flow: eligibility and send limits
Show child attributes
Show child attributes
The state of a message within a flow
Show child attributes
Show child attributes
Message body. Only raw channel messages have content.
Show child attributes
Show child attributes
Was this page helpful?