@atlasauth/backend 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/dist/client/abac.d.ts +454 -0
  3. package/dist/client/abac.js +123 -0
  4. package/dist/client/abac.js.map +1 -1
  5. package/dist/client/access-policies.d.ts +84 -2
  6. package/dist/client/access-policies.js +8 -0
  7. package/dist/client/access-policies.js.map +1 -1
  8. package/dist/client/actions.d.ts +1 -1
  9. package/dist/client/actions.js.map +1 -1
  10. package/dist/client/agent-platform.d.ts +294 -0
  11. package/dist/client/agent-platform.js +132 -0
  12. package/dist/client/agent-platform.js.map +1 -0
  13. package/dist/client/analytics-reports.d.ts +1 -1
  14. package/dist/client/app-catalog.d.ts +60 -1
  15. package/dist/client/app-catalog.js +32 -2
  16. package/dist/client/app-catalog.js.map +1 -1
  17. package/dist/client/authz-decisions.d.ts +154 -0
  18. package/dist/client/authz-decisions.js +53 -0
  19. package/dist/client/authz-decisions.js.map +1 -0
  20. package/dist/client/connections.d.ts +519 -0
  21. package/dist/client/connections.js +171 -0
  22. package/dist/client/connections.js.map +1 -0
  23. package/dist/client/custom-oauth-providers.d.ts +15 -0
  24. package/dist/client/custom-oauth-providers.js.map +1 -1
  25. package/dist/client/desktop-mfa.d.ts +141 -0
  26. package/dist/client/desktop-mfa.js +58 -0
  27. package/dist/client/desktop-mfa.js.map +1 -0
  28. package/dist/client/devices.d.ts +130 -0
  29. package/dist/client/devices.js +54 -0
  30. package/dist/client/devices.js.map +1 -1
  31. package/dist/client/email-templates.d.ts +1 -1
  32. package/dist/client/email-templates.js.map +1 -1
  33. package/dist/client/fga.d.ts +301 -5
  34. package/dist/client/fga.js +81 -1
  35. package/dist/client/fga.js.map +1 -1
  36. package/dist/client/iga.d.ts +436 -0
  37. package/dist/client/iga.js +82 -0
  38. package/dist/client/iga.js.map +1 -0
  39. package/dist/client/index.d.ts +3767 -2443
  40. package/dist/client/index.js +51 -0
  41. package/dist/client/index.js.map +1 -1
  42. package/dist/client/least-privilege.d.ts +95 -0
  43. package/dist/client/least-privilege.js +28 -0
  44. package/dist/client/least-privilege.js.map +1 -0
  45. package/dist/client/log-streams.d.ts +1 -1
  46. package/dist/client/managed-grants.d.ts +52 -0
  47. package/dist/client/managed-grants.js +28 -0
  48. package/dist/client/managed-grants.js.map +1 -0
  49. package/dist/client/mcp-gateways.d.ts +220 -2
  50. package/dist/client/mcp-gateways.js +74 -0
  51. package/dist/client/mcp-gateways.js.map +1 -1
  52. package/dist/client/messaging.d.ts +11 -2
  53. package/dist/client/messaging.js.map +1 -1
  54. package/dist/client/oauth-clients.d.ts +4 -0
  55. package/dist/client/oauth-clients.js.map +1 -1
  56. package/dist/client/oauth-protocols.d.ts +116 -0
  57. package/dist/client/oauth-protocols.js +54 -0
  58. package/dist/client/oauth-protocols.js.map +1 -0
  59. package/dist/client/oauth-providers.d.ts +4 -4
  60. package/dist/client/openfga.d.ts +90 -3
  61. package/dist/client/openfga.js +27 -1
  62. package/dist/client/openfga.js.map +1 -1
  63. package/dist/client/org-ldap-connections.d.ts +3 -0
  64. package/dist/client/org-ldap-connections.js.map +1 -1
  65. package/dist/client/organizations.d.ts +14 -0
  66. package/dist/client/organizations.js.map +1 -1
  67. package/dist/client/policy-bundles.d.ts +105 -0
  68. package/dist/client/policy-bundles.js +38 -0
  69. package/dist/client/policy-bundles.js.map +1 -0
  70. package/dist/client/resources.d.ts +1 -0
  71. package/dist/client/resources.js.map +1 -1
  72. package/dist/client/risk-containment.d.ts +244 -0
  73. package/dist/client/risk-containment.js +120 -0
  74. package/dist/client/risk-containment.js.map +1 -0
  75. package/dist/client/saml-idp.d.ts +183 -0
  76. package/dist/client/saml-idp.js +71 -0
  77. package/dist/client/saml-idp.js.map +1 -0
  78. package/dist/client/scim-provisioning.d.ts +100 -4
  79. package/dist/client/scim-provisioning.js +30 -0
  80. package/dist/client/scim-provisioning.js.map +1 -1
  81. package/dist/client/scim-tokens.d.ts +34 -0
  82. package/dist/client/scim-tokens.js +17 -0
  83. package/dist/client/scim-tokens.js.map +1 -1
  84. package/dist/client/service-connectors.d.ts +1 -1
  85. package/dist/client/ssf.d.ts +31 -1
  86. package/dist/client/ssf.js +17 -0
  87. package/dist/client/ssf.js.map +1 -1
  88. package/dist/client/users.d.ts +9 -0
  89. package/dist/client/users.js +9 -0
  90. package/dist/client/users.js.map +1 -1
  91. package/dist/client/vault.d.ts +54 -0
  92. package/dist/client/vault.js +30 -0
  93. package/dist/client/vault.js.map +1 -1
  94. package/dist/client/vc.d.ts +62 -2
  95. package/dist/client/vc.js +15 -0
  96. package/dist/client/vc.js.map +1 -1
  97. package/dist/client/workflows.d.ts +182 -3
  98. package/dist/client/workflows.js +34 -0
  99. package/dist/client/workflows.js.map +1 -1
  100. package/dist/index.d.ts +5 -2
  101. package/dist/index.js +6 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/oauth-resource.d.ts +30 -3
  104. package/dist/oauth-resource.js +43 -2
  105. package/dist/oauth-resource.js.map +1 -1
  106. package/dist/policy-bundle.d.ts +110 -0
  107. package/dist/policy-bundle.js +289 -0
  108. package/dist/policy-bundle.js.map +1 -0
  109. package/dist/txn-token.d.ts +36 -0
  110. package/dist/txn-token.js +30 -0
  111. package/dist/txn-token.js.map +1 -0
  112. package/dist/uma.d.ts +77 -0
  113. package/dist/uma.js +95 -0
  114. package/dist/uma.js.map +1 -0
  115. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/client/connections.ts"],"names":[],"mappings":";;AA2YA,kDA2JC;AAtiBD,uCAAgD;AAsRhD,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AA+GD,uEAAuE;AACvE,SAAgB,mBAAmB,CAAC,OAAkB;IACpD,+HAA+H;IAC/H,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,MAAM,IAAI,GAAG,CAAC,CAA8B,EAAE,aAAqB,EAAwB,EAAE,CAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,CAAC,CAAkB,EAAmB,EAAE;QACvD,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;;YACpD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO;QACL,MAAM,CAAC,IAA0B,EAAE,cAAuB;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,SAAgC,EAAE;YACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAA0B;YAC3C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,2GAA2G;QAC3G,MAAM,CAA4B,EAAU,EAAE,UAA0B,EAAE;YACxE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACnI,CAAC;QACD,+EAA+E;QAC/E,OAAO,CAAC,EAAU,EAAE,IAA2B;YAC7C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,uHAAuH;QACvH,MAAM,CAAC,EAAU;YACf,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAChF,CAAC;QACD;;;;WAIG;QACH,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,UAA4B,EAAE;YACpD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrL,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;gBAAE,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACnG,MAAM,CAAC,GAAG,MAAM,OAAO,CAAkB;gBACvC,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ;gBACxC,KAAK,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACnH,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD;;;WAGG;QACH,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,UAAyF,EAAE;YACxH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAkB;gBACvC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,gBAAgB;gBAChD,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACzJ,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD;;;WAGG;QACH,cAAc,CAAC,EAAU,EAAE,MAAgB;YACzC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,iIAAiI;QACjI,KAAK,CAAC,MAAM,CAAC,GAAa,EAAE,UAAsC,EAAE;YAClE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAwE;gBAC7F,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aAC5F,CAAC,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI;gBAAE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK;oBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,+GAA+G;QAC/G,iBAAiB,CAAC,IAA2B,EAAE,cAAuB;YACpE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD;;;WAGG;QACH,iBAAiB,CAAC,OAA8B,EAAE;YAChD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAChK,CAAC;QACD,wGAAwG;QACxG,cAAc,CAAC,EAAU,EAAE,IAAkC;YAC3D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,qFAAqF;QACrF,iBAAiB,CAAC,EAAU,EAAE,IAAqC;YACjE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,yEAAyE;QACzE,cAAc,CAAC,EAAU;YACvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD;;;;WAIG;QACH,MAAM,CAAC,EAAU,EAAE,UAAkF,EAAE;YACrG,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,IAAA,aAAG,EAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,CAAC;YAC7J,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnI,CAAC;QACD,sFAAsF;QACtF,UAAU,CAAC,EAAU,EAAE,IAA4E;YACjG,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,QAAQ,EAAE;YACR,gFAAgF;YAChF,MAAM,CAAC,EAAU,EAAE,IAAiC;gBAClD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,IAAyC;gBAClE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,aAAa,CAAC,EAAU;gBACtB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAE,IAA0E;gBACvH,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,sBAAsB,IAAA,aAAG,EAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACrH,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,UAAkB;gBAC3C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,sBAAsB,IAAA,aAAG,EAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YAChH,CAAC;SACF;QACD,YAAY,EAAE;YACZ,GAAG,CAAC,IAAkC;gBACpC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,SAAqF,EAAE;gBAC1F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -42,6 +42,11 @@ export interface ProfileMapping {
42
42
  update_on_sign_in?: boolean;
43
43
  }
