@epilot/sdk 2.8.0-rc.0 → 2.8.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 (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -1
  3. package/definitions/automation.json +120 -0
  4. package/definitions/blueprint-manifest-runtime.json +1 -1
  5. package/definitions/blueprint-manifest.json +744 -20
  6. package/definitions/customer-portal-runtime.json +1 -1
  7. package/definitions/customer-portal.json +317 -26
  8. package/definitions/design.json +51 -1
  9. package/definitions/event-catalog-runtime.json +1 -1
  10. package/definitions/event-catalog.json +168 -12
  11. package/definitions/file-runtime.json +1 -1
  12. package/definitions/file.json +152 -4
  13. package/definitions/integration-toolkit-runtime.json +1 -1
  14. package/definitions/integration-toolkit.json +782 -13
  15. package/definitions/notes-runtime.json +1 -1
  16. package/definitions/notes.json +123 -1
  17. package/definitions/pricing.json +224 -406
  18. package/definitions/targeting-runtime.json +1 -1
  19. package/definitions/targeting.json +257 -7
  20. package/definitions/webhooks.json +31 -0
  21. package/dist/README-46VYEGGW.js +7 -0
  22. package/dist/README-IVBISSWB.cjs +7 -0
  23. package/dist/{_index-YTOJUFGD.js → _index-5FB6F5YY.js} +0 -3
  24. package/dist/{_index-HTUXYSTD.cjs → _index-DB2VV4PQ.cjs} +1 -4
  25. package/dist/apis/access-token.cjs +6 -6
  26. package/dist/apis/access-token.js +1 -1
  27. package/dist/apis/address-suggestions.cjs +6 -6
  28. package/dist/apis/address-suggestions.js +1 -1
  29. package/dist/apis/address.cjs +6 -6
  30. package/dist/apis/address.js +1 -1
  31. package/dist/apis/ai-agents.cjs +6 -6
  32. package/dist/apis/ai-agents.js +1 -1
  33. package/dist/apis/app.cjs +6 -6
  34. package/dist/apis/app.js +1 -1
  35. package/dist/apis/audit-logs.cjs +6 -6
  36. package/dist/apis/audit-logs.js +1 -1
  37. package/dist/apis/automation.cjs +6 -6
  38. package/dist/apis/automation.d.cts +2 -2
  39. package/dist/apis/automation.d.ts +2 -2
  40. package/dist/apis/automation.js +1 -1
  41. package/dist/apis/billing.cjs +6 -6
  42. package/dist/apis/billing.js +1 -1
  43. package/dist/apis/blueprint-manifest.cjs +8 -8
  44. package/dist/apis/blueprint-manifest.d.cts +2 -2
  45. package/dist/apis/blueprint-manifest.d.ts +2 -2
  46. package/dist/apis/blueprint-manifest.js +2 -2
  47. package/dist/apis/calendar.cjs +6 -6
  48. package/dist/apis/calendar.js +1 -1
  49. package/dist/apis/configuration-hub.cjs +6 -6
  50. package/dist/apis/configuration-hub.js +1 -1
  51. package/dist/apis/consent.cjs +6 -6
  52. package/dist/apis/consent.js +1 -1
  53. package/dist/apis/customer-portal.cjs +8 -8
  54. package/dist/apis/customer-portal.d.cts +2 -2
  55. package/dist/apis/customer-portal.d.ts +2 -2
  56. package/dist/apis/customer-portal.js +2 -2
  57. package/dist/apis/dashboard.cjs +6 -6
  58. package/dist/apis/dashboard.js +1 -1
  59. package/dist/apis/data-governance.cjs +6 -6
  60. package/dist/apis/data-governance.js +1 -1
  61. package/dist/apis/deduplication.cjs +6 -6
  62. package/dist/apis/deduplication.js +1 -1
  63. package/dist/apis/design.cjs +6 -6
  64. package/dist/apis/design.d.cts +2 -2
  65. package/dist/apis/design.d.ts +2 -2
  66. package/dist/apis/design.js +1 -1
  67. package/dist/apis/document.cjs +6 -6
  68. package/dist/apis/document.js +1 -1
  69. package/dist/apis/email-settings.cjs +6 -6
  70. package/dist/apis/email-settings.js +1 -1
  71. package/dist/apis/email-template.cjs +6 -6
  72. package/dist/apis/email-template.js +1 -1
  73. package/dist/apis/entity-mapping.cjs +6 -6
  74. package/dist/apis/entity-mapping.js +1 -1
  75. package/dist/apis/entity.cjs +6 -6
  76. package/dist/apis/entity.js +1 -1
  77. package/dist/apis/environments.cjs +6 -6
  78. package/dist/apis/environments.js +1 -1
  79. package/dist/apis/event-catalog.cjs +8 -8
  80. package/dist/apis/event-catalog.d.cts +2 -2
  81. package/dist/apis/event-catalog.d.ts +2 -2
  82. package/dist/apis/event-catalog.js +2 -2
  83. package/dist/apis/file.cjs +8 -8
  84. package/dist/apis/file.d.cts +2 -2
  85. package/dist/apis/file.d.ts +2 -2
  86. package/dist/apis/file.js +2 -2
  87. package/dist/apis/iban.cjs +6 -6
  88. package/dist/apis/iban.js +1 -1
  89. package/dist/apis/integration-toolkit.cjs +8 -8
  90. package/dist/apis/integration-toolkit.d.cts +2 -2
  91. package/dist/apis/integration-toolkit.d.ts +2 -2
  92. package/dist/apis/integration-toolkit.js +2 -2
  93. package/dist/apis/journey.cjs +6 -6
  94. package/dist/apis/journey.js +1 -1
  95. package/dist/apis/kanban.cjs +6 -6
  96. package/dist/apis/kanban.js +1 -1
  97. package/dist/apis/message.cjs +6 -6
  98. package/dist/apis/message.js +1 -1
  99. package/dist/apis/metering.cjs +6 -6
  100. package/dist/apis/metering.js +1 -1
  101. package/dist/apis/notes.cjs +8 -8
  102. package/dist/apis/notes.d.cts +2 -2
  103. package/dist/apis/notes.d.ts +2 -2
  104. package/dist/apis/notes.js +2 -2
  105. package/dist/apis/notification.cjs +6 -6
  106. package/dist/apis/notification.js +1 -1
  107. package/dist/apis/organization.cjs +6 -6
  108. package/dist/apis/organization.js +1 -1
  109. package/dist/apis/partner-directory.cjs +6 -6
  110. package/dist/apis/partner-directory.js +1 -1
  111. package/dist/apis/permissions.cjs +6 -6
  112. package/dist/apis/permissions.js +1 -1
  113. package/dist/apis/pricing-tier.cjs +6 -6
  114. package/dist/apis/pricing-tier.js +1 -1
  115. package/dist/apis/pricing.cjs +6 -6
  116. package/dist/apis/pricing.d.cts +2 -2
  117. package/dist/apis/pricing.d.ts +2 -2
  118. package/dist/apis/pricing.js +1 -1
  119. package/dist/apis/purpose.cjs +6 -6
  120. package/dist/apis/purpose.js +1 -1
  121. package/dist/apis/query.cjs +6 -6
  122. package/dist/apis/query.js +1 -1
  123. package/dist/apis/sandbox.cjs +6 -6
  124. package/dist/apis/sandbox.js +1 -1
  125. package/dist/apis/sharing.cjs +6 -6
  126. package/dist/apis/sharing.js +1 -1
  127. package/dist/apis/submission.cjs +6 -6
  128. package/dist/apis/submission.js +1 -1
  129. package/dist/apis/target.cjs +6 -6
  130. package/dist/apis/target.js +1 -1
  131. package/dist/apis/targeting.cjs +8 -8
  132. package/dist/apis/targeting.d.cts +2 -2
  133. package/dist/apis/targeting.d.ts +2 -2
  134. package/dist/apis/targeting.js +2 -2
  135. package/dist/apis/template-variables.cjs +6 -6
  136. package/dist/apis/template-variables.js +1 -1
  137. package/dist/apis/user.cjs +6 -6
  138. package/dist/apis/user.js +1 -1
  139. package/dist/apis/validation-rules.cjs +6 -6
  140. package/dist/apis/validation-rules.js +1 -1
  141. package/dist/apis/webhooks.cjs +6 -6
  142. package/dist/apis/webhooks.d.cts +2 -2
  143. package/dist/apis/webhooks.d.ts +2 -2
  144. package/dist/apis/webhooks.js +1 -1
  145. package/dist/apis/workflow-definition.cjs +6 -6
  146. package/dist/apis/workflow-definition.js +1 -1
  147. package/dist/apis/workflow.cjs +6 -6
  148. package/dist/apis/workflow.js +1 -1
  149. package/dist/automation-S6NFS5KU.cjs +7 -0
  150. package/dist/automation-W75XZG7B.js +7 -0
  151. package/dist/{automation.d-Du6-uiz5.d.cts → automation.d-DS_YXDE8.d.cts} +300 -1
  152. package/dist/{automation.d-Du6-uiz5.d.ts → automation.d-DS_YXDE8.d.ts} +300 -1
  153. package/dist/blueprint-manifest-6DEYW5MW.js +7 -0
  154. package/dist/blueprint-manifest-GCV7H74X.cjs +7 -0
  155. package/dist/{blueprint-manifest-runtime-QN2IECSA.cjs → blueprint-manifest-runtime-EIDOROIQ.cjs} +2 -2
  156. package/dist/{blueprint-manifest-runtime-5UN52LW5.js → blueprint-manifest-runtime-FRLU3ZSF.js} +1 -1
  157. package/dist/{blueprint-manifest.d-BPyzoR0X.d.ts → blueprint-manifest.d-B8yDxagC.d.cts} +572 -6
  158. package/dist/{blueprint-manifest.d-BPyzoR0X.d.cts → blueprint-manifest.d-B8yDxagC.d.ts} +572 -6
  159. package/dist/chunk-4M5V6BIT.cjs +14 -0
  160. package/dist/chunk-4YBWMDFP.js +14 -0
  161. package/dist/{chunk-KJPOUJBU.cjs → chunk-5ZXGKLB6.cjs} +1 -1
  162. package/dist/{chunk-PTEJYAYJ.js → chunk-774ASAAH.js} +1 -1
  163. package/dist/{chunk-WM74R3BD.js → chunk-7V7ECXTZ.js} +1 -1
  164. package/dist/{chunk-54KWFSCM.js → chunk-ALMZO57K.js} +21 -23
  165. package/dist/chunk-FDS727SL.cjs +14 -0
  166. package/dist/{chunk-4FFGRWLS.cjs → chunk-I53TWOTX.cjs} +1 -1
  167. package/dist/chunk-LSPXLT3A.js +14 -0
  168. package/dist/chunk-M4FO2MI4.js +14 -0
  169. package/dist/chunk-MCK2QUSD.cjs +14 -0
  170. package/dist/chunk-NGHCQ2FA.cjs +14 -0
  171. package/dist/chunk-RDVFQOCQ.js +14 -0
  172. package/dist/{chunk-RW5JOHG7.js → chunk-WIQXF7DD.js} +1 -1
  173. package/dist/{chunk-F5Z6I7TF.cjs → chunk-WPBRWQPL.cjs} +21 -23
  174. package/dist/{chunk-M2SSGV7K.cjs → chunk-ZOQUGWQL.cjs} +1 -1
  175. package/dist/customer-portal-4DXHY42V.js +7 -0
  176. package/dist/customer-portal-5OSGSYGF.cjs +7 -0
  177. package/dist/{customer-portal-runtime-IYHJ3RME.cjs → customer-portal-runtime-HA6CPWB4.cjs} +2 -2
  178. package/dist/{customer-portal-runtime-ZYU3WIXY.js → customer-portal-runtime-TDHV2YVY.js} +1 -1
  179. package/dist/{customer-portal.d-CTTCBAZI.d.cts → customer-portal.d-BRwiQehb.d.cts} +763 -31
  180. package/dist/{customer-portal.d-CTTCBAZI.d.ts → customer-portal.d-BRwiQehb.d.ts} +763 -31
  181. package/dist/data-governance-2U5UU4GM.cjs +7 -0
  182. package/dist/data-governance-36Y33JVG.js +7 -0
  183. package/dist/design-DUFBH5ZB.js +7 -0
  184. package/dist/design-W3D3UPGB.cjs +7 -0
  185. package/dist/{design.d-BRre8iLg.d.ts → design.d-DzSDu8cy.d.cts} +41 -3
  186. package/dist/{design.d-BRre8iLg.d.cts → design.d-DzSDu8cy.d.ts} +41 -3
  187. package/dist/event-catalog-3YOQ46ZW.js +7 -0
  188. package/dist/event-catalog-HLWUT7RM.cjs +7 -0
  189. package/dist/{event-catalog-runtime-N262TQ3Y.js → event-catalog-runtime-JUSLF3UR.js} +1 -1
  190. package/dist/{event-catalog-runtime-B2BPKQVG.cjs → event-catalog-runtime-RH7542GL.cjs} +2 -2
  191. package/dist/{event-catalog.d-mQJLSYUo.d.ts → event-catalog.d-CXbUn8T1.d.cts} +199 -36
  192. package/dist/{event-catalog.d-mQJLSYUo.d.cts → event-catalog.d-CXbUn8T1.d.ts} +199 -36
  193. package/dist/file-2MSILSPP.cjs +7 -0
  194. package/dist/file-JVFTT5RZ.js +7 -0
  195. package/dist/file-runtime-7AWKNQU6.cjs +5 -0
  196. package/dist/{file-runtime-BIRMXYRH.js → file-runtime-DKGFS44O.js} +1 -1
  197. package/dist/{file.d-DTlrbI40.d.cts → file.d-BjlMgTwj.d.cts} +218 -5
  198. package/dist/{file.d-DTlrbI40.d.ts → file.d-BjlMgTwj.d.ts} +218 -5
  199. package/dist/index.cjs +27 -35
  200. package/dist/index.d.cts +56 -58
  201. package/dist/index.d.ts +56 -58
  202. package/dist/index.js +16 -24
  203. package/dist/integration-toolkit-27Z3VZBZ.cjs +7 -0
  204. package/dist/integration-toolkit-NRLZZFVS.js +7 -0
  205. package/dist/{integration-toolkit-runtime-YHTU4X5J.cjs → integration-toolkit-runtime-FY7QVFL6.cjs} +2 -2
  206. package/dist/{integration-toolkit-runtime-YR4CIMKH.js → integration-toolkit-runtime-HCJ5QLCR.js} +1 -1
  207. package/dist/{integration-toolkit.d-BstNqiJb.d.cts → integration-toolkit.d-BW9RK5G-.d.cts} +1672 -27
  208. package/dist/{integration-toolkit.d-BstNqiJb.d.ts → integration-toolkit.d-BW9RK5G-.d.ts} +1672 -27
  209. package/dist/js-yaml-DLCVPJ7G.js +0 -0
  210. package/dist/notes-6JESMRLW.js +7 -0
  211. package/dist/notes-SLEUSNP4.cjs +7 -0
  212. package/dist/{notes-runtime-CVNAVKPP.js → notes-runtime-I4SWR3PZ.js} +1 -1
  213. package/dist/notes-runtime-YWTRRNH5.cjs +5 -0
  214. package/dist/{notes.d-BcV_m5fe.d.cts → notes.d-rbcyHfiB.d.cts} +101 -3
  215. package/dist/{notes.d-BcV_m5fe.d.ts → notes.d-rbcyHfiB.d.ts} +101 -3
  216. package/dist/pricing-5Y7TZHMR.js +7 -0
  217. package/dist/pricing-BJUABPHU.cjs +7 -0
  218. package/dist/{pricing.d-BHpMU4KU.d.cts → pricing.d-gPt5L7wp.d.cts} +151 -280
  219. package/dist/{pricing.d-BHpMU4KU.d.ts → pricing.d-gPt5L7wp.d.ts} +151 -280
  220. package/dist/targeting-DAFJBPIZ.cjs +7 -0
  221. package/dist/targeting-TGPCRRI6.js +7 -0
  222. package/dist/{targeting-runtime-M2VSTKFT.js → targeting-runtime-D5YUPZQM.js} +1 -1
  223. package/dist/{targeting-runtime-6JFMP262.cjs → targeting-runtime-MLMOM7CK.cjs} +2 -2
  224. package/dist/{targeting.d-BNmcVsNS.d.cts → targeting.d-DxHQbn7-.d.cts} +197 -3
  225. package/dist/{targeting.d-BNmcVsNS.d.ts → targeting.d-DxHQbn7-.d.ts} +197 -3
  226. package/dist/webhooks-6CUXSTPH.cjs +7 -0
  227. package/dist/webhooks-DTNKNJEN.js +7 -0
  228. package/dist/{webhooks.d-ByePoUWs.d.cts → webhooks.d-DKZOMj1P.d.cts} +37 -0
  229. package/dist/{webhooks.d-ByePoUWs.d.ts → webhooks.d-DKZOMj1P.d.ts} +37 -0
  230. package/docs/automation.md +180 -37
  231. package/docs/blueprint-manifest.md +728 -68
  232. package/docs/customer-portal.md +465 -56
  233. package/docs/data-governance.md +17 -17
  234. package/docs/design.md +80 -3
  235. package/docs/event-catalog.md +126 -13
  236. package/docs/file.md +113 -0
  237. package/docs/integration-toolkit.md +488 -19
  238. package/docs/notes.md +47 -1
  239. package/docs/pricing.md +290 -219
  240. package/docs/targeting.md +158 -4
  241. package/docs/webhooks.md +11 -2
  242. package/package.json +11 -21
  243. package/definitions/focus-pocus-runtime.json +0 -1
  244. package/definitions/focus-pocus.json +0 -757
  245. package/dist/README-37TXN4EL.cjs +0 -7
  246. package/dist/README-Z2WITBOR.js +0 -7
  247. package/dist/apis/focus-pocus.cjs +0 -38
  248. package/dist/apis/focus-pocus.d.cts +0 -18
  249. package/dist/apis/focus-pocus.d.ts +0 -18
  250. package/dist/apis/focus-pocus.js +0 -38
  251. package/dist/automation-BMO7ZFTN.cjs +0 -7
  252. package/dist/automation-MEZTSUR3.js +0 -7
  253. package/dist/blueprint-manifest-DBEY5PPI.js +0 -7
  254. package/dist/blueprint-manifest-IEQ6YBY7.cjs +0 -7
  255. package/dist/chunk-3APTSPY4.js +0 -14
  256. package/dist/chunk-5WNEYQII.cjs +0 -14
  257. package/dist/chunk-A6FYGWQ7.cjs +0 -14
  258. package/dist/chunk-BTTPWE2P.js +0 -14
  259. package/dist/chunk-CBDKPGO5.cjs +0 -14
  260. package/dist/chunk-L544VG3B.cjs +0 -14
  261. package/dist/chunk-O2YVXGPZ.js +0 -14
  262. package/dist/chunk-OCMIXJWC.js +0 -14
  263. package/dist/chunk-OPXGJKZR.cjs +0 -14
  264. package/dist/chunk-P42Q6HOW.js +0 -14
  265. package/dist/customer-portal-DR6XFCTQ.js +0 -7
  266. package/dist/customer-portal-PNFBVIAH.cjs +0 -7
  267. package/dist/data-governance-QYFHBCNB.cjs +0 -7
  268. package/dist/data-governance-YS2NA6W4.js +0 -7
  269. package/dist/design-EWZQZ5KX.js +0 -7
  270. package/dist/design-MUUYXB2J.cjs +0 -7
  271. package/dist/event-catalog-37B6JC7G.js +0 -7
  272. package/dist/event-catalog-5JBHJJ2I.cjs +0 -7
  273. package/dist/file-P2FUUER2.js +0 -7
  274. package/dist/file-XTY74SIX.cjs +0 -7
  275. package/dist/file-runtime-24S3QPA7.cjs +0 -5
  276. package/dist/focus-pocus-JGXH42OF.cjs +0 -7
  277. package/dist/focus-pocus-XVDVUYL6.js +0 -7
  278. package/dist/focus-pocus-runtime-QXBBYVX7.js +0 -5
  279. package/dist/focus-pocus-runtime-X6GQ3WI4.cjs +0 -5
  280. package/dist/focus-pocus.d-BRFGe53G.d.cts +0 -489
  281. package/dist/focus-pocus.d-BRFGe53G.d.ts +0 -489
  282. package/dist/integration-toolkit-3I3IPVFN.cjs +0 -7
  283. package/dist/integration-toolkit-XAFQXNQY.js +0 -7
  284. package/dist/notes-K2IIFCX3.cjs +0 -7
  285. package/dist/notes-Q7JGS7O3.js +0 -7
  286. package/dist/notes-runtime-E3YYF74V.cjs +0 -5
  287. package/dist/pricing-R5ENSVPQ.cjs +0 -7
  288. package/dist/pricing-X27CCRI6.js +0 -7
  289. package/dist/targeting-74BV7F7H.cjs +0 -7
  290. package/dist/targeting-W5EKJYR2.js +0 -7
  291. package/dist/webhooks-NZHJBT64.js +0 -7
  292. package/dist/webhooks-SK2STDKR.cjs +0 -7
  293. package/docs/focus-pocus.md +0 -460
@@ -1,7 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
-
3
- // src/docs/webhooks.json
4
- var webhooks_default = '# Webhooks\n\n- **Base URL:** `https://webhooks.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/webhooks](https://docs.epilot.io/api/webhooks)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.webhooks.getPublicKey(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/webhooks\'\n\nconst webhooksClient = getClient()\nauthorize(webhooksClient, () => \'<token>\')\nconst { data } = await webhooksClient.getPublicKey(...)\n```\n\n## Operations\n\n**webhooks**\n- [`getPublicKey`](#getpublickey)\n- [`getConfiguredEvents`](#getconfiguredevents)\n- [`getConfigs`](#getconfigs)\n- [`createConfig`](#createconfig)\n- [`getConfig`](#getconfig)\n- [`updateConfig`](#updateconfig)\n- [`deleteConfig`](#deleteconfig)\n- [`testOAuth`](#testoauth)\n- [`triggerWebhook`](#triggerwebhook)\n- [`batchReplayEvents`](#batchreplayevents)\n- [`getEventById`](#geteventbyid)\n- [`replayEvent`](#replayevent)\n- [`getWebhookExample`](#getwebhookexample)\n\n**Events**\n- [`getWebhookEventsV2`](#getwebhookeventsv2)\n\n**Schemas**\n- [`PublicKeyResponse`](#publickeyresponse)\n- [`SearchOptions`](#searchoptions)\n- [`EventListResponse`](#eventlistresponse)\n- [`HttpMethod`](#httpmethod)\n- [`AuthType`](#authtype)\n- [`Filter`](#filter)\n- [`WebhookCondition`](#webhookcondition)\n- [`WebhookConditionGroup`](#webhookconditiongroup)\n- [`Auth`](#auth)\n- [`BasicAuthConfig`](#basicauthconfig)\n- [`OAuthConfig`](#oauthconfig)\n- [`ApiKeyConfig`](#apikeyconfig)\n- [`WebhookConfig`](#webhookconfig)\n- [`EventConfigResp`](#eventconfigresp)\n- [`EventConfigEntry`](#eventconfigentry)\n- [`ErrorResp`](#errorresp)\n- [`TriggerWebhookResp`](#triggerwebhookresp)\n- [`PayloadConfiguration`](#payloadconfiguration)\n- [`CustomHeader`](#customheader)\n- [`CustomOAuthParameter`](#customoauthparameter)\n- [`Metadata`](#metadata)\n- [`ExecutionPayload`](#executionpayload)\n- [`WebhookEvent`](#webhookevent)\n- [`ExampleRequest`](#examplerequest)\n- [`ExampleResponse`](#exampleresponse)\n- [`TestOAuthResponse`](#testoauthresponse)\n- [`BatchReplayRequest`](#batchreplayrequest)\n\n### `getPublicKey`\n\nReturns the platform-level Ed25519 public key used to verify\nasymmetric (v1a) webhook signatures. This endpoint is unauthenticated since the public key is not a secret, but the orgId parameter is requ\n\n`GET /v1/webhooks/.well-known/public-key`\n\n```ts\nconst { data } = await client.getPublicKey({\n orgId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "public_key": "-----BEGIN PUBLIC KEY-----\\nMCowBQYDK2VwAyEA...\\n-----END PUBLIC KEY-----\\n",\n "algorithm": "ed25519",\n "issuer": "epilot"\n}\n```\n\n</details>\n\n---\n\n### `getConfiguredEvents`\n\nRetrieve events that can trigger webhooks\n\n`GET /v1/webhooks/configured-events`\n\n```ts\nconst { data } = await client.getConfiguredEvents()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "eventName": "customer_request_created",\n "eventLabel": "Customer Request Created"\n }\n]\n```\n\n</details>\n\n---\n\n### `getConfigs`\n\nSearch Webhook Client Configs\n\n`GET /v1/webhooks/configs`\n\n```ts\nconst { data } = await client.getConfigs({\n eventName: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "eventName": "CustomerRequest_Created",\n "url": "https://my-partner-service.api.com",\n "httpMethod": "POST",\n "enabled": true,\n "auth": {\n "authType": "BASIC",\n "basicAuthConfig": {\n "username": "secretUsername",\n "password": "secret7825@!"\n }\n },\n "filter": {\n "keyToFilter": "customer_request.productId",\n "supportedValues": ["2324245", "5253642"]\n }\n }\n]\n```\n\n</details>\n\n---\n\n### `createConfig`\n\nCreate Webhook Client Config\n\n`POST /v1/webhooks/configs`\n\n```ts\nconst { data } = await client.createConfig(\n null,\n {\n eventName: \'CustomerRequest_Created\',\n url: \'https://my-partner-service.api.com\',\n httpMethod: \'POST\',\n enabled: true,\n auth: {\n authType: \'BASIC\',\n basicAuthConfig: {\n username: \'secretUsername\',\n password: \'secret7825@!\'\n }\n },\n filter: {\n keyToFilter: \'customer_request.productId\',\n supportedValues: [\'2324245\', \'5253642\']\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "eventName": "CustomerRequest_Created",\n "url": "https://my-partner-service.api.com",\n "httpMethod": "POST",\n "enabled": true,\n "auth": {\n "authType": "BASIC",\n "basicAuthConfig": {\n "username": "secretUsername",\n "password": "secret7825@!"\n }\n },\n "filter": {\n "keyToFilter": "customer_request.productId",\n "supportedValues": ["2324245", "5253642"]\n }\n}\n```\n\n</details>\n\n---\n\n### `getConfig`\n\nGet webhook config by id\n\n`GET /v1/webhooks/configs/{configId}`\n\n```ts\nconst { data } = await client.getConfig({\n configId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "eventName": "CustomerRequest_Created",\n "url": "https://my-partner-service.api.com",\n "httpMethod": "POST",\n "enabled": true,\n "auth": {\n "authType": "BASIC",\n "basicAuthConfig": {\n "username": "secretUsername",\n "password": "secret7825@!"\n }\n },\n "filter": {\n "keyToFilter": "customer_request.productId",\n "supportedValues": ["2324245", "5253642"]\n }\n}\n```\n\n</details>\n\n---\n\n### `updateConfig`\n\nUpdate Webhook Client Config\n\n`PUT /v1/webhooks/configs/{configId}`\n\n```ts\nconst { data } = await client.updateConfig(\n {\n configId: \'example\',\n },\n {\n eventName: \'CustomerRequest_Created\',\n url: \'https://my-partner-service.api.com\',\n httpMethod: \'POST\',\n enabled: true,\n auth: {\n authType: \'BASIC\',\n basicAuthConfig: {\n username: \'secretUsername\',\n password: \'secret7825@!\'\n }\n },\n filter: {\n keyToFilter: \'customer_request.productId\',\n supportedValues: [\'2324245\', \'5253642\']\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "eventName": "CustomerRequest_Created",\n "url": "https://my-partner-service.api.com",\n "httpMethod": "POST",\n "enabled": true,\n "auth": {\n "authType": "BASIC",\n "basicAuthConfig": {\n "username": "secretUsername",\n "password": "secret7825@!"\n }\n },\n "filter": {\n "keyToFilter": "customer_request.productId",\n "supportedValues": ["2324245", "5253642"]\n }\n}\n```\n\n</details>\n\n---\n\n### `deleteConfig`\n\nDelete Webhook Client Config\n\n`DELETE /v1/webhooks/configs/{configId}`\n\n```ts\nconst { data } = await client.deleteConfig({\n configId: \'example\',\n})\n```\n\n---\n\n### `testOAuth`\n\nTest OAuth connection\n\n`POST /v1/webhooks/configs/{configId}/test-oauth`\n\n```ts\nconst { data } = await client.testOAuth({\n configId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "expires_in": 3600,\n "token_type": "Bearer",\n "message": "OAuth token exchange successful"\n}\n```\n\n</details>\n\n---\n\n### `triggerWebhook`\n\ntriggers a webhook event either async or sync\n\n`POST /v1/webhooks/configs/{configId}/trigger`\n\n```ts\nconst { data } = await client.triggerWebhook(\n {\n sync: true,\n configId: \'example\',\n },\n {\n metadata: {\n action: \'Manual triggered by user with id 123456\',\n origin: \'string\',\n creation_timestamp: \'string\',\n webhook_id: \'string\',\n webhook_name: \'string\',\n automation_name: \'string\',\n organization_id: \'string\',\n user_id: \'string\',\n correlation_id: \'string\',\n execution_id: \'string\',\n action_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "status_code": "string",\n "message": "string",\n "body": {},\n "code": "string",\n "status": "succeeded",\n "start_date": "string",\n "end_date": "string",\n "event_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `batchReplayEvents`\n\nReplay a batch of webhook events\n\n`POST /v1/webhooks/configs/{configId}/events/replay-batch`\n\n```ts\nconst { data } = await client.batchReplayEvents(\n {\n configId: \'example\',\n },\n {\n eventIds: [\'2f1b7cf8-ff55-4359-966f-e56f39a52c94\', \'48c984bf-466b-470b-b743-d07cea168243\']\n },\n)\n```\n\n---\n\n### `getEventById`\n\nGet a webhook event by its id\n\n`GET /v1/webhooks/configs/{configId}/events/{eventId}`\n\n```ts\nconst { data } = await client.getEventById({\n configId: \'example\',\n eventId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_id": "string",\n "org_id": "string",\n "webhook_config_id": "string",\n "url": "string",\n "created_at": "2021-04-27T12:01:13.000Z",\n "event_name": "string",\n "http_response": {\n "status_code": 0,\n "message": "string",\n "body": {},\n "code": "string"\n },\n "metadata": {\n "action": "Manual triggered by user with id 123456",\n "origin": "string",\n "creation_timestamp": "string",\n "webhook_id": "string",\n "webhook_name": "string",\n "automation_name": "string",\n "organization_id": "string",\n "user_id": "string",\n "correlation_id": "string",\n "execution_id": "string",\n "action_id": "string"\n },\n "status": "succeeded",\n "http_method": "GET",\n "payload": "string"\n}\n```\n\n</details>\n\n---\n\n### `replayEvent`\n\nReplay a webhook event\n\n`POST /v1/webhooks/configs/{configId}/events/{eventId}/replay`\n\n```ts\nconst { data } = await client.replayEvent({\n configId: \'example\',\n eventId: \'example\',\n})\n```\n\n---\n\n### `getWebhookExample`\n\nGenerate an example payload for a webhook configuration based on trigger type\n\n`POST /v1/webhooks/configs/{configId}/example`\n\n```ts\nconst { data } = await client.getWebhookExample(\n {\n configId: \'example\',\n },\n {\n automation_id: \'automation_123\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "metadata": {\n "action": "Manual triggered by user with id 123456",\n "origin": "string",\n "creation_timestamp": "string",\n "webhook_id": "string",\n "webhook_name": "string",\n "automation_name": "string",\n "organization_id": "string",\n "user_id": "string",\n "correlation_id": "string",\n "execution_id": "string",\n "action_id": "string"\n },\n "entity": {},\n "relations": [\n {}\n ]\n}\n```\n\n</details>\n\n---\n\n### `getWebhookEventsV2`\n\nList webhook events and filter them by status, timestamp, etc.\n\n`POST /v2/webhooks/configs/{configId}/events`\n\n```ts\nconst { data } = await client.getWebhookEventsV2(\n {\n configId: \'example\',\n },\n {\n limit: 25,\n cursor: {\n created_at: \'2025-10-31T12:34:56Z\',\n event_id: \'evt_1234567890abcdef\'\n },\n timestamp: {\n from: \'2025-10-01T00:00:00Z\',\n to: \'2025-10-31T23:59:59Z\'\n },\n event_id: \'evt_1234567890abcdef\',\n status: \'succeeded\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "event_id": "string",\n "org_id": "string",\n "webhook_config_id": "string",\n "url": "string",\n "created_at": "2021-04-27T12:01:13.000Z",\n "event_name": "string",\n "http_response": {\n "status_code": 0,\n "message": "string",\n "body": {},\n "code": "string"\n },\n "metadata": {\n "action": "Manual triggered by user with id 123456",\n "origin": "string",\n "creation_timestamp": "string",\n "webhook_id": "string",\n "webhook_name": "string",\n "automation_name": "string",\n "organization_id": "string",\n "user_id": "string",\n "correlation_id": "string",\n "execution_id": "string",\n "action_id": "string"\n },\n "status": "succeeded",\n "http_method": "GET",\n "payload": "string"\n }\n ],\n "next_cursor": {\n "created_at": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `PublicKeyResponse`\n\n```ts\ntype PublicKeyResponse = {\n public_key: string\n algorithm: string\n issuer?: string\n}\n```\n\n### `SearchOptions`\n\n```ts\ntype SearchOptions = {\n limit?: number\n cursor?: {\n created_at?: string // date-time\n event_id?: string\n }\n timestamp?: {\n from?: string // date-time\n to?: string // date-time\n }\n event_id?: string\n status?: "succeeded" | "failed" | "skipped"\n}\n```\n\n### `EventListResponse`\n\n```ts\ntype EventListResponse = {\n data?: Array<{\n event_id: string\n org_id: string\n webhook_config_id: string\n url?: string\n created_at?: string\n event_name?: string\n http_response?: {\n status_code?: { ... }\n message?: { ... }\n body?: { ... }\n code?: { ... }\n }\n metadata?: {\n action?: { ... }\n origin?: { ... }\n creation_timestamp?: { ... }\n webhook_id?: { ... }\n webhook_name?: { ... }\n automation_name?: { ... }\n organization_id: { ... }\n user_id?: { ... }\n correlation_id?: { ... }\n execution_id?: { ... }\n action_id?: { ... }\n }\n status?: "succeeded" | "failed" | "in_progress" | "skipped"\n http_method?: "GET" | "POST" | "PUT"\n payload?: string\n }>\n next_cursor?: {\n created_at?: string // date-time\n event_id?: string\n }\n has_more?: boolean\n}\n```\n\n### `HttpMethod`\n\n```ts\ntype HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"\n```\n\n### `AuthType`\n\n```ts\ntype AuthType = "BASIC" | "OAUTH_CLIENT_CREDENTIALS" | "API_KEY" | "NONE"\n```\n\n### `Filter`\n\n```ts\ntype Filter = {\n keyToFilter: string\n supportedValues: string[]\n}\n```\n\n### `WebhookCondition`\n\nA condition that must be met for the webhook to fire.\n\n```ts\ntype WebhookCondition = {\n field: string\n operation: "equals" | "not_equals" | "any_of" | "none_of" | "contains" | "not_contains" | "starts_with" | "ends_with" | "greater_than" | "less_than" | "greater_than_or_equals" | "less_than_or_equals" | "is_empty" | "is_not_empty"\n values?: string[]\n field_type?: "string" | "number" | "boolean" | "date" | "datetime"\n is_array_field?: boolean\n repeatable_item_op?: boolean\n}\n```\n\n### `WebhookConditionGroup`\n\nA group of conditions with a logical operator. Multiple conditions are AND-ed by default.\n\n```ts\ntype WebhookConditionGroup = {\n conditions?: Array<{\n field: string\n operation: "equals" | "not_equals" | "any_of" | "none_of" | "contains" | "not_contains" | "starts_with" | "ends_with" | "greater_than" | "less_than" | "greater_than_or_equals" | "less_than_or_equals" | "is_empty" | "is_not_empty"\n values?: string[]\n field_type?: "string" | "number" | "boolean" | "date" | "datetime"\n is_array_field?: boolean\n repeatable_item_op?: boolean\n }>\n logical_operator?: "AND" | "OR"\n}\n```\n\n### `Auth`\n\n```ts\ntype Auth = {\n authType: "BASIC" | "OAUTH_CLIENT_CREDENTIALS" | "API_KEY" | "NONE"\n basicAuthConfig?: {\n username: string\n password?: string\n passwordIsEnvVar?: boolean\n }\n oauthConfig?: {\n clientId: string\n clientSecret?: string\n clientSecretIsEnvVar?: boolean\n endpoint: string\n httpMethod: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"\n customParameterList?: Array<{\n type: { ... }\n key: { ... }\n value: { ... }\n }>\n }\n apiKeyConfig?: {\n keyName: string\n keyValue?: string\n keyValueIsEnvVar?: boolean\n }\n}\n```\n\n### `BasicAuthConfig`\n\nTo be sent only if authType is BASIC\n\n```ts\ntype BasicAuthConfig = {\n username: string\n password?: string\n passwordIsEnvVar?: boolean\n}\n```\n\n### `OAuthConfig`\n\nTo be sent only if authType is OAUTH_CLIENT_CREDENTIALS\n\n```ts\ntype OAuthConfig = {\n clientId: string\n clientSecret?: string\n clientSecretIsEnvVar?: boolean\n endpoint: string\n httpMethod: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"\n customParameterList?: Array<{\n type: "body" | "query" | "header"\n key: string\n value: string\n }>\n}\n```\n\n### `ApiKeyConfig`\n\nTo be sent only if authType is API_KEY\n\n```ts\ntype ApiKeyConfig = {\n keyName: string\n keyValue?: string\n keyValueIsEnvVar?: boolean\n}\n```\n\n### `WebhookConfig`\n\n```ts\ntype WebhookConfig = {\n id?: string\n name: string\n eventName: string\n url?: string\n creationTime?: string\n updatedTime?: string\n httpMethod?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"\n enabled?: boolean\n auth?: {\n authType: "BASIC" | "OAUTH_CLIENT_CREDENTIALS" | "API_KEY" | "NONE"\n basicAuthConfig?: {\n username: { ... }\n password?: { ... }\n passwordIsEnvVar?: { ... }\n }\n oauthConfig?: {\n clientId: { ... }\n clientSecret?: { ... }\n clientSecretIsEnvVar?: { ... }\n endpoint: { ... }\n httpMethod: { ... }\n customParameterList?: { ... }\n }\n apiKeyConfig?: {\n keyName: { ... }\n keyValue?: { ... }\n keyValueIsEnvVar?: { ... }\n }\n }\n filter?: {\n keyToFilter: string\n supportedValues: string[]\n }\n payloadConfiguration?: {\n hydrate_entity?: boolean\n include_relations?: boolean\n include_activity?: boolean\n include_changed_attributes?: boolean\n apply_changesets?: boolean\n custom_headers?: Record<string, string>\n }\n enableStaticIP?: boolean\n protected?: boolean\n secureProxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n status?: "active" | "inactive" | "incomplete"\n jsonataExpression?: string\n deliveryMode?: "json_base64" | "binary_multipart"\n multipartConfig?: {\n fileFieldName?: string\n fileFieldStrategy?: "single" | "multi"\n fileSource?: string\n extraFields?: Record<string, string>\n }\n filterConditions?: {\n conditions?: Array<{\n field: { ... }\n operation: { ... }\n values?: { ... }\n field_type?: { ... }\n is_array_field?: { ... }\n repeatable_item_op?: { ... }\n }>\n logical_operator?: "AND" | "OR"\n }\n _manifest?: string // uuid[]\n signingSecret?: string\n}\n```\n\n### `EventConfigResp`\n\n```ts\ntype EventConfigResp = Array<{\n eventName?: string\n eventLabel?: string\n}>\n```\n\n### `EventConfigEntry`\n\n```ts\ntype EventConfigEntry = {\n eventName?: string\n eventLabel?: string\n}\n```\n\n### `ErrorResp`\n\n```ts\ntype ErrorResp = {\n message?: string\n}\n```\n\n### `TriggerWebhookResp`\n\n```ts\ntype TriggerWebhookResp = {\n status_code?: string\n message?: string\n body?: object\n code?: string\n status?: "succeeded" | "failed"\n start_date?: string\n end_date?: string\n event_id: string\n}\n```\n\n### `PayloadConfiguration`\n\nConfiguration for the webhook payload\n\n```ts\ntype PayloadConfiguration = {\n hydrate_entity?: boolean\n include_relations?: boolean\n include_activity?: boolean\n include_changed_attributes?: boolean\n apply_changesets?: boolean\n custom_headers?: Record<string, string>\n}\n```\n\n### `CustomHeader`\n\nObject representing custom headers as key-value pairs.\n\n```ts\ntype CustomHeader = Record<string, string>\n```\n\n### `CustomOAuthParameter`\n\nCustom key/value pair of either type body, query or header\n\n```ts\ntype CustomOAuthParameter = {\n type: "body" | "query" | "header"\n key: string\n value: string\n}\n```\n\n### `Metadata`\n\nContains the metadata about the configured event\n\n```ts\ntype Metadata = {\n action?: string\n origin?: string\n creation_timestamp?: string\n webhook_id?: string\n webhook_name?: string\n automation_name?: string\n organization_id: string\n user_id?: string\n correlation_id?: string\n execution_id?: string\n action_id?: string\n}\n```\n\n### `ExecutionPayload`\n\nPayload for triggering a webhook\n\n```ts\ntype ExecutionPayload = {\n metadata: {\n action?: string\n origin?: string\n creation_timestamp?: string\n webhook_id?: string\n webhook_name?: string\n automation_name?: string\n organization_id: string\n user_id?: string\n correlation_id?: string\n execution_id?: string\n action_id?: string\n }\n}\n```\n\n### `WebhookEvent`\n\n```ts\ntype WebhookEvent = {\n event_id: string\n org_id: string\n webhook_config_id: string\n url?: string\n created_at?: string\n event_name?: string\n http_response?: {\n status_code?: number\n message?: string\n body?: object\n code?: string\n }\n metadata?: {\n action?: string\n origin?: string\n creation_timestamp?: string\n webhook_id?: string\n webhook_name?: string\n automation_name?: string\n organization_id: string\n user_id?: string\n correlation_id?: string\n execution_id?: string\n action_id?: string\n }\n status?: "succeeded" | "failed" | "in_progress" | "skipped"\n http_method?: "GET" | "POST" | "PUT"\n payload?: string\n}\n```\n\n### `ExampleRequest`\n\n```ts\ntype ExampleRequest = {\n automation_id?: string\n}\n```\n\n### `ExampleResponse`\n\n```ts\ntype ExampleResponse = {\n metadata?: {\n action?: string\n origin?: string\n creation_timestamp?: string\n webhook_id?: string\n webhook_name?: string\n automation_name?: string\n organization_id: string\n user_id?: string\n correlation_id?: string\n execution_id?: string\n action_id?: string\n }\n entity?: Record<string, unknown>\n relations?: Record<string, unknown>[]\n}\n```\n\n### `TestOAuthResponse`\n\n```ts\ntype TestOAuthResponse = {\n success: boolean\n expires_in?: number\n token_type?: string\n message: string\n}\n```\n\n### `BatchReplayRequest`\n\n```ts\ntype BatchReplayRequest = {\n eventIds: string[]\n}\n```\n';
5
-
6
-
7
- exports.default = webhooks_default;
@@ -1,460 +0,0 @@
1
- # Focus Pocus API
2
-
3
- - **Base URL:** `https://focus-pocus.dev.sls.epilot.io`
4
- - **Full API Docs:** [https://docs.epilot.io/api/focus-pocus](https://docs.epilot.io/api/focus-pocus)
5
-
6
- ## Usage
7
-
8
- ```ts
9
- import { epilot } from '@epilot/sdk'
10
-
11
- epilot.authorize(() => '<token>')
12
- const { data } = await epilot.focusPocus.getHealth(...)
13
- ```
14
-
15
- ### Tree-shakeable import
16
-
17
- ```ts
18
- import { getClient, authorize } from '@epilot/sdk/focus-pocus'
19
-
20
- const focusPocusClient = getClient()
21
- authorize(focusPocusClient, () => '<token>')
22
- const { data } = await focusPocusClient.getHealth(...)
23
- ```
24
-
25
- ## Operations
26
-
27
- **Health**
28
- - [`getHealth`](#gethealth)
29
-
30
- **Achievements**
31
- - [`listAchievements`](#listachievements)
32
- - [`getAchievement`](#getachievement)
33
-
34
- **Challenges**
35
- - [`getSuggestedChallenge`](#getsuggestedchallenge)
36
- - [`acceptChallenge`](#acceptchallenge)
37
- - [`dismissChallenge`](#dismisschallenge)
38
- - [`listActiveChallenges`](#listactivechallenges)
39
-
40
- **Events**
41
- - [`postEvent`](#postevent)
42
-
43
- **Schemas**
44
- - [`HealthResponse`](#healthresponse)
45
- - [`ErrorResponse`](#errorresponse)
46
- - [`ConflictError`](#conflicterror)
47
- - [`ChallengeSuggested`](#challengesuggested)
48
- - [`ChallengeActive`](#challengeactive)
49
- - [`ActiveChallengeListResponse`](#activechallengelistresponse)
50
- - [`AchievementFeedItem`](#achievementfeeditem)
51
- - [`AchievementFeedListResponse`](#achievementfeedlistresponse)
52
- - [`EventIngestRequest`](#eventingestrequest)
53
- - [`EventAccepted`](#eventaccepted)
54
-
55
- ### `getHealth`
56
-
57
- Liveness probe for the Focus Pocus API. Requires a valid EpilotAuth token.
58
-
59
- `GET /v1/health`
60
-
61
- ```ts
62
- const { data } = await client.getHealth()
63
- ```
64
-
65
- <details>
66
- <summary>Response</summary>
67
-
68
- ```json
69
- {
70
- "status": "ok",
71
- "stage": "dev",
72
- "service": "focus-pocus-api"
73
- }
74
- ```
75
-
76
- </details>
77
-
78
- ---
79
-
80
- ### `listAchievements`
81
-
82
- Unified feed for the authenticated user: returns active challenges and completed
83
- v1 static achievement unlocks. The `userId` is read from the EpilotAuth claim —
84
- no user path or query parameter is acce
85
-
86
- `GET /v1/achievements`
87
-
88
- ```ts
89
- const { data } = await client.listAchievements()
90
- ```
91
-
92
- <details>
93
- <summary>Response</summary>
94
-
95
- ```json
96
- {
97
- "results": [
98
- {
99
- "id": "string",
100
- "challenge_template_id": "string",
101
- "category": "string",
102
- "title": "string",
103
- "description": "string",
104
- "badge_image_url": "string",
105
- "icon": "string",
106
- "status": "active",
107
- "accepted_at": "1970-01-01T00:00:00.000Z",
108
- "deadline": "1970-01-01T00:00:00.000Z",
109
- "time_remaining_ms": 0,
110
- "unlocked_at": "1970-01-01T00:00:00.000Z",
111
- "xp_awarded": 0,
112
- "just_unlocked": true
113
- }
114
- ],
115
- "total": 0
116
- }
117
- ```
118
-
119
- </details>
120
-
121
- ---
122
-
123
- ### `getAchievement`
124
-
125
- Single user-scoped achievement or active-challenge item. Returns 404 if the id
126
- does not belong to the authenticated user.
127
-
128
- `GET /v1/achievements/{id}`
129
-
130
- ```ts
131
- const { data } = await client.getAchievement({
132
- id: '123e4567-e89b-12d3-a456-426614174000',
133
- })
134
- ```
135
-
136
- <details>
137
- <summary>Response</summary>
138
-
139
- ```json
140
- {
141
- "id": "string",
142
- "challenge_template_id": "string",
143
- "category": "string",
144
- "title": "string",
145
- "description": "string",
146
- "badge_image_url": "string",
147
- "icon": "string",
148
- "status": "active",
149
- "accepted_at": "1970-01-01T00:00:00.000Z",
150
- "deadline": "1970-01-01T00:00:00.000Z",
151
- "time_remaining_ms": 0,
152
- "unlocked_at": "1970-01-01T00:00:00.000Z",
153
- "xp_awarded": 0,
154
- "just_unlocked": true
155
- }
156
- ```
157
-
158
- </details>
159
-
160
- ---
161
-
162
- ### `getSuggestedChallenge`
163
-
164
- Returns a suggested challenge for the authenticated user. The suggestion is
165
- persisted with a 7-day TTL. Calling again with the same `(user, category)`
166
- within 24h returns the existing suggestion withou
167
-
168
- `GET /v1/challenges/suggest`
169
-
170
- ```ts
171
- const { data } = await client.getSuggestedChallenge({
172
- route: 'example',
173
- entity_type: 'example',
174
- category_hint: 'example',
175
- })
176
- ```
177
-
178
- <details>
179
- <summary>Response</summary>
180
-
181
- ```json
182
- {
183
- "id": "string",
184
- "challenge_template_id": "string",
185
- "category": "string",
186
- "title": "string",
187
- "description": "string",
188
- "badge_image_url": "string",
189
- "default_duration_hours": 1,
190
- "status": "suggested",
191
- "suggested_at": "1970-01-01T00:00:00.000Z"
192
- }
193
- ```
194
-
195
- </details>
196
-
197
- ---
198
-
199
- ### `acceptChallenge`
200
-
201
- Accept a suggested challenge. Atomically transitions the challenge from
202
- `suggested` to `active` using a conditional DynamoDB UpdateItem. Returns 409 if
203
- the challenge has already been transitioned or t
204
-
205
- `POST /v1/challenges/{id}/accept`
206
-
207
- ```ts
208
- const { data } = await client.acceptChallenge({
209
- id: '123e4567-e89b-12d3-a456-426614174000',
210
- })
211
- ```
212
-
213
- <details>
214
- <summary>Response</summary>
215
-
216
- ```json
217
- {
218
- "id": "string",
219
- "challenge_template_id": "string",
220
- "category": "string",
221
- "title": "string",
222
- "description": "string",
223
- "badge_image_url": "string",
224
- "status": "active",
225
- "accepted_at": "1970-01-01T00:00:00.000Z",
226
- "deadline": "1970-01-01T00:00:00.000Z",
227
- "time_remaining_ms": 0
228
- }
229
- ```
230
-
231
- </details>
232
-
233
- ---
234
-
235
- ### `dismissChallenge`
236
-
237
- Dismiss a suggested challenge. Atomically transitions the challenge from
238
- `suggested` to `dismissed`. The challenge template is filtered from `/suggest`
239
- responses for the next 24h. Returns 409 if the c
240
-
241
- `POST /v1/challenges/{id}/dismiss`
242
-
243
- ```ts
244
- const { data } = await client.dismissChallenge({
245
- id: '123e4567-e89b-12d3-a456-426614174000',
246
- })
247
- ```
248
-
249
- ---
250
-
251
- ### `listActiveChallenges`
252
-
253
- Returns all active challenges for the authenticated user. Challenges whose
254
- deadline has passed are lazily expired (fire-and-forget UpdateItem) and
255
- excluded from the response. The result set is bounded
256
-
257
- `GET /v1/challenges/active`
258
-
259
- ```ts
260
- const { data } = await client.listActiveChallenges()
261
- ```
262
-
263
- <details>
264
- <summary>Response</summary>
265
-
266
- ```json
267
- {
268
- "results": [
269
- {
270
- "id": "string",
271
- "challenge_template_id": "string",
272
- "category": "string",
273
- "title": "string",
274
- "description": "string",
275
- "badge_image_url": "string",
276
- "status": "active",
277
- "accepted_at": "1970-01-01T00:00:00.000Z",
278
- "deadline": "1970-01-01T00:00:00.000Z",
279
- "time_remaining_ms": 0
280
- }
281
- ],
282
- "total": 0
283
- }
284
- ```
285
-
286
- </details>
287
-
288
- ---
289
-
290
- ### `postEvent`
291
-
292
- Persist-first event ingest. Accepts an activity event, writes it to the event log
293
- idempotently (keyed by `event_id`), and returns 202. Achievement evaluation happens
294
- asynchronously — no unlocks are re
295
-
296
- `POST /v1/events`
297
-
298
- ```ts
299
- const { data } = await client.postEvent(
300
- null,
301
- {
302
- event_id: 'string',
303
- event_type: 'string',
304
- actor_user_id: 'string',
305
- occurred_at: '1970-01-01T00:00:00.000Z',
306
- properties: {}
307
- },
308
- )
309
- ```
310
-
311
- ---
312
-
313
- ## Schemas
314
-
315
- ### `HealthResponse`
316
-
317
- ```ts
318
- type HealthResponse = {
319
- status: "ok"
320
- stage: string
321
- service: string
322
- }
323
- ```
324
-
325
- ### `ErrorResponse`
326
-
327
- ```ts
328
- type ErrorResponse = {
329
- status: number
330
- error: string
331
- }
332
- ```
333
-
334
- ### `ConflictError`
335
-
336
- ```ts
337
- type ConflictError = {
338
- status: 409
339
- error: string
340
- reason: "already_transitioned" | "too_many_active" | "deadline_passed"
341
- }
342
- ```
343
-
344
- ### `ChallengeSuggested`
345
-
346
- ```ts
347
- type ChallengeSuggested = {
348
- id: string
349
- challenge_template_id: string
350
- category: string
351
- title: string
352
- description: string
353
- badge_image_url: string
354
- default_duration_hours: number
355
- status: "suggested"
356
- suggested_at: string // date-time
357
- }
358
- ```
359
-
360
- ### `ChallengeActive`
361
-
362
- ```ts
363
- type ChallengeActive = {
364
- id: string
365
- challenge_template_id: string
366
- category: string
367
- title: string
368
- description: string
369
- badge_image_url: string
370
- status: "active"
371
- accepted_at: string // date-time
372
- deadline: string // date-time
373
- time_remaining_ms: number
374
- }
375
- ```
376
-
377
- ### `ActiveChallengeListResponse`
378
-
379
- ```ts
380
- type ActiveChallengeListResponse = {
381
- results: Array<{
382
- id: string
383
- challenge_template_id: string
384
- category: string
385
- title: string
386
- description: string
387
- badge_image_url: string
388
- status: "active"
389
- accepted_at: string // date-time
390
- deadline: string // date-time
391
- time_remaining_ms: number
392
- }>
393
- total: number
394
- }
395
- ```
396
-
397
- ### `AchievementFeedItem`
398
-
399
- ```ts
400
- type AchievementFeedItem = {
401
- id: string
402
- challenge_template_id?: string
403
- category: string
404
- title: string
405
- description: string
406
- badge_image_url?: string
407
- icon?: string
408
- status: "active" | "completed" | "expired"
409
- accepted_at?: string // date-time
410
- deadline?: string // date-time
411
- time_remaining_ms?: number
412
- unlocked_at?: string // date-time
413
- xp_awarded?: number
414
- just_unlocked: boolean
415
- }
416
- ```
417
-
418
- ### `AchievementFeedListResponse`
419
-
420
- ```ts
421
- type AchievementFeedListResponse = {
422
- results: Array<{
423
- id: string
424
- challenge_template_id?: string
425
- category: string
426
- title: string
427
- description: string
428
- badge_image_url?: string
429
- icon?: string
430
- status: "active" | "completed" | "expired"
431
- accepted_at?: string // date-time
432
- deadline?: string // date-time
433
- time_remaining_ms?: number
434
- unlocked_at?: string // date-time
435
- xp_awarded?: number
436
- just_unlocked: boolean
437
- }>
438
- total: number
439
- }
440
- ```
441
-
442
- ### `EventIngestRequest`
443
-
444
- ```ts
445
- type EventIngestRequest = {
446
- event_id: string
447
- event_type: string
448
- actor_user_id: string
449
- occurred_at: string // date-time
450
- properties?: Record<string, unknown>
451
- }
452
- ```
453
-
454
- ### `EventAccepted`
455
-
456
- ```ts
457
- type EventAccepted = {
458
- accepted: true
459
- }
460
- ```