@boxyhq/saml-jackson 1.32.0 → 1.33.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/dist/controller/api.js +17 -7
  2. package/dist/controller/api.js.map +1 -1
  3. package/dist/controller/connection/oidc.js +17 -7
  4. package/dist/controller/connection/oidc.js.map +1 -1
  5. package/dist/controller/connection/saml.js +17 -7
  6. package/dist/controller/connection/saml.js.map +1 -1
  7. package/dist/controller/logout.js +17 -7
  8. package/dist/controller/logout.js.map +1 -1
  9. package/dist/controller/oauth/oidc-client.d.ts +9 -4
  10. package/dist/controller/oauth/oidc-client.js +80 -11
  11. package/dist/controller/oauth/oidc-client.js.map +1 -1
  12. package/dist/controller/oauth/oidc-issuer.d.ts +2 -0
  13. package/dist/controller/oauth/oidc-issuer.js +25 -0
  14. package/dist/controller/oauth/oidc-issuer.js.map +1 -0
  15. package/dist/controller/oauth.js +97 -46
  16. package/dist/controller/oauth.js.map +1 -1
  17. package/dist/controller/setup-link.js +17 -7
  18. package/dist/controller/setup-link.js.map +1 -1
  19. package/dist/controller/sso-handler.d.ts +10 -2
  20. package/dist/controller/sso-handler.js +34 -12
  21. package/dist/controller/sso-handler.js.map +1 -1
  22. package/dist/controller/utils.d.ts +5 -3
  23. package/dist/controller/utils.js +27 -9
  24. package/dist/controller/utils.js.map +1 -1
  25. package/dist/db/db.js +17 -7
  26. package/dist/db/db.js.map +1 -1
  27. package/dist/db/dynamoDb.js +17 -7
  28. package/dist/db/dynamoDb.js.map +1 -1
  29. package/dist/db/mem.js +17 -7
  30. package/dist/db/mem.js.map +1 -1
  31. package/dist/db/mongo.js +17 -7
  32. package/dist/db/mongo.js.map +1 -1
  33. package/dist/db/redis.js +17 -7
  34. package/dist/db/redis.js.map +1 -1
  35. package/dist/db/sql/sql.js +17 -7
  36. package/dist/db/sql/sql.js.map +1 -1
  37. package/dist/db/store.js +17 -7
  38. package/dist/db/store.js.map +1 -1
  39. package/dist/directory-sync/batch-events/queue.js +17 -7
  40. package/dist/directory-sync/batch-events/queue.js.map +1 -1
  41. package/dist/directory-sync/scim/DirectoryConfig.js +17 -7
  42. package/dist/directory-sync/scim/DirectoryConfig.js.map +1 -1
  43. package/dist/directory-sync/scim/Groups.js +17 -7
  44. package/dist/directory-sync/scim/Groups.js.map +1 -1
  45. package/dist/ee/identity-federation/idp-login.js +20 -14
  46. package/dist/ee/identity-federation/idp-login.js.map +1 -1
  47. package/dist/ee/identity-federation/sso.js +16 -11
  48. package/dist/ee/identity-federation/sso.js.map +1 -1
  49. package/dist/event/axios.d.ts +2 -1
  50. package/dist/index.js +17 -7
  51. package/dist/index.js.map +1 -1
  52. package/dist/loadConnection.js +17 -7
  53. package/dist/loadConnection.js.map +1 -1
  54. package/dist/saml/lib.js +17 -7
  55. package/dist/saml/lib.js.map +1 -1
  56. package/dist/saml/x509.js +17 -7
  57. package/dist/saml/x509.js.map +1 -1
  58. package/dist/src/controller/admin.d.ts +27 -0
  59. package/dist/src/controller/admin.js +60 -0
  60. package/dist/src/controller/admin.js.map +1 -0
  61. package/dist/src/controller/analytics.d.ts +16 -0
  62. package/dist/src/controller/analytics.js +79 -0
  63. package/dist/src/controller/analytics.js.map +1 -0
  64. package/dist/src/controller/api.d.ts +557 -0
  65. package/dist/src/controller/api.js +806 -0
  66. package/dist/src/controller/api.js.map +1 -0
  67. package/dist/src/controller/connection/oidc.d.ts +7 -0
  68. package/dist/src/controller/connection/oidc.js +181 -0
  69. package/dist/src/controller/connection/oidc.js.map +1 -0
  70. package/dist/src/controller/connection/saml.d.ts +7 -0
  71. package/dist/src/controller/connection/saml.js +250 -0
  72. package/dist/src/controller/connection/saml.js.map +1 -0
  73. package/dist/src/controller/error.d.ts +10 -0
  74. package/dist/src/controller/error.js +13 -0
  75. package/dist/src/controller/error.js.map +1 -0
  76. package/dist/src/controller/health-check.d.ts +11 -0
  77. package/dist/src/controller/health-check.js +51 -0
  78. package/dist/src/controller/health-check.js.map +1 -0
  79. package/dist/src/controller/logout.d.ts +18 -0
  80. package/dist/src/controller/logout.js +132 -0
  81. package/dist/src/controller/logout.js.map +1 -0
  82. package/dist/src/controller/oauth/allowed.d.ts +1 -0
  83. package/dist/src/controller/oauth/allowed.js +30 -0
  84. package/dist/src/controller/oauth/allowed.js.map +1 -0
  85. package/dist/src/controller/oauth/code-verifier.d.ts +1 -0
  86. package/dist/src/controller/oauth/code-verifier.js +8 -0
  87. package/dist/src/controller/oauth/code-verifier.js.map +1 -0
  88. package/dist/src/controller/oauth/oidc-client.d.ts +12 -0
  89. package/dist/src/controller/oauth/oidc-client.js +89 -0
  90. package/dist/src/controller/oauth/oidc-client.js.map +1 -0
  91. package/dist/src/controller/oauth/redirect.d.ts +1 -0
  92. package/dist/src/controller/oauth/redirect.js +13 -0
  93. package/dist/src/controller/oauth/redirect.js.map +1 -0
  94. package/dist/src/controller/oauth.d.ts +142 -0
  95. package/dist/src/controller/oauth.js +1112 -0
  96. package/dist/src/controller/oauth.js.map +1 -0
  97. package/dist/src/controller/oidc-discovery.d.ts +22 -0
  98. package/dist/src/controller/oidc-discovery.js +47 -0
  99. package/dist/src/controller/oidc-discovery.js.map +1 -0
  100. package/dist/src/controller/setup-link.d.ts +307 -0
  101. package/dist/src/controller/setup-link.js +462 -0
  102. package/dist/src/controller/setup-link.js.map +1 -0
  103. package/dist/src/controller/sp-config.d.ts +22 -0
  104. package/dist/src/controller/sp-config.js +89 -0
  105. package/dist/src/controller/sp-config.js.map +1 -0
  106. package/dist/src/controller/sso-handler.d.ts +66 -0
  107. package/dist/src/controller/sso-handler.js +306 -0
  108. package/dist/src/controller/sso-handler.js.map +1 -0
  109. package/dist/src/controller/utils.d.ts +84 -0
  110. package/dist/src/controller/utils.js +328 -0
  111. package/dist/src/controller/utils.js.map +1 -0
  112. package/dist/src/cron/lock.d.ts +18 -0
  113. package/dist/src/cron/lock.js +98 -0
  114. package/dist/src/cron/lock.js.map +1 -0
  115. package/dist/src/db/db.d.ts +5 -0
  116. package/dist/src/db/db.js +178 -0
  117. package/dist/src/db/db.js.map +1 -0
  118. package/dist/src/db/defaultDb.d.ts +2 -0
  119. package/dist/src/db/defaultDb.js +18 -0
  120. package/dist/src/db/defaultDb.js.map +1 -0
  121. package/dist/src/db/dynamoDb.d.ts +19 -0
  122. package/dist/src/db/dynamoDb.js +320 -0
  123. package/dist/src/db/dynamoDb.js.map +1 -0
  124. package/dist/src/db/encrypter.d.ts +3 -0
  125. package/dist/src/db/encrypter.js +22 -0
  126. package/dist/src/db/encrypter.js.map +1 -0
  127. package/dist/src/db/mem.d.ts +23 -0
  128. package/dist/src/db/mem.js +186 -0
  129. package/dist/src/db/mem.js.map +1 -0
  130. package/dist/src/db/mongo.d.ts +22 -0
  131. package/dist/src/db/mongo.js +177 -0
  132. package/dist/src/db/mongo.js.map +1 -0
  133. package/dist/src/db/planetscale/entity/JacksonIndex.d.ts +5 -0
  134. package/dist/src/db/planetscale/entity/JacksonIndex.js +32 -0
  135. package/dist/src/db/planetscale/entity/JacksonIndex.js.map +1 -0
  136. package/dist/src/db/planetscale/entity/JacksonStore.d.ts +9 -0
  137. package/dist/src/db/planetscale/entity/JacksonStore.js +63 -0
  138. package/dist/src/db/planetscale/entity/JacksonStore.js.map +1 -0
  139. package/dist/src/db/planetscale/entity/JacksonTTL.d.ts +4 -0
  140. package/dist/src/db/planetscale/entity/JacksonTTL.js +27 -0
  141. package/dist/src/db/planetscale/entity/JacksonTTL.js.map +1 -0
  142. package/dist/src/db/redis.d.ts +18 -0
  143. package/dist/src/db/redis.js +214 -0
  144. package/dist/src/db/redis.js.map +1 -0
  145. package/dist/src/db/sql/entity/JacksonIndex.d.ts +7 -0
  146. package/dist/src/db/sql/entity/JacksonIndex.js +39 -0
  147. package/dist/src/db/sql/entity/JacksonIndex.js.map +1 -0
  148. package/dist/src/db/sql/entity/JacksonStore.d.ts +9 -0
  149. package/dist/src/db/sql/entity/JacksonStore.js +61 -0
  150. package/dist/src/db/sql/entity/JacksonStore.js.map +1 -0
  151. package/dist/src/db/sql/entity/JacksonTTL.d.ts +4 -0
  152. package/dist/src/db/sql/entity/JacksonTTL.js +27 -0
  153. package/dist/src/db/sql/entity/JacksonTTL.js.map +1 -0
  154. package/dist/src/db/sql/mariadb/entity/JacksonIndex.d.ts +7 -0
  155. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js +39 -0
  156. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js.map +1 -0
  157. package/dist/src/db/sql/mariadb/entity/JacksonStore.d.ts +9 -0
  158. package/dist/src/db/sql/mariadb/entity/JacksonStore.js +63 -0
  159. package/dist/src/db/sql/mariadb/entity/JacksonStore.js.map +1 -0
  160. package/dist/src/db/sql/mariadb/entity/JacksonTTL.d.ts +4 -0
  161. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js +27 -0
  162. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js.map +1 -0
  163. package/dist/src/db/sql/mssql/entity/JacksonIndex.d.ts +7 -0
  164. package/dist/src/db/sql/mssql/entity/JacksonIndex.js +39 -0
  165. package/dist/src/db/sql/mssql/entity/JacksonIndex.js.map +1 -0
  166. package/dist/src/db/sql/mssql/entity/JacksonStore.d.ts +9 -0
  167. package/dist/src/db/sql/mssql/entity/JacksonStore.js +61 -0
  168. package/dist/src/db/sql/mssql/entity/JacksonStore.js.map +1 -0
  169. package/dist/src/db/sql/mssql/entity/JacksonTTL.d.ts +4 -0
  170. package/dist/src/db/sql/mssql/entity/JacksonTTL.js +27 -0
  171. package/dist/src/db/sql/mssql/entity/JacksonTTL.js.map +1 -0
  172. package/dist/src/db/sql/mssql.d.ts +1 -0
  173. package/dist/src/db/sql/mssql.js +44 -0
  174. package/dist/src/db/sql/mssql.js.map +1 -0
  175. package/dist/src/db/sql/sql.d.ts +32 -0
  176. package/dist/src/db/sql/sql.js +318 -0
  177. package/dist/src/db/sql/sql.js.map +1 -0
  178. package/dist/src/db/sql/sqlite/entity/JacksonIndex.d.ts +7 -0
  179. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js +39 -0
  180. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js.map +1 -0
  181. package/dist/src/db/sql/sqlite/entity/JacksonStore.d.ts +9 -0
  182. package/dist/src/db/sql/sqlite/entity/JacksonStore.js +61 -0
  183. package/dist/src/db/sql/sqlite/entity/JacksonStore.js.map +1 -0
  184. package/dist/src/db/sql/sqlite/entity/JacksonTTL.d.ts +4 -0
  185. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js +27 -0
  186. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js.map +1 -0
  187. package/dist/src/db/store.d.ts +5 -0
  188. package/dist/src/db/store.js +65 -0
  189. package/dist/src/db/store.js.map +1 -0
  190. package/dist/src/db/utils.d.ts +16 -0
  191. package/dist/src/db/utils.js +28 -0
  192. package/dist/src/db/utils.js.map +1 -0
  193. package/dist/src/directory-sync/batch-events/queue.d.ts +40 -0
  194. package/dist/src/directory-sync/batch-events/queue.js +225 -0
  195. package/dist/src/directory-sync/batch-events/queue.js.map +1 -0
  196. package/dist/src/directory-sync/index.d.ts +27 -0
  197. package/dist/src/directory-sync/index.js +97 -0
  198. package/dist/src/directory-sync/index.js.map +1 -0
  199. package/dist/src/directory-sync/non-scim/google/api.d.ts +36 -0
  200. package/dist/src/directory-sync/non-scim/google/api.js +143 -0
  201. package/dist/src/directory-sync/non-scim/google/api.js.map +1 -0
  202. package/dist/src/directory-sync/non-scim/google/index.d.ts +12 -0
  203. package/dist/src/directory-sync/non-scim/google/index.js +10 -0
  204. package/dist/src/directory-sync/non-scim/google/index.js.map +1 -0
  205. package/dist/src/directory-sync/non-scim/google/oauth.d.ts +27 -0
  206. package/dist/src/directory-sync/non-scim/google/oauth.js +105 -0
  207. package/dist/src/directory-sync/non-scim/google/oauth.js.map +1 -0
  208. package/dist/src/directory-sync/non-scim/index.d.ts +24 -0
  209. package/dist/src/directory-sync/non-scim/index.js +85 -0
  210. package/dist/src/directory-sync/non-scim/index.js.map +1 -0
  211. package/dist/src/directory-sync/non-scim/syncGroupMembers.d.ts +23 -0
  212. package/dist/src/directory-sync/non-scim/syncGroupMembers.js +105 -0
  213. package/dist/src/directory-sync/non-scim/syncGroupMembers.js.map +1 -0
  214. package/dist/src/directory-sync/non-scim/syncGroups.d.ts +24 -0
  215. package/dist/src/directory-sync/non-scim/syncGroups.js +120 -0
  216. package/dist/src/directory-sync/non-scim/syncGroups.js.map +1 -0
  217. package/dist/src/directory-sync/non-scim/syncUsers.d.ts +24 -0
  218. package/dist/src/directory-sync/non-scim/syncUsers.js +120 -0
  219. package/dist/src/directory-sync/non-scim/syncUsers.js.map +1 -0
  220. package/dist/src/directory-sync/non-scim/utils.d.ts +36 -0
  221. package/dist/src/directory-sync/non-scim/utils.js +109 -0
  222. package/dist/src/directory-sync/non-scim/utils.js.map +1 -0
  223. package/dist/src/directory-sync/request.d.ts +14 -0
  224. package/dist/src/directory-sync/request.js +29 -0
  225. package/dist/src/directory-sync/request.js.map +1 -0
  226. package/dist/src/directory-sync/scim/Base.d.ts +12 -0
  227. package/dist/src/directory-sync/scim/Base.js +23 -0
  228. package/dist/src/directory-sync/scim/Base.js.map +1 -0
  229. package/dist/src/directory-sync/scim/DirectoryConfig.d.ts +343 -0
  230. package/dist/src/directory-sync/scim/DirectoryConfig.js +580 -0
  231. package/dist/src/directory-sync/scim/DirectoryConfig.js.map +1 -0
  232. package/dist/src/directory-sync/scim/DirectoryGroups.d.ts +28 -0
  233. package/dist/src/directory-sync/scim/DirectoryGroups.js +252 -0
  234. package/dist/src/directory-sync/scim/DirectoryGroups.js.map +1 -0
  235. package/dist/src/directory-sync/scim/DirectoryUsers.d.ts +25 -0
  236. package/dist/src/directory-sync/scim/DirectoryUsers.js +193 -0
  237. package/dist/src/directory-sync/scim/DirectoryUsers.js.map +1 -0
  238. package/dist/src/directory-sync/scim/Groups.d.ts +166 -0
  239. package/dist/src/directory-sync/scim/Groups.js +348 -0
  240. package/dist/src/directory-sync/scim/Groups.js.map +1 -0
  241. package/dist/src/directory-sync/scim/Users.d.ts +99 -0
  242. package/dist/src/directory-sync/scim/Users.js +215 -0
  243. package/dist/src/directory-sync/scim/Users.js.map +1 -0
  244. package/dist/src/directory-sync/scim/WebhookEventsLogger.d.ts +101 -0
  245. package/dist/src/directory-sync/scim/WebhookEventsLogger.js +165 -0
  246. package/dist/src/directory-sync/scim/WebhookEventsLogger.js.map +1 -0
  247. package/dist/src/directory-sync/scim/transform.d.ts +6 -0
  248. package/dist/src/directory-sync/scim/transform.js +37 -0
  249. package/dist/src/directory-sync/scim/transform.js.map +1 -0
  250. package/dist/src/directory-sync/scim/utils.d.ts +33 -0
  251. package/dist/src/directory-sync/scim/utils.js +129 -0
  252. package/dist/src/directory-sync/scim/utils.js.map +1 -0
  253. package/dist/src/directory-sync/types.d.ts +195 -0
  254. package/dist/src/directory-sync/types.js +10 -0
  255. package/dist/src/directory-sync/types.js.map +1 -0
  256. package/dist/src/directory-sync/utils.d.ts +19 -0
  257. package/dist/src/directory-sync/utils.js +56 -0
  258. package/dist/src/directory-sync/utils.js.map +1 -0
  259. package/dist/src/ee/branding/index.d.ts +17 -0
  260. package/dist/src/ee/branding/index.js +49 -0
  261. package/dist/src/ee/branding/index.js.map +1 -0
  262. package/dist/src/ee/common/checkLicense.d.ts +3 -0
  263. package/dist/src/ee/common/checkLicense.js +23 -0
  264. package/dist/src/ee/common/checkLicense.js.map +1 -0
  265. package/dist/src/ee/identity-federation/app.d.ts +328 -0
  266. package/dist/src/ee/identity-federation/app.js +532 -0
  267. package/dist/src/ee/identity-federation/app.js.map +1 -0
  268. package/dist/src/ee/identity-federation/idp-login.d.ts +18 -0
  269. package/dist/src/ee/identity-federation/idp-login.js +98 -0
  270. package/dist/src/ee/identity-federation/idp-login.js.map +1 -0
  271. package/dist/src/ee/identity-federation/index.d.ts +15 -0
  272. package/dist/src/ee/identity-federation/index.js +43 -0
  273. package/dist/src/ee/identity-federation/index.js.map +1 -0
  274. package/dist/src/ee/identity-federation/sso.d.ts +24 -0
  275. package/dist/src/ee/identity-federation/sso.js +124 -0
  276. package/dist/src/ee/identity-federation/sso.js.map +1 -0
  277. package/dist/src/ee/identity-federation/types.d.ts +38 -0
  278. package/dist/src/ee/identity-federation/types.js +2 -0
  279. package/dist/src/ee/identity-federation/types.js.map +1 -0
  280. package/dist/src/ee/ory/ory.d.ts +18 -0
  281. package/dist/src/ee/ory/ory.js +195 -0
  282. package/dist/src/ee/ory/ory.js.map +1 -0
  283. package/dist/src/ee/product/index.d.ts +14 -0
  284. package/dist/src/ee/product/index.js +45 -0
  285. package/dist/src/ee/product/index.js.map +1 -0
  286. package/dist/src/event/axios.d.ts +2 -0
  287. package/dist/src/event/axios.js +27 -0
  288. package/dist/src/event/axios.js.map +1 -0
  289. package/dist/src/event/index.d.ts +11 -0
  290. package/dist/src/event/index.js +53 -0
  291. package/dist/src/event/index.js.map +1 -0
  292. package/dist/src/event/types.d.ts +21 -0
  293. package/dist/src/event/types.js +2 -0
  294. package/dist/src/event/types.js.map +1 -0
  295. package/dist/src/event/utils.d.ts +4 -0
  296. package/dist/src/event/utils.js +33 -0
  297. package/dist/src/event/utils.js.map +1 -0
  298. package/dist/src/event/webhook.d.ts +3 -0
  299. package/dist/src/event/webhook.js +34 -0
  300. package/dist/src/event/webhook.js.map +1 -0
  301. package/dist/src/index.d.ts +35 -0
  302. package/dist/src/index.js +161 -0
  303. package/dist/src/index.js.map +1 -0
  304. package/dist/src/loadConnection.d.ts +4 -0
  305. package/dist/src/loadConnection.js +38 -0
  306. package/dist/src/loadConnection.js.map +1 -0
  307. package/dist/src/opentelemetry/metrics.d.ts +14 -0
  308. package/dist/src/opentelemetry/metrics.js +64 -0
  309. package/dist/src/opentelemetry/metrics.js.map +1 -0
  310. package/dist/src/saml/claims.d.ts +12 -0
  311. package/dist/src/saml/claims.js +57 -0
  312. package/dist/src/saml/claims.js.map +1 -0
  313. package/dist/src/saml/lib.d.ts +8 -0
  314. package/dist/src/saml/lib.js +29 -0
  315. package/dist/src/saml/lib.js.map +1 -0
  316. package/dist/src/saml/x509.d.ts +9 -0
  317. package/dist/src/saml/x509.js +93 -0
  318. package/dist/src/saml/x509.js.map +1 -0
  319. package/dist/src/sso-traces/index.d.ts +114 -0
  320. package/dist/src/sso-traces/index.js +229 -0
  321. package/dist/src/sso-traces/index.js.map +1 -0
  322. package/dist/src/sso-traces/types.d.ts +44 -0
  323. package/dist/src/sso-traces/types.js +2 -0
  324. package/dist/src/sso-traces/types.js.map +1 -0
  325. package/dist/src/typings.d.ts +540 -0
  326. package/dist/src/typings.js +5 -0
  327. package/dist/src/typings.js.map +1 -0
  328. package/dist/typeorm.d.ts +3 -0
  329. package/dist/typeorm.js +58 -0
  330. package/dist/typeorm.js.map +1 -0
  331. package/dist/typings.d.ts +1 -1
  332. package/package.json +13 -13
