@epilot/sdk 2.8.2 → 2.8.4

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 (164) hide show
  1. package/README.md +1 -0
  2. package/definitions/blueprint-manifest-runtime.json +1 -1
  3. package/definitions/blueprint-manifest.json +571 -1
  4. package/definitions/snapshot-runtime.json +1 -0
  5. package/definitions/snapshot.json +786 -0
  6. package/definitions/user-runtime.json +1 -1
  7. package/definitions/user.json +441 -0
  8. package/dist/README-NBWAQWQS.js +7 -0
  9. package/dist/README-XCIDDEAE.cjs +7 -0
  10. package/dist/{_index-DB2VV4PQ.cjs → _index-D5TTZP5F.cjs} +4 -1
  11. package/dist/{_index-5FB6F5YY.js → _index-UY46ZN47.js} +3 -0
  12. package/dist/apis/access-token.cjs +6 -6
  13. package/dist/apis/access-token.js +1 -1
  14. package/dist/apis/address-suggestions.cjs +6 -6
  15. package/dist/apis/address-suggestions.js +1 -1
  16. package/dist/apis/address.cjs +6 -6
  17. package/dist/apis/address.js +1 -1
  18. package/dist/apis/ai-agents.cjs +6 -6
  19. package/dist/apis/ai-agents.js +1 -1
  20. package/dist/apis/app.cjs +6 -6
  21. package/dist/apis/app.js +1 -1
  22. package/dist/apis/audit-logs.cjs +6 -6
  23. package/dist/apis/audit-logs.js +1 -1
  24. package/dist/apis/automation.cjs +6 -6
  25. package/dist/apis/automation.js +1 -1
  26. package/dist/apis/billing.cjs +6 -6
  27. package/dist/apis/billing.js +1 -1
  28. package/dist/apis/blueprint-manifest.cjs +8 -8
  29. package/dist/apis/blueprint-manifest.d.cts +2 -2
  30. package/dist/apis/blueprint-manifest.d.ts +2 -2
  31. package/dist/apis/blueprint-manifest.js +2 -2
  32. package/dist/apis/calendar.cjs +6 -6
  33. package/dist/apis/calendar.js +1 -1
  34. package/dist/apis/configuration-hub.cjs +6 -6
  35. package/dist/apis/configuration-hub.js +1 -1
  36. package/dist/apis/consent.cjs +6 -6
  37. package/dist/apis/consent.js +1 -1
  38. package/dist/apis/customer-portal.cjs +6 -6
  39. package/dist/apis/customer-portal.js +1 -1
  40. package/dist/apis/dashboard.cjs +6 -6
  41. package/dist/apis/dashboard.js +1 -1
  42. package/dist/apis/data-governance.cjs +6 -6
  43. package/dist/apis/data-governance.js +1 -1
  44. package/dist/apis/deduplication.cjs +6 -6
  45. package/dist/apis/deduplication.js +1 -1
  46. package/dist/apis/design.cjs +6 -6
  47. package/dist/apis/design.js +1 -1
  48. package/dist/apis/document.cjs +6 -6
  49. package/dist/apis/document.js +1 -1
  50. package/dist/apis/email-settings.cjs +6 -6
  51. package/dist/apis/email-settings.js +1 -1
  52. package/dist/apis/email-template.cjs +6 -6
  53. package/dist/apis/email-template.js +1 -1
  54. package/dist/apis/entity-mapping.cjs +6 -6
  55. package/dist/apis/entity-mapping.js +1 -1
  56. package/dist/apis/entity.cjs +6 -6
  57. package/dist/apis/entity.js +1 -1
  58. package/dist/apis/environments.cjs +6 -6
  59. package/dist/apis/environments.js +1 -1
  60. package/dist/apis/event-catalog.cjs +6 -6
  61. package/dist/apis/event-catalog.js +1 -1
  62. package/dist/apis/file.cjs +6 -6
  63. package/dist/apis/file.js +1 -1
  64. package/dist/apis/iban.cjs +6 -6
  65. package/dist/apis/iban.js +1 -1
  66. package/dist/apis/integration-toolkit.cjs +6 -6
  67. package/dist/apis/integration-toolkit.js +1 -1
  68. package/dist/apis/journey.cjs +6 -6
  69. package/dist/apis/journey.js +1 -1
  70. package/dist/apis/kanban.cjs +6 -6
  71. package/dist/apis/kanban.js +1 -1
  72. package/dist/apis/message.cjs +6 -6
  73. package/dist/apis/message.js +1 -1
  74. package/dist/apis/metering.cjs +6 -6
  75. package/dist/apis/metering.js +1 -1
  76. package/dist/apis/notes.cjs +6 -6
  77. package/dist/apis/notes.js +1 -1
  78. package/dist/apis/notification.cjs +6 -6
  79. package/dist/apis/notification.js +1 -1
  80. package/dist/apis/organization.cjs +6 -6
  81. package/dist/apis/organization.js +1 -1
  82. package/dist/apis/partner-directory.cjs +6 -6
  83. package/dist/apis/partner-directory.js +1 -1
  84. package/dist/apis/permissions.cjs +6 -6
  85. package/dist/apis/permissions.js +1 -1
  86. package/dist/apis/pricing-tier.cjs +6 -6
  87. package/dist/apis/pricing-tier.js +1 -1
  88. package/dist/apis/pricing.cjs +6 -6
  89. package/dist/apis/pricing.js +1 -1
  90. package/dist/apis/purpose.cjs +6 -6
  91. package/dist/apis/purpose.js +1 -1
  92. package/dist/apis/query.cjs +6 -6
  93. package/dist/apis/query.js +1 -1
  94. package/dist/apis/sandbox.cjs +6 -6
  95. package/dist/apis/sandbox.js +1 -1
  96. package/dist/apis/sharing.cjs +6 -6
  97. package/dist/apis/sharing.js +1 -1
  98. package/dist/apis/snapshot.cjs +38 -0
  99. package/dist/apis/snapshot.d.cts +18 -0
  100. package/dist/apis/snapshot.d.ts +18 -0
  101. package/dist/apis/snapshot.js +38 -0
  102. package/dist/apis/submission.cjs +6 -6
  103. package/dist/apis/submission.js +1 -1
  104. package/dist/apis/target.cjs +6 -6
  105. package/dist/apis/target.js +1 -1
  106. package/dist/apis/targeting.cjs +6 -6
  107. package/dist/apis/targeting.js +1 -1
  108. package/dist/apis/template-variables.cjs +6 -6
  109. package/dist/apis/template-variables.js +1 -1
  110. package/dist/apis/user.cjs +8 -8
  111. package/dist/apis/user.d.cts +2 -2
  112. package/dist/apis/user.d.ts +2 -2
  113. package/dist/apis/user.js +2 -2
  114. package/dist/apis/validation-rules.cjs +6 -6
  115. package/dist/apis/validation-rules.js +1 -1
  116. package/dist/apis/webhooks.cjs +6 -6
  117. package/dist/apis/webhooks.js +1 -1
  118. package/dist/apis/workflow-definition.cjs +6 -6
  119. package/dist/apis/workflow-definition.js +1 -1
  120. package/dist/apis/workflow.cjs +6 -6
  121. package/dist/apis/workflow.js +1 -1
  122. package/dist/blueprint-manifest-WHYSBU66.cjs +7 -0
  123. package/dist/blueprint-manifest-WZVBTKUL.js +7 -0
  124. package/dist/{blueprint-manifest-runtime-FRLU3ZSF.js → blueprint-manifest-runtime-2344IUIE.js} +1 -1
  125. package/dist/{blueprint-manifest-runtime-EIDOROIQ.cjs → blueprint-manifest-runtime-WU5MWPVT.cjs} +2 -2
  126. package/dist/{blueprint-manifest.d-B8yDxagC.d.cts → blueprint-manifest.d-2-TORV8o.d.cts} +926 -4
  127. package/dist/{blueprint-manifest.d-B8yDxagC.d.ts → blueprint-manifest.d-2-TORV8o.d.ts} +926 -4
  128. package/dist/chunk-DFYZ3LS2.cjs +14 -0
  129. package/dist/chunk-GUYARNLI.js +14 -0
  130. package/dist/{chunk-3IOUJMDV.cjs → chunk-M432U2EN.cjs} +8 -6
  131. package/dist/chunk-NFIYEMMM.js +14 -0
  132. package/dist/chunk-OWXEZ56F.cjs +14 -0
  133. package/dist/{chunk-NGHCQ2FA.cjs → chunk-T57MT6J5.cjs} +1 -1
  134. package/dist/{chunk-MVY54TDV.js → chunk-TP3MI5V5.js} +8 -6
  135. package/dist/{chunk-4YBWMDFP.js → chunk-UWGWRGGB.js} +1 -1
  136. package/dist/index.cjs +22 -14
  137. package/dist/index.d.cts +19 -17
  138. package/dist/index.d.ts +19 -17
  139. package/dist/index.js +13 -5
  140. package/dist/snapshot-CTKT2ILE.cjs +7 -0
  141. package/dist/snapshot-XYFMWDVA.js +7 -0
  142. package/dist/snapshot-runtime-EXWPPYJI.js +5 -0
  143. package/dist/snapshot-runtime-XUQIDON7.cjs +5 -0
  144. package/dist/snapshot.d-BX0xhQlH.d.cts +588 -0
  145. package/dist/snapshot.d-BX0xhQlH.d.ts +588 -0
  146. package/dist/user-3SLAEEVD.cjs +7 -0
  147. package/dist/user-PRUYBXQV.js +7 -0
  148. package/dist/{user-runtime-U4HYUWJU.js → user-runtime-6ICV2Y73.js} +1 -1
  149. package/dist/user-runtime-Y3227ETX.cjs +5 -0
  150. package/dist/{user.d-D18fe97W.d.ts → user.d-L-C7_K84.d.cts} +421 -1
  151. package/dist/{user.d-D18fe97W.d.cts → user.d-L-C7_K84.d.ts} +421 -1
  152. package/docs/blueprint-manifest.md +421 -95
  153. package/docs/snapshot.md +561 -0
  154. package/docs/user.md +321 -8
  155. package/package.json +10 -1
  156. package/dist/README-46VYEGGW.js +0 -7
  157. package/dist/README-IVBISSWB.cjs +0 -7
  158. package/dist/blueprint-manifest-6DEYW5MW.js +0 -7
  159. package/dist/blueprint-manifest-GCV7H74X.cjs +0 -7
  160. package/dist/chunk-3XKBB5AE.js +0 -14
  161. package/dist/chunk-Z5TVWG3I.cjs +0 -14
  162. package/dist/user-7ZN2XO7G.cjs +0 -7
  163. package/dist/user-ZK7BK6VY.js +0 -7
  164. package/dist/user-runtime-7O2HLFVQ.cjs +0 -5