44
44
  export type TokenEndpointAuthMethod = 'client_secret_basic' | 'client_secret_post' | 'client_secret_jwt' | 'private_key_jwt' | 'none';
45
+ /** One connect-time host value: `{name}` in an endpoint URL is filled from `host_params.name`, which must match `pattern` as a whole. */
46
+ export interface HostParamsSchemaEntry {
47
+ name: string;
48
+ pattern: string;
49
+ }
45
50
  export interface UpstreamLogoutSettings {
46
51
  /** On Atlas sign-out, hand back the provider end-session URL to send the browser to. */
47
52
  rp_initiated?: boolean;
@@ -88,6 +93,11 @@ export interface CustomOAuthProviderSettings {
88
93
  userinfo_endpoint?: string | null;
89
94
  jwks_uri?: string | null;
90
95
  end_session_endpoint?: string | null;
96
+ revocation_endpoint?: string | null;
97
+ /** The connect-time `host_params` the `{name}` templates in the endpoints take (data-only providers, OAuth 2.0). */
98
+ host_params_schema?: HostParamsSchemaEntry[] | null;
99
+ /** Never a sign-in method: only connections use it. Required for endpoints with `{name}` templates. */
100
+ data_only?: boolean;
91
101
  scopes?: string[];
92
102
  scope_separator?: ' ' | ',' | '+';
93
103
  pkce?: boolean;
@@ -125,6 +135,11 @@ export interface CustomOAuthProvider extends UpstreamUrls {
125
135
  userinfo_endpoint: string | null;
126
136
  jwks_uri: string | null;
127
137
  end_session_endpoint: string | null;
138
+ /** RFC 7009 revoke endpoint; may carry `{name}` host templates. */
139
+ revocation_endpoint: string | null;
140
+ host_params_schema: HostParamsSchemaEntry[];
141
+ /** A data-only provider serves connections and is never a sign-in method. */
142
+ data_only: boolean;
128
143
  scopes: string[];
129
144
  scope_separator: ' ' | ',' | '+';
130
145
  pkce: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"custom-oauth-providers.js","sourceRoot":"","sources":["../../src/client/custom-oauth-providers.ts"],"names":[],"mappings":";;AAqOA,kDAcC;AAED,oEAqCC;AA1RD,uCAAgD;AAoOhD,kFAAkF;AAClF,SAAgB,mBAAmB,CAAC,OAAkB,EAAE,IAAY;IAClE,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,OAA8C,EAAE,EAAE,cAAuB;YAC9E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,oDAAoD;QACpD,MAAM,CAAC,GAAW;YAChB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,iBAAiB,IAAA,aAAG,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,4BAA4B,CAAC,OAAkB;IAC7D,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,8BAA8B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,CAAC;IACrE,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,IAAmC,EAAE,cAAuB;YACjE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAiC,EAAE,cAAuB;YAC3E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,wEAAwE;QACxE,QAAQ,CAAC,IAAgD;YACvD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QACD;;;WAGG;QACH,qBAAqB,CAAC,IAA+B,EAAE,EAAW;YAChE,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,oDAAoD;gBACvG,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QACD,WAAW,CAAC,EAAU;YACpB,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"custom-oauth-providers.js","sourceRoot":"","sources":["../../src/client/custom-oauth-providers.ts"],"names":[],"mappings":";;AAqPA,kDAcC;AAED,oEAqCC;AA1SD,uCAAgD;AAoPhD,kFAAkF;AAClF,SAAgB,mBAAmB,CAAC,OAAkB,EAAE,IAAY;IAClE,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,OAA8C,EAAE,EAAE,cAAuB;YAC9E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,oDAAoD;QACpD,MAAM,CAAC,GAAW;YAChB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,iBAAiB,IAAA,aAAG,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,4BAA4B,CAAC,OAAkB;IAC7D,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,8BAA8B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,CAAC;IACrE,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,IAAmC,EAAE,cAAuB;YACjE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAiC,EAAE,cAAuB;YAC3E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,wEAAwE;QACxE,QAAQ,CAAC,IAAgD;YACvD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QACD;;;WAGG;QACH,qBAAqB,CAAC,IAA+B,EAAE,EAAW;YAChE,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,oDAAoD;gBACvG,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QACD,WAAW,CAAC,EAAU;YACpB,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { type RequestFn } from './request';
2
+ export type DesktopMfaFactor = 'push' | 'totp' | 'passkey';
3
+ /** Who must pass a second factor at workstation login, with which factors, and how long offline unlock lasts. */
4
+ export interface DesktopMfaPolicy {
5
+ object: 'desktop_mfa_policy';
6
+ enabled: boolean;
7
+ applies_to: 'all' | 'selected';
8
+ user_ids: string[];
9
+ org_ids: string[];
10
+ allowed_factors: DesktopMfaFactor[];
11
+ offline_enabled: boolean;
12
+ offline_grace_hours: number;
13
+ offline_pin_required: boolean;
14
+ /** `account`: any passkey the user holds answers the passkey factor. `device`: only keys registered through that workstation. */
15
+ passkey_scope: 'account' | 'device';
16
+ /** Relying-party domain the agents use; null uses the application's passkey RP id. */
17
+ passkey_rp_id: string | null;
18
+ passkey_require_uv: boolean;
19
+ /** Device-bound SSO (macOS Platform SSO, Windows broker) accepts registrations and logins. */
20
+ device_sso_enabled: boolean;
21
+ device_sso_session_minutes: number;
22
+ device_sso_refresh_days: number;
23
+ }
24
+ /** A device registered for device-bound SSO. */
25
+ export interface DeviceSsoRegistration {
26
+ object: 'device_sso_registration';
27
+ id: string;
28
+ user_id: string;
29
+ platform: 'macos' | 'windows';
30
+ hostname: string | null;
31
+ agent_version: string | null;
32
+ status: 'active' | 'revoked';
33
+ signing_key_id: string;
34
+ user_key_registered: boolean;
35
+ user_key_method: 'user_secure_enclave_key' | 'user_tpm_key' | null;
36
+ local_username: string | null;
37
+ last_login_at: number | null;
38
+ revoked_at: number | null;
39
+ created_at: number;
40
+ }
41
+ /** A passkey registered through a workstation. It answers the desktop passkey factor and never a web sign-in. */
42
+ export interface DesktopPasskey {
43
+ object: 'desktop_passkey';
44
+ id: string;
45
+ device_id: string;
46
+ user_id: string;
47
+ name: string | null;
48
+ aaguid: string | null;
49
+ transports: string[];
50
+ backed_up: boolean;
51
+ last_used_at: number | null;
52
+ created_at: number;
53
+ }
54
+ export type UpdateDesktopMfaPolicyBody = Partial<Omit<DesktopMfaPolicy, 'object'>>;
55
+ /** A workstation running the Atlas Windows or macOS login agent. */
56
+ export interface DesktopDevice {
57
+ object: 'desktop_device';
58
+ id: string;
59
+ user_id: string;
60
+ device_key_id: string;
61
+ hostname: string | null;
62
+ platform: 'windows' | 'macos' | 'linux';
63
+ agent_version: string | null;
64
+ status: 'active' | 'revoked';
65
+ offline_pin_set: boolean;
66
+ /** Raised to void every offline verifier issued so far. */
67
+ bundle_generation: number;
68
+ last_seen_at: number | null;
69
+ revoked_at: number | null;
70
+ created_at: number;
71
+ }
72
+ export interface DesktopDeviceDetail extends DesktopDevice {
73
+ offline_bundles: Array<{
74
+ id: string;
75
+ generation: number;
76
+ issued_at: number;
77
+ expires_at: number;
78
+ revoked_at: number | null;
79
+ }>;
80
+ }
81
+ export interface DesktopEnrolmentCode {
82
+ object: 'desktop_enrolment_code';
83
+ /** Shown once. The user types it into the workstation agent. */
84
+ code: string;
85
+ expires_at: number;
86
+ user_id: string;
87
+ }
88
+ /** Desktop-login MFA: policy, enrolment codes and enrolled workstations. */
89
+ export declare function desktopMfaResource(request: RequestFn): {
90
+ getPolicy(): Promise<DesktopMfaPolicy>;
91
+ /** Send only the fields to change. */
92
+ updatePolicy(body: UpdateDesktopMfaPolicyBody): Promise<DesktopMfaPolicy>;
93
+ /** A single-use code for a user to enrol a workstation (default 60 minutes, at most 7 days). */
94
+ createEnrolmentCode(body: {
95
+ user_id: string;
96
+ expires_in_minutes?: number;
97
+ }): Promise<DesktopEnrolmentCode>;
98
+ listDevices(query?: {
99
+ user_id?: string;
100
+ }): Promise<{
101
+ object: "list";
102
+ data: DesktopDevice[];
103
+ has_more: boolean;
104
+ }>;
105
+ getDevice(id: string): Promise<DesktopDeviceDetail>;
106
+ listDevicePasskeys(id: string): Promise<{
107
+ object: "list";
108
+ data: DesktopPasskey[];
109
+ has_more: boolean;
110
+ }>;
111
+ deleteDevicePasskey(id: string, passkeyId: string): Promise<{
112
+ object: "desktop_passkey";
113
+ id: string;
114
+ deleted: boolean;
115
+ }>;
116
+ /** The workstation's next call is refused and it wipes its offline cache. */
117
+ revokeDevice(id: string): Promise<DesktopDevice>;
118
+ /** Void every offline verifier without revoking the workstation; it gets a fresh one on its next sync. */
119
+ revokeOfflineCache(id: string): Promise<DesktopDevice>;
120
+ deleteDevice(id: string): Promise<{
121
+ object: "desktop_device";
122
+ id: string;
123
+ deleted: boolean;
124
+ }>;
125
+ /** Devices registered for device-bound SSO (macOS Platform SSO, Windows broker). */
126
+ listDeviceSsoRegistrations(query?: {
127
+ user_id?: string;
128
+ }): Promise<{
129
+ object: "list";
130
+ data: DeviceSsoRegistration[];
131
+ has_more: boolean;
132
+ }>;
133
+ getDeviceSsoRegistration(id: string): Promise<DeviceSsoRegistration>;
134
+ /** Ends every session the device holds and refuses its next call. */
135
+ revokeDeviceSsoRegistration(id: string): Promise<DeviceSsoRegistration>;
136
+ deleteDeviceSsoRegistration(id: string): Promise<{
137
+ object: "device_sso_registration";
138
+ id: string;
139
+ deleted: boolean;
140
+ }>;
141
+ };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.desktopMfaResource = desktopMfaResource;
4
+ const request_1 = require("./request");
5
+ /** Desktop-login MFA: policy, enrolment codes and enrolled workstations. */
6
+ function desktopMfaResource(request) {
7
+ return {
8
+ getPolicy() {
9
+ return request({ method: 'GET', path: '/v1/desktop_mfa/policy' });
10
+ },
11
+ /** Send only the fields to change. */
12
+ updatePolicy(body) {
13
+ return request({ method: 'PUT', path: '/v1/desktop_mfa/policy', body });
14
+ },
15
+ /** A single-use code for a user to enrol a workstation (default 60 minutes, at most 7 days). */
16
+ createEnrolmentCode(body) {
17
+ return request({ method: 'POST', path: '/v1/desktop_mfa/enrolment_codes', body });
18
+ },
19
+ listDevices(query = {}) {
20
+ return request({ method: 'GET', path: '/v1/desktop_mfa/devices', query });
21
+ },
22
+ getDevice(id) {
23
+ return request({ method: 'GET', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}` });
24
+ },
25
+ listDevicePasskeys(id) {
26
+ return request({ method: 'GET', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}/passkeys` });
27
+ },
28
+ deleteDevicePasskey(id, passkeyId) {
29
+ return request({ method: 'DELETE', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}/passkeys/${(0, request_1.enc)(passkeyId)}` });
30
+ },
31
+ /** The workstation's next call is refused and it wipes its offline cache. */
32
+ revokeDevice(id) {
33
+ return request({ method: 'POST', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}/revoke` });
34
+ },
35
+ /** Void every offline verifier without revoking the workstation; it gets a fresh one on its next sync. */
36
+ revokeOfflineCache(id) {
37
+ return request({ method: 'POST', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}/revoke_offline_cache` });
38
+ },
39
+ deleteDevice(id) {
40
+ return request({ method: 'DELETE', path: `/v1/desktop_mfa/devices/${(0, request_1.enc)(id)}` });
41
+ },
42
+ /** Devices registered for device-bound SSO (macOS Platform SSO, Windows broker). */
43
+ listDeviceSsoRegistrations(query = {}) {
44
+ return request({ method: 'GET', path: '/v1/device_sso/registrations', query });
45
+ },
46
+ getDeviceSsoRegistration(id) {
47
+ return request({ method: 'GET', path: `/v1/device_sso/registrations/${(0, request_1.enc)(id)}` });
48
+ },
49
+ /** Ends every session the device holds and refuses its next call. */
50
+ revokeDeviceSsoRegistration(id) {
51
+ return request({ method: 'POST', path: `/v1/device_sso/registrations/${(0, request_1.enc)(id)}/revoke` });
52
+ },
53
+ deleteDeviceSsoRegistration(id) {
54
+ return request({ method: 'DELETE', path: `/v1/device_sso/registrations/${(0, request_1.enc)(id)}` });
55
+ },
56
+ };
57
+ }
58
+ //# sourceMappingURL=desktop-mfa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-mfa.js","sourceRoot":"","sources":["../../src/client/desktop-mfa.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,21 @@ export interface Device {
11
11
  managed: boolean;
12
12
  compliant: boolean;
13
13
  posture: Record<string, unknown>;
14
+ os_version: string | null;
15
+ disk_encrypted: boolean | null;
16
+ screen_lock: boolean | null;
17
+ secure_hardware: boolean | null;
18
+ jailbroken: boolean | null;
19
+ firewall: boolean | null;
20
+ edr_present: boolean | null;
21
+ assurance_state: 'compliant' | 'grace' | 'noncompliant' | null;
22
+ assurance_checks: Array<{
23
+ policyId: string;
24
+ check: string;
25
+ ok: boolean;
26
+ detail?: string;
27
+ }>;
28
+ integration_id: string | null;
14
29
  last_reported_at: number;
15
30
  created_at: number;
16
31
  }
@@ -26,11 +41,71 @@ export interface DeviceReportBody {
26
41
  managed?: boolean;
27
42
  compliant?: boolean;
28
43
  posture?: Record<string, unknown>;
44
+ /** Typed posture; `null` or absent = unknown (never assumed good). */
45
+ os_version?: string | null;
46
+ disk_encrypted?: boolean | null;
47
+ screen_lock?: boolean | null;
48
+ secure_hardware?: boolean | null;
49
+ jailbroken?: boolean | null;
50
+ firewall?: boolean | null;
51
+ edr_present?: boolean | null;
52
+ }
53
+ export type DevicePlatform = 'any' | 'macos' | 'windows' | 'linux' | 'ios' | 'android' | 'chromeos';
54
+ export interface DeviceAssurancePolicy {
55
+ object: 'device_assurance_policy';
56
+ id: string;
57
+ name: string;
58
+ platform: DevicePlatform;
59
+ enabled: boolean;
60
+ min_os_version: string | null;
61
+ os_latest_minus: number | null;
62
+ require_disk_encryption: boolean;
63
+ require_screen_lock: boolean;
64
+ require_secure_hardware: boolean;
65
+ block_jailbroken: boolean;
66
+ require_firewall: boolean;
67
+ require_edr: boolean;
68
+ grace_hours: number;
69
+ created_at: number;
70
+ updated_at: number;
71
+ }
72
+ export type DeviceAssurancePolicyBody = Partial<Omit<DeviceAssurancePolicy, 'object' | 'id' | 'created_at' | 'updated_at'>> & {
73
+ name?: string;
74
+ };
75
+ export type DeviceIntegrationProvider = 'intune' | 'jamf' | 'crowdstrike' | 'fleet' | 'chrome';
76
+ export interface DeviceIntegration {
77
+ object: 'device_integration';
78
+ id: string;
79
+ provider: DeviceIntegrationProvider;
80
+ name: string;
81
+ status: 'active' | 'paused';
82
+ config: Record<string, unknown>;
83
+ has_credentials: boolean;
84
+ interval_minutes: number;
85
+ next_sync_at: number | null;
86
+ last_sync_at: number | null;
87
+ last_status: string | null;
88
+ last_error: string | null;
89
+ last_stats: Record<string, unknown>;
90
+ created_at: number;
91
+ updated_at: number;
92
+ }
93
+ export interface DeviceIntegrationBody {
94
+ provider?: DeviceIntegrationProvider;
95
+ name?: string;
96
+ /** Intune `{ tenantId }`; Jamf and Fleet `{ baseUrl }`; CrowdStrike `{ cloud, minZtaScore?, userEmailDomain? }`; Chrome `{ customer? }`. */
97
+ config?: Record<string, unknown>;
98
+ /** Write-only. Intune and Jamf and CrowdStrike `{ clientId, clientSecret }`; Fleet `{ apiToken }`; Chrome `{ clientEmail, privateKey, adminEmail }`. */
99
+ credentials?: Record<string, unknown>;
100
+ interval_minutes?: number;
101
+ status?: 'active' | 'paused';
29
102
  }
30
103
  export declare function devicesResource(request: RequestFn): {
31
104
  list(query?: {
32
105
  user_id?: string;
33
106
  source?: string;
107
+ platform?: string;
108
+ assurance_state?: string;
34
109
  }): Promise<ListPage<Device>>;
35
110
  get(id: string): Promise<Device>;
36
111
  report(body: DeviceReportBody): Promise<Device>;
@@ -41,4 +116,59 @@ export declare function devicesResource(request: RequestFn): {
41
116
  id: string;
42
117
  deleted: true;
43
118
  }>;
119
+ /** The compliance transitions of one device, newest first. */
120
+ complianceHistory(id: string): Promise<ListPage<{
121
+ object: "device_compliance_entry";
122
+ id: string;
123
+ device_id: string;
124
+ user_id: string | null;
125
+ state: string;
126
+ compliant: boolean;
127
+ failing: string[];
128
+ source: string;
129
+ created_at: number;
130
+ }>>;
131
+ };
132
+ /** Per-platform posture requirements (OS version, disk encryption, screen lock, ...) with a grace period. */
133
+ export declare function deviceAssurancePoliciesResource(request: RequestFn): {
134
+ list(): Promise<ListPage<DeviceAssurancePolicy>>;
135
+ get(id: string): Promise<DeviceAssurancePolicy>;
136
+ create(body: DeviceAssurancePolicyBody & {
137
+ name: string;
138
+ }): Promise<DeviceAssurancePolicy>;
139
+ update(id: string, body: DeviceAssurancePolicyBody): Promise<DeviceAssurancePolicy>;
140
+ delete(id: string): Promise<{
141
+ object: "device_assurance_policy";
142
+ id: string;
143
+ deleted: true;
144
+ }>;
145
+ /** Re-evaluate every device against the current policies. */
146
+ evaluate(): Promise<{
147
+ object: "device_assurance_evaluation";
148
+ evaluated: number;
149
+ changed: number;
150
+ }>;
151
+ };
152
+ /** Pull connectors for Intune, Jamf Pro, CrowdStrike Falcon, Fleet and Google Chrome / ChromeOS. */
153
+ export declare function deviceIntegrationsResource(request: RequestFn): {
154
+ list(): Promise<ListPage<DeviceIntegration>>;
155
+ get(id: string): Promise<DeviceIntegration>;
156
+ create(body: DeviceIntegrationBody & {
157
+ provider: DeviceIntegrationProvider;
158
+ name: string;
159
+ }): Promise<DeviceIntegration>;
160
+ update(id: string, body: DeviceIntegrationBody): Promise<DeviceIntegration>;
161
+ delete(id: string): Promise<{
162
+ object: "device_integration";
163
+ id: string;
164
+ deleted: true;
165
+ }>;
166
+ /** Pull now instead of waiting for the schedule. */
167
+ sync(id: string): Promise<{
168
+ object: "device_integration_sync";
169
+ integration_id: string;
170
+ ok: boolean;
171
+ seen: number;
172
+ error: string | null;
173
+ }>;
44
174
  };
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.devicesResource = devicesResource;
4
+ exports.deviceAssurancePoliciesResource = deviceAssurancePoliciesResource;
5
+ exports.deviceIntegrationsResource = deviceIntegrationsResource;
4
6
  const request_1 = require("./request");
5
7
  function devicesResource(request) {
6
8
  return {
@@ -21,6 +23,58 @@ function devicesResource(request) {
21
23
  remove(id) {
22
24
  return request({ method: 'DELETE', path: `/v1/devices/${(0, request_1.enc)(id)}` });
23
25
  },
26
+ /** The compliance transitions of one device, newest first. */
27
+ complianceHistory(id) {
28
+ return request({ method: 'GET', path: `/v1/devices/${(0, request_1.enc)(id)}/compliance_history` });
29
+ },
30
+ };
31
+ }
32
+ /** Per-platform posture requirements (OS version, disk encryption, screen lock, ...) with a grace period. */
33
+ function deviceAssurancePoliciesResource(request) {
34
+ return {
35
+ list() {
36
+ return request({ method: 'GET', path: '/v1/device_assurance_policies' });
37
+ },
38
+ get(id) {
39
+ return request({ method: 'GET', path: `/v1/device_assurance_policies/${(0, request_1.enc)(id)}` });
40
+ },
41
+ create(body) {
42
+ return request({ method: 'POST', path: '/v1/device_assurance_policies', body });
43
+ },
44
+ update(id, body) {
45
+ return request({ method: 'PATCH', path: `/v1/device_assurance_policies/${(0, request_1.enc)(id)}`, body });
46
+ },
47
+ delete(id) {
48
+ return request({ method: 'DELETE', path: `/v1/device_assurance_policies/${(0, request_1.enc)(id)}` });
49
+ },
50
+ /** Re-evaluate every device against the current policies. */
51
+ evaluate() {
52
+ return request({ method: 'POST', path: '/v1/device_assurance_policies/evaluate', body: {} });
53
+ },
54
+ };
55
+ }
56
+ /** Pull connectors for Intune, Jamf Pro, CrowdStrike Falcon, Fleet and Google Chrome / ChromeOS. */
57
+ function deviceIntegrationsResource(request) {
58
+ return {
59
+ list() {
60
+ return request({ method: 'GET', path: '/v1/device_integrations' });
61
+ },
62
+ get(id) {
63
+ return request({ method: 'GET', path: `/v1/device_integrations/${(0, request_1.enc)(id)}` });
64
+ },
65
+ create(body) {
66
+ return request({ method: 'POST', path: '/v1/device_integrations', body });
67
+ },
68
+ update(id, body) {
69
+ return request({ method: 'PATCH', path: `/v1/device_integrations/${(0, request_1.enc)(id)}`, body });
70
+ },
71
+ delete(id) {
72
+ return request({ method: 'DELETE', path: `/v1/device_integrations/${(0, request_1.enc)(id)}` });
73
+ },
74
+ /** Pull now instead of waiting for the schedule. */
75
+ sync(id) {
76
+ return request({ method: 'POST', path: `/v1/device_integrations/${(0, request_1.enc)(id)}/sync`, body: {} });
77
+ },
24
78
  };
25
79
  }
26
80
  //# sourceMappingURL=devices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/client/devices.ts"],"names":[],"mappings":";;AAgCA,0CAoBC;AApDD,uCAAgD;AAgChD,SAAgB,eAAe,CAAC,OAAkB;IAChD,OAAO;QACL,IAAI,CAAC,QAA+C,EAAE;YACpD,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzH,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,CAAC,IAAsB;YAC3B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,iDAAiD;QACjD,aAAa,CAAC,OAA2B;YACvC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/client/devices.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type RequestFn } from './request';
2
2
  import type { ListPage } from './types';
3
3
  /** The transactional email a template drives. */
4
- export type EmailTemplateName = 'verification_code' | 'magic_link' | 'password_reset' | 'password_changed' | 'account_exists_notice' | 'organization_invitation' | 'new_device_sign_in' | 'session_revoked_token_reuse' | 'account_locked' | 'account_secured' | 'team_member_added' | 'team_role_changed' | 'email_changed' | 'email_change_confirm' | 'parental_consent_request' | 'phone_changed' | 'identity_linked' | 'identity_unlinked' | 'passkey_added' | 'passkey_removed' | 'recovery_codes_regenerated' | 'factor_removed' | 'device_key_added' | 'device_key_removed' | 'risk_alert' | 'verification_link' | 'password_reset_link' | 'account_reactivated';
4
+ export type EmailTemplateName = 'verification_code' | 'magic_link' | 'password_reset' | 'password_changed' | 'account_exists_notice' | 'organization_invitation' | 'new_device_sign_in' | 'session_revoked_token_reuse' | 'account_locked' | 'account_secured' | 'team_member_added' | 'team_role_changed' | 'email_changed' | 'email_change_confirm' | 'parental_consent_request' | 'phone_changed' | 'identity_linked' | 'identity_unlinked' | 'passkey_added' | 'passkey_removed' | 'recovery_codes_regenerated' | 'factor_removed' | 'device_key_added' | 'device_key_removed' | 'uma_request_submitted' | 'risk_alert' | 'account_unblock' | 'impersonation_alert' | 'verification_link' | 'password_reset_link' | 'account_reactivated';
5
5
  /** The customizable body of a template: a subject line and a text body. */
6
6
  export interface EmailTemplateBody {
7
7
  subject?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"email-templates.js","sourceRoot":"","sources":["../../src/client/email-templates.ts"],"names":[],"mappings":";;AAyEA,wDAkBC;AA3FD,uCAAgD;AAyEhD,SAAgB,sBAAsB,CAAC,OAAkB;IACvD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,2EAA2E;QAC3E,OAAO,CAAC,IAAY,EAAE,OAA0B,EAAE;YAChD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,2DAA2D;QAC3D,MAAM,CAAC,IAAY,EAAE,IAAuB;YAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,8BAA8B;QAC9B,MAAM,CAAC,IAAY;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"email-templates.js","sourceRoot":"","sources":["../../src/client/email-templates.ts"],"names":[],"mappings":";;AA4EA,wDAkBC;AA9FD,uCAAgD;AA4EhD,SAAgB,sBAAsB,CAAC,OAAkB;IACvD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,2EAA2E;QAC3E,OAAO,CAAC,IAAY,EAAE,OAA0B,EAAE;YAChD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,2DAA2D;QAC3D,MAAM,CAAC,IAAY,EAAE,IAAuB;YAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,8BAA8B;QAC9B,MAAM,CAAC,IAAY;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;KACF,CAAC;AACJ,CAAC"}