@@ -0,0 +1,101 @@
1
+ import type { Directory, DatabaseStore, WebhookEventLog, DirectorySyncEvent, PaginationParams } from '../../typings';
2
+ import { Base } from './Base';
3
+ type GetAllParams = PaginationParams & {
4
+ directoryId?: string;
5
+ };
6
+ /**
7
+ * @swagger
8
+ * definitions:
9
+ * Event:
10
+ * type: object
11
+ * example:
12
+ * {
13
+ * "id": "id1",
14
+ * "webhook_endpoint": "https://example.com/webhook",
15
+ * "created_at": "2024-03-05T17:06:26.074Z",
16
+ * "status_code": 200,
17
+ * "delivered": true,
18
+ * "payload": {
19
+ * "directory_id": "58b5cd9dfaa39d47eb8f5f88631f9a629a232016",
20
+ * "event": "user.created",
21
+ * "tenant": "boxyhq",
22
+ * "product": "jackson",
23
+ * "data": {
24
+ * "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82",
25
+ * "first_name": "Deepak",
26
+ * "last_name": "Prabhakara",
27
+ * "email": "deepak@boxyhq.com",
28
+ * "active": true,
29
+ * "raw": {
30
+ * "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
31
+ * "userName": "deepak@boxyhq.com",
32
+ * "name": {
33
+ * "givenName": "Deepak",
34
+ * "familyName": "Prabhakara"
35
+ * },
36
+ * "emails": [
37
+ * {
38
+ * "primary": true,
39
+ * "value": "deepak@boxyhq.com",
40
+ * "type": "work"
41
+ * }
42
+ * ],
43
+ * "title": "CEO",
44
+ * "displayName": "Deepak Prabhakara",
45
+ * "locale": "en-US",
46
+ * "externalId": "00u1ldzzogFkXFmvT5d7",
47
+ * "groups": [],
48
+ * "active": true,
49
+ * "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82"
50
+ * }
51
+ * }
52
+ * }
53
+ * }
54
+ */
55
+ export declare class WebhookEventsLogger extends Base {
56
+ constructor({ db }: {
57
+ db: DatabaseStore;
58
+ });
59
+ log(directory: Directory, event: DirectorySyncEvent | DirectorySyncEvent[], status: number): Promise<WebhookEventLog>;
60
+ get(id: string): Promise<WebhookEventLog>;
61
+ /**
62
+ * @swagger
63
+ * /api/v1/dsync/events:
64
+ * get:
65
+ * summary: Get event logs for a directory
66
+ * parameters:
67
+ * - $ref: '#/parameters/directoryId'
68
+ * - $ref: '#/parameters/tenant'
69
+ * - $ref: '#/parameters/product'
70
+ * - $ref: '#/parameters/pageOffset'
71
+ * - $ref: '#/parameters/pageLimit'
72
+ * - $ref: '#/parameters/pageToken'
73
+ * tags:
74
+ * - Directory Sync
75
+ * produces:
76
+ * - application/json
77
+ * responses:
78
+ * 200:
79
+ * description: Success
80
+ * content:
81
+ * application/json:
82
+ * schema:
83
+ * type: object
84
+ * properties:
85
+ * data:
86
+ * type: array
87
+ * items:
88
+ * $ref: '#/definitions/Event'
89
+ * pageToken:
90
+ * type: string
91
+ * description: token for pagination
92
+ */
93
+ getAll(params?: GetAllParams): Promise<{
94
+ data: WebhookEventLog[];
95
+ pageToken: string | undefined;
96
+ }>;
97
+ delete(id: string): Promise<void>;
98
+ deleteAll(directoryId: string): Promise<void>;
99
+ private eventStore;
100
+ }
101
+ export {};
@@ -0,0 +1,165 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { randomUUID } from 'crypto';
11
+ import { Base } from './Base';
12
+ import { webhookLogsTTL } from '../utils';
13
+ import { indexNames } from './utils';
14
+ /**
15
+ * @swagger
16
+ * definitions:
17
+ * Event:
18
+ * type: object
19
+ * example:
20
+ * {
21
+ * "id": "id1",
22
+ * "webhook_endpoint": "https://example.com/webhook",
23
+ * "created_at": "2024-03-05T17:06:26.074Z",
24
+ * "status_code": 200,
25
+ * "delivered": true,
26
+ * "payload": {
27
+ * "directory_id": "58b5cd9dfaa39d47eb8f5f88631f9a629a232016",
28
+ * "event": "user.created",
29
+ * "tenant": "boxyhq",
30
+ * "product": "jackson",
31
+ * "data": {
32
+ * "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82",
33
+ * "first_name": "Deepak",
34
+ * "last_name": "Prabhakara",
35
+ * "email": "deepak@boxyhq.com",
36
+ * "active": true,
37
+ * "raw": {
38
+ * "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
39
+ * "userName": "deepak@boxyhq.com",
40
+ * "name": {
41
+ * "givenName": "Deepak",
42
+ * "familyName": "Prabhakara"
43
+ * },
44
+ * "emails": [
45
+ * {
46
+ * "primary": true,
47
+ * "value": "deepak@boxyhq.com",
48
+ * "type": "work"
49
+ * }
50
+ * ],
51
+ * "title": "CEO",
52
+ * "displayName": "Deepak Prabhakara",
53
+ * "locale": "en-US",
54
+ * "externalId": "00u1ldzzogFkXFmvT5d7",
55
+ * "groups": [],
56
+ * "active": true,
57
+ * "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82"
58
+ * }
59
+ * }
60
+ * }
61
+ * }
62
+ */
63
+ export class WebhookEventsLogger extends Base {
64
+ constructor({ db }) {
65
+ super({ db });
66
+ }
67
+ log(directory, event, status) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const id = randomUUID();
70
+ const log = {
71
+ id,
72
+ payload: event,
73
+ webhook_endpoint: directory.webhook.endpoint,
74
+ created_at: new Date(),
75
+ status_code: status,
76
+ delivered: status === 200,
77
+ };
78
+ yield this.eventStore().put(id, log, {
79
+ name: indexNames.directoryId,
80
+ value: directory.id,
81
+ });
82
+ return log;
83
+ });
84
+ }
85
+ get(id) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ return yield this.eventStore().get(id);
88
+ });
89
+ }
90
+ /**
91
+ * @swagger
92
+ * /api/v1/dsync/events:
93
+ * get:
94
+ * summary: Get event logs for a directory
95
+ * parameters:
96
+ * - $ref: '#/parameters/directoryId'
97
+ * - $ref: '#/parameters/tenant'
98
+ * - $ref: '#/parameters/product'
99
+ * - $ref: '#/parameters/pageOffset'
100
+ * - $ref: '#/parameters/pageLimit'
101
+ * - $ref: '#/parameters/pageToken'
102
+ * tags:
103
+ * - Directory Sync
104
+ * produces:
105
+ * - application/json
106
+ * responses:
107
+ * 200:
108
+ * description: Success
109
+ * content:
110
+ * application/json:
111
+ * schema:
112
+ * type: object
113
+ * properties:
114
+ * data:
115
+ * type: array
116
+ * items:
117
+ * $ref: '#/definitions/Event'
118
+ * pageToken:
119
+ * type: string
120
+ * description: token for pagination
121
+ */
122
+ // Get the event logs for a directory paginated
123
+ getAll() {
124
+ return __awaiter(this, arguments, void 0, function* (params = {}) {
125
+ const { pageOffset, pageLimit, pageToken, directoryId } = params;
126
+ let result;
127
+ if (directoryId) {
128
+ const index = {
129
+ name: indexNames.directoryId,
130
+ value: directoryId,
131
+ };
132
+ result = yield this.eventStore().getByIndex(index, pageOffset, pageLimit, pageToken);
133
+ }
134
+ else {
135
+ result = yield this.eventStore().getAll(pageOffset, pageLimit, pageToken);
136
+ }
137
+ return { data: result.data, pageToken: result.pageToken };
138
+ });
139
+ }
140
+ delete(id) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ yield this.eventStore().delete(id);
143
+ });
144
+ }
145
+ // Delete all event logs for a directory
146
+ deleteAll(directoryId) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ while (true) {
149
+ const { data: events } = yield this.eventStore().getByIndex({
150
+ name: indexNames.directoryId,
151
+ value: directoryId,
152
+ }, 0, this.bulkDeleteBatchSize);
153
+ if (!events || events.length === 0) {
154
+ break;
155
+ }
156
+ yield this.eventStore().deleteMany(events.map((event) => event.id));
157
+ }
158
+ });
159
+ }
160
+ // Get the store for the events
161
+ eventStore() {
162
+ return this.store('logs', webhookLogsTTL);
163
+ }
164
+ }
165
+ //# sourceMappingURL=WebhookEventsLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEventsLogger.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/WebhookEventsLogger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Directory, DirectorySyncEvent, DirectorySyncEventType, Group, User } from '../../typings';
2
+ export declare const transformEventPayload: (event: DirectorySyncEventType, payload: {
3
+ directory: Directory;
4
+ group?: Group | null;
5
+ user?: User | null;
6
+ }) => DirectorySyncEvent;
@@ -0,0 +1,37 @@
1
+ const transformUser = (user) => {
2
+ return Object.assign(Object.assign({ id: user.id, first_name: user.first_name, last_name: user.last_name, email: user.email, active: user.active }, ('roles' in user ? { roles: user.roles } : undefined)), { raw: user.raw });
3
+ };
4
+ const transformGroup = (group) => {
5
+ return {
6
+ id: group.id,
7
+ name: group.name,
8
+ raw: group.raw,
9
+ };
10
+ };
11
+ const transformUserGroup = (user, group) => {
12
+ return Object.assign(Object.assign({}, transformUser(user)), { group: transformGroup(group) });
13
+ };
14
+ export const transformEventPayload = (event, payload) => {
15
+ const { directory, group, user } = payload;
16
+ const { tenant, product, id: directory_id } = directory;
17
+ const eventPayload = {
18
+ event,
19
+ tenant,
20
+ product,
21
+ directory_id,
22
+ };
23
+ // User events
24
+ if (['user.created', 'user.updated', 'user.deleted'].includes(event) && user) {
25
+ eventPayload['data'] = transformUser(user);
26
+ }
27
+ // Group events
28
+ if (['group.created', 'group.updated', 'group.deleted'].includes(event) && group) {
29
+ eventPayload['data'] = transformGroup(group);
30
+ }
31
+ // Group membership events
32
+ if (['group.user_added', 'group.user_removed'].includes(event) && user && group) {
33
+ eventPayload['data'] = transformUserGroup(user, group);
34
+ }
35
+ return eventPayload;
36
+ };
37
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/transform.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,CAAC,IAAU,EAAQ,EAAE;IACzC,qCACE,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAChB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KACxD,GAAG,EAAE,IAAI,CAAC,GAAG,IACb;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAY,EAAS,EAAE;IAC7C,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,KAAY,EAA2B,EAAE;IAC/E,uCACK,aAAa,CAAC,IAAI,CAAC,KACtB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,IAC5B;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA6B,EAC7B,OAA2E,EAC3E,EAAE;IACF,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAExD,MAAM,YAAY,GAAG;QACnB,KAAK;QACL,MAAM;QACN,OAAO;QACP,YAAY;KACb,CAAC;IAEF,cAAc;IACd,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7E,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe;IACf,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjF,YAAY,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAChF,YAAY,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,YAAkC,CAAC;AAC5C,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { DirectoryType, User, UserPatchOperation, GroupPatchOperation } from '../../typings';
2
+ export declare const indexNames: {
3
+ directoryIdUsername: string;
4
+ directoryIdDisplayname: string;
5
+ directoryId: string;
6
+ groupId: string;
7
+ };
8
+ export declare const parseGroupOperation: (operation: GroupPatchOperation) => {
9
+ action: string;
10
+ members: {
11
+ value: string;
12
+ display?: string;
13
+ }[];
14
+ displayName?: undefined;
15
+ } | {
16
+ action: string;
17
+ displayName: unknown;
18
+ members?: undefined;
19
+ } | {
20
+ action: string;
21
+ members?: undefined;
22
+ displayName?: undefined;
23
+ };
24
+ export declare const getDirectorySyncProviders: () => {
25
+ [K: string]: string;
26
+ };
27
+ export declare const parseUserPatchRequest: (operation: UserPatchOperation) => {
28
+ attributes: Partial<User>;
29
+ rawAttributes: {};
30
+ };
31
+ export declare const extractStandardUserAttributes: (body: any) => Omit<User, "raw">;
32
+ export declare const updateRawUserAttributes: (raw: any, attributes: any) => any;
33
+ export declare const isSCIMEnabledProvider: (type: DirectoryType) => type is "azure-scim-v2" | "onelogin-scim-v2" | "okta-scim-v2" | "jumpcloud-scim-v2" | "generic-scim-v2";
@@ -0,0 +1,129 @@
1
+ import _ from 'lodash';
2
+ import { DirectorySyncProviders } from '../../typings';
3
+ export const indexNames = {
4
+ directoryIdUsername: 'directoryIdUsername',
5
+ directoryIdDisplayname: 'directoryIdDisplayname',
6
+ directoryId: 'directoryId',
7
+ groupId: 'groupId',
8
+ };
9
+ const parseUserRoles = (roles) => {
10
+ if (typeof roles === 'string') {
11
+ return roles.split(',');
12
+ }
13
+ return roles;
14
+ };
15
+ export const parseGroupOperation = (operation) => {
16
+ const { op, path, value } = operation;
17
+ if (path === 'members' && typeof value == 'object') {
18
+ if (op === 'add') {
19
+ return {
20
+ action: 'addGroupMember',
21
+ members: value,
22
+ };
23
+ }
24
+ if (op === 'remove') {
25
+ return {
26
+ action: 'removeGroupMember',
27
+ members: value,
28
+ };
29
+ }
30
+ }
31
+ if (path && path.startsWith('members[value eq')) {
32
+ if (op === 'remove') {
33
+ return {
34
+ action: 'removeGroupMember',
35
+ members: [{ value: path.split('"')[1] }],
36
+ };
37
+ }
38
+ }
39
+ // Update group name
40
+ if (op === 'replace') {
41
+ if (path == 'displayName' && typeof value == 'string') {
42
+ return {
43
+ action: 'updateGroupName',
44
+ displayName: value,
45
+ };
46
+ }
47
+ else if (typeof value == 'object' && 'displayName' in value) {
48
+ return {
49
+ action: 'updateGroupName',
50
+ displayName: value.displayName,
51
+ };
52
+ }
53
+ }
54
+ return {
55
+ action: 'unknown',
56
+ };
57
+ };
58
+ // List of directory sync providers
59
+ // TODO: Fix the return type
60
+ export const getDirectorySyncProviders = () => {
61
+ return Object.entries(DirectorySyncProviders).reduce((acc, [key, value]) => {
62
+ acc[key] = value;
63
+ return acc;
64
+ }, {});
65
+ };
66
+ // Parse the PATCH request body and return the user attributes (both standard and custom)
67
+ export const parseUserPatchRequest = (operation) => {
68
+ const { value, path } = operation;
69
+ const attributes = {};
70
+ const rawAttributes = {};
71
+ const attributesMap = {
72
+ active: 'active',
73
+ 'name.givenName': 'first_name',
74
+ 'name.familyName': 'last_name',
75
+ 'emails[type eq "work"].value': 'email',
76
+ };
77
+ // If there is a path, then the value is the value
78
+ // For example { path: "active", value: true }
79
+ if (path) {
80
+ if (path in attributesMap) {
81
+ attributes[attributesMap[path]] = value;
82
+ }
83
+ rawAttributes[path] = value;
84
+ }
85
+ // If there is no path, then the value can be an object with multiple attributes
86
+ // For example { value: { active: true, "name.familyName": "John" } }
87
+ else if (typeof value === 'object') {
88
+ for (const attribute of Object.keys(value)) {
89
+ if (attribute in attributesMap) {
90
+ attributes[attributesMap[attribute]] = value[attribute];
91
+ }
92
+ rawAttributes[attribute] = value[attribute];
93
+ }
94
+ }
95
+ return {
96
+ attributes,
97
+ rawAttributes,
98
+ };
99
+ };
100
+ // Extract standard attributes from the user body
101
+ export const extractStandardUserAttributes = (body) => {
102
+ const { name, emails, userName, active, userId, roles } = body;
103
+ const userAttributes = {
104
+ first_name: name && 'givenName' in name ? name.givenName : '',
105
+ last_name: name && 'familyName' in name ? name.familyName : '',
106
+ email: emails && emails.length > 0 ? emails[0].value : userName,
107
+ active: 'active' in body ? active : true,
108
+ id: userId || '', // For non-SCIM providers, the id will exist in the body
109
+ };
110
+ if (roles) {
111
+ userAttributes['roles'] = parseUserRoles(roles);
112
+ }
113
+ return userAttributes;
114
+ };
115
+ // Update raw user attributes
116
+ export const updateRawUserAttributes = (raw, attributes) => {
117
+ const keys = Object.keys(attributes);
118
+ if (keys.length === 0) {
119
+ return raw;
120
+ }
121
+ for (const key of keys) {
122
+ _.set(raw, key, attributes[key]);
123
+ }
124
+ return raw;
125
+ };
126
+ export const isSCIMEnabledProvider = (type) => {
127
+ return type !== 'google';
128
+ };
129
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/utils.ts"],"names":[],"mappings":"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"}