@adminide-stack/yantra-help-browser 12.0.17 → 12.0.19-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/HelpCenterFooter.d.ts.map +1 -1
- package/lib/components/HelpCenterFooter.js +44 -12
- package/lib/components/HelpCenterFooter.js.map +1 -1
- package/lib/components/HelpCenterHeader.d.ts +5 -1
- package/lib/components/HelpCenterHeader.d.ts.map +1 -1
- package/lib/components/HelpCenterHeader.js +40 -128
- package/lib/components/HelpCenterHeader.js.map +1 -1
- package/lib/components/Icons.js +1 -9
- package/lib/components/Icons.js.map +1 -1
- package/lib/components/PageHero.d.ts +6 -0
- package/lib/components/PageHero.d.ts.map +1 -1
- package/lib/components/PageHero.js +35 -39
- package/lib/components/PageHero.js.map +1 -1
- package/lib/components/SearchBar.d.ts +4 -0
- package/lib/components/SearchBar.d.ts.map +1 -1
- package/lib/components/SearchBar.js +56 -95
- package/lib/components/SearchBar.js.map +1 -1
- package/lib/components/SidebarSearch.d.ts.map +1 -1
- package/lib/components/SidebarSearch.js +6 -6
- package/lib/components/SidebarSearch.js.map +1 -1
- package/lib/components/navbar/index.d.ts.map +1 -1
- package/lib/components/navbar/index.js +38 -7
- package/lib/components/navbar/index.js.map +1 -1
- package/lib/compute.d.ts +1 -0
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +9 -0
- package/lib/compute.js.map +1 -1
- package/lib/config.d.ts +6 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +66 -0
- package/lib/config.js.map +1 -0
- package/lib/pages/About/index.d.ts +1 -1
- package/lib/pages/About/index.d.ts.map +1 -1
- package/lib/pages/About/index.js +54 -55
- package/lib/pages/About/index.js.map +1 -1
- package/lib/pages/Blog/index.d.ts.map +1 -1
- package/lib/pages/Blog/index.js +26 -17
- package/lib/pages/Blog/index.js.map +1 -1
- package/lib/pages/BlogPost/index.d.ts.map +1 -1
- package/lib/pages/BlogPost/index.js +5 -5
- package/lib/pages/BlogPost/index.js.map +1 -1
- package/lib/pages/CategoryCollection/index.d.ts.map +1 -1
- package/lib/pages/CategoryCollection/index.js +54 -51
- package/lib/pages/CategoryCollection/index.js.map +1 -1
- package/lib/pages/Contact/index.d.ts.map +1 -1
- package/lib/pages/Contact/index.js +96 -14
- package/lib/pages/Contact/index.js.map +1 -1
- package/lib/pages/Feedback/index.d.ts +3 -0
- package/lib/pages/Feedback/index.d.ts.map +1 -0
- package/lib/pages/Feedback/index.js +261 -0
- package/lib/pages/Feedback/index.js.map +1 -0
- package/lib/pages/GetStarted/components/ExampleCard.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/GetStartedHero.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/TipCard.d.ts.map +1 -1
- package/lib/pages/GetStarted/index.d.ts +1 -1
- package/lib/pages/GetStarted/index.d.ts.map +1 -1
- package/lib/pages/GetStarted/index.js +129 -332
- package/lib/pages/GetStarted/index.js.map +1 -1
- package/lib/pages/HelpCenter/components/BookStack.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/HelpCategoryCard.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/HelpCategoryCard.js +54 -132
- package/lib/pages/HelpCenter/components/HelpCategoryCard.js.map +1 -1
- package/lib/pages/HelpCenter/components/PopularArticle.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/PopularArticle.js +21 -26
- package/lib/pages/HelpCenter/components/PopularArticle.js.map +1 -1
- package/lib/pages/HelpCenter/index.d.ts.map +1 -1
- package/lib/pages/HelpCenter/index.js +85 -223
- package/lib/pages/HelpCenter/index.js.map +1 -1
- package/lib/pages/HelpCenter/mockData.js +1 -19
- package/lib/pages/HelpCenter/mockData.js.map +1 -1
- package/lib/pages/LandingPage/components/ArticleCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ArticleCard.js +22 -28
- package/lib/pages/LandingPage/components/ArticleCard.js.map +1 -1
- package/lib/pages/LandingPage/components/CategoriesSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/CategoriesSection.js +11 -15
- package/lib/pages/LandingPage/components/CategoriesSection.js.map +1 -1
- package/lib/pages/LandingPage/components/CategoryCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/CategoryCard.js +23 -32
- package/lib/pages/LandingPage/components/CategoryCard.js.map +1 -1
- package/lib/pages/LandingPage/components/FeaturedSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/FeaturedSection.js +10 -15
- package/lib/pages/LandingPage/components/FeaturedSection.js.map +1 -1
- package/lib/pages/LandingPage/components/HeroSection.d.ts +4 -0
- package/lib/pages/LandingPage/components/HeroSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/HeroSection.js +53 -108
- package/lib/pages/LandingPage/components/HeroSection.js.map +1 -1
- package/lib/pages/LandingPage/components/ResourceCard.d.ts +0 -1
- package/lib/pages/LandingPage/components/ResourceCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ResourceCard.js +16 -23
- package/lib/pages/LandingPage/components/ResourceCard.js.map +1 -1
- package/lib/pages/LandingPage/components/ResourcesSection.d.ts +0 -1
- package/lib/pages/LandingPage/components/ResourcesSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ResourcesSection.js +10 -16
- package/lib/pages/LandingPage/components/ResourcesSection.js.map +1 -1
- package/lib/pages/LandingPage/index.d.ts.map +1 -1
- package/lib/pages/LandingPage/index.js +122 -236
- package/lib/pages/LandingPage/index.js.map +1 -1
- package/lib/pages/Markdown/MarkdownPageLayout.d.ts.map +1 -1
- package/lib/pages/Markdown/MarkdownPageLayout.js +10 -10
- package/lib/pages/Markdown/MarkdownPageLayout.js.map +1 -1
- package/lib/pages/ReleaseNotes/index.d.ts.map +1 -1
- package/lib/pages/ReleaseNotes/index.js +14 -11
- package/lib/pages/ReleaseNotes/index.js.map +1 -1
- package/lib/pages/StatusPage/index.d.ts.map +1 -1
- package/lib/pages/StatusPage/index.js +17 -12
- package/lib/pages/StatusPage/index.js.map +1 -1
- package/lib/routes.json +11 -0
- package/lib/slot-fill/LogoFill.js +1 -1
- package/lib/slot-fill/LogoFill.js.map +1 -1
- package/lib/templates/content/account-management/account-setup.md +3 -3
- package/lib/templates/content/account-management/delete-account.md +3 -3
- package/lib/templates/content/connectors/connector-triggers.md +76 -0
- package/lib/templates/content/connectors/creating-connector-triggers.md +121 -0
- package/lib/templates/content/connectors/managing-connector-triggers.md +125 -0
- package/lib/templates/content/connectors/subscribing-to-connector-events.md +162 -0
- package/lib/templates/content/content-manifest.json +194 -0
- package/lib/templates/content/data-privacy/privacy-policy.md +4 -4
- package/lib/templates/content/data-subject-privacy/data-access.md +1 -1
- package/lib/templates/content/data-subject-privacy/data-portability.md +1 -1
- package/lib/templates/content/data-subject-privacy/privacy-requests.md +3 -3
- package/lib/templates/content/getting-started/getting-started-guide.md +2 -2
- package/lib/templates/content/product-features/ai-models.md +1 -1
- package/lib/templates/content/scope-api/api-overview.md +2 -2
- package/lib/templates/content/security-compliance/compliance.md +1 -1
- package/lib/templates/content/security-compliance/security-overview.md +2 -2
- package/lib/templates/content/student-hub/student-overview.md +1 -1
- package/lib/templates/content/subscription-billing/billing-overview.md +2 -2
- package/lib/templates/content/subscription-billing/billing-support.md +8 -8
- package/lib/templates/content/subscription-billing/enterprise-pricing.md +1 -1
- package/lib/templates/content/subscription-billing/invoice-management.md +2 -2
- package/lib/templates/content/subscription-billing/promotional-offers.md +3 -3
- package/lib/templates/content/subscription-billing/refund-policy.md +2 -2
- package/lib/templates/content/subscription-billing/tax-information.md +3 -3
- package/lib/templates/content/technical-questions/api-technical.md +1 -1
- package/lib/templates/content/troubleshooting/common-issues.md +2 -2
- package/lib/utils/sendContactEmail.d.ts +18 -0
- package/lib/utils/sendContactEmail.d.ts.map +1 -0
- package/lib/utils/sendContactEmail.js +38 -0
- package/lib/utils/sendContactEmail.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';import {PageHero}from'../../components/PageHero.js';import {Card,CardContent}from'@admin-layout/tailwind-ui/shardui/card.js';import {
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {PageHero}from'../../components/PageHero.js';import {Card,CardContent}from'@admin-layout/tailwind-ui/shardui/card.js';import {Icons}from'../../components/Icons.js';const SYSTEMS = [{
|
|
2
2
|
name: 'API',
|
|
3
3
|
status: 'operational',
|
|
4
4
|
uptime: '99.99%'
|
|
@@ -33,11 +33,11 @@ const StatusPage = () => {
|
|
|
33
33
|
children: jsxs("div", {
|
|
34
34
|
className: "container mx-auto max-w-4xl px-6 lg:px-16",
|
|
35
35
|
children: [jsx(Card, {
|
|
36
|
-
className: "mb-8 border
|
|
36
|
+
className: "mb-8 border border-success/30 bg-success/5",
|
|
37
37
|
children: jsxs(CardContent, {
|
|
38
38
|
className: "flex items-center gap-4 py-6",
|
|
39
39
|
children: [jsx(Icons.MdCheckCircleIcon, {
|
|
40
|
-
className: "h-10 w-10 shrink-0 text-
|
|
40
|
+
className: "h-10 w-10 shrink-0 text-success"
|
|
41
41
|
}), jsxs("div", {
|
|
42
42
|
children: [jsx("div", {
|
|
43
43
|
className: "font-semibold text-foreground",
|
|
@@ -54,25 +54,30 @@ const StatusPage = () => {
|
|
|
54
54
|
}), jsx("div", {
|
|
55
55
|
className: "space-y-4",
|
|
56
56
|
children: SYSTEMS.map(system => jsx(Card, {
|
|
57
|
-
className: "border-border
|
|
57
|
+
className: "themed-card border-border",
|
|
58
58
|
children: jsxs(CardContent, {
|
|
59
59
|
className: "flex items-center justify-between py-4",
|
|
60
60
|
children: [jsxs("div", {
|
|
61
61
|
className: "flex items-center gap-3",
|
|
62
|
-
children: [
|
|
63
|
-
className: "h-5 w-5
|
|
62
|
+
children: [jsxs("span", {
|
|
63
|
+
className: "relative flex h-2.5 w-2.5",
|
|
64
|
+
"aria-hidden": "true",
|
|
65
|
+
children: [jsx("span", {
|
|
66
|
+
className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-success opacity-60"
|
|
67
|
+
}), jsx("span", {
|
|
68
|
+
className: "relative inline-flex h-2.5 w-2.5 rounded-full bg-success"
|
|
69
|
+
})]
|
|
64
70
|
}), jsx("span", {
|
|
65
71
|
className: "font-medium text-foreground",
|
|
66
72
|
children: system.name
|
|
67
73
|
})]
|
|
68
74
|
}), jsxs("div", {
|
|
69
75
|
className: "flex items-center gap-4",
|
|
70
|
-
children: [
|
|
71
|
-
className: "text-
|
|
72
|
-
children:
|
|
73
|
-
}), jsx(
|
|
74
|
-
|
|
75
|
-
className: "bg-emerald-500/10 text-emerald-600",
|
|
76
|
+
children: [jsx("span", {
|
|
77
|
+
className: "font-mono text-xs text-muted-foreground",
|
|
78
|
+
children: system.uptime
|
|
79
|
+
}), jsx("span", {
|
|
80
|
+
className: "inline-flex rounded-full bg-success/10 px-2.5 py-0.5 text-xs font-medium text-success",
|
|
76
81
|
children: system.status
|
|
77
82
|
})]
|
|
78
83
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/pages/StatusPage/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/pages/StatusPage/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"oNAMA,MAAM,OAAO,GAAG,CAAA;MACV,EAAA,KAAM;QACN,EAAI,aAAa;QACjB,EAAI;;MAEJ,EAAA,WAAM;EACV,MAAA,EAAA,aAAA;AAEF,EAAM,MAAA,EAAA;;AAiDN,EAAE,IAAA,EAAA,cAAA;AAEF,EAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/routes.json
CHANGED
|
@@ -115,6 +115,17 @@
|
|
|
115
115
|
"hasComponent": true
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
|
+
{
|
|
119
|
+
"//feedback": {
|
|
120
|
+
"path": "//feedback",
|
|
121
|
+
"key": "feedback",
|
|
122
|
+
"exact": true,
|
|
123
|
+
"hideInMenu": true,
|
|
124
|
+
"position": "MIDDLE",
|
|
125
|
+
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/Feedback/index.js",
|
|
126
|
+
"hasComponent": true
|
|
127
|
+
}
|
|
128
|
+
},
|
|
118
129
|
{
|
|
119
130
|
"//privacy": {
|
|
120
131
|
"path": "//privacy",
|
|
@@ -36,7 +36,7 @@ const defaultRenderLogoAndTitle = (props, prefersReducedMotion, renderKey = 'men
|
|
|
36
36
|
}
|
|
37
37
|
const logoDom = defaultRenderLogo(logo, prefersReducedMotion, scrolled, settings, location);
|
|
38
38
|
const titleDom = jsx("h1", {
|
|
39
|
-
className: `text-2xl ${settings?.navTheme === 'dark' ? 'text-
|
|
39
|
+
className: `text-2xl ${settings?.navTheme === 'dark' ? 'text-foreground' : titleColor || 'text-foreground'}`,
|
|
40
40
|
style: {
|
|
41
41
|
fontFamily: fontFamily,
|
|
42
42
|
fontWeight: titleFontWeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoFill.js","sources":["../../src/slot-fill/LogoFill.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"kUAMO,MAAM,iBAAiB,GAAG,CAC7B,IAA8B,EAC9B,oBAA6B,EAC7B,QAAQ,EACR,QAAa,EACb,QAAa,KACI;AACjB,EAAA,IAAA,OAAW,IAAA,KAAS,QAAA,EAAQ;AACxB,IAAA,OAAAA,GAAO,KAAC,EAAI;MACf,IAAA,EAAA,SAAA;AACD,MAAA,QAAW,EAAA,QAAS;cACT,EAAA,QAAO;MACjB,QAAA,EAAA;AACD,KAAA,CAAA;AACJ;AAEA,EAAA,IAAM,OAAO,IAAyB,KAAA,UAAA,EAAA;AAKlC,IAAA,OAAQ,IAAA,EAAA;;SAGF,IAAA;AACN;AACI,MAAA,yBAAY,GAAA,CAAA,KAAA,EAAA,oBAAA,EAAA,SAAA,GAAA,kBAAA,KAAA;QACf;AACD,IAAA,QAAa;IACb,MAAM;AAIM,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA;AACA,GAAA,GAAA,KAAA;AACA,EAAA,MAAA;cAGH;IAIT,aAAI;AACA,IAAA,eAAgB;AAChB,IAAA,WAAO;IACX,UAAC;IAED;AACI,IAAA,IAAA;IACJ;AAEA,GAAA,GAAA;AACJ,EAAE,MAAA,cAAA,GAAA,KAAA,CAAA,SAAA,IAAA,EAAA,CAAA;AAEF,EAAA,IAAM,cAAe,UAAQ,EAAA;IACzB,OAAO,IACF;AAEO;AAKA,EAAA,MAAA,OAAA,GAAA,iBAAiB,CAAA,IAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA;QACrB,QAEN,GAAAA,GAAA,CAAA,IAAA,EAAA;AACN,IAAE,SAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,QAAA,KAAA,MAAA,GAAA,
|
|
1
|
+
{"version":3,"file":"LogoFill.js","sources":["../../src/slot-fill/LogoFill.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"kUAMO,MAAM,iBAAiB,GAAG,CAC7B,IAA8B,EAC9B,oBAA6B,EAC7B,QAAQ,EACR,QAAa,EACb,QAAa,KACI;AACjB,EAAA,IAAA,OAAW,IAAA,KAAS,QAAA,EAAQ;AACxB,IAAA,OAAAA,GAAO,KAAC,EAAI;MACf,IAAA,EAAA,SAAA;AACD,MAAA,QAAW,EAAA,QAAS;cACT,EAAA,QAAO;MACjB,QAAA,EAAA;AACD,KAAA,CAAA;AACJ;AAEA,EAAA,IAAM,OAAO,IAAyB,KAAA,UAAA,EAAA;AAKlC,IAAA,OAAQ,IAAA,EAAA;;SAGF,IAAA;AACN;AACI,MAAA,yBAAY,GAAA,CAAA,KAAA,EAAA,oBAAA,EAAA,SAAA,GAAA,kBAAA,KAAA;QACf;AACD,IAAA,QAAa;IACb,MAAM;AAIM,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA;AACA,GAAA,GAAA,KAAA;AACA,EAAA,MAAA;cAGH;IAIT,aAAI;AACA,IAAA,eAAgB;AAChB,IAAA,WAAO;IACX,UAAC;IAED;AACI,IAAA,IAAA;IACJ;AAEA,GAAA,GAAA;AACJ,EAAE,MAAA,cAAA,GAAA,KAAA,CAAA,SAAA,IAAA,EAAA,CAAA;AAEF,EAAA,IAAM,cAAe,UAAQ,EAAA;IACzB,OAAO,IACF;AAEO;AAKA,EAAA,MAAA,OAAA,GAAA,iBAAiB,CAAA,IAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA;QACrB,QAEN,GAAAA,GAAA,CAAA,IAAA,EAAA;AACN,IAAE,SAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,QAAA,KAAA,MAAA,GAAA,iBAAA,GAAA,UAAA,IAAA,iBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -8,7 +8,7 @@ Get up and running with Yantra in under 5 minutes. This guide walks you through
|
|
|
8
8
|
|
|
9
9
|
### Step 1 — Sign up
|
|
10
10
|
|
|
11
|
-
1. Go to [yantra.
|
|
11
|
+
1. Go to [yantra.app](https://yantra.app) and click **Get Started**.
|
|
12
12
|
2. Choose a sign-up method:
|
|
13
13
|
- **Email + password** — Enter your work or personal email and create a strong password (minimum 12 characters).
|
|
14
14
|
- **Google SSO** — Sign in with your Google account for one-click setup.
|
|
@@ -17,9 +17,9 @@ Get up and running with Yantra in under 5 minutes. This guide walks you through
|
|
|
17
17
|
|
|
18
18
|
### Step 2 — Verify your email
|
|
19
19
|
|
|
20
|
-
Check your inbox for a verification email from **noreply@yantra.
|
|
20
|
+
Check your inbox for a verification email from **noreply@yantra.app**. Click the verification link to activate your account.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**Didn't receive the email?** Check your spam folder. If it's not there, click "Resend verification" on the login page.
|
|
23
23
|
|
|
24
24
|
### Step 3 — Complete your profile
|
|
25
25
|
|
|
@@ -19,7 +19,7 @@ Deleting your account permanently removes:
|
|
|
19
19
|
| AI employee memory | All learned context and preferences |
|
|
20
20
|
| Team associations | Your membership in shared workspaces |
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**This action is irreversible.** Once deleted, your data cannot be recovered.
|
|
23
23
|
|
|
24
24
|
### Export your data first
|
|
25
25
|
|
|
@@ -68,7 +68,7 @@ Type `DELETE` in the confirmation field and click **Permanently Delete Account**
|
|
|
68
68
|
- **Within 30 days** — All personal data is permanently purged from our systems, including backups.
|
|
69
69
|
- **After 30 days** — A confirmation email is sent to your registered email address.
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
**Changed your mind?** You have 30 days to contact support@yantra.app to cancel the deletion and restore your account.
|
|
72
72
|
|
|
73
73
|
---
|
|
74
74
|
|
|
@@ -78,4 +78,4 @@ If you're on a team plan, additional steps may apply:
|
|
|
78
78
|
|
|
79
79
|
- **Team members** — Your admin will be notified of your departure. Your data within shared workspaces may be retained per the organization's data policy.
|
|
80
80
|
- **Workspace owners** — You must transfer ownership or delete the workspace before deleting your personal account.
|
|
81
|
-
- **Enterprise accounts** — Contact your account manager or email
|
|
81
|
+
- **Enterprise accounts** — Contact your account manager or email support@yantra.app for assisted deletion with compliance documentation.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Connector Triggers
|
|
2
|
+
|
|
3
|
+
When events occur in connected apps — a new GitHub commit, a record created in Airtable, or a message received in Slack — connector triggers deliver that event data to your application as a structured payload.
|
|
4
|
+
|
|
5
|
+
Yantra provides 969+ connector pods, many of which contribute one or more triggers. Each trigger type watches for a specific event on a user's connected account and notifies your endpoint when it fires.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## How Triggers Work
|
|
10
|
+
|
|
11
|
+
1. **Inspect** — discover the trigger types available on an installed connector and their required configuration.
|
|
12
|
+
2. **Create an instance** — bind a trigger type to a specific connected account so Yantra starts watching for events.
|
|
13
|
+
3. **Receive events** — Yantra posts event payloads to your registered webhook endpoint when the trigger fires.
|
|
14
|
+
4. **Manage** — list, update, or delete trigger instances as your needs change.
|
|
15
|
+
|
|
16
|
+
### Trigger types vs. trigger instances
|
|
17
|
+
|
|
18
|
+
| Concept | What it is |
|
|
19
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
20
|
+
| **Trigger type** | A template defined by the connector pod (e.g. `AIRTABLE_VIEW_CREATED_TRIGGER`). Specifies the `configSchema` and `payloadSchema`. |
|
|
21
|
+
| **Trigger instance** | An active subscription that binds a trigger type to a specific connected account. One type can have many instances for different accounts. |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Delivery types
|
|
26
|
+
|
|
27
|
+
| Type | How it works |
|
|
28
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
29
|
+
| **Webhook trigger** | The third-party app pushes events to Yantra in real time. Yantra forwards the payload to your endpoint immediately. |
|
|
30
|
+
| **Polling trigger** | For apps that don't support outgoing webhooks. Yantra polls for new data on a schedule and delivers batched events. |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Payload structure
|
|
35
|
+
|
|
36
|
+
Every event payload delivered to your endpoint follows this structure:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"id": "evt_abc123",
|
|
41
|
+
"type": "trigger_event",
|
|
42
|
+
"metadata": {
|
|
43
|
+
"trigger_slug": "AIRTABLE_VIEW_CREATED_TRIGGER",
|
|
44
|
+
"trigger_instance_id": "ti_xyz789",
|
|
45
|
+
"connected_account_id": "ca_def456",
|
|
46
|
+
"connector": "airtable"
|
|
47
|
+
},
|
|
48
|
+
"data": {
|
|
49
|
+
"record_id": "recXxx",
|
|
50
|
+
"view_id": "viwYyy",
|
|
51
|
+
"table_name": "Projects"
|
|
52
|
+
},
|
|
53
|
+
"timestamp": "2026-05-06T10:30:00Z"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Use `metadata.trigger_slug` to route events to the right handler. Use `metadata.trigger_instance_id` to identify which specific subscription fired.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Prerequisites
|
|
62
|
+
|
|
63
|
+
Before working with triggers:
|
|
64
|
+
|
|
65
|
+
1. **Install the connector** — `yantra connector install <name>`
|
|
66
|
+
2. **Authenticate** — `yantra auth login`
|
|
67
|
+
3. **Create a connected account** — OAuth or API-key flow via the Yantra dashboard
|
|
68
|
+
4. **Register a webhook endpoint** — `yantra webhook create` (see [Subscribing to Connector Events](subscribing-to-connector-events))
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Next steps
|
|
73
|
+
|
|
74
|
+
- [Creating Connector Triggers](creating-connector-triggers) — create trigger instances
|
|
75
|
+
- [Subscribing to Connector Events](subscribing-to-connector-events) — receive events via webhooks
|
|
76
|
+
- [Managing Connector Triggers](managing-connector-triggers) — list, update, and delete instances
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Creating Connector Triggers
|
|
2
|
+
|
|
3
|
+
A trigger instance binds a trigger type to a specific connected account so Yantra watches for events and delivers them to your endpoint. This guide walks through discovering available triggers and creating instances using the `yantra` CLI.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1 — Discover available triggers
|
|
8
|
+
|
|
9
|
+
First, install the connector pod you want to monitor, then list its triggers:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install the connector
|
|
13
|
+
yantra connector install airtable
|
|
14
|
+
|
|
15
|
+
# List all triggers contributed by this connector
|
|
16
|
+
yantra trigger list airtable
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Output:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
CONNECTOR TRIGGER ID TITLE
|
|
23
|
+
────────────────────────────────────────────────────────────────────────────────────────────────────────
|
|
24
|
+
airtable AIRTABLE_VIEW_CREATED_TRIGGER New view created in a base
|
|
25
|
+
airtable AIRTABLE_RECORD_CREATED_TRIGGER New record added to a table
|
|
26
|
+
airtable AIRTABLE_RECORD_UPDATED_TRIGGER Record updated in a table
|
|
27
|
+
|
|
28
|
+
Total: 3 triggers
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
To see every trigger across all installed connectors, run `yantra trigger list` without a filter.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Step 2 — Inspect the trigger schema
|
|
36
|
+
|
|
37
|
+
Before creating an instance, inspect the trigger's `configSchema` (what you need to provide) and `payloadSchema` (what the event will contain):
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
yantra trigger show AIRTABLE_RECORD_CREATED_TRIGGER
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Output:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"id": "AIRTABLE_RECORD_CREATED_TRIGGER",
|
|
48
|
+
"title": "New record added to a table",
|
|
49
|
+
"connector": "airtable",
|
|
50
|
+
"configSchema": {
|
|
51
|
+
"properties": {
|
|
52
|
+
"base_id": { "type": "string", "description": "Airtable base ID (app...)" },
|
|
53
|
+
"table_id": { "type": "string", "description": "Table ID or name" }
|
|
54
|
+
},
|
|
55
|
+
"required": ["base_id", "table_id"]
|
|
56
|
+
},
|
|
57
|
+
"payloadSchema": {
|
|
58
|
+
"properties": {
|
|
59
|
+
"record_id": { "type": "string" },
|
|
60
|
+
"fields": { "type": "object" },
|
|
61
|
+
"created_time": { "type": "string", "format": "date-time" }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Step 3 — Create a trigger instance
|
|
70
|
+
|
|
71
|
+
Use `yantra trigger instance upsert` to create (or update) a trigger instance for a specific connected account:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
yantra trigger instance upsert \
|
|
75
|
+
--slug AIRTABLE_RECORD_CREATED_TRIGGER \
|
|
76
|
+
--account ca_def456 \
|
|
77
|
+
--config '{"base_id": "appXxxYyyZzz", "table_id": "Projects"}'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
| Flag | Required | Description |
|
|
81
|
+
| ----------- | -------- | ----------------------------------------------------------------------- |
|
|
82
|
+
| `--slug` | Yes | The trigger type ID (uppercase, e.g. `AIRTABLE_RECORD_CREATED_TRIGGER`) |
|
|
83
|
+
| `--account` | Yes | The `connectedAccountId` for the user whose events you want to capture |
|
|
84
|
+
| `--config` | Depends | JSON matching the trigger's `configSchema` required fields |
|
|
85
|
+
|
|
86
|
+
The command outputs the created instance details, including the `id` you'll use to manage it later.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Finding the connected account ID
|
|
91
|
+
|
|
92
|
+
List connected accounts for a connector to find the right `connectedAccountId`:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
yantra connector accounts airtable
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
If the user has multiple connected accounts for the same connector, pass the specific one you want to watch.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Multiple instances
|
|
103
|
+
|
|
104
|
+
You can create multiple trigger instances for the same trigger type — one per connected account:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Watch two different Airtable accounts
|
|
108
|
+
yantra trigger instance upsert --slug AIRTABLE_RECORD_CREATED_TRIGGER \
|
|
109
|
+
--account ca_user1 --config '{"base_id": "appAAA", "table_id": "Tasks"}'
|
|
110
|
+
|
|
111
|
+
yantra trigger instance upsert --slug AIRTABLE_RECORD_CREATED_TRIGGER \
|
|
112
|
+
--account ca_user2 --config '{"base_id": "appBBB", "table_id": "Leads"}'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## What happens after creation
|
|
118
|
+
|
|
119
|
+
Once a trigger instance exists, Yantra begins watching the connected account for the specified event. When the event fires, Yantra signs the payload and delivers it to your registered webhook endpoint.
|
|
120
|
+
|
|
121
|
+
Make sure you have a webhook endpoint registered and an active subscription before creating trigger instances. See [Subscribing to Connector Events](subscribing-to-connector-events).
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Managing Connector Triggers
|
|
2
|
+
|
|
3
|
+
Once trigger instances are created, use the `yantra trigger instance` subcommands to list, update, and delete them.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Listing trigger instances
|
|
8
|
+
|
|
9
|
+
List all active trigger instances for your organization:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yantra trigger instance list
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Filter by connected account:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
yantra trigger instance list --account ca_def456
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Filter by trigger type:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
yantra trigger instance list --slug AIRTABLE_RECORD_CREATED_TRIGGER
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Example output:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
[
|
|
31
|
+
{
|
|
32
|
+
"id": "ti_xyz789",
|
|
33
|
+
"triggerSlug": "AIRTABLE_RECORD_CREATED_TRIGGER",
|
|
34
|
+
"connectedAccountId": "ca_def456",
|
|
35
|
+
"config": { "base_id": "appXxxYyyZzz", "table_id": "Projects" },
|
|
36
|
+
"createdAt": "2026-05-01T12:00:00Z"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Updating a trigger instance
|
|
44
|
+
|
|
45
|
+
Use `upsert` to update the configuration of an existing trigger instance. Pass the same `--slug` and `--account` combination:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yantra trigger instance upsert \
|
|
49
|
+
--slug AIRTABLE_RECORD_CREATED_TRIGGER \
|
|
50
|
+
--account ca_def456 \
|
|
51
|
+
--config '{"base_id": "appXxxYyyZzz", "table_id": "NewTableName"}'
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If no instance exists for that slug/account pair, a new one is created. If one already exists, it is updated.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Deleting a trigger instance
|
|
59
|
+
|
|
60
|
+
Permanently remove a trigger instance by its `id`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
yantra trigger instance delete ti_xyz789
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> Deleting a trigger instance is permanent. Yantra will stop delivering events for that subscription immediately.
|
|
67
|
+
|
|
68
|
+
If you only need to temporarily stop events, remove the instance and recreate it later when ready — or adjust your webhook handler to ignore events you don't currently want to process.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Listing available trigger types
|
|
73
|
+
|
|
74
|
+
To see all trigger types contributed by your installed connectors:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# All triggers across all installed connectors
|
|
78
|
+
yantra trigger list
|
|
79
|
+
|
|
80
|
+
# Triggers for a specific connector
|
|
81
|
+
yantra trigger list github
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
To see the full schema for a specific trigger type:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
yantra trigger show GITHUB_COMMIT_EVENT
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Troubleshooting
|
|
93
|
+
|
|
94
|
+
### No events received
|
|
95
|
+
|
|
96
|
+
1. Confirm the trigger instance exists: `yantra trigger instance list`
|
|
97
|
+
2. Verify your webhook endpoint is registered: `yantra webhook list`
|
|
98
|
+
3. Check that the connected account is still authorized
|
|
99
|
+
4. Simulate a test event to verify your handler is reachable:
|
|
100
|
+
```bash
|
|
101
|
+
yantra trigger simulate -f fixture.json <TRIGGER_SLUG> \
|
|
102
|
+
--remote --endpoint we_abc123 --signing-secret your-secret
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Signature verification failures
|
|
106
|
+
|
|
107
|
+
Ensure the `signingSecret` in your handler matches the value in the webhook endpoint's `setupData`. Rotate the signing secret via `yantra webhook update` if compromised.
|
|
108
|
+
|
|
109
|
+
### Wrong trigger config
|
|
110
|
+
|
|
111
|
+
Re-run `yantra trigger show <slug>` to confirm required fields, then upsert the instance with the corrected `--config` JSON.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Quick reference
|
|
116
|
+
|
|
117
|
+
| Command | What it does |
|
|
118
|
+
| ------------------------------------------------- | ------------------------------------------ |
|
|
119
|
+
| `yantra trigger list [connector]` | List trigger types in installed connectors |
|
|
120
|
+
| `yantra trigger show <slug>` | Show config + payload schema for a trigger |
|
|
121
|
+
| `yantra trigger simulate -f <file> <slug>` | Validate a fixture locally |
|
|
122
|
+
| `yantra trigger simulate ... --remote` | Sign and POST fixture to the ingress URL |
|
|
123
|
+
| `yantra trigger instance list` | List all active trigger instances |
|
|
124
|
+
| `yantra trigger instance upsert --slug --account` | Create or update a trigger instance |
|
|
125
|
+
| `yantra trigger instance delete <id>` | Permanently delete a trigger instance |
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Subscribing to Connector Events
|
|
2
|
+
|
|
3
|
+
Connector events are delivered to your application via a webhook endpoint. This guide covers registering an endpoint, verifying signatures, handling event payloads, and testing locally.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Registering a webhook endpoint
|
|
8
|
+
|
|
9
|
+
Create a webhook endpoint to tell Yantra where to deliver trigger events:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yantra webhook create \
|
|
13
|
+
--connector airtable \
|
|
14
|
+
--url https://your-app.example.com/webhook \
|
|
15
|
+
--setup '{"signingSecret": "your-secret-here"}'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The command returns an endpoint record including the `webhookEndpointId` (`we_*`) you'll reference in simulations and ingress URLs.
|
|
19
|
+
|
|
20
|
+
To see the setup fields a connector requires:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
yantra webhook schema airtable
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
List all registered endpoints:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
yantra webhook list
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Handling incoming events
|
|
35
|
+
|
|
36
|
+
All trigger events arrive as HTTP POST requests at your endpoint. Route on `metadata.trigger_slug` to handle each event type:
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
app.post('/webhook', async (req, res) => {
|
|
40
|
+
// Always verify the signature first (see below)
|
|
41
|
+
const signature = req.headers['x-cdebase-signature'];
|
|
42
|
+
if (!verifySignature(signature, req.rawBody, SIGNING_SECRET)) {
|
|
43
|
+
return res.status(401).send('Unauthorized');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const { metadata, data } = req.body;
|
|
47
|
+
|
|
48
|
+
switch (metadata.trigger_slug) {
|
|
49
|
+
case 'AIRTABLE_RECORD_CREATED_TRIGGER':
|
|
50
|
+
await handleNewRecord(data);
|
|
51
|
+
break;
|
|
52
|
+
|
|
53
|
+
case 'GITHUB_COMMIT_EVENT':
|
|
54
|
+
await handleCommit(data);
|
|
55
|
+
break;
|
|
56
|
+
|
|
57
|
+
default:
|
|
58
|
+
console.log('Unhandled trigger:', metadata.trigger_slug);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
res.json({ status: 'ok' });
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Verifying webhook signatures
|
|
68
|
+
|
|
69
|
+
Yantra signs every delivery with HMAC-SHA256 using the `signingSecret` you provided at endpoint creation. The signature is sent in the `X-CDEBase-Signature` header as a hex string.
|
|
70
|
+
|
|
71
|
+
**Always verify signatures in production** to ensure payloads are authentic.
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
import crypto from 'crypto';
|
|
75
|
+
|
|
76
|
+
function verifySignature(signature, rawBody, secret) {
|
|
77
|
+
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
|
|
78
|
+
return crypto.timingSafeEqual(Buffer.from(signature, 'hex'), Buffer.from(expected, 'hex'));
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Identifying events
|
|
85
|
+
|
|
86
|
+
Every payload includes a `metadata` object that tells you exactly where the event came from:
|
|
87
|
+
|
|
88
|
+
| Field | Description |
|
|
89
|
+
| ------------------------------- | ------------------------------------------------------------------------ |
|
|
90
|
+
| `metadata.trigger_slug` | The trigger type (e.g. `AIRTABLE_RECORD_CREATED_TRIGGER`) |
|
|
91
|
+
| `metadata.trigger_instance_id` | Which trigger instance fired — use this to match a specific subscription |
|
|
92
|
+
| `metadata.connected_account_id` | Which connected account the event belongs to |
|
|
93
|
+
| `metadata.connector` | The connector name (e.g. `airtable`) |
|
|
94
|
+
|
|
95
|
+
Use `trigger_slug` to handle all events of a given type. Use `trigger_instance_id` to match events to a specific user's subscription.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Testing locally with simulate
|
|
100
|
+
|
|
101
|
+
Use `yantra trigger simulate` to validate a fixture payload locally before deploying:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# 1. Create a fixture file matching the trigger's payloadSchema
|
|
105
|
+
cat > fixture.json << 'EOF'
|
|
106
|
+
{
|
|
107
|
+
"record_id": "recXxxYyyZzz",
|
|
108
|
+
"fields": { "Name": "Test record", "Status": "In progress" },
|
|
109
|
+
"created_time": "2026-05-06T10:30:00Z"
|
|
110
|
+
}
|
|
111
|
+
EOF
|
|
112
|
+
|
|
113
|
+
# 2. Validate locally — no network call
|
|
114
|
+
yantra trigger simulate -f fixture.json AIRTABLE_RECORD_CREATED_TRIGGER
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Output:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
✓ fixture validated against AIRTABLE_RECORD_CREATED_TRIGGER payload schema
|
|
121
|
+
✓ local simulate complete (no remote dispatch). Use --remote to POST to the ingress URL.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Test the full pipeline remotely
|
|
125
|
+
|
|
126
|
+
To sign and POST the fixture to the actual webhook ingress:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
yantra trigger simulate \
|
|
130
|
+
-f fixture.json \
|
|
131
|
+
AIRTABLE_RECORD_CREATED_TRIGGER \
|
|
132
|
+
--remote \
|
|
133
|
+
--endpoint we_abc123 \
|
|
134
|
+
--signing-secret your-secret-here
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Output:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
→ POST https://your-server.com/api/integration/webhook_ingress/airtable/we_abc123/trigger_event
|
|
141
|
+
← 200
|
|
142
|
+
{"status":"ok"}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Inspecting a trigger's payload schema
|
|
148
|
+
|
|
149
|
+
Before writing your handler, check exactly what fields the `data` object will contain:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
yantra trigger show AIRTABLE_RECORD_CREATED_TRIGGER
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
The `payloadSchema` field describes every property the trigger will deliver.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Next steps
|
|
160
|
+
|
|
161
|
+
- [Managing Connector Triggers](managing-connector-triggers) — list, enable, disable, and delete instances
|
|
162
|
+
- [Creating Connector Triggers](creating-connector-triggers) — set up trigger instances
|