curl --request POST \
--url https://api.hightouch.com/api/v1/events/contracts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Contract",
"events": [
{
"type": "track",
"name": "Checked Out",
"onUndeclaredFields": "ALLOW_EVENT",
"onSchemaViolation": "BLOCK_EVENT",
"schema": {
"type": "object",
"properties": {
"properties": {
"type": "object",
"required": [
"total"
],
"properties": {
"total": {
"type": "number"
}
}
}
}
}
}
]
}
'import requests
url = "https://api.hightouch.com/api/v1/events/contracts"
payload = {
"name": "My Contract",
"events": [
{
"type": "track",
"name": "Checked Out",
"onUndeclaredFields": "ALLOW_EVENT",
"onSchemaViolation": "BLOCK_EVENT",
"schema": {
"type": "object",
"properties": { "properties": {
"type": "object",
"required": ["total"],
"properties": { "total": { "type": "number" } }
} }
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Contract',
events: [
{
type: 'track',
name: 'Checked Out',
onUndeclaredFields: 'ALLOW_EVENT',
onSchemaViolation: 'BLOCK_EVENT',
schema: {
type: 'object',
properties: {
properties: {type: 'object', required: ['total'], properties: {total: {type: 'number'}}}
}
}
}
]
})
};
fetch('https://api.hightouch.com/api/v1/events/contracts', 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/events/contracts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My Contract',
'events' => [
[
'type' => 'track',
'name' => 'Checked Out',
'onUndeclaredFields' => 'ALLOW_EVENT',
'onSchemaViolation' => 'BLOCK_EVENT',
'schema' => [
'type' => 'object',
'properties' => [
'properties' => [
'type' => 'object',
'required' => [
'total'
],
'properties' => [
'total' => [
'type' => 'number'
]
]
]
]
]
]
]
]),
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/events/contracts"
payload := strings.NewReader("{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.hightouch.com/api/v1/events/contracts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hightouch.com/api/v1/events/contracts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "1",
"name": "My Contract",
"workspaceId": 1,
"events": [
{
"type": "track",
"name": "Checked Out",
"version": "default",
"schema": {
"type": "object",
"required": [
"req"
],
"properties": {
"req": {
"type": "string"
}
},
"description": ""
},
"onSchemaViolation": "ALLOW_EVENT",
"onUndeclaredFields": "BLOCK_EVENT"
}
],
"onUndeclaredSchema": "BLOCK_EVENT",
"eventSources": [
{
"id": "1",
"name": "Marketing Site"
}
],
"createdAt": "2022-02-16T21:37:58.510Z",
"updatedAt": "2022-02-16T21:37:58.510Z"
}{
"message": "Validation failed",
"details": {}
}"Internal Server Error"Create an Event Contract
Create a new event contract
curl --request POST \
--url https://api.hightouch.com/api/v1/events/contracts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Contract",
"events": [
{
"type": "track",
"name": "Checked Out",
"onUndeclaredFields": "ALLOW_EVENT",
"onSchemaViolation": "BLOCK_EVENT",
"schema": {
"type": "object",
"properties": {
"properties": {
"type": "object",
"required": [
"total"
],
"properties": {
"total": {
"type": "number"
}
}
}
}
}
}
]
}
'import requests
url = "https://api.hightouch.com/api/v1/events/contracts"
payload = {
"name": "My Contract",
"events": [
{
"type": "track",
"name": "Checked Out",
"onUndeclaredFields": "ALLOW_EVENT",
"onSchemaViolation": "BLOCK_EVENT",
"schema": {
"type": "object",
"properties": { "properties": {
"type": "object",
"required": ["total"],
"properties": { "total": { "type": "number" } }
} }
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Contract',
events: [
{
type: 'track',
name: 'Checked Out',
onUndeclaredFields: 'ALLOW_EVENT',
onSchemaViolation: 'BLOCK_EVENT',
schema: {
type: 'object',
properties: {
properties: {type: 'object', required: ['total'], properties: {total: {type: 'number'}}}
}
}
}
]
})
};
fetch('https://api.hightouch.com/api/v1/events/contracts', 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/events/contracts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My Contract',
'events' => [
[
'type' => 'track',
'name' => 'Checked Out',
'onUndeclaredFields' => 'ALLOW_EVENT',
'onSchemaViolation' => 'BLOCK_EVENT',
'schema' => [
'type' => 'object',
'properties' => [
'properties' => [
'type' => 'object',
'required' => [
'total'
],
'properties' => [
'total' => [
'type' => 'number'
]
]
]
]
]
]
]
]),
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/events/contracts"
payload := strings.NewReader("{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.hightouch.com/api/v1/events/contracts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hightouch.com/api/v1/events/contracts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Contract\",\n \"events\": [\n {\n \"type\": \"track\",\n \"name\": \"Checked Out\",\n \"onUndeclaredFields\": \"ALLOW_EVENT\",\n \"onSchemaViolation\": \"BLOCK_EVENT\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"properties\": {\n \"type\": \"object\",\n \"required\": [\n \"total\"\n ],\n \"properties\": {\n \"total\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "1",
"name": "My Contract",
"workspaceId": 1,
"events": [
{
"type": "track",
"name": "Checked Out",
"version": "default",
"schema": {
"type": "object",
"required": [
"req"
],
"properties": {
"req": {
"type": "string"
}
},
"description": ""
},
"onSchemaViolation": "ALLOW_EVENT",
"onUndeclaredFields": "BLOCK_EVENT"
}
],
"onUndeclaredSchema": "BLOCK_EVENT",
"eventSources": [
{
"id": "1",
"name": "Marketing Site"
}
],
"createdAt": "2022-02-16T21:37:58.510Z",
"updatedAt": "2022-02-16T21:37:58.510Z"
}{
"message": "Validation failed",
"details": {}
}"Internal Server Error"Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The input for creating a Contract
The contract's name
The contract's slug. If not specified, one will be generated.
The contract's description
What happens to events that aren't defined in the contract. One of ALLOW_EVENT or BLOCK_EVENT. Optional, defaults to ALLOW_EVENT.
ALLOW_EVENT, BLOCK_EVENT The definitions for the events in the contract.
Show child attributes
Show child attributes
Response
Ok
A collection of schemas that are used for validating your events.
The contract's id
The contract's name
The id of the workspace that the contract belongs to
The timestamp when the contract was created
The timestamp when the contract was last updated
The Event Sources linked to the Contract.
Show child attributes
Show child attributes
The contract's slug. If not specified, one will be generated.
The contract's description
What happens to events that aren't defined in the contract. One of ALLOW_EVENT or BLOCK_EVENT. Optional, defaults to ALLOW_EVENT.
ALLOW_EVENT, BLOCK_EVENT The definitions for the events in the contract.
Show child attributes
Show child attributes
Was this page helpful?