@epilot/sdk 2.8.0-rc.0 → 2.8.0
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/README.md +0 -1
- package/definitions/blueprint-manifest-runtime.json +1 -1
- package/definitions/blueprint-manifest.json +744 -20
- package/definitions/customer-portal-runtime.json +1 -1
- package/definitions/customer-portal.json +317 -26
- package/definitions/design.json +51 -1
- package/definitions/event-catalog-runtime.json +1 -1
- package/definitions/event-catalog.json +168 -12
- package/definitions/file-runtime.json +1 -1
- package/definitions/file.json +152 -4
- package/definitions/integration-toolkit-runtime.json +1 -1
- package/definitions/integration-toolkit.json +782 -13
- package/definitions/notes-runtime.json +1 -1
- package/definitions/notes.json +123 -1
- package/definitions/pricing.json +224 -406
- package/definitions/targeting-runtime.json +1 -1
- package/definitions/targeting.json +257 -7
- package/definitions/webhooks.json +31 -0
- package/dist/README-46VYEGGW.js +7 -0
- package/dist/README-IVBISSWB.cjs +7 -0
- package/dist/{_index-YTOJUFGD.js → _index-5FB6F5YY.js} +0 -3
- package/dist/{_index-HTUXYSTD.cjs → _index-DB2VV4PQ.cjs} +1 -4
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +8 -8
- package/dist/apis/blueprint-manifest.d.cts +2 -2
- package/dist/apis/blueprint-manifest.d.ts +2 -2
- package/dist/apis/blueprint-manifest.js +2 -2
- package/dist/apis/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +8 -8
- package/dist/apis/customer-portal.d.cts +2 -2
- package/dist/apis/customer-portal.d.ts +2 -2
- package/dist/apis/customer-portal.js +2 -2
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-governance.cjs +6 -6
- package/dist/apis/data-governance.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.d.cts +2 -2
- package/dist/apis/design.d.ts +2 -2
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/event-catalog.cjs +8 -8
- package/dist/apis/event-catalog.d.cts +2 -2
- package/dist/apis/event-catalog.d.ts +2 -2
- package/dist/apis/event-catalog.js +2 -2
- package/dist/apis/file.cjs +8 -8
- package/dist/apis/file.d.cts +2 -2
- package/dist/apis/file.d.ts +2 -2
- package/dist/apis/file.js +2 -2
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/integration-toolkit.cjs +8 -8
- package/dist/apis/integration-toolkit.d.cts +2 -2
- package/dist/apis/integration-toolkit.d.ts +2 -2
- package/dist/apis/integration-toolkit.js +2 -2
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +6 -6
- package/dist/apis/metering.js +1 -1
- package/dist/apis/notes.cjs +8 -8
- package/dist/apis/notes.d.cts +2 -2
- package/dist/apis/notes.d.ts +2 -2
- package/dist/apis/notes.js +2 -2
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.d.cts +2 -2
- package/dist/apis/pricing.d.ts +2 -2
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.js +1 -1
- package/dist/apis/targeting.cjs +8 -8
- package/dist/apis/targeting.d.cts +2 -2
- package/dist/apis/targeting.d.ts +2 -2
- package/dist/apis/targeting.js +2 -2
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.d.cts +2 -2
- package/dist/apis/webhooks.d.ts +2 -2
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/blueprint-manifest-6DEYW5MW.js +7 -0
- package/dist/blueprint-manifest-GCV7H74X.cjs +7 -0
- package/dist/{blueprint-manifest-runtime-QN2IECSA.cjs → blueprint-manifest-runtime-EIDOROIQ.cjs} +2 -2
- package/dist/{blueprint-manifest-runtime-5UN52LW5.js → blueprint-manifest-runtime-FRLU3ZSF.js} +1 -1
- package/dist/{blueprint-manifest.d-BPyzoR0X.d.cts → blueprint-manifest.d-B8yDxagC.d.cts} +572 -6
- package/dist/{blueprint-manifest.d-BPyzoR0X.d.ts → blueprint-manifest.d-B8yDxagC.d.ts} +572 -6
- package/dist/chunk-4M5V6BIT.cjs +14 -0
- package/dist/chunk-4YBWMDFP.js +14 -0
- package/dist/{chunk-KJPOUJBU.cjs → chunk-5ZXGKLB6.cjs} +1 -1
- package/dist/{chunk-PTEJYAYJ.js → chunk-774ASAAH.js} +1 -1
- package/dist/{chunk-WM74R3BD.js → chunk-7V7ECXTZ.js} +1 -1
- package/dist/chunk-FDS727SL.cjs +14 -0
- package/dist/{chunk-4FFGRWLS.cjs → chunk-I53TWOTX.cjs} +1 -1
- package/dist/chunk-LSPXLT3A.js +14 -0
- package/dist/chunk-M4FO2MI4.js +14 -0
- package/dist/chunk-MCK2QUSD.cjs +14 -0
- package/dist/{chunk-F5Z6I7TF.cjs → chunk-N3P24HUW.cjs} +20 -22
- package/dist/chunk-NGHCQ2FA.cjs +14 -0
- package/dist/{chunk-54KWFSCM.js → chunk-OOERPBL3.js} +20 -22
- package/dist/chunk-RDVFQOCQ.js +14 -0
- package/dist/{chunk-RW5JOHG7.js → chunk-WIQXF7DD.js} +1 -1
- package/dist/{chunk-M2SSGV7K.cjs → chunk-ZOQUGWQL.cjs} +1 -1
- package/dist/customer-portal-4DXHY42V.js +7 -0
- package/dist/customer-portal-5OSGSYGF.cjs +7 -0
- package/dist/{customer-portal-runtime-IYHJ3RME.cjs → customer-portal-runtime-HA6CPWB4.cjs} +2 -2
- package/dist/{customer-portal-runtime-ZYU3WIXY.js → customer-portal-runtime-TDHV2YVY.js} +1 -1
- package/dist/{customer-portal.d-CTTCBAZI.d.cts → customer-portal.d-BRwiQehb.d.cts} +763 -31
- package/dist/{customer-portal.d-CTTCBAZI.d.ts → customer-portal.d-BRwiQehb.d.ts} +763 -31
- package/dist/data-governance-2U5UU4GM.cjs +7 -0
- package/dist/data-governance-36Y33JVG.js +7 -0
- package/dist/design-DUFBH5ZB.js +7 -0
- package/dist/design-W3D3UPGB.cjs +7 -0
- package/dist/{design.d-BRre8iLg.d.cts → design.d-DzSDu8cy.d.cts} +41 -3
- package/dist/{design.d-BRre8iLg.d.ts → design.d-DzSDu8cy.d.ts} +41 -3
- package/dist/event-catalog-3YOQ46ZW.js +7 -0
- package/dist/event-catalog-HLWUT7RM.cjs +7 -0
- package/dist/{event-catalog-runtime-N262TQ3Y.js → event-catalog-runtime-JUSLF3UR.js} +1 -1
- package/dist/{event-catalog-runtime-B2BPKQVG.cjs → event-catalog-runtime-RH7542GL.cjs} +2 -2
- package/dist/{event-catalog.d-mQJLSYUo.d.cts → event-catalog.d-CXbUn8T1.d.cts} +199 -36
- package/dist/{event-catalog.d-mQJLSYUo.d.ts → event-catalog.d-CXbUn8T1.d.ts} +199 -36
- package/dist/file-2MSILSPP.cjs +7 -0
- package/dist/file-JVFTT5RZ.js +7 -0
- package/dist/file-runtime-7AWKNQU6.cjs +5 -0
- package/dist/{file-runtime-BIRMXYRH.js → file-runtime-DKGFS44O.js} +1 -1
- package/dist/{file.d-DTlrbI40.d.cts → file.d-BjlMgTwj.d.cts} +218 -5
- package/dist/{file.d-DTlrbI40.d.ts → file.d-BjlMgTwj.d.ts} +218 -5
- package/dist/index.cjs +27 -35
- package/dist/index.d.cts +55 -57
- package/dist/index.d.ts +55 -57
- package/dist/index.js +16 -24
- package/dist/integration-toolkit-27Z3VZBZ.cjs +7 -0
- package/dist/integration-toolkit-NRLZZFVS.js +7 -0
- package/dist/{integration-toolkit-runtime-YHTU4X5J.cjs → integration-toolkit-runtime-FY7QVFL6.cjs} +2 -2
- package/dist/{integration-toolkit-runtime-YR4CIMKH.js → integration-toolkit-runtime-HCJ5QLCR.js} +1 -1
- package/dist/{integration-toolkit.d-BstNqiJb.d.cts → integration-toolkit.d-BW9RK5G-.d.cts} +1672 -27
- package/dist/{integration-toolkit.d-BstNqiJb.d.ts → integration-toolkit.d-BW9RK5G-.d.ts} +1672 -27
- package/dist/notes-6JESMRLW.js +7 -0
- package/dist/notes-SLEUSNP4.cjs +7 -0
- package/dist/{notes-runtime-CVNAVKPP.js → notes-runtime-I4SWR3PZ.js} +1 -1
- package/dist/notes-runtime-YWTRRNH5.cjs +5 -0
- package/dist/{notes.d-BcV_m5fe.d.cts → notes.d-rbcyHfiB.d.cts} +101 -3
- package/dist/{notes.d-BcV_m5fe.d.ts → notes.d-rbcyHfiB.d.ts} +101 -3
- package/dist/pricing-5Y7TZHMR.js +7 -0
- package/dist/pricing-BJUABPHU.cjs +7 -0
- package/dist/{pricing.d-BHpMU4KU.d.cts → pricing.d-gPt5L7wp.d.cts} +151 -280
- package/dist/{pricing.d-BHpMU4KU.d.ts → pricing.d-gPt5L7wp.d.ts} +151 -280
- package/dist/targeting-DAFJBPIZ.cjs +7 -0
- package/dist/targeting-TGPCRRI6.js +7 -0
- package/dist/{targeting-runtime-M2VSTKFT.js → targeting-runtime-D5YUPZQM.js} +1 -1
- package/dist/{targeting-runtime-6JFMP262.cjs → targeting-runtime-MLMOM7CK.cjs} +2 -2
- package/dist/{targeting.d-BNmcVsNS.d.cts → targeting.d-DxHQbn7-.d.cts} +197 -3
- package/dist/{targeting.d-BNmcVsNS.d.ts → targeting.d-DxHQbn7-.d.ts} +197 -3
- package/dist/webhooks-6CUXSTPH.cjs +7 -0
- package/dist/webhooks-DTNKNJEN.js +7 -0
- package/dist/{webhooks.d-ByePoUWs.d.cts → webhooks.d-DKZOMj1P.d.cts} +37 -0
- package/dist/{webhooks.d-ByePoUWs.d.ts → webhooks.d-DKZOMj1P.d.ts} +37 -0
- package/docs/blueprint-manifest.md +728 -68
- package/docs/customer-portal.md +465 -56
- package/docs/data-governance.md +17 -17
- package/docs/design.md +80 -3
- package/docs/event-catalog.md +126 -13
- package/docs/file.md +113 -0
- package/docs/integration-toolkit.md +488 -19
- package/docs/notes.md +47 -1
- package/docs/pricing.md +290 -219
- package/docs/targeting.md +158 -4
- package/docs/webhooks.md +11 -2
- package/package.json +1 -10
- package/dist/README-37TXN4EL.cjs +0 -7
- package/dist/README-Z2WITBOR.js +0 -7
- package/dist/apis/focus-pocus.cjs +0 -38
- package/dist/apis/focus-pocus.d.cts +0 -18
- package/dist/apis/focus-pocus.d.ts +0 -18
- package/dist/apis/focus-pocus.js +0 -38
- package/dist/blueprint-manifest-DBEY5PPI.js +0 -7
- package/dist/blueprint-manifest-IEQ6YBY7.cjs +0 -7
- package/dist/chunk-3APTSPY4.js +0 -14
- package/dist/chunk-5WNEYQII.cjs +0 -14
- package/dist/chunk-A6FYGWQ7.cjs +0 -14
- package/dist/chunk-BTTPWE2P.js +0 -14
- package/dist/chunk-CBDKPGO5.cjs +0 -14
- package/dist/chunk-L544VG3B.cjs +0 -14
- package/dist/chunk-O2YVXGPZ.js +0 -14
- package/dist/chunk-OCMIXJWC.js +0 -14
- package/dist/chunk-OPXGJKZR.cjs +0 -14
- package/dist/chunk-P42Q6HOW.js +0 -14
- package/dist/customer-portal-DR6XFCTQ.js +0 -7
- package/dist/customer-portal-PNFBVIAH.cjs +0 -7
- package/dist/data-governance-QYFHBCNB.cjs +0 -7
- package/dist/data-governance-YS2NA6W4.js +0 -7
- package/dist/design-EWZQZ5KX.js +0 -7
- package/dist/design-MUUYXB2J.cjs +0 -7
- package/dist/event-catalog-37B6JC7G.js +0 -7
- package/dist/event-catalog-5JBHJJ2I.cjs +0 -7
- package/dist/file-P2FUUER2.js +0 -7
- package/dist/file-XTY74SIX.cjs +0 -7
- package/dist/file-runtime-24S3QPA7.cjs +0 -5
- package/dist/focus-pocus-JGXH42OF.cjs +0 -7
- package/dist/focus-pocus-XVDVUYL6.js +0 -7
- package/dist/focus-pocus-runtime-QXBBYVX7.js +0 -5
- package/dist/focus-pocus-runtime-X6GQ3WI4.cjs +0 -5
- package/dist/focus-pocus.d-BRFGe53G.d.cts +0 -489
- package/dist/focus-pocus.d-BRFGe53G.d.ts +0 -489
- package/dist/integration-toolkit-3I3IPVFN.cjs +0 -7
- package/dist/integration-toolkit-XAFQXNQY.js +0 -7
- package/dist/notes-K2IIFCX3.cjs +0 -7
- package/dist/notes-Q7JGS7O3.js +0 -7
- package/dist/notes-runtime-E3YYF74V.cjs +0 -5
- package/dist/pricing-R5ENSVPQ.cjs +0 -7
- package/dist/pricing-X27CCRI6.js +0 -7
- package/dist/targeting-74BV7F7H.cjs +0 -7
- package/dist/targeting-W5EKJYR2.js +0 -7
- package/dist/webhooks-NZHJBT64.js +0 -7
- package/dist/webhooks-SK2STDKR.cjs +0 -7
- 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;
|
package/docs/focus-pocus.md
DELETED
|
@@ -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
|
-
```
|