@thunderid/javascript 1.12.0 → 1.13.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 (188) hide show
  1. package/dist/ThunderIDJavaScriptClient.d.ts +86 -1
  2. package/dist/ThunderIDJavaScriptClient.d.ts.map +1 -1
  3. package/dist/api/account/getAccessibleOrganizationUnits.d.ts +38 -0
  4. package/dist/api/account/getAccessibleOrganizationUnits.d.ts.map +1 -0
  5. package/dist/api/auth/executeEmbeddedDeviceGrantFlow.d.ts +11 -2
  6. package/dist/api/auth/executeEmbeddedDeviceGrantFlow.d.ts.map +1 -1
  7. package/dist/api/auth/executeEmbeddedSignInFlow.d.ts.map +1 -1
  8. package/dist/api/auth/getSupportedAuthorizationDetailsType.d.ts +29 -0
  9. package/dist/api/auth/getSupportedAuthorizationDetailsType.d.ts.map +1 -0
  10. package/dist/api/auth/getSupportedAuthorizationDetailsTypes.d.ts +24 -0
  11. package/dist/api/auth/getSupportedAuthorizationDetailsTypes.d.ts.map +1 -0
  12. package/dist/api/management/agents/getAgents.d.ts +8 -2
  13. package/dist/api/management/agents/getAgents.d.ts.map +1 -1
  14. package/dist/api/management/applications/getApplications.d.ts +8 -2
  15. package/dist/api/management/applications/getApplications.d.ts.map +1 -1
  16. package/dist/api/management/authorization-detail-types/createAuthorizationDetailType.d.ts +28 -0
  17. package/dist/api/management/authorization-detail-types/createAuthorizationDetailType.d.ts.map +1 -0
  18. package/dist/api/management/authorization-detail-types/deleteAuthorizationDetailType.d.ts +24 -0
  19. package/dist/api/management/authorization-detail-types/deleteAuthorizationDetailType.d.ts.map +1 -0
  20. package/dist/api/management/authorization-detail-types/getAuthorizationDetailType.d.ts +25 -0
  21. package/dist/api/management/authorization-detail-types/getAuthorizationDetailType.d.ts.map +1 -0
  22. package/dist/api/management/authorization-detail-types/getAuthorizationDetailTypes.d.ts +20 -0
  23. package/dist/api/management/authorization-detail-types/getAuthorizationDetailTypes.d.ts.map +1 -0
  24. package/dist/api/management/authorization-detail-types/updateAuthorizationDetailType.d.ts +33 -0
  25. package/dist/api/management/authorization-detail-types/updateAuthorizationDetailType.d.ts.map +1 -0
  26. package/dist/api/management/client-registrations/deleteClientRegistration.d.ts +24 -0
  27. package/dist/api/management/client-registrations/deleteClientRegistration.d.ts.map +1 -0
  28. package/dist/api/management/client-registrations/getClientRegistration.d.ts +26 -0
  29. package/dist/api/management/client-registrations/getClientRegistration.d.ts.map +1 -0
  30. package/dist/api/management/client-registrations/mapClientRegistration.d.ts +11 -0
  31. package/dist/api/management/client-registrations/mapClientRegistration.d.ts.map +1 -0
  32. package/dist/api/management/client-registrations/registerClient.d.ts +31 -0
  33. package/dist/api/management/client-registrations/registerClient.d.ts.map +1 -0
  34. package/dist/api/management/client-registrations/updateClientRegistration.d.ts +34 -0
  35. package/dist/api/management/client-registrations/updateClientRegistration.d.ts.map +1 -0
  36. package/dist/api/management/credential-configurations/createCredentialConfiguration.d.ts +25 -0
  37. package/dist/api/management/credential-configurations/createCredentialConfiguration.d.ts.map +1 -0
  38. package/dist/api/management/credential-configurations/deleteCredentialConfiguration.d.ts +24 -0
  39. package/dist/api/management/credential-configurations/deleteCredentialConfiguration.d.ts.map +1 -0
  40. package/dist/api/management/credential-configurations/getCredentialConfiguration.d.ts +25 -0
  41. package/dist/api/management/credential-configurations/getCredentialConfiguration.d.ts.map +1 -0
  42. package/dist/api/management/credential-configurations/getCredentialConfigurations.d.ts +20 -0
  43. package/dist/api/management/credential-configurations/getCredentialConfigurations.d.ts.map +1 -0
  44. package/dist/api/management/credential-configurations/updateCredentialConfiguration.d.ts +29 -0
  45. package/dist/api/management/credential-configurations/updateCredentialConfiguration.d.ts.map +1 -0
  46. package/dist/api/management/flows/createFlowSharingPolicy.d.ts +33 -0
  47. package/dist/api/management/flows/createFlowSharingPolicy.d.ts.map +1 -0
  48. package/dist/api/management/flows/deleteFlowSharingPolicy.d.ts +28 -0
  49. package/dist/api/management/flows/deleteFlowSharingPolicy.d.ts.map +1 -0
  50. package/dist/api/management/flows/getFlowOverlayRules.d.ts +31 -0
  51. package/dist/api/management/flows/getFlowOverlayRules.d.ts.map +1 -0
  52. package/dist/api/management/flows/getFlowSharingPolicies.d.ts +25 -0
  53. package/dist/api/management/flows/getFlowSharingPolicies.d.ts.map +1 -0
  54. package/dist/api/management/flows/getFlowSharingPolicy.d.ts +29 -0
  55. package/dist/api/management/flows/getFlowSharingPolicy.d.ts.map +1 -0
  56. package/dist/api/management/flows/getFlowVariables.d.ts +31 -0
  57. package/dist/api/management/flows/getFlowVariables.d.ts.map +1 -0
  58. package/dist/api/management/flows/updateFlowSharingPolicy.d.ts +39 -0
  59. package/dist/api/management/flows/updateFlowSharingPolicy.d.ts.map +1 -0
  60. package/dist/api/management/flows/updateFlowVariables.d.ts +41 -0
  61. package/dist/api/management/flows/updateFlowVariables.d.ts.map +1 -0
  62. package/dist/api/management/gateways/getGatewayMaster.d.ts +25 -0
  63. package/dist/api/management/gateways/getGatewayMaster.d.ts.map +1 -0
  64. package/dist/api/management/gateways/getGatewayMasterHistory.d.ts +26 -0
  65. package/dist/api/management/gateways/getGatewayMasterHistory.d.ts.map +1 -0
  66. package/dist/api/management/gateways/getGatewayMasterResource.d.ts +39 -0
  67. package/dist/api/management/gateways/getGatewayMasterResource.d.ts.map +1 -0
  68. package/dist/api/management/groups/createGroupByPath.d.ts +34 -0
  69. package/dist/api/management/groups/createGroupByPath.d.ts.map +1 -0
  70. package/dist/api/management/groups/getGroupsByPath.d.ts +26 -0
  71. package/dist/api/management/groups/getGroupsByPath.d.ts.map +1 -0
  72. package/dist/api/management/presentation-definitions/createPresentationDefinition.d.ts +25 -0
  73. package/dist/api/management/presentation-definitions/createPresentationDefinition.d.ts.map +1 -0
  74. package/dist/api/management/presentation-definitions/deletePresentationDefinition.d.ts +24 -0
  75. package/dist/api/management/presentation-definitions/deletePresentationDefinition.d.ts.map +1 -0
  76. package/dist/api/management/presentation-definitions/getPresentationDefinition.d.ts +25 -0
  77. package/dist/api/management/presentation-definitions/getPresentationDefinition.d.ts.map +1 -0
  78. package/dist/api/management/presentation-definitions/getPresentationDefinitions.d.ts +20 -0
  79. package/dist/api/management/presentation-definitions/getPresentationDefinitions.d.ts.map +1 -0
  80. package/dist/api/management/presentation-definitions/updatePresentationDefinition.d.ts +29 -0
  81. package/dist/api/management/presentation-definitions/updatePresentationDefinition.d.ts.map +1 -0
  82. package/dist/api/management/projects/createProject.d.ts +28 -0
  83. package/dist/api/management/projects/createProject.d.ts.map +1 -0
  84. package/dist/api/management/projects/deleteProject.d.ts +24 -0
  85. package/dist/api/management/projects/deleteProject.d.ts.map +1 -0
  86. package/dist/api/management/projects/getProject.d.ts +25 -0
  87. package/dist/api/management/projects/getProject.d.ts.map +1 -0
  88. package/dist/api/management/projects/getProjects.d.ts +20 -0
  89. package/dist/api/management/projects/getProjects.d.ts.map +1 -0
  90. package/dist/api/management/projects/updateProject.d.ts +33 -0
  91. package/dist/api/management/projects/updateProject.d.ts.map +1 -0
  92. package/dist/api/management/resource-servers/getResourceServerPermissions.d.ts +32 -0
  93. package/dist/api/management/resource-servers/getResourceServerPermissions.d.ts.map +1 -0
  94. package/dist/api/management/roles/createRoleSharingPolicy.d.ts +33 -0
  95. package/dist/api/management/roles/createRoleSharingPolicy.d.ts.map +1 -0
  96. package/dist/api/management/roles/deleteRoleSharingPolicy.d.ts +28 -0
  97. package/dist/api/management/roles/deleteRoleSharingPolicy.d.ts.map +1 -0
  98. package/dist/api/management/roles/getRoleOverlayRules.d.ts +30 -0
  99. package/dist/api/management/roles/getRoleOverlayRules.d.ts.map +1 -0
  100. package/dist/api/management/roles/getRoleSharingPolicies.d.ts +25 -0
  101. package/dist/api/management/roles/getRoleSharingPolicies.d.ts.map +1 -0
  102. package/dist/api/management/roles/getRoleSharingPolicy.d.ts +29 -0
  103. package/dist/api/management/roles/getRoleSharingPolicy.d.ts.map +1 -0
  104. package/dist/api/management/roles/updateRoleSharingPolicy.d.ts +39 -0
  105. package/dist/api/management/roles/updateRoleSharingPolicy.d.ts.map +1 -0
  106. package/dist/cjs/index.cjs +4415 -1113
  107. package/dist/constants/ManagementErrorKeys.d.ts +17 -0
  108. package/dist/constants/ManagementErrorKeys.d.ts.map +1 -0
  109. package/dist/constants/OrganizationUnitQueryKeys.d.ts +14 -0
  110. package/dist/constants/OrganizationUnitQueryKeys.d.ts.map +1 -0
  111. package/dist/constants/ProjectQueryKeys.d.ts +10 -0
  112. package/dist/constants/ProjectQueryKeys.d.ts.map +1 -0
  113. package/dist/constants/RoleQueryKeys.d.ts +1 -0
  114. package/dist/constants/RoleQueryKeys.d.ts.map +1 -1
  115. package/dist/constants/SharingPolicyQueryKeys.d.ts +11 -0
  116. package/dist/constants/SharingPolicyQueryKeys.d.ts.map +1 -0
  117. package/dist/edge/index.js +4352 -1115
  118. package/dist/i18n/models/i18n.d.ts +144 -0
  119. package/dist/i18n/models/i18n.d.ts.map +1 -1
  120. package/dist/i18n/translations/en-US.d.ts.map +1 -1
  121. package/dist/i18n/translations/fr-FR.d.ts.map +1 -1
  122. package/dist/i18n/translations/hi-IN.d.ts.map +1 -1
  123. package/dist/i18n/translations/ja-JP.d.ts.map +1 -1
  124. package/dist/i18n/translations/pt-BR.d.ts.map +1 -1
  125. package/dist/i18n/translations/pt-PT.d.ts.map +1 -1
  126. package/dist/i18n/translations/si-LK.d.ts.map +1 -1
  127. package/dist/i18n/translations/ta-IN.d.ts.map +1 -1
  128. package/dist/i18n/translations/te-IN.d.ts.map +1 -1
  129. package/dist/index.d.ts +118 -8
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +4352 -1115
  132. package/dist/models/accessible-organization-unit.d.ts +93 -0
  133. package/dist/models/accessible-organization-unit.d.ts.map +1 -0
  134. package/dist/models/agent-resource.d.ts +8 -1
  135. package/dist/models/agent-resource.d.ts.map +1 -1
  136. package/dist/models/application.d.ts +8 -2
  137. package/dist/models/application.d.ts.map +1 -1
  138. package/dist/models/authorization-detail-type.d.ts +101 -0
  139. package/dist/models/authorization-detail-type.d.ts.map +1 -0
  140. package/dist/models/client-registration.d.ts +71 -0
  141. package/dist/models/client-registration.d.ts.map +1 -0
  142. package/dist/models/client.d.ts +14 -0
  143. package/dist/models/client.d.ts.map +1 -1
  144. package/dist/models/config.d.ts +49 -1
  145. package/dist/models/config.d.ts.map +1 -1
  146. package/dist/models/credential-configuration.d.ts +56 -0
  147. package/dist/models/credential-configuration.d.ts.map +1 -0
  148. package/dist/models/device-authorization.d.ts +56 -0
  149. package/dist/models/device-authorization.d.ts.map +1 -0
  150. package/dist/models/embedded-signin-flow.d.ts +10 -0
  151. package/dist/models/embedded-signin-flow.d.ts.map +1 -1
  152. package/dist/models/gateway.d.ts +70 -0
  153. package/dist/models/gateway.d.ts.map +1 -1
  154. package/dist/models/group.d.ts +5 -0
  155. package/dist/models/group.d.ts.map +1 -1
  156. package/dist/models/managed-flow.d.ts +11 -0
  157. package/dist/models/managed-flow.d.ts.map +1 -1
  158. package/dist/models/oauth-request.d.ts +5 -0
  159. package/dist/models/oauth-request.d.ts.map +1 -1
  160. package/dist/models/oidc-discovery.d.ts +13 -0
  161. package/dist/models/oidc-discovery.d.ts.map +1 -1
  162. package/dist/models/presentation-definition.d.ts +48 -0
  163. package/dist/models/presentation-definition.d.ts.map +1 -0
  164. package/dist/models/project.d.ts +50 -0
  165. package/dist/models/project.d.ts.map +1 -0
  166. package/dist/models/resource-server.d.ts +14 -0
  167. package/dist/models/resource-server.d.ts.map +1 -1
  168. package/dist/models/session.d.ts +16 -0
  169. package/dist/models/session.d.ts.map +1 -1
  170. package/dist/models/sharing-policy.d.ts +39 -2
  171. package/dist/models/sharing-policy.d.ts.map +1 -1
  172. package/dist/models/token.d.ts +12 -0
  173. package/dist/models/token.d.ts.map +1 -1
  174. package/dist/utils/AuthenticationHelper.d.ts +4 -1
  175. package/dist/utils/AuthenticationHelper.d.ts.map +1 -1
  176. package/dist/utils/getCurrentOrganizationUnitFromClaims.d.ts +14 -0
  177. package/dist/utils/getCurrentOrganizationUnitFromClaims.d.ts.map +1 -0
  178. package/dist/utils/requestManagementResource.d.ts +2 -1
  179. package/dist/utils/requestManagementResource.d.ts.map +1 -1
  180. package/dist/utils/resolveOrganizationUnitEndpoint.d.ts +20 -0
  181. package/dist/utils/resolveOrganizationUnitEndpoint.d.ts.map +1 -0
  182. package/dist/utils/resolveResourceEndpoint.d.ts +1 -1
  183. package/dist/utils/resolveResourceEndpoint.d.ts.map +1 -1
  184. package/dist/utils/sharingPolicies.d.ts +126 -0
  185. package/dist/utils/sharingPolicies.d.ts.map +1 -0
  186. package/dist/utils/toManagementErrorMessage.d.ts +5 -3
  187. package/dist/utils/toManagementErrorMessage.d.ts.map +1 -1
  188. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationHelper.d.ts","sourceRoot":"","sources":["../../src/utils/AuthenticationHelper.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,iCAAiC,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAErG,OAAO,EAAU,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAE/C;;;;;GAKG;AACH,cAAM,oBAAoB,CAAC,CAAC;IAC1B,OAAO,CAAC,cAAc,CAAoB;IAE1C,OAAO,CAAC,MAAM,CAAqC;IAEnD,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,OAAO,CAAC,YAAY,CAAmB;IAEvC,OAAO,CAAC,SAAS,CAAwD;IAIzE,OAAO,CAAC,SAAS,CAAsC;IAEvD,OAAO,CAAC,kBAAkB,CAAK;IAE/B;;;;;OAKG;gBACgB,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,gBAAgB;IAQpG;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;;;;;OAMG;IACU,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAMpG;;;;;;OAMG;IACU,0BAA0B,IAAI,OAAO,CAAC,iCAAiC,CAAC;IAwCrF;;;;;;;OAOG;IACU,yBAAyB,IAAI,OAAO,CAAC,iCAAiC,CAAC;IAkCpF;;;;;;OAMG;IACU,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/D;;;;;;;;OAQG;IACU,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2CjF;;;;;OAKG;YACW,YAAY;IAiC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;YACW,SAAS;IA0CvB;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAetD;;;;;;;OAOG;IACU,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8C3F;;;;OAIG;IACU,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;;;;;;;OAQG;IACU,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CA6C9F;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"AuthenticationHelper.d.ts","sourceRoot":"","sources":["../../src/utils/AuthenticationHelper.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,iCAAiC,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAErG,OAAO,EAAU,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAE/C;;;;;GAKG;AACH,cAAM,oBAAoB,CAAC,CAAC;IAC1B,OAAO,CAAC,cAAc,CAAoB;IAE1C,OAAO,CAAC,MAAM,CAAqC;IAEnD,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,OAAO,CAAC,YAAY,CAAmB;IAEvC,OAAO,CAAC,SAAS,CAAwD;IAIzE,OAAO,CAAC,SAAS,CAAsC;IAEvD,OAAO,CAAC,kBAAkB,CAAK;IAE/B;;;;;OAKG;gBACgB,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,gBAAgB;IAQpG;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;;;;;OAMG;IACU,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAMpG;;;;;;OAMG;IACU,0BAA0B,IAAI,OAAO,CAAC,iCAAiC,CAAC;IAwCrF;;;;;;;OAOG;IACU,yBAAyB,IAAI,OAAO,CAAC,iCAAiC,CAAC;IAkCpF;;;;;;OAMG;IACU,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/D;;;;;;;;OAQG;IACU,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2CjF;;;;;OAKG;YACW,YAAY;IAiC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;YACW,SAAS;IA0CvB;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAetD;;;;;;;OAOG;IACU,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8C3F;;;;OAIG;IACU,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;;;;;;;;;OAUG;IACU,mBAAmB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,UAAQ,GACrB,OAAO,CAAC,aAAa,CAAC;YA8CX,kBAAkB;CA4BjC;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { CurrentOrganizationUnit } from '../models/accessible-organization-unit';
2
+ /**
3
+ * Reads the organization unit a session was issued for from its token claims: `ouId`, `ouHandle` and
4
+ * `ouName`, which name the unit the sign-in decided.
5
+ *
6
+ * The claims are read without verifying the token, so the result is for display only and MUST NOT be
7
+ * used for an authorization decision.
8
+ *
9
+ * @param claims - The decoded ID token (or sign-in assertion) payload.
10
+ * @returns The current organization unit, or `null` when the claims carry no `ouId`.
11
+ */
12
+ declare const getCurrentOrganizationUnitFromClaims: (claims: Record<string, unknown> | null | undefined) => CurrentOrganizationUnit | null;
13
+ export default getCurrentOrganizationUnitFromClaims;
14
+ //# sourceMappingURL=getCurrentOrganizationUnitFromClaims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCurrentOrganizationUnitFromClaims.d.ts","sourceRoot":"","sources":["../../src/utils/getCurrentOrganizationUnitFromClaims.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,uBAAuB,EAAC,MAAM,wCAAwC,CAAC;AAQ/E;;;;;;;;;GASG;AACH,QAAA,MAAM,oCAAoC,GACxC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACjD,uBAAuB,GAAG,IAe5B,CAAC;AAEF,eAAe,oCAAoC,CAAC"}
@@ -37,7 +37,8 @@ export interface ManagementResourceRequest {
37
37
  /**
38
38
  * Performs a request against a management API resource and maps failures onto
39
39
  * {@link ThunderIDAPIError}. HTTP 403 and 404 get their own codes so a caller can tell a missing
40
- * permission from a missing resource.
40
+ * permission from a missing resource. An OAuth 2.0 error body is carried the same way as the server's
41
+ * error envelope.
41
42
  *
42
43
  * @returns The parsed JSON body, or `undefined` when the server returns no content.
43
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"requestManagementResource.d.ts","sourceRoot":"","sources":["../../src/utils/requestManagementResource.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB,GAAU,CAAC,EACxC,6CAA2C,uBAAuB,EAClE,6EAA2E,yBAAyB,KACnG,OAAO,CAAC,CAAC,CA2FX,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"requestManagementResource.d.ts","sourceRoot":"","sources":["../../src/utils/requestManagementResource.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8BD;;;;;;;GAOG;AACH,QAAA,MAAM,yBAAyB,GAAU,CAAC,EACxC,6CAA2C,uBAAuB,EAClE,6EAA2E,yBAAyB,KACnG,OAAO,CAAC,CAAC,CA2FX,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Builds the organization-unit-qualified form of an OAuth 2.0 endpoint, such as
3
+ * `{baseUrl}/ou/{ouId}/oauth2/authorize` for `{baseUrl}/oauth2/authorize`. A sign-in started there is
4
+ * bounded to the unit, and an authorization code from it is redeemed at the unit's token endpoint.
5
+ *
6
+ * The unit identifier is one path segment, so it is percent-encoded. The `/ou/{ouId}` prefix goes in
7
+ * front of the endpoint's `/oauth2/` segment, so an endpoint discovered under a path prefix keeps it.
8
+ * When the endpoint has no `/oauth2/` segment, the path is built from `baseUrl` and the endpoint's
9
+ * last segment instead.
10
+ *
11
+ * @param endpoint - The unqualified endpoint, from discovery or derived from `baseUrl`.
12
+ * @param ouId - Identifier of the organization unit.
13
+ * @param baseUrl - The server's base URL, used when the endpoint cannot be qualified in place.
14
+ * @returns The qualified endpoint URL.
15
+ * @throws {ThunderIDRuntimeError} `JS-AUTH_CORE-OUEP-IV01` when `ouId` is empty, and
16
+ * `JS-AUTH_CORE-OUEP-IV02` when the endpoint cannot be qualified.
17
+ */
18
+ declare const resolveOrganizationUnitEndpoint: (endpoint: string, ouId: string, baseUrl?: string) => string;
19
+ export default resolveOrganizationUnitEndpoint;
20
+ //# sourceMappingURL=resolveOrganizationUnitEndpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveOrganizationUnitEndpoint.d.ts","sourceRoot":"","sources":["../../src/utils/resolveOrganizationUnitEndpoint.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,+BAA+B,GAAI,UAAU,MAAM,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MA8B3F,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
@@ -8,7 +8,7 @@ import { BaseConfig } from '../models/config';
8
8
  * issuers), these overrides let the SDK send flow and user-management requests to the resource
9
9
  * server while OAuth requests continue to target the authorization server.
10
10
  */
11
- export type ResourceEndpointKey = 'agents' | 'agentTypes' | 'applications' | 'configurationVersions' | 'connections' | 'design' | 'export' | 'flowExecute' | 'flowMeta' | 'flows' | 'gateways' | 'groups' | 'i18n' | 'import' | 'notificationTemplates' | 'organizationUnits' | 'resourceServers' | 'roles' | 'secrets' | 'serverConfig' | 'users' | 'usersMe' | 'usersMeCredentials' | 'usersMeMeta' | 'userTypes' | 'variables';
11
+ export type ResourceEndpointKey = 'agents' | 'agentTypes' | 'applications' | 'authorizationDetailTypes' | 'clientRegistrations' | 'configurationVersions' | 'connections' | 'credentialConfigurations' | 'design' | 'export' | 'flowExecute' | 'flowMeta' | 'flows' | 'gateways' | 'groups' | 'i18n' | 'import' | 'notificationTemplates' | 'organizationUnits' | 'presentationDefinitions' | 'projects' | 'resourceServers' | 'roles' | 'secrets' | 'serverConfig' | 'users' | 'usersMe' | 'usersMeCredentials' | 'usersMeMeta' | 'usersMeOrganizationUnits' | 'userTypes' | 'variables';
12
12
  /**
13
13
  * The `config.endpoints` keys that address resource-server endpoints rather than OIDC/OAuth
14
14
  * endpoints. Used to keep these overrides out of the resolved OIDC provider metadata.
@@ -1 +1 @@
1
- {"version":3,"file":"resolveResourceEndpoint.d.ts","sourceRoot":"","sources":["../../src/utils/resolveResourceEndpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,uBAAuB,GACvB,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,uBAAuB,GACvB,mBAAmB,GACnB,iBAAiB,GACjB,OAAO,GACP,SAAS,GACT,cAAc,GACd,OAAO,GACP,SAAS,GACT,oBAAoB,GACpB,aAAa,GACb,WAAW,GACX,WAAW,CAAC;AAEhB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EA2BhE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,uBAAuB,GAC3B,KAAK,mBAAmB,EACxB,QAAQ,sBAAsB,GAAG,SAAS,EAC1C,cAAc,MAAM,KACnB,MAAM,GAAG,SAAiE,CAAC;AAE9E,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"resolveResourceEndpoint.d.ts","sourceRoot":"","sources":["../../src/utils/resolveResourceEndpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,aAAa,GACb,0BAA0B,GAC1B,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,uBAAuB,GACvB,mBAAmB,GACnB,yBAAyB,GACzB,UAAU,GACV,iBAAiB,GACjB,OAAO,GACP,SAAS,GACT,cAAc,GACd,OAAO,GACP,SAAS,GACT,oBAAoB,GACpB,aAAa,GACb,0BAA0B,GAC1B,WAAW,GACX,WAAW,CAAC;AAEhB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EAiChE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,uBAAuB,GAC3B,KAAK,mBAAmB,EACxB,QAAQ,sBAAsB,GAAG,SAAS,EAC1C,cAAc,MAAM,KACnB,MAAM,GAAG,SAAiE,CAAC;AAE9E,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,126 @@
1
+ import { ManagementRequestConfig } from '../models/api';
2
+ import { ResolvedOverlay, SharingPolicy, SharingPolicyListResponse, SharingPolicyRequest, SharingPolicyUpdateRequest } from '../models/sharing-policy';
3
+ /**
4
+ * The kinds of resource that carry sharing policies.
5
+ */
6
+ export type SharingResourceType = 'user' | 'application' | 'role' | 'flow';
7
+ /**
8
+ * The management collection that holds each kind of shared resource.
9
+ */
10
+ export declare const SHARING_RESOURCE_COLLECTIONS: Record<SharingResourceType, 'users' | 'applications' | 'roles' | 'flows'>;
11
+ /**
12
+ * The sharing operations of one kind of resource, addressed by the resource's identifier.
13
+ */
14
+ export interface SharingPolicyOperations {
15
+ create: (config: ManagementRequestConfig & {
16
+ payload: SharingPolicyRequest;
17
+ resourceId: string;
18
+ }) => Promise<SharingPolicy>;
19
+ delete: (config: ManagementRequestConfig & {
20
+ policyId: string;
21
+ resourceId: string;
22
+ }) => Promise<void>;
23
+ getOverlayRules: (config: ManagementRequestConfig & {
24
+ ouId: string;
25
+ resourceId: string;
26
+ }) => Promise<ResolvedOverlay>;
27
+ list: (config: ManagementRequestConfig & {
28
+ limit?: number;
29
+ offset?: number;
30
+ resourceId: string;
31
+ }) => Promise<SharingPolicyListResponse>;
32
+ update: (config: ManagementRequestConfig & {
33
+ payload: SharingPolicyUpdateRequest;
34
+ policyId: string;
35
+ resourceId: string;
36
+ }) => Promise<SharingPolicy>;
37
+ }
38
+ /**
39
+ * Returns the existing sharing operations for a kind of resource, so a component can manage the
40
+ * policies of a user, an application, a role or a flow the same way.
41
+ *
42
+ * @param resourceType - The kind of resource.
43
+ * @returns The operations, each taking the resource's identifier as `resourceId`.
44
+ */
45
+ export declare const getSharingPolicyOperations: (resourceType: SharingResourceType) => SharingPolicyOperations;
46
+ /**
47
+ * The translation function the helpers below take.
48
+ */
49
+ type Translate = (key: string, params?: Record<string, string | number>) => string;
50
+ /**
51
+ * Describes, in translated words, which organization units a sharing policy reaches: one line per
52
+ * section the server returned (every unit, the units beneath the owner, the roots of other trees).
53
+ *
54
+ * @param t - The translation function.
55
+ * @param policy - The policy.
56
+ * @returns The lines, never empty.
57
+ */
58
+ export declare const describeSharingPolicyScope: (t: Translate, policy: SharingPolicy) => string[];
59
+ /**
60
+ * The values of the sharing policy form. Lists of organization unit identifiers are kept as the text
61
+ * the user types, separated by commas.
62
+ */
63
+ export interface SharingPolicyFormValues {
64
+ /**
65
+ * Which units beneath the owner the policy reaches: none, all of them, or the ones listed.
66
+ */
67
+ childUnitsMode: 'none' | 'all' | 'selected';
68
+ /**
69
+ * With `all`, the units beneath the owner to withhold.
70
+ */
71
+ excludedOuIds: string;
72
+ /**
73
+ * The root units of other trees the policy reaches.
74
+ */
75
+ otherTreeRootOuIds: string;
76
+ /**
77
+ * With `selected`, whether each listed unit is reached alone or with everything below it.
78
+ */
79
+ reach: 'unit' | 'subtree';
80
+ /**
81
+ * With `selected`, the units beneath the owner the policy reaches.
82
+ */
83
+ selectedOuIds: string;
84
+ }
85
+ /**
86
+ * Splits text of comma or whitespace separated identifiers, dropping empty and repeated entries.
87
+ *
88
+ * @param value - The text.
89
+ * @returns The identifiers.
90
+ */
91
+ export declare const parseOrganizationUnitIds: (value: string) => string[];
92
+ /**
93
+ * The form values for a new policy, or for editing an existing one.
94
+ *
95
+ * @param policy - The policy being edited, if any.
96
+ * @returns The values.
97
+ */
98
+ export declare const toSharingPolicyFormValues: (policy?: SharingPolicy) => SharingPolicyFormValues;
99
+ /**
100
+ * Whether the form describes a policy the server can accept: it must reach some unit, and a policy of
101
+ * selected units must name at least one. A policy that already reaches every unit or every other tree
102
+ * keeps that section, so it is valid without either.
103
+ *
104
+ * @param values - The form values.
105
+ * @param policy - The policy being edited, if any.
106
+ * @returns Whether the values can be submitted.
107
+ */
108
+ export declare const isSharingPolicyFormValid: (values: SharingPolicyFormValues, policy?: SharingPolicy) => boolean;
109
+ /**
110
+ * Builds the payload that creates a policy from the form.
111
+ *
112
+ * @param values - The form values.
113
+ * @returns The payload.
114
+ */
115
+ export declare const toSharingPolicyRequest: (values: SharingPolicyFormValues) => SharingPolicyRequest;
116
+ /**
117
+ * Builds the payload that replaces a policy's sections from the form. Sections the form cannot edit
118
+ * (every unit, every other tree) and the overlay rules of units that stay are kept as they were.
119
+ *
120
+ * @param values - The form values.
121
+ * @param policy - The policy being edited.
122
+ * @returns The payload, carrying the version being edited.
123
+ */
124
+ export declare const toSharingPolicyUpdateRequest: (values: SharingPolicyFormValues, policy: SharingPolicy) => SharingPolicyUpdateRequest;
125
+ export {};
126
+ //# sourceMappingURL=sharingPolicies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharingPolicies.d.ts","sourceRoot":"","sources":["../../src/utils/sharingPolicies.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Turns a failed management request into a message for admin UI. A missing permission and a
3
- * missing resource get their own messages; anything else gets the operation's fallback. The
4
- * server's own error text is never shown.
3
+ * missing resource get their own messages; a refusal the caller names in `specificKeys` gets that
4
+ * message; anything else gets the operation's fallback. The server's own error text is never shown.
5
5
  *
6
6
  * @param t - The translation function.
7
7
  * @param error - The error a management operation reported, if any.
8
8
  * @param fallbackKey - Translation key of the message for any other failure.
9
+ * @param specificKeys - Translation keys for specific refusals, keyed by the server's error code
10
+ * (such as `OU-1006`) or by HTTP status (such as `409`). A code wins over a status.
9
11
  * @returns The translated message, or `null` when there is no error.
10
12
  */
11
- declare const toManagementErrorMessage: (t: (key: string) => string, error: Error | null | undefined, fallbackKey: string) => string | null;
13
+ declare const toManagementErrorMessage: (t: (key: string) => string, error: Error | null | undefined, fallbackKey: string, specificKeys?: Readonly<Record<string, string>>) => string | null;
12
14
  export default toManagementErrorMessage;
13
15
  //# sourceMappingURL=toManagementErrorMessage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toManagementErrorMessage.d.ts","sourceRoot":"","sources":["../../src/utils/toManagementErrorMessage.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,QAAA,MAAM,wBAAwB,GAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAC1B,OAAO,KAAK,GAAG,IAAI,GAAG,SAAS,EAC/B,aAAa,MAAM,KAClB,MAAM,GAAG,IAgBX,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"toManagementErrorMessage.d.ts","sourceRoot":"","sources":["../../src/utils/toManagementErrorMessage.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,wBAAwB,GAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAC1B,OAAO,KAAK,GAAG,IAAI,GAAG,SAAS,EAC/B,aAAa,MAAM,EACnB,eAAe,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC9C,MAAM,GAAG,IA6BX,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thunderid/javascript",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "JavaScript Ecosystem SDK for ThunderID",
5
5
  "keywords": [
6
6
  "thunderid",