@@ -1 +1 @@
1
- {"s":"https://user.sls.epilot.io","o":[["signUpUser","post","/v2/users/public/signup",[["token","q"]],1],["getMeV2","get","/v2/users/me"],["listUsersV2","get","/v2/users",[["query","q"],["limit","q"],["offset","q"]]],["getUserV2","get","/v2/users/{id}",[["id","p",true]]],["updateUserV2","patch","/v2/users/{id}",[["id","p",true]],1],["deleteUserV2","delete","/v2/users/{id}",[["id","p",true]]],["inviteUser","post","/v2/users/invite",null,1],["resendUserInvitation","post","/v2/users/invite:resendEmail",null,1],["getGroupsForUser","get","/v2/users/{id}/groups",[["id","p",true]]],["getGroups","get","/v1/groups",[["query","q"],["limit","q"],["offset","q"],["hydrate","q"]]],["createGroup","post","/v1/groups",null,1],["getGroup","get","/v1/groups/{id}",[["id","p",true],["hydrate","q"]]],["updateGroup","patch","/v1/groups/{id}",[["id","p",true]],1],["deleteGroup","delete","/v1/groups/{id}",[["id","p",true]]],["advanceUserAssignment","post","/v1/groups/{id}/user:next",[["id","p",true]]],["createNavigation","post","/v2/user/navigations",null,1],["getNavigation","get","/v2/user/navigations/{id}",[["id","p",true]]],["verifyEmailWithToken","post","/v2/users/public/verifyEmail",[["token","q",true]],1],["checkInviteToken","get","/v2/users/public/checkToken",[["token","q",true]]],["activateUser","post","/v2/users/public/activate",[["token","q",true]],1],["rejectInvite","delete","/v2/users/public/reject",[["token","q",true]]],["getUserLoginParametersV2","get","/v2/users/public/username/{username}:getLoginParameters",[["username","p",true]]],["beginPasskeyAuthentication","post","/v2/users/public/passkeys:authenticateBegin",null,1],["beginDiscoverablePasskeyAuthentication","post","/v2/users/public/passkeys:authenticateBeginDiscoverable"],["resolveDiscoverableCredential","post","/v2/users/public/passkeys:resolveCredential",null,1],["beginPasskeyRegistration","post","/v2/users/me/passkeys:registerBegin",null,1],["completePasskeyRegistration","post","/v2/users/me/passkeys:registerComplete",null,1],["listPasskeys","get","/v2/users/me/passkeys"],["deletePasskey","delete","/v2/users/me/passkeys/{credentialId}",[["credentialId","p",true]]],["switchOrganization","post","/v2/users/switchOrganization",null,1],["getMe","get","/v1/users/me"],["listUsers","get","/v1/users",[["org_ids","q",false,"form",false],["query","q"],["limit","q"],["offset","q"]]],["getUser","get","/v1/users/{id}",[["id","p",true]]],["getUserLoginParameters","get","/v1/users/username/{username}:getLoginParameters",[["username","p",true]]]]}
1
+ {"s":"https://user.sls.epilot.io","o":[["signUpUser","post","/v2/users/public/signup",[["token","q"]],1],["getMeV2","get","/v2/users/me"],["listUserSettings","get","/v2/users/me/settings"],["getUserSettingsScope","get","/v2/users/me/settings/{scope}",[["scope","p",true]]],["getUserSetting","get","/v2/users/me/settings/{scope}/{key}",[["scope","p",true],["key","p",true]]],["putUserSetting","put","/v2/users/me/settings/{scope}/{key}",[["scope","p",true],["key","p",true]],1],["deleteUserSetting","delete","/v2/users/me/settings/{scope}/{key}",[["scope","p",true],["key","p",true]]],["listUsersV2","get","/v2/users",[["query","q"],["limit","q"],["offset","q"]]],["getUserV2","get","/v2/users/{id}",[["id","p",true]]],["updateUserV2","patch","/v2/users/{id}",[["id","p",true]],1],["deleteUserV2","delete","/v2/users/{id}",[["id","p",true]]],["inviteUser","post","/v2/users/invite",null,1],["resendUserInvitation","post","/v2/users/invite:resendEmail",null,1],["sendUserPasswordReset","post","/v2/users:sendPasswordReset",null,1],["getGroupsForUser","get","/v2/users/{id}/groups",[["id","p",true]]],["getGroups","get","/v1/groups",[["query","q"],["limit","q"],["offset","q"],["hydrate","q"]]],["createGroup","post","/v1/groups",null,1],["getGroup","get","/v1/groups/{id}",[["id","p",true],["hydrate","q"]]],["updateGroup","patch","/v1/groups/{id}",[["id","p",true]],1],["deleteGroup","delete","/v1/groups/{id}",[["id","p",true]]],["advanceUserAssignment","post","/v1/groups/{id}/user:next",[["id","p",true]]],["createNavigation","post","/v2/user/navigations",null,1],["getNavigation","get","/v2/user/navigations/{id}",[["id","p",true]]],["verifyEmailWithToken","post","/v2/users/public/verifyEmail",[["token","q",true]],1],["requestPasswordReset","post","/v2/users/public/requestPasswordReset",null,1],["checkInviteToken","get","/v2/users/public/checkToken",[["token","q",true]]],["activateUser","post","/v2/users/public/activate",[["token","q",true]],1],["rejectInvite","delete","/v2/users/public/reject",[["token","q",true]]],["getUserLoginParametersV2","get","/v2/users/public/username/{username}:getLoginParameters",[["username","p",true]]],["beginPasskeyAuthentication","post","/v2/users/public/passkeys:authenticateBegin",null,1],["beginDiscoverablePasskeyAuthentication","post","/v2/users/public/passkeys:authenticateBeginDiscoverable"],["resolveDiscoverableCredential","post","/v2/users/public/passkeys:resolveCredential",null,1],["beginPasskeyRegistration","post","/v2/users/me/passkeys:registerBegin",null,1],["completePasskeyRegistration","post","/v2/users/me/passkeys:registerComplete",null,1],["listPasskeys","get","/v2/users/me/passkeys"],["deletePasskey","delete","/v2/users/me/passkeys/{credentialId}",[["credentialId","p",true]]],["switchOrganization","post","/v2/users/switchOrganization",null,1],["getMe","get","/v1/users/me"],["listUsers","get","/v1/users",[["org_ids","q",false,"form",false],["query","q"],["limit","q"],["offset","q"]]],["getUser","get","/v1/users/{id}",[["id","p",true]]],["getUserLoginParameters","get","/v1/users/username/{username}:getLoginParameters",[["username","p",true]]]]}
@@ -101,6 +101,189 @@
101
101
  }
