@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.
Files changed (140) hide show
  1. package/lib/components/HelpCenterFooter.d.ts.map +1 -1
  2. package/lib/components/HelpCenterFooter.js +44 -12
  3. package/lib/components/HelpCenterFooter.js.map +1 -1
  4. package/lib/components/HelpCenterHeader.d.ts +5 -1
  5. package/lib/components/HelpCenterHeader.d.ts.map +1 -1
  6. package/lib/components/HelpCenterHeader.js +40 -128
  7. package/lib/components/HelpCenterHeader.js.map +1 -1
  8. package/lib/components/Icons.js +1 -9
  9. package/lib/components/Icons.js.map +1 -1
  10. package/lib/components/PageHero.d.ts +6 -0
  11. package/lib/components/PageHero.d.ts.map +1 -1
  12. package/lib/components/PageHero.js +35 -39
  13. package/lib/components/PageHero.js.map +1 -1
  14. package/lib/components/SearchBar.d.ts +4 -0
  15. package/lib/components/SearchBar.d.ts.map +1 -1
  16. package/lib/components/SearchBar.js +56 -95
  17. package/lib/components/SearchBar.js.map +1 -1
  18. package/lib/components/SidebarSearch.d.ts.map +1 -1
  19. package/lib/components/SidebarSearch.js +6 -6
  20. package/lib/components/SidebarSearch.js.map +1 -1
  21. package/lib/components/navbar/index.d.ts.map +1 -1
  22. package/lib/components/navbar/index.js +38 -7
  23. package/lib/components/navbar/index.js.map +1 -1
  24. package/lib/compute.d.ts +1 -0
  25. package/lib/compute.d.ts.map +1 -1
  26. package/lib/compute.js +9 -0
  27. package/lib/compute.js.map +1 -1
  28. package/lib/config.d.ts +6 -0
  29. package/lib/config.d.ts.map +1 -1
  30. package/lib/config.js +66 -0
  31. package/lib/config.js.map +1 -0
  32. package/lib/pages/About/index.d.ts +1 -1
  33. package/lib/pages/About/index.d.ts.map +1 -1
  34. package/lib/pages/About/index.js +54 -55
  35. package/lib/pages/About/index.js.map +1 -1
  36. package/lib/pages/Blog/index.d.ts.map +1 -1
  37. package/lib/pages/Blog/index.js +26 -17
  38. package/lib/pages/Blog/index.js.map +1 -1
  39. package/lib/pages/BlogPost/index.d.ts.map +1 -1
  40. package/lib/pages/BlogPost/index.js +5 -5
  41. package/lib/pages/BlogPost/index.js.map +1 -1
  42. package/lib/pages/CategoryCollection/index.d.ts.map +1 -1
  43. package/lib/pages/CategoryCollection/index.js +54 -51
  44. package/lib/pages/CategoryCollection/index.js.map +1 -1
  45. package/lib/pages/Contact/index.d.ts.map +1 -1
  46. package/lib/pages/Contact/index.js +96 -14
  47. package/lib/pages/Contact/index.js.map +1 -1
  48. package/lib/pages/Feedback/index.d.ts +3 -0
  49. package/lib/pages/Feedback/index.d.ts.map +1 -0
  50. package/lib/pages/Feedback/index.js +261 -0
  51. package/lib/pages/Feedback/index.js.map +1 -0
  52. package/lib/pages/GetStarted/components/ExampleCard.d.ts.map +1 -1
  53. package/lib/pages/GetStarted/components/GetStartedHero.d.ts.map +1 -1
  54. package/lib/pages/GetStarted/components/TipCard.d.ts.map +1 -1
  55. package/lib/pages/GetStarted/index.d.ts +1 -1
  56. package/lib/pages/GetStarted/index.d.ts.map +1 -1
  57. package/lib/pages/GetStarted/index.js +129 -332
  58. package/lib/pages/GetStarted/index.js.map +1 -1
  59. package/lib/pages/HelpCenter/components/BookStack.d.ts.map +1 -1
  60. package/lib/pages/HelpCenter/components/HelpCategoryCard.d.ts.map +1 -1
  61. package/lib/pages/HelpCenter/components/HelpCategoryCard.js +54 -132
  62. package/lib/pages/HelpCenter/components/HelpCategoryCard.js.map +1 -1
  63. package/lib/pages/HelpCenter/components/PopularArticle.d.ts.map +1 -1
  64. package/lib/pages/HelpCenter/components/PopularArticle.js +21 -26
  65. package/lib/pages/HelpCenter/components/PopularArticle.js.map +1 -1
  66. package/lib/pages/HelpCenter/index.d.ts.map +1 -1
  67. package/lib/pages/HelpCenter/index.js +85 -223
  68. package/lib/pages/HelpCenter/index.js.map +1 -1
  69. package/lib/pages/HelpCenter/mockData.js +1 -19
  70. package/lib/pages/HelpCenter/mockData.js.map +1 -1
  71. package/lib/pages/LandingPage/components/ArticleCard.d.ts.map +1 -1
  72. package/lib/pages/LandingPage/components/ArticleCard.js +22 -28
  73. package/lib/pages/LandingPage/components/ArticleCard.js.map +1 -1
  74. package/lib/pages/LandingPage/components/CategoriesSection.d.ts.map +1 -1
  75. package/lib/pages/LandingPage/components/CategoriesSection.js +11 -15
  76. package/lib/pages/LandingPage/components/CategoriesSection.js.map +1 -1
  77. package/lib/pages/LandingPage/components/CategoryCard.d.ts.map +1 -1
  78. package/lib/pages/LandingPage/components/CategoryCard.js +23 -32
  79. package/lib/pages/LandingPage/components/CategoryCard.js.map +1 -1
  80. package/lib/pages/LandingPage/components/FeaturedSection.d.ts.map +1 -1
  81. package/lib/pages/LandingPage/components/FeaturedSection.js +10 -15
  82. package/lib/pages/LandingPage/components/FeaturedSection.js.map +1 -1
  83. package/lib/pages/LandingPage/components/HeroSection.d.ts +4 -0
  84. package/lib/pages/LandingPage/components/HeroSection.d.ts.map +1 -1
  85. package/lib/pages/LandingPage/components/HeroSection.js +53 -108
  86. package/lib/pages/LandingPage/components/HeroSection.js.map +1 -1
  87. package/lib/pages/LandingPage/components/ResourceCard.d.ts +0 -1
  88. package/lib/pages/LandingPage/components/ResourceCard.d.ts.map +1 -1
  89. package/lib/pages/LandingPage/components/ResourceCard.js +16 -23
  90. package/lib/pages/LandingPage/components/ResourceCard.js.map +1 -1
  91. package/lib/pages/LandingPage/components/ResourcesSection.d.ts +0 -1
  92. package/lib/pages/LandingPage/components/ResourcesSection.d.ts.map +1 -1
  93. package/lib/pages/LandingPage/components/ResourcesSection.js +10 -16
  94. package/lib/pages/LandingPage/components/ResourcesSection.js.map +1 -1
  95. package/lib/pages/LandingPage/index.d.ts.map +1 -1
  96. package/lib/pages/LandingPage/index.js +122 -236
  97. package/lib/pages/LandingPage/index.js.map +1 -1
  98. package/lib/pages/Markdown/MarkdownPageLayout.d.ts.map +1 -1
  99. package/lib/pages/Markdown/MarkdownPageLayout.js +10 -10
  100. package/lib/pages/Markdown/MarkdownPageLayout.js.map +1 -1
  101. package/lib/pages/ReleaseNotes/index.d.ts.map +1 -1
  102. package/lib/pages/ReleaseNotes/index.js +14 -11
  103. package/lib/pages/ReleaseNotes/index.js.map +1 -1
  104. package/lib/pages/StatusPage/index.d.ts.map +1 -1
  105. package/lib/pages/StatusPage/index.js +17 -12
  106. package/lib/pages/StatusPage/index.js.map +1 -1
  107. package/lib/routes.json +11 -0
  108. package/lib/slot-fill/LogoFill.js +1 -1
  109. package/lib/slot-fill/LogoFill.js.map +1 -1
  110. package/lib/templates/content/account-management/account-setup.md +3 -3
  111. package/lib/templates/content/account-management/delete-account.md +3 -3
  112. package/lib/templates/content/connectors/connector-triggers.md +76 -0
  113. package/lib/templates/content/connectors/creating-connector-triggers.md +121 -0
  114. package/lib/templates/content/connectors/managing-connector-triggers.md +125 -0
  115. package/lib/templates/content/connectors/subscribing-to-connector-events.md +162 -0
  116. package/lib/templates/content/content-manifest.json +194 -0
  117. package/lib/templates/content/data-privacy/privacy-policy.md +4 -4
  118. package/lib/templates/content/data-subject-privacy/data-access.md +1 -1
  119. package/lib/templates/content/data-subject-privacy/data-portability.md +1 -1
  120. package/lib/templates/content/data-subject-privacy/privacy-requests.md +3 -3
  121. package/lib/templates/content/getting-started/getting-started-guide.md +2 -2
  122. package/lib/templates/content/product-features/ai-models.md +1 -1
  123. package/lib/templates/content/scope-api/api-overview.md +2 -2
  124. package/lib/templates/content/security-compliance/compliance.md +1 -1
  125. package/lib/templates/content/security-compliance/security-overview.md +2 -2
  126. package/lib/templates/content/student-hub/student-overview.md +1 -1
  127. package/lib/templates/content/subscription-billing/billing-overview.md +2 -2
  128. package/lib/templates/content/subscription-billing/billing-support.md +8 -8
  129. package/lib/templates/content/subscription-billing/enterprise-pricing.md +1 -1
  130. package/lib/templates/content/subscription-billing/invoice-management.md +2 -2
  131. package/lib/templates/content/subscription-billing/promotional-offers.md +3 -3
  132. package/lib/templates/content/subscription-billing/refund-policy.md +2 -2
  133. package/lib/templates/content/subscription-billing/tax-information.md +3 -3
  134. package/lib/templates/content/technical-questions/api-technical.md +1 -1
  135. package/lib/templates/content/troubleshooting/common-issues.md +2 -2
  136. package/lib/utils/sendContactEmail.d.ts +18 -0
  137. package/lib/utils/sendContactEmail.d.ts.map +1 -0
  138. package/lib/utils/sendContactEmail.js +38 -0
  139. package/lib/utils/sendContactEmail.js.map +1 -0
  140. 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 {Badge}from'@admin-layout/tailwind-ui/shardui/badge.js';import {Icons}from'../../components/Icons.js';const SYSTEMS = [{
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-border/60 border-emerald-500/20 bg-emerald-500/5",
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-emerald-500"
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/60",
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: [jsx(Icons.MdCheckCircleIcon, {
63
- className: "h-5 w-5 text-emerald-500"
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: [jsxs("span", {
71
- className: "text-sm text-muted-foreground",
72
- children: [system.uptime, " uptime"]
73
- }), jsx(Badge, {
74
- variant: "secondary",
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":"mRAMA,MAAM,OAAO,GAAG,CAAA;MACV,EAAA,KAAM;QACN,EAAI,aAAa;QACjB,EAAI;;MAEJ,EAAA,WAAM;EACV,MAAA,EAAA,aAAA;AAEF,EAAM,MAAA,EAAA;AACF,CAAA,EAAA;AA6CJ,EAAE,IAAA,EAAA,cAAA;AAEF,EAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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-[#F9FBFF]' : titleColor || 'text-gray-900'}`,
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,gBAAA,GAAA,UAAA,IAAA,eAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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.ai](https://yantra.ai) and click **Get Started**.
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.ai**. Click the verification link to activate your account.
20
+ Check your inbox for a verification email from **noreply@yantra.app**. Click the verification link to activate your account.
21
21
 
22
- > **Didn't receive the email?** Check your spam folder. If it's not there, click "Resend verification" on the login page.
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
- > **This action is irreversible.** Once deleted, your data cannot be recovered.
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
- > **Changed your mind?** You have 30 days to contact support@yantra.ai to cancel the deletion and restore your account.
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 enterprise@yantra.ai for assisted deletion with compliance documentation.
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