Skip to content

Commit ff63e36

Browse files
committed
feat(ketch): add Ketch privacy consent integration
1 parent bf60670 commit ff63e36

File tree

17 files changed

+1095
-0
lines changed

17 files changed

+1095
-0
lines changed

apps/docs/components/icons.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4931,6 +4931,18 @@ export function KalshiIcon(props: SVGProps<SVGSVGElement>) {
49314931
)
49324932
}
49334933

4934+
export function KetchIcon(props: SVGProps<SVGSVGElement>) {
4935+
return (
4936+
<svg {...props} viewBox='0 0 224 213' fill='none' xmlns='http://www.w3.org/2000/svg'>
4937+
<path
4938+
d='m133.1 43.92 28.76-29.48h-70.38l-77.79 78.08 77.64 76.26-30.05 29.13h70.98l77.64-77.58-76.8-76.41z'
4939+
fill='#fff'
4940+
/>
4941+
<path d='m91.71 86.79v81.44l40.38-41.7v-82.02l-40.38 42.28z' fill='#9B5CFF' />
4942+
</svg>
4943+
)
4944+
}
4945+
49344946
export function PolymarketIcon(props: SVGProps<SVGSVGElement>) {
49354947
return (
49364948
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='51 209 123 155'>

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ import {
8888
JiraIcon,
8989
JiraServiceManagementIcon,
9090
KalshiIcon,
91+
KetchIcon,
9192
LangsmithIcon,
9293
LemlistIcon,
9394
LinearIcon,
@@ -262,6 +263,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
262263
jira: JiraIcon,
263264
jira_service_management: JiraServiceManagementIcon,
264265
kalshi_v2: KalshiIcon,
266+
ketch: KetchIcon,
265267
knowledge: PackageSearchIcon,
266268
langsmith: LangsmithIcon,
267269
lemlist: LemlistIcon,
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
title: Ketch
3+
description: Manage privacy consent, subscriptions, and data subject rights
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="ketch"
10+
color="#9B5CFF"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[Ketch](https://www.ketch.com/) is an AI-powered privacy, consent, and data governance platform that helps organizations automate compliance with global privacy regulations. It provides tools for managing consent preferences, handling data subject rights requests, and controlling subscription communications.
15+
16+
With Ketch, you can:
17+
18+
- **Retrieve consent status**: Query the current consent preferences for any data subject across configured purposes and legal bases
19+
- **Update consent preferences**: Set or modify consent for specific purposes (e.g., analytics, marketing) with the appropriate legal basis (opt-in, opt-out, disclosure)
20+
- **Manage subscriptions**: Get and update subscription topic preferences and global controls across contact methods like email and SMS
21+
- **Invoke data subject rights**: Submit privacy rights requests including data access, deletion, correction, and processing restriction under regulations like GDPR and CCPA
22+
23+
To use Ketch, drop the Ketch block into your workflow and provide your organization code, property code, and environment code. The Ketch Web API is a public API — no API key or OAuth credentials are required. Identity is determined by the organization and property codes along with the data subject's identity (e.g., email address).
24+
25+
These capabilities let you automate privacy compliance workflows, respond to user consent changes in real time, and manage data subject rights requests as part of your broader automation pipelines.
26+
{/* MANUAL-CONTENT-END */}
27+
28+
29+
## Usage Instructions
30+
31+
Integrate Ketch into the workflow. Retrieve and update consent preferences, manage subscription topics and controls, and submit data subject rights requests for access, deletion, correction, or processing restriction.
32+
33+
34+
35+
## Tools
36+
37+
### `ketch_get_consent`
38+
39+
Retrieve consent status for a data subject. Returns the current consent preferences for each configured purpose.
40+
41+
#### Input
42+
43+
| Parameter | Type | Required | Description |
44+
| --------- | ---- | -------- | ----------- |
45+
| `organizationCode` | string | Yes | Ketch organization code |
46+
| `propertyCode` | string | Yes | Digital property code defined in Ketch |
47+
| `environmentCode` | string | Yes | Environment code defined in Ketch \(e.g., "production"\) |
48+
| `jurisdictionCode` | string | No | Jurisdiction code \(e.g., "gdpr", "ccpa"\) |
49+
| `identities` | json | Yes | Identity map \(e.g., \{"email": "user@example.com"\}\) |
50+
| `purposes` | json | No | Optional purposes to filter the consent query |
51+
52+
#### Output
53+
54+
| Parameter | Type | Description |
55+
| --------- | ---- | ----------- |
56+
| `purposes` | object | Map of purpose codes to consent status and legal basis |
57+
|`allowed` | string | Consent status for the purpose: "granted" or "denied" |
58+
|`legalBasisCode` | string | Legal basis code \(e.g., "consent_optin", "consent_optout", "disclosure", "other"\) |
59+
| `vendors` | object | Map of vendor consent statuses |
60+
61+
### `ketch_set_consent`
62+
63+
Update consent preferences for a data subject. Sets the consent status for specified purposes with the appropriate legal basis.
64+
65+
#### Input
66+
67+
| Parameter | Type | Required | Description |
68+
| --------- | ---- | -------- | ----------- |
69+
| `organizationCode` | string | Yes | Ketch organization code |
70+
| `propertyCode` | string | Yes | Digital property code defined in Ketch |
71+
| `environmentCode` | string | Yes | Environment code defined in Ketch \(e.g., "production"\) |
72+
| `jurisdictionCode` | string | No | Jurisdiction code \(e.g., "gdpr", "ccpa"\) |
73+
| `identities` | json | Yes | Identity map \(e.g., \{"email": "user@example.com"\}\) |
74+
| `purposes` | json | Yes | Map of purpose codes to consent settings \(e.g., \{"analytics": \{"allowed": "granted", "legalBasisCode": "consent_optin"\}\}\) |
75+
| `collectedAt` | number | No | UNIX timestamp when consent was collected \(defaults to current time\) |
76+
77+
#### Output
78+
79+
| Parameter | Type | Description |
80+
| --------- | ---- | ----------- |
81+
| `purposes` | object | Updated consent status map of purpose codes to consent settings |
82+
|`allowed` | string | Consent status for the purpose: "granted" or "denied" |
83+
|`legalBasisCode` | string | Legal basis code \(e.g., "consent_optin", "consent_optout", "disclosure", "other"\) |
84+
85+
### `ketch_get_subscriptions`
86+
87+
Retrieve subscription preferences for a data subject. Returns the current subscription topic and control statuses.
88+
89+
#### Input
90+
91+
| Parameter | Type | Required | Description |
92+
| --------- | ---- | -------- | ----------- |
93+
| `organizationCode` | string | Yes | Ketch organization code |
94+
| `propertyCode` | string | Yes | Digital property code defined in Ketch |
95+
| `environmentCode` | string | Yes | Environment code defined in Ketch \(e.g., "production"\) |
96+
| `identities` | json | Yes | Identity map \(e.g., \{"email": "user@example.com"\}\) |
97+
98+
#### Output
99+
100+
| Parameter | Type | Description |
101+
| --------- | ---- | ----------- |
102+
| `topics` | object | Map of topic codes to contact method settings \(e.g., \{"newsletter": \{"email": \{"status": "granted"\}\}\}\) |
103+
| `controls` | object | Map of control codes to settings \(e.g., \{"global_unsubscribe": \{"status": "denied"\}\}\) |
104+
105+
### `ketch_set_subscriptions`
106+
107+
Update subscription preferences for a data subject. Sets topic and control statuses for email, SMS, and other contact methods.
108+
109+
#### Input
110+
111+
| Parameter | Type | Required | Description |
112+
| --------- | ---- | -------- | ----------- |
113+
| `organizationCode` | string | Yes | Ketch organization code |
114+
| `propertyCode` | string | Yes | Digital property code defined in Ketch |
115+
| `environmentCode` | string | Yes | Environment code defined in Ketch \(e.g., "production"\) |
116+
| `identities` | json | Yes | Identity map \(e.g., \{"email": "user@example.com"\}\) |
117+
| `topics` | json | No | Map of topic codes to contact method settings \(e.g., \{"newsletter": \{"email": \{"status": "granted"\}, "sms": \{"status": "denied"\}\}\}\) |
118+
| `controls` | json | No | Map of control codes to settings \(e.g., \{"global_unsubscribe": \{"status": "denied"\}\}\) |
119+
120+
#### Output
121+
122+
| Parameter | Type | Description |
123+
| --------- | ---- | ----------- |
124+
| `success` | boolean | Whether the subscription preferences were updated |
125+
126+
### `ketch_invoke_right`
127+
128+
Submit a data subject rights request (e.g., access, delete, correct, restrict processing). Initiates a privacy rights workflow in Ketch.
129+
130+
#### Input
131+
132+
| Parameter | Type | Required | Description |
133+
| --------- | ---- | -------- | ----------- |
134+
| `organizationCode` | string | Yes | Ketch organization code |
135+
| `propertyCode` | string | Yes | Digital property code defined in Ketch |
136+
| `environmentCode` | string | Yes | Environment code defined in Ketch \(e.g., "production"\) |
137+
| `jurisdictionCode` | string | Yes | Jurisdiction code \(e.g., "gdpr", "ccpa"\) |
138+
| `rightCode` | string | Yes | Privacy right code to invoke \(e.g., "access", "delete", "correct", "restrict_processing"\) |
139+
| `identities` | json | Yes | Identity map \(e.g., \{"email": "user@example.com"\}\) |
140+
| `userData` | json | No | Optional data subject information \(e.g., \{"email": "user@example.com", "firstName": "John", "lastName": "Doe"\}\) |
141+
142+
#### Output
143+
144+
| Parameter | Type | Description |
145+
| --------- | ---- | ----------- |
146+
| `success` | boolean | Whether the rights request was submitted |
147+
| `message` | string | Response message from Ketch |
148+
149+

apps/docs/content/docs/en/tools/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
"jira",
8484
"jira_service_management",
8585
"kalshi",
86+
"ketch",
8687
"knowledge",
8788
"langsmith",
8889
"lemlist",

apps/sim/app/(landing)/integrations/data/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ import {
8888
JiraIcon,
8989
JiraServiceManagementIcon,
9090
KalshiIcon,
91+
KetchIcon,
9192
LangsmithIcon,
9293
LemlistIcon,
9394
LinearIcon,
@@ -262,6 +263,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
262263
jira: JiraIcon,
263264
jira_service_management: JiraServiceManagementIcon,
264265
kalshi_v2: KalshiIcon,
266+
ketch: KetchIcon,
265267
knowledge: PackageSearchIcon,
266268
langsmith: LangsmithIcon,
267269
lemlist: LemlistIcon,

apps/sim/app/(landing)/integrations/data/integrations.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6121,6 +6121,45 @@
61216121
"integrationType": "analytics",
61226122
"tags": ["prediction-markets", "data-analytics"]
61236123
},
6124+
{
6125+
"type": "ketch",
6126+
"slug": "ketch",
6127+
"name": "Ketch",
6128+
"description": "Manage privacy consent, subscriptions, and data subject rights",
6129+
"longDescription": "Integrate Ketch into the workflow. Retrieve and update consent preferences, manage subscription topics and controls, and submit data subject rights requests for access, deletion, correction, or processing restriction.",
6130+
"bgColor": "#9B5CFF",
6131+
"iconName": "KetchIcon",
6132+
"docsUrl": "https://docs.sim.ai/tools/ketch",
6133+
"operations": [
6134+
{
6135+
"name": "Get Consent",
6136+
"description": "Retrieve consent status for a data subject. Returns the current consent preferences for each configured purpose."
6137+
},
6138+
{
6139+
"name": "Set Consent",
6140+
"description": "Update consent preferences for a data subject. Sets the consent status for specified purposes with the appropriate legal basis."
6141+
},
6142+
{
6143+
"name": "Get Subscriptions",
6144+
"description": "Retrieve subscription preferences for a data subject. Returns the current subscription topic and control statuses."
6145+
},
6146+
{
6147+
"name": "Set Subscriptions",
6148+
"description": "Update subscription preferences for a data subject. Sets topic and control statuses for email, SMS, and other contact methods."
6149+
},
6150+
{
6151+
"name": "Invoke Right",
6152+
"description": "Submit a data subject rights request (e.g., access, delete, correct, restrict processing). Initiates a privacy rights workflow in Ketch."
6153+
}
6154+
],
6155+
"operationCount": 5,
6156+
"triggers": [],
6157+
"triggerCount": 0,
6158+
"authType": "none",
6159+
"category": "tools",
6160+
"integrationType": "security",
6161+
"tags": ["identity"]
6162+
},
61246163
{
61256164
"type": "knowledge",
61266165
"slug": "knowledge",

0 commit comments

Comments
 (0)