102
102
  }
103
103
  },
104
+ "/v2/users/me/settings": {
105
+ "get": {
106
+ "operationId": "listUserSettings",
107
+ "summary": "listUserSettings",
108
+ "description": "List all setting scopes and keys available for the currently logged in user. Does not return setting values.",
109
+ "tags": [
110
+ "User V2"
111
+ ],
112
+ "responses": {
113
+ "200": {
114
+ "description": "List of user setting scopes and keys",
115
+ "content": {
116
+ "application/json": {
117
+ "schema": {
118
+ "$ref": "#/components/schemas/UserSettingsListResponse"
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "/v2/users/me/settings/{scope}": {
127
+ "get": {
128
+ "operationId": "getUserSettingsScope",
129
+ "summary": "getUserSettingsScope",
130
+ "description": "Get all setting values for one scope for the currently logged in user.",
131
+ "tags": [
132
+ "User V2"
133
+ ],
134
+ "parameters": [
135
+ {
136
+ "name": "scope",
137
+ "in": "path",
138
+ "required": true,
139
+ "schema": {
140
+ "$ref": "#/components/schemas/UserSettingScope"
141
+ },
142
+ "description": "User setting scope, for example calendar, navigation, or search"
143
+ }
144
+ ],
145
+ "responses": {
146
+ "200": {
147
+ "description": "User settings for the requested scope",
148
+ "content": {
149
+ "application/json": {
150
+ "schema": {
151
+ "$ref": "#/components/schemas/UserSettingsScopeResponse"
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ },
159
+ "/v2/users/me/settings/{scope}/{key}": {
160
+ "get": {
161
+ "operationId": "getUserSetting",
162
+ "summary": "getUserSetting",
163
+ "description": "Get one setting value by scope and key for the currently logged in user.",
164
+ "tags": [
165
+ "User V2"
166
+ ],
167
+ "parameters": [
168
+ {
169
+ "name": "scope",
170
+ "in": "path",
171
+ "required": true,
172
+ "schema": {
173
+ "$ref": "#/components/schemas/UserSettingScope"
174
+ },
175
+ "description": "User setting scope"
176
+ },
177
+ {
178
+ "name": "key",
179
+ "in": "path",
180
+ "required": true,
181
+ "schema": {
182
+ "$ref": "#/components/schemas/UserSettingKey"
183
+ },
184
+ "description": "User setting key"
185
+ }
186
+ ],
187
+ "responses": {
188
+ "200": {
189
+ "description": "User setting",
190
+ "content": {
191
+ "application/json": {
192
+ "schema": {
193
+ "$ref": "#/components/schemas/UserSetting"
194
+ }
195
+ }
196
+ }
197
+ },
198
+ "404": {
199
+ "description": "User setting not found"
200
+ }
201
+ }
202
+ },
203
+ "put": {
204
+ "operationId": "putUserSetting",
205
+ "summary": "putUserSetting",
206
+ "description": "Create or replace one setting value for the currently logged in user.",
207
+ "tags": [
208
+ "User V2"
209
+ ],
210
+ "parameters": [
211
+ {
212
+ "name": "scope",
213
+ "in": "path",
214
+ "required": true,
215
+ "schema": {
216
+ "$ref": "#/components/schemas/UserSettingScope"
217
+ },
218
+ "description": "User setting scope"
219
+ },
220
+ {
221
+ "name": "key",
222
+ "in": "path",
223
+ "required": true,
224
+ "schema": {
225
+ "$ref": "#/components/schemas/UserSettingKey"
226
+ },
227
+ "description": "User setting key"
228
+ }
229
+ ],
230
+ "requestBody": {
231
+ "required": true,
232
+ "content": {
233
+ "application/json": {
234
+ "schema": {
235
+ "$ref": "#/components/schemas/UserSettingValue"
236
+ }
237
+ }
238
+ }
239
+ },
240
+ "responses": {
241
+ "200": {
242
+ "description": "User setting saved successfully",
243
+ "content": {
244
+ "application/json": {
245
+ "schema": {
246
+ "$ref": "#/components/schemas/UserSetting"
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ },
253
+ "delete": {
254
+ "operationId": "deleteUserSetting",
255
+ "summary": "deleteUserSetting",
256
+ "description": "Delete one setting value for the currently logged in user.",
257
+ "tags": [
258
+ "User V2"
259
+ ],
260
+ "parameters": [
261
+ {
262
+ "name": "scope",
263
+ "in": "path",
264
+ "required": true,
265
+ "schema": {
266
+ "$ref": "#/components/schemas/UserSettingScope"
267
+ },
268
+ "description": "User setting scope"
269
+ },
270
+ {
271
+ "name": "key",
272
+ "in": "path",
273
+ "required": true,
274
+ "schema": {
275
+ "$ref": "#/components/schemas/UserSettingKey"
276
+ },
277
+ "description": "User setting key"
278
+ }
279
+ ],
280
+ "responses": {
281
+ "204": {
282
+ "description": "User setting deleted successfully"
283
+ }
284
+ }
285
+ }
286
+ },
104
287
  "/v2/users": {
105
288
  "get": {
106
289
  "operationId": "listUsersV2",
@@ -348,6 +531,63 @@
348
531
  }
349
532
  }
350
533
  },
534
+ "/v2/users:sendPasswordReset": {
535
+ "post": {
536
+ "operationId": "sendUserPasswordReset",
537
+ "summary": "sendUserPasswordReset",
538
+ "description": "Send a password reset email to a user in your organization.\nRequires `user:edit` on the target user.\n",
539
+ "tags": [
540
+ "User V2"
541
+ ],
542
+ "requestBody": {
543
+ "required": true,
544
+ "content": {
545
+ "application/json": {
546
+ "schema": {
547
+ "type": "object",
548
+ "required": [
549
+ "email"
550
+ ],
551
+ "properties": {
552
+ "email": {
553
+ "type": "string",
554
+ "description": "Email address of the user to reset",
555
+ "example": "test@example.com"
556
+ }
557
+ }
558
+ }
559
+ }
560
+ }
561
+ },
562
+ "responses": {
563
+ "200": {
564
+ "description": "Password reset triggered",
565
+ "content": {
566
+ "application/json": {
567
+ "schema": {
568
+ "type": "object",
569
+ "required": [
570
+ "success"
571
+ ],
572
+ "properties": {
573
+ "success": {
574
+ "type": "boolean",
575
+ "example": true
576
+ }
577
+ }
578
+ }
579
+ }
580
+ }
581
+ },
582
+ "400": {
583
+ "description": "Invalid email or user not found"
584
+ },
585
+ "403": {
586
+ "description": "Not permitted to reset this user's password"
587
+ }
588
+ }
589
+ }
590
+ },
351
591
  "/v2/users/{id}/groups": {
352
592
  "get": {
353
593
  "operationId": "getGroupsForUser",
@@ -709,6 +949,9 @@
709
949
  "summary": "verifyEmailWithToken",
710
950
  "description": "Update new email using an verification token",
711
951
  "security": [],
952
+ "x-rate-limit": {
953
+ "limit": 10
954
+ },
712
955
  "tags": [
713
956
  "User V2"
714
957
  ],
@@ -736,8 +979,69 @@
736
979
  "200": {
737
980
  "description": "Verified successfully"
738
981
  },
982
+ "400": {
983
+ "description": "No pending email change for this token"
984
+ },
739
985
  "404": {
740
986
  "description": "Token not found"
987
+ },
988
+ "409": {
989
+ "description": "Email address already in use"
990
+ }
991
+ }
992
+ }
993
+ },
994
+ "/v2/users/public/requestPasswordReset": {
995
+ "post": {
996
+ "operationId": "requestPasswordReset",
997
+ "summary": "requestPasswordReset",
998
+ "description": "Request a password reset email for the given email address. Always\nreturns a success response whether or not an account exists with that\nemail.\n",
999
+ "security": [],
1000
+ "x-rate-limit": {
1001
+ "limit": 10
1002
+ },
1003
+ "tags": [
1004
+ "User V2"
1005
+ ],
1006
+ "requestBody": {
1007
+ "required": true,
1008
+ "content": {
1009
+ "application/json": {
1010
+ "schema": {
1011
+ "type": "object",
1012
+ "required": [
1013
+ "email"
1014
+ ],
1015
+ "properties": {
1016
+ "email": {
1017
+ "type": "string",
1018
+ "description": "Email address of the account to reset",
1019
+ "example": "test@example.com"
1020
+ }
1021
+ }
1022
+ }
1023
+ }
1024
+ }
1025
+ },
1026
+ "responses": {
1027
+ "200": {
1028
+ "description": "Request accepted",
1029
+ "content": {
1030
+ "application/json": {
1031
+ "schema": {
1032
+ "type": "object",
1033
+ "required": [
1034
+ "message"
1035
+ ],
1036
+ "properties": {
1037
+ "message": {
1038
+ "type": "string",
1039
+ "example": "If an account exists, a password reset email has been sent."
1040
+ }
1041
+ }
1042
+ }
1043
+ }
1044
+ }
741
1045
  }
742
1046
  }
743
1047
  }
@@ -1687,6 +1991,13 @@
1687
1991
  "nullable": true,
1688
1992
  "format": "email"
1689
1993
  },
1994
+ "draft_email_expires_at": {
1995
+ "description": "Server-set expiry for the pending email change verification link (ISO 8601). Read-only.",
1996
+ "type": "string",
1997
+ "nullable": true,
1998
+ "format": "date-time",
1999
+ "readOnly": true
2000
+ },
1690
2001
  "department": {
1691
2002
  "type": "string",
1692
2003
  "description": "User's department",
@@ -1710,6 +2021,11 @@
1710
2021
  "type": "boolean",
1711
2022
  "example": false
1712
2023
  },
2024
+ "has_passkeys": {
2025
+ "description": "Whether the user has any registered passkeys",
2026
+ "type": "boolean",
2027
+ "example": false
2028
+ },
1713
2029
  "phone_verified": {
1714
2030
  "description": "User's phone number verification status",
1715
2031
  "type": "boolean",
@@ -2048,6 +2364,13 @@
2048
2364
  },
2049
2365
  "image_uri": {
2050
2366
  "$ref": "#/components/schemas/GroupImageUri"
2367
+ },
2368
+ "abbreviation": {
2369
+ "description": "A short abbreviation for the group, up to 2 characters.",
2370
+ "type": "string",
2371
+ "maxLength": 2,
2372
+ "nullable": true,
2373
+ "example": "FN"
2051
2374
  }
2052
2375
  },
2053
2376
  "required": [
@@ -2075,6 +2398,13 @@
2075
2398
  },
2076
2399
  "image_uri": {
2077
2400
  "$ref": "#/components/schemas/GroupImageUri"
2401
+ },
2402
+ "abbreviation": {
2403
+ "description": "A short abbreviation for the group, up to 2 characters.",
2404
+ "type": "string",
2405
+ "maxLength": 2,
2406
+ "nullable": true,
2407
+ "example": "FN"
2078
2408
  }
2079
2409
  }
2080
2410
  },
@@ -2132,6 +2462,13 @@
2132
2462
  },
2133
2463
  "image_uri": {
2134
2464
  "$ref": "#/components/schemas/GroupImageUri"
2465
+ },
2466
+ "abbreviation": {
2467
+ "description": "A short abbreviation for the group, up to 2 characters.",
2468
+ "type": "string",
2469
+ "maxLength": 2,
2470
+ "nullable": true,
2471
+ "example": "FN"
2135
2472
  }
2136
2473
  },
2137
2474
  "required": [
@@ -2377,6 +2714,110 @@
2377
2714
  }
2378
2715
  }
2379
2716
  },
2717
+ "UserSettingScope": {
2718
+ "type": "string",
2719
+ "description": "User setting scope. Values are limited to 64 characters.",
2720
+ "minLength": 1,
2721
+ "maxLength": 64,
2722
+ "example": "calendar"
2723
+ },
2724
+ "UserSettingKey": {
2725
+ "type": "string",
2726
+ "description": "User setting key. Values are limited to 128 characters.",
2727
+ "minLength": 1,
2728
+ "maxLength": 128,
2729
+ "example": "visible_calendars"
2730
+ },
2731
+ "UserSettingValue": {
2732
+ "description": "The JSON value of a user setting. Objects are recommended for extensibility, but any JSON value is accepted up to 64 KiB when serialized as JSON.",
2733
+ "x-maxSerializedBytes": 65536
2734
+ },
2735
+ "UserSetting": {
2736
+ "type": "object",
2737
+ "properties": {
2738
+ "scope": {
2739
+ "$ref": "#/components/schemas/UserSettingScope"
2740
+ },
2741
+ "key": {
2742
+ "$ref": "#/components/schemas/UserSettingKey"
2743
+ },
2744
+ "value": {
2745
+ "$ref": "#/components/schemas/UserSettingValue"
2746
+ },
2747
+ "created_at": {
2748
+ "type": "string",
2749
+ "format": "date-time"
2750
+ },
2751
+ "updated_at": {
2752
+ "type": "string",
2753
+ "format": "date-time"
2754
+ }
2755
+ },
2756
+ "required": [
2757
+ "scope",
2758
+ "key",
2759
+ "value",
2760
+ "created_at",
2761
+ "updated_at"
2762
+ ]
2763
+ },
2764
+ "UserSettingsListResponse": {
2765
+ "type": "object",
2766
+ "properties": {
2767
+ "results": {
2768
+ "type": "array",
2769
+ "items": {
2770
+ "type": "object",
2771
+ "properties": {
2772
+ "scope": {
2773
+ "$ref": "#/components/schemas/UserSettingScope"
2774
+ },
2775
+ "keys": {
2776
+ "type": "array",
2777
+ "items": {
2778
+ "$ref": "#/components/schemas/UserSettingKey"
2779
+ },
2780
+ "example": [
2781
+ "visible_calendars"
2782
+ ]
2783
+ }
2784
+ },
2785
+ "required": [
2786
+ "scope",
2787
+ "keys"
2788
+ ]
2789
+ }
2790
+ }
2791
+ },
2792
+ "required": [
2793
+ "results"
2794
+ ]
2795
+ },
2796
+ "UserSettingsScopeResponse": {
2797
+ "type": "object",
2798
+ "properties": {
2799
+ "scope": {
2800
+ "$ref": "#/components/schemas/UserSettingScope"
2801
+ },
2802
+ "settings": {
2803
+ "type": "object",
2804
+ "additionalProperties": {
2805
+ "$ref": "#/components/schemas/UserSettingValue"
2806
+ },
2807
+ "example": {
2808
+ "visible_calendars": {
2809
+ "calendar_ids": [
2810
+ "holidays"
2811
+ ]
2812
+ }
2813
+ }
2814
+ }
2815
+ },
2816
+ "required": [
2817
+ "scope",
2818
+ "settings"
2819
+ ]
2820
+ },
2380
2821
  "Passkey": {
2381
2822
  "type": "object",
2382
2823
  "properties": {
@@ -0,0 +1,7 @@
1
+ import "./chunk-YPSWSI3M.js";
2
+
3
+ // src/docs/README.json
4
+ var README_default = "<h1 align=\"center\"><img alt=\"epilot\" src=\"https://raw.githubusercontent.com/epilot-dev/sdk-js/main/logo.png\" width=\"200\"><br>@epilot/sdk</h1>\n\n<p align=\"center\">\n <a href=\"https://github.com/epilot-dev/sdk-js/actions?query=workflow%3ACI\"><img src=\"https://github.com/epilot-dev/sdk-js/workflows/CI/badge.svg\" alt=\"CI\"></a>\n <a href=\"https://www.npmjs.com/package/@epilot/sdk\"><img src=\"https://img.shields.io/npm/v/@epilot/sdk.svg\" alt=\"npm version\"></a>\n <a href=\"https://github.com/epilot-dev/sdk-js/blob/main/\"><img src=\"http://img.shields.io/:license-mit-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">JavaScript/TypeScript SDK for epilot APIs. Full types, tree-shakeable imports, and lazy-loaded OpenAPI specs.</p>\n\n## Install\n\n```bash\nnpm i @epilot/sdk axios openapi-client-axios\n```\n\n## Quick Start\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-bearer-token>')\n\nconst { data: entity } = await epilot.entity.createEntity(\n { slug: 'contact' },\n { first_name: 'John', last_name: 'Doe' },\n)\n\nconst { data: file } = await epilot.file.getFile({ id: 'file-123' })\n\nconst { data: executions } = await epilot.workflow.getExecutions()\n```\n\nAPI clients are built on [openapi-client-axios](https://openapistack.co/docs/openapi-client-axios/intro/), which generates fully typed operation methods on top of regular [axios](https://axios-http.com/docs/intro) instances. All standard axios features (interceptors, defaults, config) work as expected. Each operation is forwarded to a lazy singleton \u2014 the spec is loaded and the client initialized on first use, then cached.\n\nFull API documentation: [https://docs.epilot.io/api](https://docs.epilot.io/api)\n\n## API Reference\n\n<!-- api-reference-table -->\n| API | Import | Docs |\n| --- | ------ | ---- |\n| `epilot.accessToken` | `@epilot/sdk/access-token` | [docs](./docs/access-token.md) |\n| `epilot.address` | `@epilot/sdk/address` | [docs](./docs/address.md) |\n| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [docs](./docs/address-suggestions.md) |\n| `epilot.aiAgents` | `@epilot/sdk/ai-agents` | [docs](./docs/ai-agents.md) |\n| `epilot.app` | `@epilot/sdk/app` | [docs](./docs/app.md) |\n| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [docs](./docs/audit-logs.md) |\n| `epilot.automation` | `@epilot/sdk/automation` | [docs](./docs/automation.md) |\n| `epilot.billing` | `@epilot/sdk/billing` | [docs](./docs/billing.md) |\n| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [docs](./docs/blueprint-manifest.md) |\n| `epilot.calendar` | `@epilot/sdk/calendar` | [docs](./docs/calendar.md) |\n| `epilot.configurationHub` | `@epilot/sdk/configuration-hub` | [docs](./docs/configuration-hub.md) |\n| `epilot.consent` | `@epilot/sdk/consent` | [docs](./docs/consent.md) |\n| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [docs](./docs/customer-portal.md) |\n| `epilot.dashboard` | `@epilot/sdk/dashboard` | [docs](./docs/dashboard.md) |\n| `epilot.dataGovernance` | `@epilot/sdk/data-governance` | [docs](./docs/data-governance.md) |\n| `epilot.deduplication` | `@epilot/sdk/deduplication` | [docs](./docs/deduplication.md) |\n| `epilot.design` | `@epilot/sdk/design` | [docs](./docs/design.md) |\n| `epilot.document` | `@epilot/sdk/document` | [docs](./docs/document.md) |\n| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [docs](./docs/email-settings.md) |\n| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [docs](./docs/email-template.md) |\n| `epilot.entity` | `@epilot/sdk/entity` | [docs](./docs/entity.md) |\n| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [docs](./docs/entity-mapping.md) |\n| `epilot.environments` | `@epilot/sdk/environments` | [docs](./docs/environments.md) |\n| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [docs](./docs/event-catalog.md) |\n| `epilot.file` | `@epilot/sdk/file` | [docs](./docs/file.md) |\n| `epilot.iban` | `@epilot/sdk/iban` | [docs](./docs/iban.md) |\n| `epilot.integrationToolkit` | `@epilot/sdk/integration-toolkit` | [docs](./docs/integration-toolkit.md) |\n| `epilot.journey` | `@epilot/sdk/journey` | [docs](./docs/journey.md) |\n| `epilot.kanban` | `@epilot/sdk/kanban` | [docs](./docs/kanban.md) |\n| `epilot.message` | `@epilot/sdk/message` | [docs](./docs/message.md) |\n| `epilot.metering` | `@epilot/sdk/metering` | [docs](./docs/metering.md) |\n| `epilot.notes` | `@epilot/sdk/notes` | [docs](./docs/notes.md) |\n| `epilot.notification` | `@epilot/sdk/notification` | [docs](./docs/notification.md) |\n| `epilot.organization` | `@epilot/sdk/organization` | [docs](./docs/organization.md) |\n| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [docs](./docs/partner-directory.md) |\n| `epilot.permissions` | `@epilot/sdk/permissions` | [docs](./docs/permissions.md) |\n| `epilot.pricing` | `@epilot/sdk/pricing` | [docs](./docs/pricing.md) |\n| `epilot.pricingTier` | `@epilot/sdk/pricing-tier` | [docs](./docs/pricing-tier.md) |\n| `epilot.purpose` | `@epilot/sdk/purpose` | [docs](./docs/purpose.md) |\n| `epilot.query` | `@epilot/sdk/query` | [docs](./docs/query.md) |\n| `epilot.sandbox` | `@epilot/sdk/sandbox` | [docs](./docs/sandbox.md) |\n| `epilot.sharing` | `@epilot/sdk/sharing` | [docs](./docs/sharing.md) |\n| `epilot.snapshot` | `@epilot/sdk/snapshot` | [docs](./docs/snapshot.md) |\n| `epilot.submission` | `@epilot/sdk/submission` | [docs](./docs/submission.md) |\n| `epilot.targeting` | `@epilot/sdk/targeting` | [docs](./docs/targeting.md) |\n| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [docs](./docs/template-variables.md) |\n| `epilot.user` | `@epilot/sdk/user` | [docs](./docs/user.md) |\n| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [docs](./docs/validation-rules.md) |\n| `epilot.webhooks` | `@epilot/sdk/webhooks` | [docs](./docs/webhooks.md) |\n| `epilot.workflow` | `@epilot/sdk/workflow` | [docs](./docs/workflow.md) |\n| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [docs](./docs/workflow-definition.md) |\n<!-- /api-reference-table -->\n\n## OpenAPI Spec\n\nRetrieve the full OpenAPI specification for any API at runtime. The spec is lazy-loaded on first call and cached.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Via API handle\nconst entitySpec = await epilot.entity.openapi()\nconsole.log(entitySpec.info.title) // \"Entity API\"\nconsole.log(entitySpec.paths) // all paths with full schemas\n\n// Via top-level method\nconst spec = await epilot.openapi('entity')\n```\n\nFor tree-shakeable imports:\n\n```ts\nimport { openapi } from '@epilot/sdk/entity'\n\nconst spec = await openapi()\n```\n\n## Explicit Client Access\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\n\n// Get the cached singleton client\nconst entityClient = epilot.entity.getClient()\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Create a fresh (non-singleton) client instance\nconst freshClient = epilot.entity.createClient()\nauthorize(freshClient, () => '<my-token>')\n```\n\n## Tree-Shakeable Imports\n\nImport only what you need. Other APIs never touch your bundle.\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Or use the handle for direct operation forwarding\nimport { entity } from '@epilot/sdk/entity'\nconst { data } = await entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n## Types\n\nEach API subpath re-exports all schema types generated from the OpenAPI spec. Import them directly:\n\n```ts\nimport type { Entity, EntitySchema, RelationAttribute } from '@epilot/sdk/entity'\nimport type { FileItem } from '@epilot/sdk/file'\nimport type { AutomationFlow } from '@epilot/sdk/automation'\n```\n\nThe `Client`, `OperationMethods`, and `PathsDictionary` types are also available for typing client instances:\n\n```ts\nimport type { Client } from '@epilot/sdk/entity'\n\nconst entityClient: Client = epilot.entity.getClient()\n```\n\n## Headers\n\n### Global Headers\n\nSet default headers applied to all clients. Useful for `x-epilot-org-id`, `x-epilot-user-id`, etc.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.headers({\n 'x-epilot-org-id': 'org-123',\n 'x-epilot-user-id': 'user-456',\n})\n\nconst { data } = await epilot.entity.searchEntities(...)\n```\n\n### Standard Axios Headers\n\nUse standard axios `defaults.headers.common` on individual clients:\n\n```ts\nconst entityClient = epilot.entity.getClient()\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Auth Patterns\n\n`authorize()` accepts a string or a function. The function form is preferred \u2014 it is called on every request, so tokens stay fresh.\n\n```ts\nimport { authorize } from '@epilot/sdk'\nimport { getClient } from '@epilot/sdk/entity'\n\n// Per-client \u2014 function predicate (recommended)\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\n// Per-client \u2014 async function (e.g. OAuth / session)\nauthorize(entityClient, async () => {\n return await getTokenFromSession()\n})\n\n// Per-client \u2014 static string (sets default header once)\nauthorize(entityClient, 'my-static-api-token')\n```\n\n```ts\n// Global \u2014 applies to all clients resolved from the SDK\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.authorize(async () => await getTokenFromSession())\nepilot.authorize('my-static-api-token')\n```\n\n## Fresh Client Instance\n\n```ts\nimport { createClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = createClient()\nauthorize(entityClient, () => '<my-token>')\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Multiple SDK Instances\n\n```ts\nimport { createSDK } from '@epilot/sdk'\n\nconst sdk1 = createSDK()\nsdk1.authorize(() => '<token-for-org-1>')\nsdk1.headers({ 'x-epilot-org-id': 'org-1' })\n\nconst sdk2 = createSDK()\nsdk2.authorize(() => '<token-for-org-2>')\nsdk2.headers({ 'x-epilot-org-id': 'org-2' })\n```\n\n\n## Interceptors\n\nUse axios interceptors for custom request/response processing. Since clients are axios instances, you can use `client.interceptors` directly:\n\n```ts\nentityClient.interceptors.response.use((response) => {\n console.debug(`${response.config.method?.toUpperCase()} ${response.config.url}`, {\n status: response.status,\n data: response.data,\n })\n return response\n})\n```\n\nOr register global interceptors applied to all clients:\n\n```ts\nepilot.interceptors.request((config) => {\n config.headers['x-correlation-id'] = generateTraceId()\n return config\n})\n```\n\n## Auto-Retry (429 Too Many Requests)\n\nThe SDK automatically retries requests that receive a `429 Too Many Requests` response. It respects the `Retry-After` header (in seconds) to determine how long to wait before retrying.\n\nEnabled by default with up to 3 retries.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Customize retry behavior\nepilot.retry({ maxRetries: 5, defaultDelayMs: 2000 })\n\n// Disable retries\nepilot.retry({ maxRetries: 0 })\n```\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `maxRetries` | `3` | Maximum number of retries. Set to `0` to disable. |\n| `defaultDelayMs` | `1000` | Fallback delay in ms when `Retry-After` header is missing. |\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyRetryInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyRetryInterceptor({ client: entityClient, config: { maxRetries: 3 } })\n```\n\n## Large Response Handling (413 Payload Too Large)\n\nepilot APIs use a [large response middleware](https://github.com/epilot-dev/aws-lambda-utility-middlewares) to work around the AWS Lambda 6MB response limit. When a response exceeds ~5.1MB, the API uploads the payload to S3 and returns a presigned URL instead.\n\nThe SDK handles this transparently \u2014 it sends the opt-in `Accept` header and automatically fetches the full payload from S3 when a large response URL is returned. Enabled by default.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Disable large response handling\nepilot.largeResponse({ enabled: false })\n```\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyLargeResponseInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyLargeResponseInterceptor({ client: entityClient, config: { enabled: true } })\n```\n\n## Overrides & Custom APIs\n\nOverride built-in API specs or register custom APIs via `.epilot/sdk-overrides.json`. This is useful for testing new versions of an API spec or getting the latest types without waiting for an SDK release.\n\n```json\n{\n \"entity\": \"./specs/entity-openapi.json\",\n \"myNewApi\": \"./specs/my-new-api-openapi.json\"\n}\n```\n\n```ts\n// Built-in API with overridden spec\nconst { data } = await epilot.entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n### Override Commands\n\n```bash\n# Apply all overrides from .epilot/sdk-overrides.json\nnpx epilot-sdk override\n\n# Override a single API\nnpx epilot-sdk override entity ./my-local-entity-spec.yaml\n\n# Regenerate types after spec changes\nnpx epilot-sdk typegen\n```\n\n<details>\n<summary>Migration from <code>@epilot/*-client</code></summary>\n\nDrop-in replacement \u2014 just change the import path:\n\n```ts\n// Before\nimport { getClient, createClient, authorize } from '@epilot/entity-client'\nimport type { Client, Entity } from '@epilot/entity-client'\n\n// After\nimport { getClient, createClient, authorize } from '@epilot/sdk/entity'\nimport type { Client, Entity } from '@epilot/sdk/entity'\n```\n\n</details>\n\n<details>\n<summary>Client Lifecycle</summary>\n\nWhen you call `authorize()`, `headers()`, `retry()`, `largeResponse()`, or `interceptors`, the SDK invalidates all cached client instances. The next operation call creates a fresh client with the updated configuration.\n\n**Operation methods are always up to date** \u2014 calls like `epilot.entity.getEntity(...)` re-resolve the client on every invocation, so they always use the latest config.\n\n**Direct `getClient()` references can go stale** \u2014 if you hold a reference and then change config, your reference still points to the old client:\n\n```ts\nconst entityClient = epilot.entity.getClient()\n\nepilot.authorize('new-token') // invalidates all cached clients\n\n// entityClient still has the old token\n// epilot.entity.getEntity(...) will use a new client with the new token\n```\n\nIf you need a long-lived reference that survives config changes, call `getClient()` again after changing config, or use operation methods directly.\n\n</details>\n";
5
+ export {
6
+ README_default as default
7
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
+
3
+ // src/docs/README.json
4
+ var README_default = "<h1 align=\"center\"><img alt=\"epilot\" src=\"https://raw.githubusercontent.com/epilot-dev/sdk-js/main/logo.png\" width=\"200\"><br>@epilot/sdk</h1>\n\n<p align=\"center\">\n <a href=\"https://github.com/epilot-dev/sdk-js/actions?query=workflow%3ACI\"><img src=\"https://github.com/epilot-dev/sdk-js/workflows/CI/badge.svg\" alt=\"CI\"></a>\n <a href=\"https://www.npmjs.com/package/@epilot/sdk\"><img src=\"https://img.shields.io/npm/v/@epilot/sdk.svg\" alt=\"npm version\"></a>\n <a href=\"https://github.com/epilot-dev/sdk-js/blob/main/\"><img src=\"http://img.shields.io/:license-mit-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">JavaScript/TypeScript SDK for epilot APIs. Full types, tree-shakeable imports, and lazy-loaded OpenAPI specs.</p>\n\n## Install\n\n```bash\nnpm i @epilot/sdk axios openapi-client-axios\n```\n\n## Quick Start\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-bearer-token>')\n\nconst { data: entity } = await epilot.entity.createEntity(\n { slug: 'contact' },\n { first_name: 'John', last_name: 'Doe' },\n)\n\nconst { data: file } = await epilot.file.getFile({ id: 'file-123' })\n\nconst { data: executions } = await epilot.workflow.getExecutions()\n```\n\nAPI clients are built on [openapi-client-axios](https://openapistack.co/docs/openapi-client-axios/intro/), which generates fully typed operation methods on top of regular [axios](https://axios-http.com/docs/intro) instances. All standard axios features (interceptors, defaults, config) work as expected. Each operation is forwarded to a lazy singleton \u2014 the spec is loaded and the client initialized on first use, then cached.\n\nFull API documentation: [https://docs.epilot.io/api](https://docs.epilot.io/api)\n\n## API Reference\n\n<!-- api-reference-table -->\n| API | Import | Docs |\n| --- | ------ | ---- |\n| `epilot.accessToken` | `@epilot/sdk/access-token` | [docs](./docs/access-token.md) |\n| `epilot.address` | `@epilot/sdk/address` | [docs](./docs/address.md) |\n| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [docs](./docs/address-suggestions.md) |\n| `epilot.aiAgents` | `@epilot/sdk/ai-agents` | [docs](./docs/ai-agents.md) |\n| `epilot.app` | `@epilot/sdk/app` | [docs](./docs/app.md) |\n| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [docs](./docs/audit-logs.md) |\n| `epilot.automation` | `@epilot/sdk/automation` | [docs](./docs/automation.md) |\n| `epilot.billing` | `@epilot/sdk/billing` | [docs](./docs/billing.md) |\n| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [docs](./docs/blueprint-manifest.md) |\n| `epilot.calendar` | `@epilot/sdk/calendar` | [docs](./docs/calendar.md) |\n| `epilot.configurationHub` | `@epilot/sdk/configuration-hub` | [docs](./docs/configuration-hub.md) |\n| `epilot.consent` | `@epilot/sdk/consent` | [docs](./docs/consent.md) |\n| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [docs](./docs/customer-portal.md) |\n| `epilot.dashboard` | `@epilot/sdk/dashboard` | [docs](./docs/dashboard.md) |\n| `epilot.dataGovernance` | `@epilot/sdk/data-governance` | [docs](./docs/data-governance.md) |\n| `epilot.deduplication` | `@epilot/sdk/deduplication` | [docs](./docs/deduplication.md) |\n| `epilot.design` | `@epilot/sdk/design` | [docs](./docs/design.md) |\n| `epilot.document` | `@epilot/sdk/document` | [docs](./docs/document.md) |\n| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [docs](./docs/email-settings.md) |\n| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [docs](./docs/email-template.md) |\n| `epilot.entity` | `@epilot/sdk/entity` | [docs](./docs/entity.md) |\n| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [docs](./docs/entity-mapping.md) |\n| `epilot.environments` | `@epilot/sdk/environments` | [docs](./docs/environments.md) |\n| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [docs](./docs/event-catalog.md) |\n| `epilot.file` | `@epilot/sdk/file` | [docs](./docs/file.md) |\n| `epilot.iban` | `@epilot/sdk/iban` | [docs](./docs/iban.md) |\n| `epilot.integrationToolkit` | `@epilot/sdk/integration-toolkit` | [docs](./docs/integration-toolkit.md) |\n| `epilot.journey` | `@epilot/sdk/journey` | [docs](./docs/journey.md) |\n| `epilot.kanban` | `@epilot/sdk/kanban` | [docs](./docs/kanban.md) |\n| `epilot.message` | `@epilot/sdk/message` | [docs](./docs/message.md) |\n| `epilot.metering` | `@epilot/sdk/metering` | [docs](./docs/metering.md) |\n| `epilot.notes` | `@epilot/sdk/notes` | [docs](./docs/notes.md) |\n| `epilot.notification` | `@epilot/sdk/notification` | [docs](./docs/notification.md) |\n| `epilot.organization` | `@epilot/sdk/organization` | [docs](./docs/organization.md) |\n| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [docs](./docs/partner-directory.md) |\n| `epilot.permissions` | `@epilot/sdk/permissions` | [docs](./docs/permissions.md) |\n| `epilot.pricing` | `@epilot/sdk/pricing` | [docs](./docs/pricing.md) |\n| `epilot.pricingTier` | `@epilot/sdk/pricing-tier` | [docs](./docs/pricing-tier.md) |\n| `epilot.purpose` | `@epilot/sdk/purpose` | [docs](./docs/purpose.md) |\n| `epilot.query` | `@epilot/sdk/query` | [docs](./docs/query.md) |\n| `epilot.sandbox` | `@epilot/sdk/sandbox` | [docs](./docs/sandbox.md) |\n| `epilot.sharing` | `@epilot/sdk/sharing` | [docs](./docs/sharing.md) |\n| `epilot.snapshot` | `@epilot/sdk/snapshot` | [docs](./docs/snapshot.md) |\n| `epilot.submission` | `@epilot/sdk/submission` | [docs](./docs/submission.md) |\n| `epilot.targeting` | `@epilot/sdk/targeting` | [docs](./docs/targeting.md) |\n| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [docs](./docs/template-variables.md) |\n| `epilot.user` | `@epilot/sdk/user` | [docs](./docs/user.md) |\n| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [docs](./docs/validation-rules.md) |\n| `epilot.webhooks` | `@epilot/sdk/webhooks` | [docs](./docs/webhooks.md) |\n| `epilot.workflow` | `@epilot/sdk/workflow` | [docs](./docs/workflow.md) |\n| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [docs](./docs/workflow-definition.md) |\n<!-- /api-reference-table -->\n\n## OpenAPI Spec\n\nRetrieve the full OpenAPI specification for any API at runtime. The spec is lazy-loaded on first call and cached.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Via API handle\nconst entitySpec = await epilot.entity.openapi()\nconsole.log(entitySpec.info.title) // \"Entity API\"\nconsole.log(entitySpec.paths) // all paths with full schemas\n\n// Via top-level method\nconst spec = await epilot.openapi('entity')\n```\n\nFor tree-shakeable imports:\n\n```ts\nimport { openapi } from '@epilot/sdk/entity'\n\nconst spec = await openapi()\n```\n\n## Explicit Client Access\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\n\n// Get the cached singleton client\nconst entityClient = epilot.entity.getClient()\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Create a fresh (non-singleton) client instance\nconst freshClient = epilot.entity.createClient()\nauthorize(freshClient, () => '<my-token>')\n```\n\n## Tree-Shakeable Imports\n\nImport only what you need. Other APIs never touch your bundle.\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Or use the handle for direct operation forwarding\nimport { entity } from '@epilot/sdk/entity'\nconst { data } = await entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n## Types\n\nEach API subpath re-exports all schema types generated from the OpenAPI spec. Import them directly:\n\n```ts\nimport type { Entity, EntitySchema, RelationAttribute } from '@epilot/sdk/entity'\nimport type { FileItem } from '@epilot/sdk/file'\nimport type { AutomationFlow } from '@epilot/sdk/automation'\n```\n\nThe `Client`, `OperationMethods`, and `PathsDictionary` types are also available for typing client instances:\n\n```ts\nimport type { Client } from '@epilot/sdk/entity'\n\nconst entityClient: Client = epilot.entity.getClient()\n```\n\n## Headers\n\n### Global Headers\n\nSet default headers applied to all clients. Useful for `x-epilot-org-id`, `x-epilot-user-id`, etc.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.headers({\n 'x-epilot-org-id': 'org-123',\n 'x-epilot-user-id': 'user-456',\n})\n\nconst { data } = await epilot.entity.searchEntities(...)\n```\n\n### Standard Axios Headers\n\nUse standard axios `defaults.headers.common` on individual clients:\n\n```ts\nconst entityClient = epilot.entity.getClient()\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Auth Patterns\n\n`authorize()` accepts a string or a function. The function form is preferred \u2014 it is called on every request, so tokens stay fresh.\n\n```ts\nimport { authorize } from '@epilot/sdk'\nimport { getClient } from '@epilot/sdk/entity'\n\n// Per-client \u2014 function predicate (recommended)\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\n// Per-client \u2014 async function (e.g. OAuth / session)\nauthorize(entityClient, async () => {\n return await getTokenFromSession()\n})\n\n// Per-client \u2014 static string (sets default header once)\nauthorize(entityClient, 'my-static-api-token')\n```\n\n```ts\n// Global \u2014 applies to all clients resolved from the SDK\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.authorize(async () => await getTokenFromSession())\nepilot.authorize('my-static-api-token')\n```\n\n## Fresh Client Instance\n\n```ts\nimport { createClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = createClient()\nauthorize(entityClient, () => '<my-token>')\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Multiple SDK Instances\n\n```ts\nimport { createSDK } from '@epilot/sdk'\n\nconst sdk1 = createSDK()\nsdk1.authorize(() => '<token-for-org-1>')\nsdk1.headers({ 'x-epilot-org-id': 'org-1' })\n\nconst sdk2 = createSDK()\nsdk2.authorize(() => '<token-for-org-2>')\nsdk2.headers({ 'x-epilot-org-id': 'org-2' })\n```\n\n\n## Interceptors\n\nUse axios interceptors for custom request/response processing. Since clients are axios instances, you can use `client.interceptors` directly:\n\n```ts\nentityClient.interceptors.response.use((response) => {\n console.debug(`${response.config.method?.toUpperCase()} ${response.config.url}`, {\n status: response.status,\n data: response.data,\n })\n return response\n})\n```\n\nOr register global interceptors applied to all clients:\n\n```ts\nepilot.interceptors.request((config) => {\n config.headers['x-correlation-id'] = generateTraceId()\n return config\n})\n```\n\n## Auto-Retry (429 Too Many Requests)\n\nThe SDK automatically retries requests that receive a `429 Too Many Requests` response. It respects the `Retry-After` header (in seconds) to determine how long to wait before retrying.\n\nEnabled by default with up to 3 retries.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Customize retry behavior\nepilot.retry({ maxRetries: 5, defaultDelayMs: 2000 })\n\n// Disable retries\nepilot.retry({ maxRetries: 0 })\n```\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `maxRetries` | `3` | Maximum number of retries. Set to `0` to disable. |\n| `defaultDelayMs` | `1000` | Fallback delay in ms when `Retry-After` header is missing. |\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyRetryInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyRetryInterceptor({ client: entityClient, config: { maxRetries: 3 } })\n```\n\n## Large Response Handling (413 Payload Too Large)\n\nepilot APIs use a [large response middleware](https://github.com/epilot-dev/aws-lambda-utility-middlewares) to work around the AWS Lambda 6MB response limit. When a response exceeds ~5.1MB, the API uploads the payload to S3 and returns a presigned URL instead.\n\nThe SDK handles this transparently \u2014 it sends the opt-in `Accept` header and automatically fetches the full payload from S3 when a large response URL is returned. Enabled by default.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Disable large response handling\nepilot.largeResponse({ enabled: false })\n```\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyLargeResponseInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyLargeResponseInterceptor({ client: entityClient, config: { enabled: true } })\n```\n\n## Overrides & Custom APIs\n\nOverride built-in API specs or register custom APIs via `.epilot/sdk-overrides.json`. This is useful for testing new versions of an API spec or getting the latest types without waiting for an SDK release.\n\n```json\n{\n \"entity\": \"./specs/entity-openapi.json\",\n \"myNewApi\": \"./specs/my-new-api-openapi.json\"\n}\n```\n\n```ts\n// Built-in API with overridden spec\nconst { data } = await epilot.entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n### Override Commands\n\n```bash\n# Apply all overrides from .epilot/sdk-overrides.json\nnpx epilot-sdk override\n\n# Override a single API\nnpx epilot-sdk override entity ./my-local-entity-spec.yaml\n\n# Regenerate types after spec changes\nnpx epilot-sdk typegen\n```\n\n<details>\n<summary>Migration from <code>@epilot/*-client</code></summary>\n\nDrop-in replacement \u2014 just change the import path:\n\n```ts\n// Before\nimport { getClient, createClient, authorize } from '@epilot/entity-client'\nimport type { Client, Entity } from '@epilot/entity-client'\n\n// After\nimport { getClient, createClient, authorize } from '@epilot/sdk/entity'\nimport type { Client, Entity } from '@epilot/sdk/entity'\n```\n\n</details>\n\n<details>\n<summary>Client Lifecycle</summary>\n\nWhen you call `authorize()`, `headers()`, `retry()`, `largeResponse()`, or `interceptors`, the SDK invalidates all cached client instances. The next operation call creates a fresh client with the updated configuration.\n\n**Operation methods are always up to date** \u2014 calls like `epilot.entity.getEntity(...)` re-resolve the client on every invocation, so they always use the latest config.\n\n**Direct `getClient()` references can go stale** \u2014 if you hold a reference and then change config, your reference still points to the old client:\n\n```ts\nconst entityClient = epilot.entity.getClient()\n\nepilot.authorize('new-token') // invalidates all cached clients\n\n// entityClient still has the old token\n// epilot.entity.getEntity(...) will use a new client with the new token\n```\n\nIf you need a long-lived reference that survives config changes, call `getClient()` again after changing config, or use operation methods directly.\n\n</details>\n";
5
+
6
+
7
+ exports.default = README_default;
@@ -43,6 +43,7 @@ var purpose = "purpose";
43
43
  var query = "query";
44
44
  var sandbox = "sandbox";
45
45
  var sharing = "sharing";
46
+ var snapshot = "snapshot";
46
47
  var submission = "submission";
47
48
  var targeting = "targeting";
48
49
  var templateVariables = "template-variables";
@@ -94,6 +95,7 @@ var index_default = {
94
95
  query,
95
96
  sandbox,
96
97
  sharing,
98
+ snapshot,
97
99
  submission,
98
100
  targeting,
99
101
  templateVariables,
@@ -155,4 +157,5 @@ var index_default = {
155
157
 
156
158
 
157
159
 
158
- exports.accessToken = accessToken; exports.address = address; exports.addressSuggestions = addressSuggestions; exports.aiAgents = aiAgents; exports.app = app; exports.auditLogs = auditLogs; exports.automation = automation; exports.billing = billing; exports.blueprintManifest = blueprintManifest; exports.calendar = calendar; exports.configurationHub = configurationHub; exports.consent = consent; exports.customerPortal = customerPortal; exports.dashboard = dashboard; exports.dataGovernance = dataGovernance; exports.deduplication = deduplication; exports.default = index_default; exports.design = design; exports.document = document; exports.emailSettings = emailSettings; exports.emailTemplate = emailTemplate; exports.entity = entity; exports.entityMapping = entityMapping; exports.environments = environments; exports.eventCatalog = eventCatalog; exports.file = file; exports.iban = iban; exports.integrationToolkit = integrationToolkit; exports.journey = journey; exports.kanban = kanban; exports.message = message; exports.metering = metering; exports.notes = notes; exports.notification = notification; exports.organization = organization; exports.partnerDirectory = partnerDirectory; exports.permissions = permissions; exports.pricing = pricing; exports.pricingTier = pricingTier; exports.purpose = purpose; exports.query = query; exports.sandbox = sandbox; exports.sharing = sharing; exports.submission = submission; exports.targeting = targeting; exports.templateVariables = templateVariables; exports.user = user; exports.validationRules = validationRules; exports.webhooks = webhooks; exports.workflow = workflow; exports.workflowDefinition = workflowDefinition;
160
+
161
+ exports.accessToken = accessToken; exports.address = address; exports.addressSuggestions = addressSuggestions; exports.aiAgents = aiAgents; exports.app = app; exports.auditLogs = auditLogs; exports.automation = automation; exports.billing = billing; exports.blueprintManifest = blueprintManifest; exports.calendar = calendar; exports.configurationHub = configurationHub; exports.consent = consent; exports.customerPortal = customerPortal; exports.dashboard = dashboard; exports.dataGovernance = dataGovernance; exports.deduplication = deduplication; exports.default = index_default; exports.design = design; exports.document = document; exports.emailSettings = emailSettings; exports.emailTemplate = emailTemplate; exports.entity = entity; exports.entityMapping = entityMapping; exports.environments = environments; exports.eventCatalog = eventCatalog; exports.file = file; exports.iban = iban; exports.integrationToolkit = integrationToolkit; exports.journey = journey; exports.kanban = kanban; exports.message = message; exports.metering = metering; exports.notes = notes; exports.notification = notification; exports.organization = organization; exports.partnerDirectory = partnerDirectory; exports.permissions = permissions; exports.pricing = pricing; exports.pricingTier = pricingTier; exports.purpose = purpose; exports.query = query; exports.sandbox = sandbox; exports.sharing = sharing; exports.snapshot = snapshot; exports.submission = submission; exports.targeting = targeting; exports.templateVariables = templateVariables; exports.user = user; exports.validationRules = validationRules; exports.webhooks = webhooks; exports.workflow = workflow; exports.workflowDefinition = workflowDefinition;